Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - gleicher Fortschritt in unterschiedlichen Progressbars
Faceman - Mi 24.05.06 12:38
Titel: gleicher Fortschritt in unterschiedlichen Progressbars
Hallo ich bin neu hier und noch Anfänger. Mein Problem ist, dass ich den gleichen Fortschritt in zwei unterschiedliche Progressbars hab(siehe Quelltext). wenn ich im ersten formular 10% habe dann fängt das programm mit 10% im zweiten formular an, obwohl das eigentlich gar nicht sein dürfte, wegen den progressbars und den timer. das zweite formular öffne ich mit form2.show. irgendwie muss man die progressbar2.position auf null bekommen, damit er wieder von vorne anfängt. hab an
Delphi-Quelltext
1:
| progressbar2.position:=progressbar2.position -progressbar2.position; |
gedacht und dann so
Delphi-Quelltext
1:
| progressbar2.position:=progressbar2.position +1; |
aber das geht nich. liegt das daran das form1 gleich die mainform ist und deswegen alle progressbars den gleichen fortschritt haben. ich habe beide timer auf 900(timer.interval:=900) gestellt. ich hab keine ahnung warum das so ist.
Quelltext
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38:
| procedure TForm1.FormCreate(Sender: TObject); begin timer3.Enabled:=true; end;
procedure TForm1.Timer3Timer(Sender: TObject); begin progressbar1.Position := progressbar1.Position + 1; if progressbar1.position=97 then label16.caption:='3...'; if progressbar1.position=98 then label16.caption:='2...'; if progressbar1.position=99 then label16.caption:='1...'; if progressbar1.Position = 100 then begin timer3.Enabled := false; close; end; end;
procedure TForm1.Button14Click(Sender: TObject); begin timer3.Enabled:=false; end;
procedure TForm2.Timer4Timer(Sender: TObject); begin progressbar2.Position := progressbar2.Position + 1; if progressbar2.position=97 then label16.caption:='3...'; if progressbar2.position=98 then label16.caption:='2...'; if progressbar2.position=99 then label16.caption:='1...'; if progressbar2.Position = 100 then begin timer4.Enabled := false; close; end; end;
procedure TForm2.FormCreate(Sender: TObject); begin timer4.Enabled:=true; end; |
Moderiert von
Gausi: Delphi-Tags hinzugefügtModeriert von
Gausi: Topic aus Internet / Netzwerk verschoben am Mi 24.05.2006 um 13:57
Arno Nym - Mi 24.05.06 13:14
Hi !
Also, generell werden alle Formulare gleich nach Initialisierung der Applikation erstellt, und das "Hauptformular" zu erst. Dass heißt dein TForm1.FormCreate, und das TForm2.FormCreate werden unmittelbar nacheinander ausgelöst. Deswegen laufen die Timer fast gleichzeitig los. Gegebenfalls sollte Timer 2 erst beim onShow Ereignis von Formular 2 starten.
Progrssbars kannst du einfach mit .Position := 0; wieder zurücksetzen.
MFG, Arno Nym
Faceman - Mi 24.05.06 14:17
Danke erstmal für die Antwort.
Wie meinst du das mit onshow. Form2.onshow? Aber das hört sich gut an, ich hoffe das funktioniert.
Arno Nym - Mi 24.05.06 14:57
Hi,
das hängt davon ab wie du das geplant hast, wann die Formulare zu sehen sind. Also wenn z.B. immer nur ein Formular angezeigt werden soll, und du von Form1 zu Form2 wechseln willst wenn man einen Button drückt müsste in der Ereignisroutine für den Buttonclick etwa sowas stehen:
Quelltext
1: 2: 3:
| self.hide; Form2.Timer2.enabled := true; Form2.show; |
dann brauchst du es nicht nochmal extra in das onShow ereignis von Form2 legen.
MFG, Arno
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!