Autor Beitrag
dorian_89
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP
Delphi 2005; Html
BeitragVerfasst: Sa 11.02.06 22:37 
Hi
Ich (Wir) habe (haben) ein Programm geschrieben, das in 'ner TPgrogressBox erst reinschreib wieviel prozent der felder man ausgefüllt hat und dann wie weit er mit bearbeiten ist (nur zur Schau, also dazuzählen und dann sleep, aber is lustig zum ansehn =) ), Davor is en Label, dessen Text entsprechend geändert. Das Dazuzählen in der TProgrssBox haben wir durch ne While-Schleife geregelt, und jetzt soll er davor natürlich den LabelText ändern, machts aber erst danach!

Wo ist da der Fehler?
Gibt es eine Reihenfolge, wie Delphi die Befehle ausführt?

Quelltext:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
  i:=0;
     PbAll.StepBy(-100);
     LbFortschritt.Caption:='Erstelle';

     while i<10 do
         begin
         inc(i);
         PbAll.StepBy(10);
         sleep(100);
         end;


     if i = 10
     then LbFortschritt.Caption:='Fertig!'
     else;


Schonmal vielen dank für eure Antworten
Dorian (& Kevin)

_________________
Der Punker am Rechner
MrFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 208

WIN 2000 Professional, Ubuntu 5.10
D3 Prof, D7 Pers, D2005 Pers, Java (Eclipse)
BeitragVerfasst: Sa 11.02.06 22:49 
Die Reihenfolge in der die Befehle ausgeführt werden ist von oben nach unten, von links nach rechts.

Füg mal nach der Zuweisung des Texts 'erstellen' an das Label die Quelltextzeile

ausblenden Delphi-Quelltext
1:
Application.Processmessages					


ein. Dann müsste es klappen.

_________________
Das Leben auf der Erde mag zwar teuer sein, aber eine jährliche Rundreise um die Sonne ist gratis mit dabei.
dorian_89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP
Delphi 2005; Html
BeitragVerfasst: Sa 11.02.06 22:53 
DANKE

es geht einwandfrei, auch wenn ich nich kapier warum er die while-Schleife vor allem Andern macht, auch wenn sie fast am Ende steht, aber mit Application.Processmessages kann ich in Zukunft arbeiten

thx

Dorian (& Kevin)

_________________
Der Punker am Rechner
MrFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 208

WIN 2000 Professional, Ubuntu 5.10
D3 Prof, D7 Pers, D2005 Pers, Java (Eclipse)
BeitragVerfasst: So 12.02.06 13:38 
Das liegt daran, dass die Schleife das Programm sozusagen lahmlegt. Also so krass Beschäftigt, dass der Anwendung keine Zeit mehr bleibt die Komponenten auf der Formularoberfläche zu zeichnen. Application.Processmessages gibt dem Programm explizit den Befehl die Schleife kurz anzuhalten und Aufgaben wie das zeichnen der Forumlaroberfläche zu erledigen.

_________________
Das Leben auf der Erde mag zwar teuer sein, aber eine jährliche Rundreise um die Sonne ist gratis mit dabei.
dorian_89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43

Win XP
Delphi 2005; Html
BeitragVerfasst: So 12.02.06 17:47 
So was in der Art hatte ich mir gedacht, jetzt weis ichs thx

Dorian