Ich hab sowas auch im OnActivate drin mit Schalter FirstActivate.
Hat sich auch bei mir bewährt: In OnCreate wird die private Boolean-Variable StartModus auf True gesetzt, am Ende von OnShow (wird
nach vor OnActivate aufgerufen) wieder auf False.
Ein Aufruf Die Ereignisbehandlung von OnShow wird nur ausgeführt, wenn StartModus = True. Das ist auch in anderen Zusammenhängen wie z.B. dem aktivieren einer
DB-Connection, um z.B. bestimmte Events zu verhindern, die erst nach dem Start aktiviert werden sollen, recht nützlich.
Zum Verständnis: OnCreate des Hauptformulars wird nur einmal aufgerufen, OnActivate und OnShow können u.U. auch mehrfach aufgerufen werden.
Will man ganz sicher sein, das der Aufbau der Form vor dem Anzeigen eines Dialogs abgeschlossen ist, hilft ein Application.ProcessMessages vor dem Aufruf des Dialogs.