![]() |
Serververbindung nach FormCreate
Hallo liebes Forum,
Ich möchte gerne eine Serververbindung automatisch direkt noch der FormCreate aber noch vor der ersten Interaktion mit dem Programm einrichten. Wie würdet ihr das ganze machen? Bin gerade nicht so kreativ. Grüße |
AW: Serververbindung nach FormCreate
Ein Ansatz wäre in der .dpr Datei vor dem ganzen Forms gedöns.
|
AW: Serververbindung nach FormCreate
Ich würde es schon ganz gerne mit in meine mainApp.pas reinbekommen... zumindest wäre mir das am liebsten wenn es denn eine Möglichkeit gibt:?
|
AW: Serververbindung nach FormCreate
TForm.OnShow?
Grüße Dalai |
AW: Serververbindung nach FormCreate
Zitat:
Klaus |
AW: Serververbindung nach FormCreate
Keine schlechte Idee. Aber wenn ich OnShow richtige verstehe, wird der Code dort ausgeführt kurz bevor die GUI geöffnet wird ist das richtig?
Passieren sollte das ganze allerdings erst wenn die GUI bereits geöffnet ist, das hab ich am Anfang vergessen zu schreiben... Seht ihr dafür eine Möglichkeit? Grüße |
AW: Serververbindung nach FormCreate
Also laut Klaus Tipp müsste ja OnShow ausgeführt werden wenn die GUI schon zu sehen ist oder?
Was ist davon jetzt richtig? Grüße |
AW: Serververbindung nach FormCreate
OnActivate sollte der richtige Ort sein - aber Vorsicht, sicherstellen, dass deine Verbindung nur beim ersten Aufruf gesetzt wird.
Grüße mikhal |
AW: Serververbindung nach FormCreate
Zitat:
//edit Zitat:
|
AW: Serververbindung nach FormCreate
OnActivate sehe ich auch eher als nicht richtig da hier ein Mehrfachaufruf möglich ist. Bin mir aber auch nicht sicher wann OnShow ausgeführt wird:(
|
AW: Serververbindung nach FormCreate
Hallo,
procedure TForm2.FormOnActivate; begin OnActivate:= nil; Damit wird das OnActivate nur einmal aufgerufen ;) |
AW: Serververbindung nach FormCreate
Delphi-Quellcode:
Damit kann das Ereignis so oft feuern, wie es will, Verbinde wird nur einmal ausgeführt.
procedure TDingensForm.OnActivate(Sender: TObject);
begin if not Verbunden then begin Verbinde; Verbunden := true; end; end; |
AW: Serververbindung nach FormCreate
Delphi-Quellcode:
zum testen habe ich das erstmal so geschrieben. Allerdings kann ich in den Textfelder die ganze Zeit schreiben. Heißt die procedure wird nicht ausgeführt. Aber warum?
procedure TForm1.FormOnActivate;
begin LEdtMA.ReadOnly := true; LEdtAS.ReadOnly := true; end; |
AW: Serververbindung nach FormCreate
Öffne mal Notepad auf deinem Rechner und schiebe es über dein Programmfenster, wenn du es wieder wegziehst, sollte OnActivate gefeuert werden.
On Activate wird möglicherweise gefeuert bevor deine Editfelder erzeugt wurden... Grüße Mikhal |
AW: Serververbindung nach FormCreate
Funktioniert jetzt. Vielen Dank an alle!
Gruß |
AW: Serververbindung nach FormCreate
Doch, das OnActivate eignet sich schon. Ich mache das in meinen Anwendungen auch. Wichtig ist nur ein entsprechendes Flag zu setzen welches nach dem ersten Aufruf gesetzt wird, damit es zukünftig nicht mehr aufgerufen wird.
Pseudocode
Delphi-Quellcode:
Procedure Form1.OnCreate
Begin FAppStart := True; // Variable in Form1 End; Procedure Form1.OnActivate Begin If FAppStart then begin // Hier Initialisierungen etc. ausführen FAppStart := False; End; End; |
AW: Serververbindung nach FormCreate
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; |
AW: Serververbindung nach FormCreate
Zitat:
Delphi sagt: Zitat:
|
AW: Serververbindung nach FormCreate
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. |
AW: Serververbindung nach FormCreate
Zitat:
|
AW: Serververbindung nach FormCreate
Noch eine Alternative:
Timer nehmen mit Intervall 1. Erste Aktion im Timer-Event ist das Deaktivieren des Timers, dann Verbindung herstellen. |
AW: Serververbindung nach FormCreate
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:
Funktionell das Gleiche wie PostMessage und Timer.
procedure TMainForm.FormShow(Sender: TObject);
begin TThread.ForceQueue(nil, procedure begin MachWasImmerGetanWerdenMuss; end); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:48 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