Autor Beitrag
Atreyu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 137


Delphi 7 Enterprise
BeitragVerfasst: Mi 21.11.07 15:20 
Ich hab jetzt ne kleine Anwendung. Nun brauche ich einen Event, der getriggert wird, wenn der User von meiner Anwendung auf irgendwas anderes wechselt, bzw ob beim Klick zurück auf meine Anwendung diese gerade aktiv (im Vordergrund) ist oder nicht.
Irgendwie find ich da nix.


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mi 21.11.2007 um 14:21
TProgger
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 148

XP
D6, D2007 prof
BeitragVerfasst: Mi 21.11.07 15:41 
von deinem HauptForm den Status abfragen?
ausblenden Delphi-Quelltext
1:
if Self.Active then...					

oder mal in den ApplicationEvents nachschauen, da gibts auch einige Events, die ausgelöst werden, wenn die Application deaktiviert wird.

_________________
Wir haben für jede Lösung das richtige Problem ;)
Atreyu Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 137


Delphi 7 Enterprise
BeitragVerfasst: Sa 24.11.07 23:13 
Funktioniert leider nicht. Auch keiner der Tform events kann das irgendwie...
Christian R.
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 25.11.07 04:45 
Erkläre mal bitte etwas genauer, ich weiß nicht ob ich es richtig verstanden habe.

user profile iconAtreyu hat folgendes geschrieben:
... wenn der User von meiner Anwendung auf irgendwas anderes wechselt, bzw ob beim Klick zurück auf meine Anwendung diese gerade aktiv (im Vordergrund) ist oder nicht. ...

Wenn Du auf die Anwendung zurück klickst, dann war sie bestimmt nicht aktiv sondern wrid es in genau dem Moment, wo sie geklickt wird.

Ich vermute mal, Du möchtest herausfinden, ob beim Klick auf Deine Anwendung, diese Anwendung bereits aktiviert war. Ich weiß jetzt nicht genau welches Event Du benutzen musst. Aber sinnvoll wäre es z. B. eine boolsche Variable einzusetzen, die bei Deativierung der Anwendung auf False und bei Aktivierung auf True gestzt wird. Nun musst Du Deine Algorhythmen, die bei Aktivierung und Deaktivierung ausgeführt werden nur noch in eine IF-Struktur packen.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
if Self.statActive = True then
begin
  Self.statActive := False;
  // ...
end
else
begin
  Self.statActive := True;
  // ...
end;


Ich hoffe, das hilft Dir weiter.
Atreyu Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 137


Delphi 7 Enterprise
BeitragVerfasst: So 25.11.07 15:17 
Leider nicht, das sind ja keine Events.

Also:

Ich hab mein Prog offen und beispielsweise Word, whatever. Meins ist aktiv. Dann klicke ich auf das Word Fenster. Meine Anwendung ist nun nicht aktiv, sondern Word. Meins arbeitet noch im Hintergrund aber ist nicht das aktive Proggy.

Ich brauche ein Event, dass erkennt, dass mein Prog gerade aktiv oder inaktiv geworden ist. Es muss doch einen Trigger dafür geben. Schliesslich muss WIndows ja auch die Taskbar (Farben, usw) verändern. Eine Variable kann ich selber setzen, aber ein Event sollte doch vorgegeben sein.
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1335
Erhaltene Danke: 118

Win 10
RIO, CE, Lazarus
BeitragVerfasst: So 25.11.07 16:08 
Warum es mit dem Form Events nicht geht weis ich nicht :?
Aber ich habe im Beispiel einfach mal für form1.OnActive und Form1.OnDeactivate ein Event erstellt. Und die beiden Handler dann auf die namensgleichen Events der Application Variable gehangen. Und siehe da es geht :wink:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.FormActivate(Sender: TObject);
begin
  Application.Title := 'Show';
end;

procedure TForm1.FormDeactivate(Sender: TObject);
begin
  Application.Title := 'Hide';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnActivate := FormActivate;
  Application.OnDeactivate := FormDeactivate;
end;

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
Atreyu Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 137


Delphi 7 Enterprise
BeitragVerfasst: So 25.11.07 16:12 
Hui, die Zeieln bei OnCreate hab ich nicht gehabt... ausprobieren!=)

Danke dir erstmal.
TProgger
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 148

XP
D6, D2007 prof
BeitragVerfasst: So 25.11.07 17:21 
Schau mal in deiner Komponentenpalette unter Zusätzlich, da gibts TApplicationEvents.
Pack dir das aufs Form und stöber im ObjectInspector mal die Eigenschaften durch und les die dazugehörigen Hilfetexte. Da ist sicher einiges dabei, was für dich in Frage kommt.

_________________
Wir haben für jede Lösung das richtige Problem ;)
Atreyu Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 137


Delphi 7 Enterprise
BeitragVerfasst: Mi 28.11.07 13:53 
Stimmt, nur leider lassen diese Komponenten die StayOnTop-Eigenschaft meines Programmes noch schneller versinken.
Naja, ich werds wohl anders lösen.