Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pravljenje Explorer-a, pitanje?

[es] :: Pascal / Delphi / Kylix :: Pravljenje Explorer-a, pitanje?

[ Pregleda: 2238 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.neobee.net.



Profil

icon Pravljenje Explorer-a, pitanje? 10.01.2006. u 19:35 - pre 221 meseci
Pokusavam da napravim mali FileBrowser slicno Windows Exploreru.
Postavio sam na formu i povezao:
ShellListView1
ShellTreeView1
ShellComboBox1

Naravno, to lepo funkcionise izmedju sebe, ima sve operacije koje windows
daje kad kliknemo na neki folde desnim klikom misa.

1) Ali ne da mi da napravim novi folder! - kako to izvesti?
2) Funkcionise sledeci kod:
Code:
ShellListView1.Back


hteo bih napraviti nesto kao - dalje, napred ( Next )?!
Kad je neki folder selektovan ova komanda ulazi u njega
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

Passwd

Član broj: 54624
Poruke: 640
*.adsl.net.t-com.hr.



Profil

icon Re: Pravljenje Explorer-a, pitanje? 11.01.2006. u 09:07 - pre 221 meseci
Citat:

1) Ali ne da mi da napravim novi folder! - kako to izvesti?


Code:

if DirectoryExists('c:\neki_folder\')=false then
            CreateDirectory('c:\neki_folder\',nil);

 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.neobee.net.



Profil

icon Re: Pravljenje Explorer-a, pitanje? 11.01.2006. u 12:21 - pre 221 meseci
Ok, hvala...
Kod lepo radi, ali on pravi samo u putanji npr. 'C:\new folder\'.

1)Da li postoji neka varijanta da se folder napravi u bilo kom folderu na
bilo kojoj particiji a ne striktno po putanji?
Da kad recimo odem na D:\downloads unutar njega napravi folder?!
Znaci, da ne zavisi striktno od putanje, vec da se pravi u trenutno aktuelnom
folderu bilo koje particije?!

2)Multiselect opcijaza ShellListView1 u Object Browseru je na "True",selektuje se vise,
ali zadati uslov se ispunjava samo za 1 selektovani objekat.
Kako napraviti da vise selektovanih foldera se istovremeno npr. obrise?
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

Passwd

Član broj: 54624
Poruke: 640
*.adsl.net.t-com.hr.



Profil

icon Re: Pravljenje Explorer-a, pitanje? 11.01.2006. u 12:47 - pre 221 meseci
Citat:

1)Da li postoji neka varijanta da se folder napravi u bilo kom folderu na
bilo kojoj particiji a ne striktno po putanji?
Da kad recimo odem na D:\downloads unutar njega napravi folder?!
Znaci, da ne zavisi striktno od putanje, vec da se pravi u trenutno aktuelnom
folderu bilo koje particije?!


Onda nesto ovako napravis:
Code:

if DirectoryExists(TShellFolder(ShellListView1.RootFolder).PathName+'\neki_folder')=false then
   CreateDirectory(PChar(TShellFolder(ShellListView1.RootFolder).PathName+'\neki_folder'),nil);


Citat:

2)Multiselect opcijaza ShellListView1 u Object Browseru je na "True",selektuje se vise,ali zadati uslov se ispunjava samo za 1 selektovani objekat.
Kako napraviti da vise selektovanih foldera se istovremeno npr. obrise?


Trebas od prvog do zadnjeg selektovanog foldera ponovit tu radnju koju izvrsavas nad njima..


edit:
Za ono .back , kolko ja znam da bi mogao forward ic trebas lokaciju u kojoj se trenutno nalazis spremat u neku promjenljivu (tipa string) i onda napravis neki button i u OnClick event tog dugmeta napravis da ide na lokaciju koja je spremljena u toj promjenljivoj....ne znam, mozda postoji i nesto jednostavnije..

[Ovu poruku je menjao Passwd dana 11.01.2006. u 13:58 GMT+1]
 
Odgovor na temu

anon68680

Član broj: 68680
Poruke: 528
*.ptt.yu.



+14 Profil

icon Re: Pravljenje Explorer-a, pitanje? 11.01.2006. u 12:57 - pre 221 meseci
zar ne bi bilo lakse da napravis sam komponentu za listanje filova?
 
Odgovor na temu

Passwd

Član broj: 54624
Poruke: 640
*.adsl.net.t-com.hr.



Profil

icon Re: Pravljenje Explorer-a, pitanje? 11.01.2006. u 13:00 - pre 221 meseci
Citat:
krza: zar ne bi bilo lakse da napravis sam komponentu za listanje filova?


Pa bilo bi lakse da je u pitanju samo izlistavanje fajlova u ListBox i neke sitne informacije o njima, al ipak TShellListView komponenta nudi vizualni prikaz ikona, nudi cijeli desni padajuci izbornik na neki fajl a time i properties samog fajla itd..
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.neobee.net.



Profil

icon Re: Pravljenje Explorer-a, pitanje? 11.01.2006. u 14:38 - pre 221 meseci
Citat:
Passwd: Trebas od prvog do zadnjeg selektovanog foldera ponovit tu radnju koju izvrsavas nad njima..



Nisam te bas najbolje razumeo, selektujem sve foldere i onda na svaki recimo copy?!
Nije mi bas jasno?!

Code:
if DirectoryExists(TShellFolder(ShellListView1.RootFolder).PathName+'\neki_folder')=false then
   CreateDirectory(PChar(TShellFolder(ShellListView1.RootFolder).PathName+'\neki_folder'),nil);


