Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Timer wird vor FormCreate ausgeführt? (https://www.delphipraxis.net/75621-timer-wird-vor-formcreate-ausgefuehrt.html)

Go2EITS 22. Aug 2006 14:35


Timer wird vor FormCreate ausgeführt?
 
Bei meinem Projekt "Watch" habe ich einen Timer, der anscheinend vor der Form1.create ausgeführt wird.
Dumm, da ich in der Form1.memo etwas schreiben will, weil der Timer etwas entdeckt hat. Der Timer schreibt erst, wenn die Form zu sehen ist, in die Memo. Dies ist definitiv ein Timer-Durchlauf zu spät!

Was kann ich tun, dass ich den Timer erst nach der Form1.create starte, oder schon "unsichtbar" schreiben kann?

Ein Timer1.enabled:=False in den Eigenschaften sowie Timer1.enabled:=False und Timer1.enabled:=true am Anfang und Ende der Form1.create habe ich auch schon probiert. Funzt nicht!
:gruebel: Weiss wieder jemand Rat?

Sascha L 22. Aug 2006 14:38

Re: Timer wird vor FormCreate ausgeführt?
 
Also erstmal nutzt du bitte OnShow und nicht OnCreate! Beim create des Formulars ist doch noch gar nicht gewährleistet, dass der Timer bereits erstellt wurde und so kann es eine AV geben.

Go2EITS 22. Aug 2006 14:47

Re: Timer wird vor FormCreate ausgeführt?
 
@Sacha L
Ok, hab ich gemacht!

Nützt aber nix:
So sieht es aus: (Pseudocode)
Delphi-Quellcode:
// Timer1 in den Eigenschaften ist natürlich False!

Formschow:
// Timer ist noch aus!
Timer1.Enabled:=false;
...Code
// Timer ist erst am Ende TRUE!
Timer1.Enabled:=True;
END

//Im Timer1 wird die Form erweitert;
Applikation.prozessmessages;
Form_Alert //form1 wird verbreitert
Applikation.prozessmessages;

Der Timer wird vor der Form ausgeführt. :(
Oder kann ich abfragen, ob die Form1 zu sehen ist?????????
z. b. IsForm then Timer1.enabled=True; ????

Bernhard Geyer 22. Aug 2006 14:56

Re: Timer wird vor FormCreate ausgeführt?
 
Ist dein Ansatz überhaupt sinnvoll :gruebel:
Du willst regelmäßig was überprüfen und dir ist sehr wichtig das dies schon beim Programmstart geschieht. Dann ist eine TTimer sehr schlecht da dieser über das Windows-Messaging funktiert. Und bei einem Programmstart ist es ein Glücksspiel wann nun dein Gewünschter Timer genau eintrifft.

Delphi-Quellcode:
 Bei meinem Projekt "Watch" habe ich einen Timer, der anscheinend vor der Form1.create ausgeführt wird.
Das kann nur der Fall sein wenn du in der IDE für den Timer das Property Enabled auf True stehen hast. Damit wird der Timer gestartet wenn das Formularstreaming aus der Exe erfolgt ist. Und dies ist vor dem OnCreate-Event.

Delphi-Quellcode:
Was kann ich tun, dass ich den Timer erst nach der Form1.create starte, oder schon "unsichtbar" schreiben kann?
Wie wäre es mit einem Überschreiben der AfterConstruction-Methode? Aber wie schon gesagt ist ein TTimer evtl. fehl am Platz.


Verrate uns doch mal was eigentlich gecheckt wird. Evtl. reicht es ja wenn du im OnCreate-Event einfach mal den Timer-Eventhandler explizit aufrufst.

Michael Habbe 22. Aug 2006 15:11

Re: Timer wird vor FormCreate ausgeführt?
 
Zitat:

Zitat von Sascha L
Also erstmal nutzt du bitte OnShow und nicht OnCreate! Beim create des Formulars ist doch noch gar nicht gewährleistet, dass der Timer bereits erstellt wurde und so kann es eine AV geben.

Nein, im FormCreate (das ist die Procedure, die nach dem Create ausgeführt wird) sind der Timer und alle anderen Komponenten schon da und stehen zur Verfügung.

<edit>

Auch wenns sich schon geklärt hat.
An dieses OldCreateOrder habe ich ebend nicht gedacht. Damit kann es ganz anders ausgehen. Muss ich mal wieder testen :gruebel:

</edit>

Go2EITS 22. Aug 2006 15:16

Re: Timer wird vor FormCreate ausgeführt?
 
@bernhard:
Jetzt habe ich mal wieder bei mir nach einem Fehler gesucht. Ich habe alle Timer1 auf False gesetzt und gesehen, das die Meldung wieder kommt. Da war ein Vierzeiler im OnCreate/OnShow, der dieselbe Meldung wie der Timer bringen muss. Das hat Verwirrung gestiftet. Das ist der Nachteil des Alleinprogrammierers.

Entschuldigung, da hätte ich allein darauf kommen müssen. Danke Bernhard für die lange Antwort. :oops: :pale: :cyclops:



Beste Grüße
Go2EITS


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:18 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 by Thomas Breitkreuz