Einzelnen Beitrag anzeigen

itblumi

Registriert seit: 28. Mär 2009
73 Beiträge
 
Delphi XE6 Professional
 
#2

AW: Click auf Taskbarbutton löst onDeactivate onActivate aus

  Alt 21. Nov 2022, 16:08
Hallo v2afrank,

ich kann dir leider nicht beantworten warum dies geschieht, aber ich kann dir einen workaround anbieten. Den Fehler konnte ich auch mit meinem XE6 nach stellen, aber ich denke das diese Events von Windows selbst ausgeführt werden und das Delphi das nicht kontrolliert. Ich kann mich da aber auch irren.
Da du aber weist das bei einem OnMinimize auch ein OnRestore folgen muss kannst du dies benutzen um den Fehler zu beheben und dann selbst das OnActivate Event ausführen.

Delphi-Quellcode:
  private
    { Private-Deklarationen }
    NeedRestore: Boolean;
  public
    { Public-Deklarationen }
  end;

var
  Form7: TForm7;

implementation

{$R *.dfm}

procedure TForm7.ApplicationEvents1Activate(Sender: TObject);
begin
  if (not NeedRestore) then
    Memo1.Lines.add('Activate: '+TimeToStr(Time));
end;

procedure TForm7.ApplicationEvents1Deactivate(Sender: TObject);
begin
  Memo1.Lines.add('Deactivate: '+TimeToStr(Time));
end;

procedure TForm7.ApplicationEvents1Minimize(Sender: TObject);
begin
  Memo1.Lines.add('Minimize: '+TimeToStr(Time));
  NeedRestore := True;
end;

procedure TForm7.ApplicationEvents1Restore(Sender: TObject);
begin
  Memo1.Lines.add('OnRestore: '+TimeToStr(Time));
  NeedRestore := False;
  if (Assigned(Application.OnActivate)) then
    Application.OnActivate(Application);
end;
Jan
Ein neuer Tag bringt so einiges mit sich. Was auch immer es ist, es bleibt ein kleines Abenteuer.
  Mit Zitat antworten Zitat