Autor Beitrag
Faceman
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 24.05.06 12:38 
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
ausblenden Delphi-Quelltext
1:
progressbar2.position:=progressbar2.position -progressbar2.position;					

gedacht und dann so
ausblenden 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
ausblenden volle Höhe 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 user profile iconGausi: Delphi-Tags hinzugefügt
Moderiert von user profile iconGausi: Topic aus Internet / Netzwerk verschoben am Mi 24.05.2006 um 13:57
Arno Nym
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 131



BeitragVerfasst: 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:
ausblenden 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