Oben hatte SirRufo doch einen Hinweis auf OnIdle geliefert:
Die VCL-Form ist gesichert komplett gezeichnet beim ersten Application.OnIdle Event nach dem Form.OnShow Event.
Ist dieser Hinweis denn nicht brauchbar? Könnte man denn nicht einfach in der OnIdle-Ereignisbehandlung eine globale Boolean-Variable, die als Schalter fungiert, abfragen, so daß die Anweisungen nur dieses eine Mal ausgeführt werden? Z.B. so:
Delphi-Quellcode:
...
private
Var
FirstIdlePassed : Boolean;
public
procedure MyOnIdleHandler(Sender: TObject; var Done: Boolean);
end;
procedure TForm1.MyOnIdleHandler(Sender: TObject; var Done: Boolean);
begin
Done := False;
If FirstIdlePassed Then Exit;
FirstIdlePassed := True;
ShowMessage('Das erste OnIdle-Event!');
...
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FirstIdlePassed := False;
Application.OnIdle := MyOnIdleHandler;
end;
Nachtrag:
Ob das dann auch in Lazarus funktioniert, muß man gegebenenfalls ausprobieren ... Ach ja, bei Lazarus muß man das @ davor setzen:
Application.OnIdle := @MyOnIdleHandler;