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

Refresh ListBox1

[es] :: Pascal / Delphi / Kylix :: Refresh ListBox1

[ Pregleda: 1909 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

medixsa

Član broj: 155471
Poruke: 184
77.238.203.*



+2 Profil

icon Refresh ListBox114.03.2010. u 22:51 - pre 171 meseci
POzdrav !!!

Dephi 7

Pitranje ?


Program : Monitorning stanja direktorija.

Uradio sam program ,gdje u ListBox-u prikazuje trenutno stanje nekog direktorija.Kada ja pokrenem program i u programu tj.u ListBox-u dobijem listu svi fajlova
u tom direktoriju.Kada recimo obrisem neki fajl u tom direkotriju ,meni i dalje u ListBox-u ostaje zapisan taj fajl.Kako mogu i na koji nacin da rijesim ,da mi se
ListBox osvjezava ili brise taj fajl koji je vec ranije obrisem u Windows Exploreru.Program ce non stop biti pokrenut i aktivan.Moram da kazem da kod
pokrece komponenta Timer1



Koristio sam funkciju za pretrazivaje fajlova u direktorju ( FindFirst i sve je ok),znaci samo mi treba da mi se update uradi ListBox-


Hvala svima na pomoci






 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Refresh ListBox115.03.2010. u 13:12 - pre 171 meseci
> Program : Monitorning stanja direktorija.

> Kako mogu i na koji nacin da rijesim ,da mi se ListBox osvjezava ili brise taj fajl koji je vec ranije obrisem u Windows Exploreru.Program ce
> non stop biti pokrenut i aktivan.

Uz Delphi dolazi TShellChangeNotifier komponenta, ako ti ona ona završava posao (ne nudi previše detalja), možeš naći neku third party gotovu komponentu ili koristiti direktno API funkcije FindFirstChangeNotification ili ReadDirectoryChangesW.

 
Odgovor na temu

Almedin

Član broj: 5895
Poruke: 425
*.191.91.dn210.zona.ba.



+27 Profil

icon Re: Refresh ListBox115.03.2010. u 20:32 - pre 171 meseci
@savkic, njemu je problem što mu se ListBox ne "refrešuje"

@medixsa, mislio sam da smo to riješili telefonom ali evo:

tvoj kod je otprilike ovakav

Code:

procedure TForm1.Timer1Timer(Sender: TObject);
var
  sr: TSearchRec;
  sPath: string;
begin
  sPath := 'e:\temp\*.*';
  if FindFirst(sPath, 0, sr) = 0 then begin
      ListBox1.Items.Add(sr.Name);
    while FindNext(sr) = 0 do
        ListBox1.Items.Add(sr.Name);
  end;
  FindClose(sr);
end;


a treba ovako

Code:

procedure TForm1.Timer1Timer(Sender: TObject);
var
  sr: TSearchRec;
  sPath: string;
begin
  sPath := 'e:\temp\*.*';
  if FindFirst(sPath, 0, sr) = 0 then begin
    if ListBox1.Items.IndexOf(sr.Name) = -1 then // ovo ti nedostaje
      ListBox1.Items.Add(sr.Name);
    while FindNext(sr) = 0 do
      if ListBox1.Items.IndexOf(sr.Name) = -1 then // ovo ti nedostaje
        ListBox1.Items.Add(sr.Name);
  end;
  FindClose(sr);
end;


Inače, kako ti je savkic rekao, koristi TShellChangeNotifier ili FindFirstChangeNotification da ti se ova procedura ne bi bespotrebno pozivala svo vrijeme jer većinu vremena neće biti promjena u direktoriju.
 
Odgovor na temu

medixsa

Član broj: 155471
Poruke: 184
77.238.215.*



+2 Profil

icon Re: Refresh ListBox115.03.2010. u 21:22 - pre 171 meseci
e hvala na trudu evo mog koda

procedure TfrmMain.Timer1Timer(Sender: TObject);
var
Rekord : TSearchRec;
Putanja : string;
Ukupno : integer;
i : integer;
Indx : integer;
tekst : string;
Zvuk : string;

const
put_naziv = 'C:\TEMP\RES\';
Ekstenzija = '*.*';
begin

// Forma na vrh
frmMain.FormStyle := fsStayOnTop;
// fokus forma

tekst := ListBox1.Items.Text;

Zvuk := ExtractFilePath(Application.ExeName)+'\zvono.wav';


Putanja := put_naziv;

if FindFirst(Putanja + Ekstenzija, faAnyFile-faDirectory, Rekord) = 0 then
try
repeat
if not ListBox1.Items.IndexOf(Rekord.Name) = -1 then
begin
ListBox1.Update;
end;

if ListBox1.Items.IndexOf(Rekord.Name) = -1 then
begin
ListBox1.Items.Add(Rekord.Name);
//sndPlaySound(pchar(Zvuk), snd_Async or snd_NoDefault);
end;
until FindNext(Rekord) <> 0;
finally
FindClose(Rekord);


// Ukupno
for i := 0 to ListBox1.Items.Count-1 do
begin
Ukupno := ListBox1.Items.Count;
end;
lUkupno.Caption := inttostr(Ukupno)+' '+'Akata';
end;



[Ovu poruku je menjao medixsa dana 16.03.2010. u 09:21 GMT+1]
 
Odgovor na temu

medixsa

Član broj: 155471
Poruke: 184
77.238.215.*



+2 Profil

icon Re: Refresh ListBox115.03.2010. u 21:28 - pre 171 meseci
Almedine sve je ok ,ono sto smo uradili preko tel.,a meni je bitno kada se iz win explorera iz dir prijem obrise fajl,da mi se u istom momentu i brise fajl iz ListBox,jer program tj.monitornig non stop biti aktivan
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Refresh ListBox1

[ Pregleda: 1909 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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