Einzelnen Beitrag anzeigen

Thomas_K

Registriert seit: 16. Apr 2006
71 Beiträge
 
Delphi XE8 Professional
 
#10

AW: Vernichten von Application.Processmessages

  Alt 20. Mai 2015, 14:19

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;
Die Hilfsvariablensteuerung kann man sich sparen, wenn sich die Ereignis- Routine selbst vom Objekt/Instanz abkoppelt.

Delphi-Quellcode:
type
  TBaseForm = class(TForm)
    procedure FormActivate(Sender: TObject);
  public
    procedure initGUI(); virtual;
  end;

procedure TBaseForm.initGUI();
begin
   // Empty
end;

procedure TBaseForm.FormActivate(Sender: TObject);
begin
   OnActivate = nil;
   initGUI();
   firstActivateHappened := True;
   inherited;
end;
Die selbe Funktionalität wie oben, nur mit weniger Code.
  Mit Zitat antworten Zitat