![]() |
Re: Timer enablen
Ich glaube nicht, dass Application.ProcessMessages die Lösung ist, es handelt sich ja nicht um eine langlaufende Schleife, die den Rest des Programms blockiert.
|
Re: Timer enablen
Zitat:
Es ist mir ein Rätsel, warum diese "Lösung" für reine Anzeigeaktualisierungsprobleme hier im Forum so gerne vorgeschlagen wird. blauweiss |
Re: Timer enablen
Wenn man an der anzeige "herum fummelt" dan müssen diese änderungen ja auch irgendwie zur Anzeige kommen.
Warum sollte diese Anzeigeänderung dann damit nicht durchgeführt werden? Zitat:
[quote="blauweiss"] Zitat:
Bitte, ich bin für jede Belehrung dankbar. Gruß K-H |
Re: Timer enablen
[quote="p80286"]Wenn man an der anzeige "herum fummelt" dan müssen diese änderungen ja auch irgendwie zur Anzeige kommen.
Warum sollte diese Anzeigeänderung dann damit nicht durchgeführt werden? dafür bietet sich z.B. aControl.Paint oder aControl.Refresh an. Zitat:
Gefährlich: Mit Application.ProcessMessages wird quasi Parallelität ermöglicht. Folgendes Beispiel: In einem ButtonClick wird eine komplexe Berechnung auf dem "aktuellen Datensatz" durchgeführt. Weil während der Berechnung die Anwendung scheinbar eingefroren ist, wird jetzt z.B. in einer Schleife Application.ProcessMessages aufgerufen. Damit wird aber die Windows-Nachrichtenschleife abgearbeitet ! Der Anwender kann den Button ein weiteres Mal klicken -> die gleiche Berechnung startet ein weiteres Mal, während noch die vorherige läuft. Oder der Anwender ruft den Menuepunkt "Datei entfernen" auf -> der Datensatz wird entfernt, auf dem "gleichzeitig" die Berechnung läuft. Application.ProcessMessages kann sehr nützlich sein, aber man muß sich bewußt sein, daß bestimmte Benutzeraktionen dann ausgeschlossen werden müssen. Grüße, blauweiss |
Re: Timer enablen
Hallo,
also ich habe einfach einmal Deinen Quelltext genommen und ausprobiert. Bei mir funktioniert es ohne jedes Problem. Hast Du einmal geprüft, ob Dein Problem eine andere Ursache haben könnte?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin timer1.Enabled:=true; end; procedure TForm1.Timer1Timer(Sender: TObject); begin if label1.Visible = true then begin label1.visible := false; Image1.Visible:= false; Image2.Visible:= true; label2.Visible:= true; end; end; |
Re: Timer enablen
Ich könnte mir vorstellen, dass dem Timer-Ereignis keine Methode zugewiesen ist.
|
Re: Timer enablen
Zitat:
Zitat:
Gruß K-H |
Re: Timer enablen
hmmm...mann mann mann
ich bekomms net raus! sitze schon soo lange daran, finde aber keinen Fehler! Bitte helft mir. |
Re: Timer enablen
Setz doch mal ein ShowMessage rein, dann siehst du ob der Timer losläuft oder nicht!
(auf die Frage mit dem Debugger hast du ja schließlich nicht geantwortet)
Delphi-Quellcode:
BreakPoint -> Haltepunkt -> Wird das Programm in der Delphi-IDE mit F9 gestartet, dann hält es genau an dieser Stelle an
procedure TForm3.Timer1Timer(Sender: TObject);
begin ShowMessage( 'Ich bin Timer1, ich laufe jetzt los :-)' ); if L1.Visible then // <--- Hier mal alternativ zum ShowMessage einen Breakpoint setzen begin L1.visible := false; Image1.Visible:= false; Image2.Visible:= true; L2.Visible:= true; end; end; Zitat:
|
Re: Timer enablen
Also...
nach einigem Probieren hab ich herausgefunden, dass der timer erst anspringt, wenn mann ihn zum 2. mal über den Button aktiviert. Ich frag mich nur, warum er es beim ersten mal nicht tut... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:27 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