Den Button kann man ja auch im onClose wieder deaktivieren ...
Die Lösung mit dem Zähler halte ich jedoch für fragwürdig, weil
der Aspekt mit dem "Daten drinnen stehen" völlig ausser acht gelassen wird.
Zitat:
wenn die Form noch nicht offen ist, bzw die Daten noch nicht drinnen sind
Deine
MDI-Form zieht die Daten vermutlich aus einer Table oder
Query.
Wie wärs, wenn du den Button nicht im onCreate aktivierst sondern nachdem die Datenquelle geöffnet bzw. verbunden wurde.
Dann kannst du sogar noch prüfen ob die Datenquelle auch Datensätze enthält.
Zu diesem Zeitpunkt ist sicher das die Form existiert und Daten auch enthält ...
z.B.
if mdiform.dbgrid1.datasource.dataset.recordcount > 0 then frmmain.Drucken.Enabled:=true