Kod super radi!!!

Zanima me i sledece:

Copy Folder - nasao sam u Help-u nesto:
(BOOL CopyFile(
LPCTSTR lpExistingFileName, // pointer to name of an existing file
LPCTSTR lpNewFileName, // pointer to filename to copy to
BOOL bFailIfExists // flag for operation if file exists
);
Ali mislim da to nije ono sto mi treba,ne kontam bas, kako bih mogao izvesti sledece:
CopyFolder, CutFolder, PasteFolder i RenameFolder?!
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

Passwd

Član broj: 54624
Poruke: 640
*.adsl.net.t-com.hr.



Profil

icon Re: Pravljenje Explorer-a, pitanje? 11.01.2006. u 16:00 - pre 221 meseci
Rename folder:
Code:

RenameFile('c:\STARO_IME','c:\NOVO_IME');


CopyFolder:
Mozda postoji neka gotova f-ja, nisam siguran pa sam ti napisao ovu malu proceduru koja ce skopirat folder i sve njegove fajlove,ali ako folder kojeg kopiras ima jos u sebi folder onda njih nece skopirat, al nije tesko..samo to nadogradis..
Code:

procedure CopyDirectory(stari:string; novi:string);
var lista_fajlova:TStringList;
    SearchRec:TSearchRec;
    stariF,noviF:TFileStream;
    x:integer;
begin
lista_fajlova:=TStringList.Create;
if FindFirst(stari+'*.*',faArchive,SearchRec)=0 then
  begin
   repeat
   lista_fajlova.Add(SearchRec.Name);
   until FindNext(SearchRec)<>0;
  end;

if DirectoryExists(novi)=false then
    begin
    CreateDirectory(PChar(novi),nil);
    end;

for x:=0 to lista_fajlova.Count-1 do
begin
stariF:=TFileStream.Create(stari+lista_fajlova[x],fmOpenRead or fmShareDenyNone);
noviF:=TFileStream.Create(novi+lista_fajlova[x],fmCreate);
noviF.CopyFrom(stariF,stariF.Size);
stariF.Free;
noviF.Free;
end;

lista_fajlova.Free;
end;


Znaci primjer: CopyDirectory('c:\stari\','c:\novi\');

A za Cut nisam sreo, jedino mi ovo palo na pamet:
kad se stinse Cut isto kopiras cijeli taj folder na neku temp lokaciju , a kad se stisne Paste taj stari skopirani iz temp lokacije samo kopiras na tu novu lokaciju i pobrises onaj stari..


edit:
A za ono multi selektovanje..prvo odredis koji su sve fajlovi selektovani i onda ponovis radnju za svaki od njih...ako je selektovan npr. 1,3,5 fajl onda ides:
radnja(1);
radnja(3);
radnja(5);
..svaki posebno, jer ako napravis samo za prvi normalno da ce se samo radnja izvrsit na prvom..


I da, za ono kreiranje foldera mozes jos jednostavnije napisat:
Code:

if DirectoryExists(ShellListView1.RootFolder.PathName+'\neki_folder')=false then
   CreateDirectory(PChar(ShellListView1.RootFolder.PathName+'\neki_folder'),nil);


[Ovu poruku je menjao Passwd dana 11.01.2006. u 17:08 GMT+1]
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.neobee.net.



Profil

icon Re: Pravljenje Explorer-a, pitanje? 11.01.2006. u 19:21 - pre 221 meseci
Rename folder-a:

Code:
RenameFile('c:\STARO_IME','c:\NOVO_IME');


funkcionise po ovom kodu i to je OK. Da li se moze odraditi
da se selektuje neki folder, file( bilo koji ) i da sami unesemo novo
ime koje zelimo a da ne zavisimo od ovog koda?!
Nesto kao u XP kad kliknemo na RENAME da nam se otvori
opcija i upisemo novo ime.

Code:
procedure CopyDirectory(stari:string; novi:string);

CopyDirectory('c:\stari\','c:\novi\');


Ova procedura funkcionise kao sto si naveo ali meni treba da kopiram folder
i da imam mogucnost da ga ubacima gde hocu? A da bi ga ubacio treba mi i PASTE
komanda?!
Znaci, da kopiram(COPY) bilo koji folder, file i ubacim gde ja zelim(PASTE)?!
Kao u windowsu?!

Imas li kakvu ideju kako bi to moglo ici? A ne samo folder koji sam uneo u:

Code:
CopyDirectory('c:\stari\','c:\novi\');


Znaci i treba mi code za PASTE?!


Citat:
A za ono multi selektovanje..prvo odredis koji su sve fajlovi selektovani i onda ponovis radnju za svaki od njih...
ako je selektovan npr. 1,3,5 fajl onda ides:
radnja(1);
radnja(3);
radnja(5);
..svaki posebno, jer ako napravis samo za prvi normalno da ce se samo radnja izvrsit na prvom..


Da, razumem, a da li moze da selektijem 3 fajla i isto vremeno ih npr. kopiram,
a ne pojedinacno jedan po jedan, kontas?

Znaci, sve u svemu, da se poklapa sa windows COPY,RENAME,PASTE.

[Ovu poruku je menjao loshmiscg dana 11.01.2006. u 20:26 GMT+1]
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.neobee.net.



Profil

icon Re: Pravljenje Explorer-a, pitanje?14.01.2006. u 01:10 - pre 221 meseci
Da li mi mozete pomoci, pogledajte prethodnu poruku.
Tu sam zapeo?!

Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Pravljenje Explorer-a, pitanje?

[ Pregleda: 2238 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.