Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 9 odgovora
  • 3.089 pregleda

Najnovija ↓

Pravljenje Explorer-a, pitanje? 10.01.2006. u 20:35 · pre 253 meseca #1
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
Potpis
Someone's sitting in the shade today because someone planted a tree a long time ago.
Re: Pravljenje Explorer-a, pitanje? 11.01.2006. u 10:07 · pre 253 meseca #2
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);

Re: Pravljenje Explorer-a, pitanje? 11.01.2006. u 13:21 · pre 253 meseca #3
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?
Potpis
Someone's sitting in the shade today because someone planted a tree a long time ago.
Re: Pravljenje Explorer-a, pitanje? 11.01.2006. u 13:47 · pre 253 meseca
izmenjeno 1 put, poslednji put Passwd 11.01.2006. u 13:58
  1. Passwd11.01.2006. u 13:58zapis iz teksta poruke
#4
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.. :)
Re: Pravljenje Explorer-a, pitanje? 11.01.2006. u 14:00 · pre 253 meseca #6
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..
Re: Pravljenje Explorer-a, pitanje? 11.01.2006. u 15:38 · pre 253 meseca #7
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?!
Potpis
Someone's sitting in the shade today because someone planted a tree a long time ago.
Re: Pravljenje Explorer-a, pitanje? 11.01.2006. u 17:00 · pre 253 meseca
izmenjeno 1 put, poslednji put Passwd 11.01.2006. u 17:08
  1. Passwd11.01.2006. u 17:08zapis iz teksta poruke
#8
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);
Re: Pravljenje Explorer-a, pitanje? 11.01.2006. u 20:21 · pre 253 meseca
izmenjeno 1 put, poslednji put loshmiscg 11.01.2006. u 20:26
  1. loshmiscg11.01.2006. u 20:26zapis iz teksta poruke
#9
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.
Potpis
Someone's sitting in the shade today because someone planted a tree a long time ago.
Re: Pravljenje Explorer-a, pitanje? 14.01.2006. u 02:10 · pre 253 meseca #10
Da li mi mozete pomoci, pogledajte prethodnu poruku.
Tu sam zapeo?!
Potpis
Someone's sitting in the shade today because someone planted a tree a long time ago.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme