Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Problem mit ProgressBar / Label (https://www.delphipraxis.net/35418-problem-mit-progressbar-label.html)

changlee 6. Dez 2004 20:49


Problem mit ProgressBar / Label
 
Hallo,
ich habe ein Programm geschrieben, dass sich äußerst seltsam verhält. Ich sehe keinen Fehler im Code, dennoch treten folgende Fehler auf:

- Das Label "Action" hat niemals die Caption 'sende Datei', obwohl der Tranfer lange genug dauert.
- ProgressBar1 wird im Verlauf der Aktion irgendwann voll und beginnt dann wieder von vorn. Es scheint, als würde genau einmal zuviel "stepit" ausgeführt.


Delphi-Quellcode:
try
  ...
  ProgressBar1.Min := 0;
  ProgressBar1.Max := FileList.Items.Count-1;
  ProgressBar1.Position:=0;
  ProgressBar1.Step := 1;

  for i:=0 to (FileList.Items.Count-1) do begin
    Aktion.Caption:='sende Datei..';
    sleep(1);                      
    IdFTP1.Put(.. ,..);
    Aktion.Caption:='gesendet.';
    sleep(1);
    ProgressBar1.StepIt;
  end;
finally
  ...
end;
die sleeps hatte ich mal reingebaut, weil ich dachte, dass eine kleine Pause zum anzeigen helfen würde.

Weiß hier jemand eine Erklärung für dieses Phänomen?

Übrigens: ProgressBar1 und das Aktions-Label befinden sich jeweils in einer GroupBox. Bei der vom Aktions-Label ist bei manchen Programmaufrufen die Umrandung während der Aktionen nicht oder nicht vollständig zu sehen. Vielleicht ist das auch noch ein Indiz, das zur Lösung führen könnte.

mfg
changlee

(Da hätte mir der Nikolaus doch wirklich mal eine funktionierende Action.Caption in den Stiefel packen können.. :wink: )

Matze 6. Dez 2004 20:53

Re: Problem mit ProgressBar / Label
 
Wieso schreibst du

Delphi-Quellcode:
ProgressBar1.Max := FileList.Items.Count-1;
also "-1" ?

changlee 6. Dez 2004 21:02

Re: Problem mit ProgressBar / Label
 
Hi!

Ich lasse doch die for-Schleife von "0" bis "FileList.Items.Count-1".

Ah Moment. Ich verstehe. Ließe ich sie von 0 bis null laufen, so würde auch einmal stepid aufgerufen, womit Max überschritten würde.

(Warum kann man sich die Fragen, die einem die Antwort geben eigentlich nicht selbst stellen?!..)

Danke.

Bleibt aber noch das Problem mit dem Label. Fällt dir dazu vielleicht auch eine Frage ein? :)

changlee

Pr0g 6. Dez 2004 21:02

Re: Problem mit ProgressBar / Label
 
Vielleicht solltest du mal "Application.ProcessMessages", oder ein "Update" aufrufen, damit die neue Caption auch während deiner Verarbeitung in der Schleife gezeichnet werden kann.

MfG Pr0g

Luckie 6. Dez 2004 21:03

Re: Problem mit ProgressBar / Label
 
Ruf mal die Methoden Refresh oder Repaint auf für die Komponenten, nach dem du was geändert hast.

changlee 6. Dez 2004 21:14

Re: Problem mit ProgressBar / Label
 
Hallo!
Refresh und Repaint haben das Problem beseitigt.
Vielen Dank. Ich wusste gar nicht, dass solche Prozeduren existieren.
mfg
changlee

Luckie 6. Dez 2004 21:16

Re: Problem mit ProgressBar / Label
 
Das sind keine Prozeduren, sondern Methoden der Komponenten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:53 Uhr.

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