AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Oncreate beenden und function aufrufen (ohne TTimer)
Thema durchsuchen
Ansicht
Themen-Optionen

Oncreate beenden und function aufrufen (ohne TTimer)

Ein Thema von 2Knuckels · begonnen am 12. Apr 2018 · letzter Beitrag vom 13. Apr 2018
Antwort Antwort
2Knuckels

Registriert seit: 12. Nov 2016
9 Beiträge
 
#1

AW: Oncreate beenden und function aufrufen (ohne TTimer)

  Alt 12. Apr 2018, 17:31
Danke für den Tip mit OnShow, muss ich testen (wäre extrem einfach)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.549 Beiträge
 
Delphi 12 Athens
 
#2

AW: Oncreate beenden und function aufrufen (ohne TTimer)

  Alt 12. Apr 2018, 17:35
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
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (12. Apr 2018 um 17:38 Uhr)
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#3

AW: Oncreate beenden und function aufrufen (ohne TTimer)

  Alt 12. Apr 2018, 17:35
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.
  Mit Zitat antworten Zitat
2Knuckels

Registriert seit: 12. Nov 2016
9 Beiträge
 
#4

AW: Oncreate beenden und function aufrufen (ohne TTimer)

  Alt 12. Apr 2018, 17:38
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)

Geändert von 2Knuckels (12. Apr 2018 um 17:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

AW: Oncreate beenden und function aufrufen (ohne TTimer)

  Alt 12. Apr 2018, 17:42
Ja, das geht dann wohl tatsächlich eher in Richtung Threads/Tasks. Ist leider kein ganz einfaches Thema.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#6

AW: Oncreate beenden und function aufrufen (ohne TTimer)

  Alt 12. Apr 2018, 17:44
Doppelt.

Geändert von günni0 (12. Apr 2018 um 17:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.549 Beiträge
 
Delphi 12 Athens
 
#7

AW: Oncreate beenden und function aufrufen (ohne TTimer)

  Alt 12. Apr 2018, 17:47
Hier der Grund für das Wofür
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.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#8

AW: Oncreate beenden und function aufrufen (ohne TTimer)

  Alt 12. Apr 2018, 17:49
Zitat:
Hab das kurz mit ShowMessage getestet und das wird aufgerufen noch bevor man das Form sieht.
Dann mach es so

Delphi-Quellcode:
const
 WM_FORM_VISIBLE = WM_USER + 1;

private
 FormInitialised: Boolean;
 procedure WMFormVisible(var msg: TMessage); message WM_FORM_VISIBLE;
end;

implementation

procedure TForm1.WMFormVisible(var msg: TMessage);
begin
 >>> hier deine showmessage zum testen <<< // Wird erst verarbeitet, wenn das Formular sichtbar ist. Aber meiner Meinung nach sollte man sich nicht von irgendwelchen Sichtbarkeiten abhängig machen.
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
 if not FormInitialised then
  begin
   FormInitialised := True;
   PostMessage(Form1.Handle, WM_FORM_VISIBLE, 0, 0);
  end;
end;

Geändert von günni0 (12. Apr 2018 um 17:52 Uhr)
  Mit Zitat antworten Zitat
2Knuckels

Registriert seit: 12. Nov 2016
9 Beiträge
 
#9

AW: Oncreate beenden und function aufrufen (ohne TTimer)

  Alt 12. Apr 2018, 18:04
Vielen Dank für Euere Antworten:

Habe das mit dem Win Message gelöst und funktioniert genau wie ichs mir vorgestellt habe:
anbei in Kurzvorm wie das gelöst habe.

const WM_APP_launch_main = WM_USER + 8; // WIN - set message handler for launch of form
type procedure OnMyMessage(var Msg: TMessage); message WM_APP_launch_main; // DECLARE message function

procedure FormCreate
...
PostMessage(self.Handle,WM_APP_launch_main,0,0); // SEND message that create is done
end;

procedure Tform8.OnMyMessage(var Msg: TMessage);
begin
.....
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.549 Beiträge
 
Delphi 12 Athens
 
#10

AW: Oncreate beenden und function aufrufen (ohne TTimer)

  Alt 12. Apr 2018, 17:43
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
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 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