Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Oncreate beenden und function aufrufen (ohne TTimer) (https://www.delphipraxis.net/195988-oncreate-beenden-und-function-aufrufen-ohne-ttimer.html)

2Knuckels 12. Apr 2018 17:21

Oncreate beenden und function aufrufen (ohne TTimer)
 
Gibt es eine Möglichkeit nach dem Durchlauf der OnCreate Funktion eine andere Funktion aufzurufen aber OnCreate formal zu beenden. (und das ohne Timer zu benutzen)
(Umgebung: Win, XE10, VCL App)

procedure TForm1.FormCreate(Sender: TObject);
begin
Befehl1;
Befehl2;
....
"Aufruf einer neuen Funktion";

end;

-> und jetzt sollte FormCreate als Funktion beendet werden

function "Aufruf einer neuen Funktion";
begin
Befehl1;
Befehl2;
....
end;


so wie es oben geschrieben ist bleibt FormCreate bis zum Ende die ausführende Funktion und die andere Funktion wird nur als Unterfunktion aufgerufen, und das soll nicht so sein.

Kann man evtl. einen Win Handle verwenden um nach dem FormCreate beendet ist eine neue Funktion aufzurufen?
Bin für jeden Vorschlag Hilfe offen. (Wie man das mit einem Timer umsetzt ist bekannt, nur so würde ich das nur ungern lösen)

Zacherl 12. Apr 2018 17:27

AW: Oncreate beenden und function aufrufen (ohne TTimer)
 
Es gibt eine virtuelle
Delphi-Quellcode:
procedure AfterConstruction
, die du überschreiben kannst. Die wird unmittelbar nach dem
Delphi-Quellcode:
Create
aufgerufen. Für Fenster im Speziellen könnte
Delphi-Quellcode:
OnShow
oder eins der anderen Post-Create Events auch eine Möglichkeit sein.

2Knuckels 12. Apr 2018 17:31

AW: Oncreate beenden und function aufrufen (ohne TTimer)
 
Danke für den Tip mit OnShow, muss ich testen (wäre extrem einfach)

himitsu 12. Apr 2018 17:35

AW: Oncreate beenden und function aufrufen (ohne TTimer)
 
In "halbwegs" neueren Delphis ist seit paar Jahren/FastJahrzehnten das TForm.OnCreate im AfterConstruction
und früher war es im Create.

Oder selber eine Ereignismethode erstellen, also für WM_USER+x und dann am Ende des Create, OnCreate oder OnShow per PostMessage anstoßen. (nur ein einfacher Call, anstatt einem goßen Timer)
http://www.cryer.co.uk/brian/delphi/...ow_message.htm

günni0 12. Apr 2018 17:35

AW: Oncreate beenden und function aufrufen (ohne TTimer)
 
Zitat:

so wie es oben geschrieben ist bleibt FormCreate bis zum Ende die ausführende Funktion und die andere Funktion wird nur als Unterfunktion aufgerufen, und das soll nicht so sein.
Eventuell ein TTask, anonymer Thread o.ä. ? Dann ginge es direkt weiter und bliebe nicht in OnCreate hängen.

2Knuckels 12. Apr 2018 17:38

AW: Oncreate beenden und function aufrufen (ohne TTimer)
 
Sorry Onshow klappt nicht.

Hab das kurz mit ShowMessage getestet und das wird aufgerufen noch bevor man das Form sieht.
Ich suche quasi etwas was eine "Main" Funktion aufruft in der dann das Programm die ganze Zeit läuft.

Werde es mit dem "WM_USER+x" testen (Danke)

Zacherl 12. Apr 2018 17:42

AW: Oncreate beenden und function aufrufen (ohne TTimer)
 
Ja, das geht dann wohl tatsächlich eher in Richtung Threads/Tasks. Ist leider kein ganz einfaches Thema.

himitsu 12. Apr 2018 17:43

AW: Oncreate beenden und function aufrufen (ohne TTimer)
 
Zitat:

Zitat von günni0 (Beitrag 1398985)
Eventuell ein TTask, anonymer Thread o.ä. ? Dann ginge es direkt weiter und bliebe nicht in OnCreate hängen.

Es gibt TThread.Queue aber gerade vom Hauptthread aus arbeitet das IMHO falsch. (von der Semantik her wäre es aber richtig gewäsen)
Delphi-Referenz durchsuchenTThread.Queue

Aber https://www.delphipraxis.net/179193-...der-queue.html

günni0 12. Apr 2018 17:44

AW: Oncreate beenden und function aufrufen (ohne TTimer)
 
Doppelt.

himitsu 12. Apr 2018 17:47

AW: Oncreate beenden und function aufrufen (ohne TTimer)
 
Hier der Grund für das Wofür
Zitat:

Zitat von 2Knuckels (Beitrag 1398986)
Hab das kurz mit ShowMessage getestet und das wird aufgerufen noch bevor man das Form sieht.
Ich suche was quasi etwas was eine "Main" Funktion aufruft in der dann das Programm die ganze Zeit läuft.

Das wäre dann wohl Thread/Task die geeignetere Lösung
oder das Konzept auf Message/Event-bassiert ändern und den Bei Google suchenSpaghetti Code auftrennen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz