Hallo,
bisher habe ich WinControls im onCreate des jeweiligen ParentForm initialisiert.
Manche WinControls benötigen aber Daten aus einem anderen Form/DatenModul (bei mir meist nur das DatenModul). Die hab' ich dann im ParentForm.onActivate initialisiert (über Bool nur einmaliger Durchlauf der Initialisierung). Zumindest ging ich bisher davon aus, das MainForm.onActivate erst eintritt, wenn alle anderen Fenster samt enthaltener Objekte fertig initialisiert sind.
Jetzt hatte ich folgenden Fall:
MainForm mit DBGrid. Wird via Datasource/
Query/Connection gefüllt, die alle in einem Datenmodul liegen.
Beim Start dann Peng... Zugriffsverletzung. Offenbar ist bei MainForm.onActivate eines der Datenzugriffs-Objekte im DatenModul noch nicht fertig initialisiert. Eine Abfrage, ob das entsprechende Datenzugriffs-Objekt bereit ist, verzögert wegen der nötigen Schleife den Programmstart erheblich.
Ich hab' zwei Alternativen getestet:
1) Timer im MainForm ruft eine Methode auf, die die Initialisierung vornimmt (die vorher in MainForm.onActivate war)
2) Application.onActivate enhält jetzt den Code von MainForm.onActivate
Beide Versionen funktionieren.
Wann ist sichergestellt, das alle Objekte
aller automatisch erzeugten Fenster fertig erzeugt sind?