Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi FormActivate, wann wird es ausgelößt? (https://www.delphipraxis.net/72857-formactivate-wann-wird-es-ausgeloesst.html)

ferby 8. Jul 2006 00:37


FormActivate, wann wird es ausgelößt?
 
Hallo,

Der Delphi Hilfe habe ich entnommen,
dass das FormActivate Ereigniss immer ausgelößt wird,
wenn ein anderes Fenster aktiv ist und ich dann auf das eigene Programm klicke,
sprich es aktiviere.

Aber irgendwie geht das nicht...

Ich habe jetzt mehrere Dinge versucht, aber jedesmal
wird dieses Ereigniss nur einmal, und zwar beim
starten des Programs aufgerufen.

Ich habe ein Programm nur zum Testen geschrieben:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormActivate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  i: integer;

implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
begin
  button1.caption:=inttostr(i);
  inc(i);
end;

end.
Nach dem Start des Programs ist die Button Caption auf 0,
also wurde FormActivate 1x ausgeführt.
Aber ich bekomme es nicht zusammen,
das die Caption sich ändert.
Ich habe andere Programme geöffnet und dann auf das eigene geklickt,
nichts tut sich.

Wann wird FormActivate ausgeführt?
Bzw. welches Ereigniss wird ausgeführt wenn das Programm
wieder aktiv geschalten wird, sprich wenn der Benutzer zum Beispiel
mit Alt + Tab herumspringt....


Dankbar für jede Hilfe!

Hawkeye219 8. Jul 2006 00:50

Re: FormActivate, wann wird es ausgelößt?
 
Hallo ferby,

Zitat:

Zitat von Delphi-Hilfe
Erfolgt die Übergabe der Steuerung von einer anderen Anwendung durch Windows, wird das Ereignis OnActivate des Anwendungsobjekts (TApplication), nicht des Formulars ausgelöst.

Die Zuweisung zu TApplication.OnActivate kannst du entweder direkt im Quelltext oder mit Hilfe der Komponente Delphi-Referenz durchsuchenTApplicationEvents durchführen.

Gruß Hawkeye

ferby 8. Jul 2006 00:54

Re: FormActivate, wann wird es ausgelößt?
 
Hallo,

danke für deinen Hilfe.

Wie meinst du das, mit direkt im Quelltext??

So geht es nicht:

Delphi-Quellcode:
procedure TApplication.OnActivate;
begin
  button1.caption:=inttostr(i);
  inc(i);
end;

Aber wie sonst?

Edit:
Ps. Mit der Komponente ApplicationEvents geht es, danke

Hawkeye219 8. Jul 2006 01:23

Re: FormActivate, wann wird es ausgelößt?
 
So kannst du ein Ereignis mit einer Behandlungsroutine im Quelltext verknüpfen:

Delphi-Quellcode:
procedure Form1.FormActivate (Sender: TObject);
begin
  Button1.Caption := IntToStr(i);
  Inc (i);
end;

procedure Form1.FormCreate (Sender: TObject);
begin
  Application.OnActivate := FormActivate; // <-- hier ist die Zuweisung
end;
Gruß Hawkeye

ferby 9. Jul 2006 11:50

Re: FormActivate, wann wird es ausgelößt?
 
Hallo,

danke, funktioniert auch wunderbar!
Diese Lösung finde ich sogar besser!


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz