Novo

Forum kao aplikacija na telefonu

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

  • 4 odgovora
  • 2.560 pregleda

Najnovija ↓

Refresh ListBox1 14.03.2010. u 23:51 · pre 202 meseca #1
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






Re: Refresh ListBox1 15.03.2010. u 14:12 · pre 202 meseca #2
> 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.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Refresh ListBox1 15.03.2010. u 21:32 · pre 202 meseca #3
@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.
Re: Refresh ListBox1 15.03.2010. u 22:22 · pre 202 meseca
izmenjeno 1 put, poslednji put medixsa 16.03.2010. u 09:21
  1. medixsa16.03.2010. u 09:21zapis iz teksta poruke
#4
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;
Re: Refresh ListBox1 15.03.2010. u 22:28 · pre 202 meseca #5
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
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme