AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Serververbindung nach FormCreate

Ein Thema von lukdelphias · begonnen am 31. Jul 2020 · letzter Beitrag vom 31. Jul 2020
Antwort Antwort
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
650 Beiträge
 
Delphi XE6 Enterprise
 
#1

AW: Serververbindung nach FormCreate

  Alt 31. Jul 2020, 13:21
Ich nutze für sowas auch gerne ein eigenes Event, welches per PostMessage im OnShow aufgerufen wird:

Delphi-Quellcode:
const
  WM_AFTERSHOW = WM_USER + 50;

type
  TMainForm = class(TForm)
  [...]
  procedure WMAfterShow(var Msg: TMessage); message WM_AFTERSHOW;
  [...]
  end;

procedure TMainForm.FormShow(Sender: TObject);
begin
  [...]
  PostMessage(Handle, WM_AFTERSHOW, 0, 0);
end;

procedure TMainForm.WMAfterShow(var Msg: TMessage);
begin
  MachWasImmerGetanWerdenMuss;
end;
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Serververbindung nach FormCreate

  Alt 31. Jul 2020, 13:38
Ich nutze für sowas auch gerne ein eigenes Event, welches per PostMessage im OnShow aufgerufen wird
Das finde ich pers. bis jetzt die beste Lösung. Nichts gegen OnActivate mit den Abfrage-Bedingungen oder auf nil setzen (argh^^)

Delphi sagt:
Zitat:
Use OnShow to perform special processing when the form is shown (that is, when the form's Visible property is set to true).
Da es direkt nach Sichtbarkeit nur einmal feuert mit Deinem Code (ich hoff die smileys haben corona abstand xD)
Gruß vom KodeZwerg

Geändert von KodeZwerg (31. Jul 2020 um 13:40 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.742 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Serververbindung nach FormCreate

  Alt 31. Jul 2020, 15:06
Ich bin mir gerade unsicher, ob das zur Anforderung passt:

Als ich noch Datenbank-Programme schrieb, hatte ich immer ein Datenmodul im Programm, welches alle Datenzugriffs-Komponenten enthielt, und öffnete die Verbindung in dessen OnCreate Event. Dieses wurde dann als erstes "Formular" im Programm erzeugt, noch vor dem Hauptformular. Dadurch stand die Verbindung, bereits, wenn das Hauptformular erzeugt wurde.

Das ist aber schon bestimmt 10 Jahre her, keine Ahnung, ob das noch "State of the Art" ist.
Thomas Mueller

Geändert von dummzeuch (31. Jul 2020 um 18:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Serververbindung nach FormCreate

  Alt 31. Jul 2020, 17:38
Ich nutze für sowas auch gerne ein eigenes Event, welches per PostMessage im OnShow aufgerufen wird:

Delphi-Quellcode:
const
  WM_AFTERSHOW = WM_USER + 50;

type
  TMainForm = class(TForm)
  [...]
  procedure WMAfterShow(var Msg: TMessage); message WM_AFTERSHOW;
  [...]
  end;

procedure TMainForm.FormShow(Sender: TObject);
begin
  [...]
  PostMessage(Handle, WM_AFTERSHOW, 0, 0);
end;

procedure TMainForm.WMAfterShow(var Msg: TMessage);
begin
  MachWasImmerGetanWerdenMuss;
end;
Sieht - ohne Frage - sehr elegant aus. Aber was hat das Feuern dieses Events für einen Benefit statt direkt im OnShow-Event die entsprechenden Schritte (statt Postmessage) durchzuführen? Nach meinem Verständnis kommt es genau auf dasselbe raus. Es sei denn es passiert noch „etwas“ anderes.
Michael Kübler
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.146 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Serververbindung nach FormCreate

  Alt 31. Jul 2020, 19:09
Noch eine Alternative:

Timer nehmen mit Intervall 1. Erste Aktion im Timer-Event ist das Deaktivieren des Timers, dann Verbindung herstellen.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Serververbindung nach FormCreate

  Alt 31. Jul 2020, 20:22
Das OnShow wird nicht blockiert und die dranhängenden Funktionen laufen erstmal vollständig durch.
Wobei man so ein Event aber auch ins Create/OnCreate machen könnte,

Nja, Timer find ich immer bissl unpraktisch.
Delphi-Quellcode:
procedure TMainForm.FormShow(Sender: TObject);
begin
  TThread.ForceQueue(nil, procedure
    begin
      MachWasImmerGetanWerdenMuss;
    end);
end;
Funktionell das Gleiche wie PostMessage und Timer.
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 15:51 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