Also ich habe es mal kurz ausprobiert bei mir läuft alles!
Ich habe auf das TForm ein TTimer gelegt, das Property TTimer.Interval auf 3000 gesetzt und dem Ereignis TTimer.OnTimer Form1ButtonClick zugewiesen, das war es.
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
gocher hat geschrieben:TForm ein TTimer gelegt, das Property TTimer.Interval auf 3000 gesetzt und dem Ereignis TTimer.OnTimer Form1ButtonClick
Das ist die schlechteste Variante. Was ist denn, wenn der Start länger als 3 Sekunden dauert, z.B. wenn irgendwas parallel knuspert? Und wie fühlt es sich für den Anwender an, wenn der Start sehr schnell geht und das Programm nach ein paar Sekunden irgendwas ohne seinen Einfluss macht?
Das Problem ist das meine tpaintbox da teilweise noch keine Höhe bzw. Breite zugewiesen bekonnen hat.Was sicherlich noch von Bedeutung ist, das ich die hauptform beim öffnen maximiere. Die Paintboxgröße ist abhängig von der Formgröße. Mit einem kleineren Versuch hat es bei mir auch geklappt(showmessage war im onshow geöffnet und Form war im Hintergrund schon da!)
Ich denke da ich viel im oncreate der Form mache das dadurch wirklich die Form bei onshow noch nicht ganz fertig ist!?
Glaube ich nicht, aber showmessage ist hierbei kein guter Berater.
Wenn du wissen willst, was abgeht, dann mach lieber writeln und starte das ganze von/via/mit Konsole.
Wie dem auch sei: OnPaint ist DER Moment zum zeichnen. Wenn etwas noch nicht bereit ist, dann mach halt ein Flag, welches das Zeichnen verhindert, resp. forciere das Zeichnen mit Invalidate, wenn es "ready" ist.
An alle die ein ähnliches Problem haben:onpaint ist die Lösung, aber seid nicht so dumm wie ich und nehmt das Ereignis von dem Element und nicht von der Form!
Tut mir Leid. Vielleicht konnte ich wenigstens jemand anderen helfen!