![]() |
TTimer 2 Aktivieren
Hallo ich möchte mit Canvas was auf die Form Zeichnen. Wenn der Timer1 fertig ist bzw er alles geschrieben hat dann soll Timer2 aktiviert werden Hier mal der code ich kriege es nicht hin
Delphi-Quellcode:
procedure TForm2.Timer1Timer(Sender: TObject);
begin a:='Anrede:'+' Herr'; inc(i); if i > length(a)then begin Canvas.Font.Name := 'CLARENCE'; //Schriftart Canvas.Font.Style := [fsBold]; //Fett Canvas.Font.Height := 18; //Schriftgrösse canvas.textout(296+i*16,32,a[i]); if timer1.enabled= true then mediaplayer1.play else mediaplayer1.stop; end; |
AW: TTimer 2 Aktivieren
Hallo,
Zitat:
Wo ist denn da nur der kleinste Hinweis auf den Timer2, der da aktiviert werden soll? Wenn Du qualifizierte Antworten willst, dann formuliere die Frage(n) entsprechend. Gruß |
AW: TTimer 2 Aktivieren
Ich habe mehre TTimer die nacheinander aktiviert werden sollen. Im Timer1 siehe code bsp. wird ein text auf die Form geschrieben nun soll wenn der Text mit Canvas.textout geschrieben ist der 2. Timer Aktiviert werden.
Sorry Volker Z. Ich hatte vor über boolean den 2. Timer zu aktivieren habe es aber nicht hin bekommen. Wie und wo kann ich in meinen Code den 2.Timer aktivieren ?
Delphi-Quellcode:
procedure TForm2.Timer1Timer(Sender: TObject);
begin a:='Anrede:'+' Herr'; inc(i); if i > length(a)then begin Canvas.Font.Name := 'CLARENCE'; //Schriftart Canvas.Font.Style := [fsBold]; //Fett Canvas.Font.Height := 18; //Schriftgrösse canvas.textout(296+i*16,32,a[i]); if timer1.enabled= true then mediaplayer1.play else mediaplayer1.stop; end; |
AW: TTimer 2 Aktivieren
Indem du in deinem Code
Delphi-Quellcode:
schreibst?
Timer2.Enabled := True;
Ist aber nur eine vage Vermutung :roll: |
AW: TTimer 2 Aktivieren
ja muss aber abwarten bis Canvas fertig ist. weil zum text.out ja noch der mediaplayer läuft und stopt wenn canvas.textout fertig ist. Der Player wird dann auch im timer2 benötigt.
|
AW: TTimer 2 Aktivieren
Erwartest du, das beim Abarbeiten der Timer-Methode (also die, welche beim Timer-Event aufgerufen wird - was ja nur passiert, wenn der Timer eingeschaltet ist - also Enabled ist True), hier
Delphi-Quellcode:
irgendetwas sinnvolles?
if timer1.enabled= true then
Oder ist das nur zur Sicherheit, falls mal doch ein Bit kippt? |
AW: TTimer 2 Aktivieren
der Code sollte so aussehen das der Timer ein wort in Buchstaben splittet und einzeln nacheinander zusammensetzt. Zudem wird ein sound ausgegeben der bei jedem Buchstaben der einrückt zu hören ist.
Gibt es ein resulttyp den ich in den codeschnipsel mit Einbauen kann? Denn nur wenn canvas fertig ist kann ich die nächste zeile genauso über canvas ausgeben. Abwarten muss ich auch wegen der Sound ausgabe weil diese mit dem letzten string beendet wird. und der Mediaplayer erst dann wieder zeitgleich abspielt. Vorerst habe ich den start der Timer mit einem Delay(2500)dazwischen begrenzt. Habe ich aber einen Text der länger als 2500 milisek. braucht gibt es probleme. und diesen möchte ich aus dem Weg gehen. |
AW: TTimer 2 Aktivieren
Hallo,
Zitat:
Gruß |
AW: TTimer 2 Aktivieren
Hallo,
mal so als Ansatz (leider kann ich noch immer nicht wirklich erkennen was Du da so vor hast)
Delphi-Quellcode:
Das optimieren kannst Du sicherlich selbst vornehmen.
procedure TForm2.Timer1Timer (Sender : TObject);
begin SetzeBuchstabenZusammen; Timer1.Enabled := not SindAlleBuchstabenBereitsZusammengesetzt; if Timer1.Enabled then Exit; if GibtEsNochBuchstabenInDerListeDieZusammengesetztWerdenMüssen then begin ZerlegeBuchstabenInEinzelneZeichen; LadeEntsprechendeSoundDateiUndSpielSieAb; Timer1.Enabled := True end end; procedure TForm2.MediaPlayer1Notify (Sender : TObject); begin if not SoundAbgespielt then // vielleicht if MediaPlayer1.Position < MediaPlayer1.Length then {oder so ähnlich} Exit; if Timer1.Enabled then // kann ja sein, dass das Zusammensetzen der Buchstaben länger dauer als das abspielen der Sounddatei Exit; if GibtEsNochBuchstabenInDerListeDieZusammengesetztWerdenMüssen then begin ZerlegeBuchstabenInEinzelneZeichen; LadeEntsprechendeSoundDateiUndSpielSieAb; Timer1.Enabled := True end end; Gruß |
AW: TTimer 2 Aktivieren
Hallo,
es laufen wohl niemals zwei Timer gleichzeitig. Die einzelnen timergesteuerten Ereignisse können also nacheinander vom gleichen Timer erledigt werden. Damit hast du dann auch keine Probleme mit Überschneidungen, die ich zwangsläufig kommen sehe, wenn du mit dem Mediaplayer (verschiedene??) Sounds abspielen möchtest. Z.B. hast du unterschiedliche Ladezeiten bei unterschiedlicher Hardware. Das gibt zwangsläufig irgendwann mal Brühe :?
Delphi-Quellcode:
procedure TForm1.ErsterTimerEvent(Sender: TObject);
begin Timer.Tag := Timer.Tag + 1; // Tag als Hilfsmittel setzen, damit man jederzeit weiß, was der Timer gerade macht ...irgendwas tun if Timer.Tag > ??? then begin Timer.Enabled := false; Timer.OnTimer := ZweiterTimerEvent; Timer.Interval := 2000; Timer.Enabled := true; end; end; procedure TForm1.ZweiterTimerEvent(Sender: TObject); begin Timer.Tag := Timer.Tag + 1; // ...irgendwas tun, z.B. den Mediaplayer starten, der dann das Tag des Timers neu setzt, wenn er FERTIG ist // ...Wenn Timer.Tag > "MediaPlayer ist fertig Tag" then TimerStart, TimerStop oder was sonst auch immer end; procedure TForm1.TimerStart; begin Timer.Enabled := false; Timer.Tag := 0; Timer.Interval := 1000; Timer.OnTimer := ErsterTimerEvent; Timer.Enabled := true; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:07 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