![]() |
Application.OnActivate...
Moin,
meine Frage ist für die meisten sicherlich sehr einfach, aber ich kriege es leider nicht auf die Reihe... Ich möchte nur das Event "Application.OnActivate" auslösen, kriege es aber nicht hin ... Was nun sprach Zeus? Grüsse, Ricane |
Zeus hat durch das Orakel gesprochen:
Zitat:
|
Mmhhh.....
soweit war ich ehrlich gesagt auch schon. Ich gucke auch zuerst immer in die Hilfe und wenn da nix gescheites drin steht, wende ich mich ans Forum ... Ä bisschle konkräta büdde ! Greetz, Ricane |
Form1 auswählen -> Object Inspector -> Events -> ein Doppelklick bei "OnActivate" .
Meinst du das? |
Du sagtest, du wolltest dieses Ereignis auslösen. Für mich heißt das, du willst, dass die Ereignisroutine, die du in Application.OnActivate geschrieben hast, ausgelöst wird. Und laut der Hilfe ist das jedesmal der Fall, wenn deine Anwendung wieder den Fokus bekommt.
|
Moin Chewie,
nicht ganz. Wenn das Programm den Focus erhält wird das OnActivate des Application Objektes ausgelöst (das des Formulares nur einmal zu Beginn). Hintergrund des Ganzen ist, dass ein jedes fensterorientiertes Delphiprogramm aus mindestens zwei Fenstern besteht. Zum einen ein unsichtbares Fenster (das des Application Objektes) und das, diesem untergeordnete, Hauptformular (z.B. Form1). Soll also nun bei jedem Aktvieren des Programmes etwas passieren, so muss man Application.OnActivate eine entsprechende Routine zuornden, und nicht Form1.OnActivate. |
Zitat:
Ich werde nämlich (leider) aus deinem Post nicht allzu schlau. |
Zitat:
Du kannst es einfach ausprobieren, schreibe im OnActivate des Formulares einfach mal eine ShowMessage('');, dann wirst Du schon sehen wie oft es kommt. Beim hin und her schalten zwischen programmen, Minimieren, Maximieren, einfach mal damit Spielen. Grüsse, Daniel :hi: |
Eben. Nur verstehe ich dann Christian Seehases Post nicht.
|
Jetzt hab ich ein bisschen Schmarrn erzählt.
OnActivate tritt eigentlich nur einmal ein, so ähnlich wie OnCreate. Nur, OnActivate tritt auch noch ein wenn die Anwendung(also TApplication) den Fokus erhält, aber nicht das Formular. Oder auch anders gesagt: Kontrolle wird von einem Fenster aus einer anderen Anwendung zu einem Fenster dieser Anwendung übertragen wird. Grüsse, Daniel :hi: |
Also,
vielleicht habe ich mich ja auch etwas undeutlich ausgedrückt... Das Ereignis
Code:
ist nicht gemeint. Dann wird nur beim starten der Form das Event ausgelöst. Ich möchte aber das das Ereignis jedesmal ausgelöst wird, wenn die Form den Fokus erhält. Das wäre dann
procedure TForm1.FormActivate(Sender: TObject);
begin end;
Code:
aber wie bindet man das ein ...
Application.OnActivate
Grüsse, Ricane |
Ahh ....
jetzt habe ich es zufällig selbst gefunden. Es gibt ein Steuerelement welches sich um diese Events kümmert. Das Element heisst "ApplicationEvents" Grüsse, Ricane |
Zitat:
Wenn man nur 1 Formular hat, dann stimmt deine Aussage. Hat man hingegen mehrere Formulare, so wird TForm.OnActivate sehr wohl häufiger aufgerufen. |
ApplicationActivate
:dancer:
Also wenn ich richtig vermute was du meinst ist dies ganz einfach... 1. Füge zuerst im "FormCreate" Ereignis den folgenden Code ein procedure TForm1.FormCreate(Sender: TObject); begin with Application do begin OnMinimize:=ApplicationMinimize; OnRestore:=ApplicationRestore; OnActivate:=ApplicationActivate; end; end 2. Erzeuge dann unter "Private" die entsprechenden Prozedur Deklarationen procedure ApplicationMinimize(Sender: TObject); procedure ApplicationRestore(Sender: TObject); procedure ApplicationActivate(Sender:TObject); 3. Anschließend im Implementation's teil entsprechend die Ereignisse füllen procedure TForm1.ApplicationActivate(Sender: TObject); begin ShowMessage('Mein Anwendung wurde grade aktiviert !'); end; entsprechendes gilt für ApplicationRestore und ApplicationMinimize Gruß Martin... end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz