Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TProgressbar entsprechende Opendialog Files (https://www.delphipraxis.net/91469-tprogressbar-entsprechende-opendialog-files.html)

danku 5. Mai 2007 10:52


TProgressbar entsprechende Opendialog Files
 
Delphi-Quellcode:
...
  Progressbar1.Min:=1;
  Progressbar1.Max:= opendiag.files.count;


   //Füllen der StringGrid mit Opendialog1Daten
   sender.RowCount := opendiag.Files.Count+1;
   edaltsender.text := getcurrentdir;


for j:= ProgressBar1.min to ProgressBar1.Max do begin

   for i:=0 to opendiag.files.count -1 do begin
   sender.cells[0,1+i]:= ExtractFileName(opendiag.Files[i]);
   sender.cells[1,1+i]:= Extractfilename(opendiag.Files[i]);
   sender.cells[2,1+i]:= floattostr(FileSize (opendiag.Files.Strings[i]) div 1024);

   Progressbar1.Position:=j;

   end;
 
end;
...
Hi. Ich lade per Opendialog x-beliebige Files in eine stringgrid (sender).
ein fortschrittsbalken soll das optisch unterstützen.
das problem ist bloß da erst alle dateien in die stringgrid geladen werden,
und erst danach der fortschrittsbalken "wächst".
gibts eine möglichkeit, nach jeder geöffneten, einzelnen datei, den fortschrittsbalken kontinuierlich zu increasen?

mfg danku

inherited 5. Mai 2007 11:01

Re: TProgressbar entsprechende Opendialog Files
 
Setz noch ein "Application.ProcessMessages" in die Schleife.
€dit: In Delphi hamma den Punkt-Operator, net den -> :oops:

Luckie 5. Mai 2007 11:06

Re: TProgressbar entsprechende Opendialog Files
 
Was soll die äussere Schleife? :shock: Setz den Max-Wert der Fortschrittanzeige auf die Anzahl der ausgewählten Dateien, die Schrittweite auf eins und erhöhe in der Schleife zum Öffnen der Dateien die Positin der Fortschrittsanzeige um eins:
Delphi-Quellcode:
Progressbar1.Max := opendiag.files.count;
Progressbar1.Step := 1;
for i:=0 to opendiag.files.count -1 do begin
  sender.cells[0,1+i]:= ExtractFileName(opendiag.Files[i]);
  sender.cells[1,1+i]:= Extractfilename(opendiag.Files[i]);
  sender.cells[2,1+i]:= floattostr(FileSize (opendiag.Files.Strings[i]) div 1024);
  Progressbar1.StepIt;
  Progresbar1.Refresh;
end;

danku 5. Mai 2007 11:16

Re: TProgressbar entsprechende Opendialog Files
 
was war denn so an der äußeren schleife falsch?

Cyberbob 5. Mai 2007 12:31

Re: TProgressbar entsprechende Opendialog Files
 
Nichts, sie ist einfach nur Sinnlos und sorgt dafür, das dein Counter mehrmals durchläuft, auch wenn schon alles abgearbeitet wird. so macht er bei 6 dateien 36 (6*6) durchläufe und das sollte nicht im sinne des erfinders sein!

Luckie 5. Mai 2007 12:40

Re: TProgressbar entsprechende Opendialog Files
 
Doch sie war nicht nur sinnlos, sondern auch falsch. Wenn du sechs Dateien auswählst, wird die innere Schleife, in der die Dateien geladen werden, sechs mal ausgeführt. Jede Datei wird also sechs mal geladen. Und ich kann mir nicht vorstellen, dass das so sein sollte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz