Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Vernichten von Application.Processmessages

  Alt 20. Mai 2015, 11:12
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.
  Mit Zitat antworten Zitat