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
Seite 2 von 2     12   
günni0
(Gast)

n/a Beiträge
 
#11

AW: Oncreate beenden und function aufrufen (ohne TTimer)

  Alt 12. Apr 2018, 18: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 18:52 Uhr)
  Mit Zitat antworten Zitat
2Knuckels

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

AW: Oncreate beenden und function aufrufen (ohne TTimer)

  Alt 12. Apr 2018, 19: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
günni0
(Gast)

n/a Beiträge
 
#13

AW: Oncreate beenden und function aufrufen (ohne TTimer)

  Alt 12. Apr 2018, 19:05
Ich bin mir nicht sicher aber ich glaube das ist nur Glück, dass deine Showmessage angezeigt wird wenn das Formular sichtbar ist.
Meine Version oben wäre die sicherere Variante.
  Mit Zitat antworten Zitat
2Knuckels

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

AW: Oncreate beenden und function aufrufen (ohne TTimer)

  Alt 13. Apr 2018, 11:36
Ja Dein Vorschlag klappt auch.
Mir ging es primär nicht um die Sichtbarkeit sondern das ich eine abgeschlossene Initialisierung aller Parameter des Forms haben will und dann der eigentliche Main Loop abgearbeitet wird.
Man muss sich das wie ein "Old-School" Programm vorstellen. Alles soll der Reihe nach abgearbeitet werden und an den Stellen an denen Loops gebraucht werden, werden die aufgerufen.
Gegen einen generellen Timer spricht das in der Hauptroutine drei Netzwerk typen gleichzeitig miteinander kommunizieren müssen, weshalb in den loops keine fixen timer verwendet werden, sondern nur geprüft wird ob eine gewisse Zeitspanne bereits verstrichen ist.
und Dank Eurer Hilfe bin diesen "hässlichen" ttimer zum aufrufen des main losgeworden.
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#15

AW: Oncreate beenden und function aufrufen (ohne TTimer)

  Alt 13. Apr 2018, 11:44
Zitat:
Main Loop
Ich denke du solltest dich, wenn du mit Delphi arbeiten möchtest, von dem Wort Main Loop trennen.
Was du meinst ist der Main-Thread. Wirklich vergleichbar mit einer Main-Methode von C oder Java ist das nicht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Oncreate beenden und function aufrufen (ohne TTimer)

  Alt 13. Apr 2018, 16:51
Wirklich vergleichbar mit einer Main-Methode von C oder Java ist das nicht.
Das wäre das BEGIN bis END in der Projektdatei.

Aber auch in C/Java lässt man dort bestimmt nicht stundenlang einen Spaghetti-Code durchleiern.
$2B or not $2B

Geändert von himitsu (13. Apr 2018 um 16:58 Uhr)
  Mit Zitat antworten Zitat
2Knuckels

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

AW: Oncreate beenden und function aufrufen (ohne TTimer)

  Alt 13. Apr 2018, 20:05
Nicht umgewöhnen, aber ich arbeite einen 30 Jahre alten Pascal Code um, und die Infrastruktur (Roboter, Sensoren) ist genauso alt, bleibt aber erhalten, weswegen ich nicht so weit weg vom Uursprünglichen Ablauf will. (ausserhalb von Industrie 4.0 gibts auch noch Prüfstände die teilweise mit MS-Dos laufen, auf PCs mit 10 MB Festplatte). Im Prinzip könnte man das alles noch in TP schreiben (RS485, TCP, IEEE gabs alles damals schon).

Aber Danke für den support
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 17:36 Uhr.
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