Kommt jedes mal wenn die Form/App den Focus erhält... (Windows)
Create nur 1x!
Ja. Zugegeben, man muss man sich einmal merken ob das OnActivate nun schon mal stattgefunden hat oder nicht:
Delphi-Quellcode:
type
TBaseForm = class(TForm)
procedure FormActivate(Sender: TObject);
private var
firstActivateHappened: Boolean;
public
procedure initGUI(); virtual;
end;
procedure TBaseForm.initGUI();
begin
// Empty
end;
procedure TBaseForm.FormActivate(Sender: TObject);
begin
if (not firstActivateHappened) then begin
initGUI();
firstActivateHappened := True;
end;
inherited;
end;
Das sind zwar zwei Zeilen mehr als es im OnCreate zu machen, aber eine Boolean-Variable ist im Vergleich zu einem
TThread.Queue(..)
oder
Application.ProcessMessages()
so herrlich unspektakulär
Du hättest nun einfach
Delphi-Quellcode:
procedure TMainForm.initGUI();
begin
inherited;
Berechne_Element_auf_CenterPanel(CenterPanel.Width);
end;
Genau für Dinge wie "
Wie groß ist das Element nun?" nehme ich immer "meine"
OnActivate
-Lösung und war damit eigentlich immer glücklich.