![]() |
Panel per Timer aktivieren
Moin DP'ler ;)
Ich bräuchte mal wieder euere Hilfe! Ich hab zwei Panel die nacheinander gestartet werden: Panel(1) starten - nach 21 Sekunden deaktivieren - Panel (2) starten- nach 10 Sekunden deaktivieren - Panel(1) starten... das Ganze soll immer so weiter gehen...ich dachte ich realisiere das mit zwei Timern aber wie stell ich das interval?
Delphi-Quellcode:
thx.4.cmtsprocedure TForm.Timer1Timer(Sender: TObject); begin Timer1.Interval (21000); Panel1.Visible:= true; Timer2.Enabled:= true; //Startet dann nach 21 sec Timer2 ? end; procedure TForm.Timer2Timer(Sender: TObject); begin Timer2.Interval (10000); Panel2.Visible:= true; Timer1.Enabled:= true; //Startet dann nach 10 sec Timer1 ? end; Lill Jens :coder2: |
Re: Panel per Timer aktivieren
Delphi-Quellcode:
Oder hab ich das falsch verstanden?
procedure TForm.Timer1Timer(Sender: TObject);
begin // im OI eingestellt: Timer1.Interval (21000); Panel1.Visible:= true; Timer2.Enabled:= true; //umschalten Timer1.Enabled:= false; end; procedure TForm.Timer2Timer(Sender: TObject); begin // im OI eingestellt: Timer2.Interval (10000); Panel2.Visible:= true; Timer1.Enabled:= true; //umschalten Timer2.Enabled:= false; end; |
Re: Panel per Timer aktivieren
Hi
Zitat:
Delphi-Quellcode:
oder wie bereits geschrieben im OI
Timer1.Interval:=21000;
Gruß oldmax |
Re: Panel per Timer aktivieren
Mhh des geht noch net so wie ich des will^^
Das Problem ist das auf dem Panel(1) ein Video gezeigt wird. Wenn Panel(2) kommt soll das Video auf stop gehn und erst wieder starten wenn Panel(1) wieder aktive wird.
Delphi-Quellcode:
Es geht allerdings nicht. das video wird nicht erneut abgespielt.
procedure TForm.Timer1Timer(Sender: TObject);
begin MediaPlayer1.Play; Panel2.Visible:= false; Panel1.Visible:= true; MediaPlayer1.Stop; Timer2.Enabled:= true; Timer1.Enabled:= false; end; procedure TForm.Timer2Timer(Sender: TObject); begin Panel2.Visible:= true; Panel1.Visible:= false; Timer1.Enabled:= true; Timer2.Enabled:= false; end; |
Re: Panel per Timer aktivieren
Zitat:
Delphi-Quellcode:
innerhalb eines Timers sehr verdächtig, sieht aus wie anschalten und sofort wieder ausschalten!
MediaPlayer1.Play;
... MediaPlayer1.Stop; Moin |
Re: Panel per Timer aktivieren
Zitat:
Thx Stifflersmom |
Re: Panel per Timer aktivieren
Also ich weiß nicht ob ich das richtig verstanden habe.....
Wenn Panel 1 An ist, dann: panel2 ausmachen, Video abspielen, 21 sek warten, video stoppen, panel2 anmachen, panel1 ausmachen, 10 sekunden warten, So habe ich es nun verstanden.... najaa hier mal mein entwurf dazu:
Delphi-Quellcode:
* Ungetested *
procedure TForm1.Timer1Timer(Sender: TObject);
begin if panel1.Enabled then begin mediaplayer1.Play; timer1.Interval:=21000; panel1.Enabled:=false; panel2.Enabled:=true; end else begin mediaplayer1.stop; timer1.Interval:=10000; panel1.Enabled:=true; panel2.Enabled:=false; end; |
Re: Panel per Timer aktivieren
Warum nicht ohne Timer? Zum Beispiel in nem Button-Click (ungetestet):
Delphi-Quellcode:
type
TRunState = (rsIdle, rsFirst, rsSecond); var PanelState: Byte; RunState: TRunState; StartMs, CurrentMs, TargetMs: Cardinal; begin StartMs := GetTickCount; RunState := rsFirst; while AbbruchBedingungNichtErfuellt do begin case RunState of rsFirst: begin StartMs := GetTickCount; MediaPlayer1.Play; Panel2.Visible:= false; Panel1.Visible:= true; TargetMs := 21000; PanelState := 2; RunState := rsIdle; end; rsSecond: begin StartMs := GetTickCount; MediaPlayer1.Stop; Panel2.Visible:= true; Panel1.Visible:= false; TargetMs := 10000; PanelState := 1; RunState := rsIdle; end; rsIdle: begin CurrentMs := GetTickCount; if (CurrentMs - StartMs >= TargetMs) then begin StartMs := GetTickCount; case PanelState of 1: RunState := rsFirst; 2: RunState := rsSecond; end; end; end; end; Application.ProcessMessages; // oder ähnliches end; end; |
Re: Panel per Timer aktivieren
sag mal, weshalb nimmste nicht nur einen timer? das ganze sieht in etwa wie folgt aus
Delphi-Quellcode:
das ist der ganze code... :-)
timer.enabled := false; //zuerst abschalten;
if timer.Interval = 21000 then begin timer.interval := 10000; panel1.visible := false; // aktiv bei 21 sekunden panel2.visible := true; //aktiv bei 10 sekunden end else begin timer.interval := 21000; panel1.visible := true; //aktiv bei 21 sekunden panel2.visible := false; //aktiv bei 10 sekunden; end; //noch machen wozu du sonst noch lust hast timer.enabled := true; //zum schluss timer wieder einschalten end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 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