Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi wie merken, wenn mein Programm nicht im Vordergrund ist? (https://www.delphipraxis.net/7516-wie-merken-wenn-mein-programm-nicht-im-vordergrund-ist.html)

DJTonic 14. Aug 2003 17:26


wie merken, wenn mein Programm nicht im Vordergrund ist?
 
Ich hoffe mir kann jemand helfen:
Ich bräuchte einen Codeschnipsel, damit ich merken kann, ob mein Programm im Fordergrund ist oder ob ein anderes Programm im Fordergrund ist (also mit den der user arbeitet) oder ob er mein Programm minimiert hat.
Wäre wichtig.
Danke schonmal im voraus.

Pascal 14. Aug 2003 17:29

Re: wie merken, wenn mein Programm nicht im Fordergrund ist?
 
Hallo,

Mit
Delphi-Quellcode:
if Form1.WindowState = wsMinimized then ...
bekommst du leicht heraus, ob dein Programm minimiert ist,

mit
Delphi-Quellcode:
if Form1.Active then ...
ob dein Programm (bzw. Fenster) aktiv ist.

Gruß Pascal

Stanlay Hanks 14. Aug 2003 17:30

Re: wie merken, wenn mein Programm nicht im Fordergrund ist?
 
Hallo und herzlich willkommen im Forum! :hi:

1. Es heißt Vordergrund :wink:
2. Ich weiß leider nicht, wie du merkst, wenn dein Prog im Hintergrund ist, aber mit SetForegroundWindow(HandleDeinesProgs) (oder so ähnlich) kannst du dein programm normalerweise wieder in den Vordergrund bringen. Also wenn du das regelmäßig mit einem Timer machst, wäre dein Programm fast zu jeder Zeit im Vordergrund.

Oder hast du was anderes vor, als nur dein Programm im Vordergrund zu halten?

Man liest sich, Stanlay :hi:

DJTonic 14. Aug 2003 17:34

Re: wie merken, wenn mein Programm nicht im Fordergrund ist?
 
Ups, dummer Tippfehler :-)

Danke schonmal für den Tip mit dem Aktiv. Funktioniert wunderbar.
ABER:
das mit dem minimieren geht nicht.
ich habe geschrieben:
if Form1.WindowState = wsMinimized then begin
label1.caption :='war minimiert';
end;

geht aber nicht. nicht wenn ich alles minimiere oder nur das eine programm mit dem Strich beim X.
hab ich was falsch gemacht?

Pseudemys Nelsoni 14. Aug 2003 18:26

Re: wie merken, wenn mein Programm nicht im Fordergrund ist?
 
dazu hab ich auch eine frage, und zwar möchte ich das mein programm das wenn es nicht das aktive mehr ist es minimietr wird...aber in welche prozedur pack ich das?

Pseudemys Nelsoni 14. Aug 2003 19:18

Re: wie merken, wenn mein Programm nicht im Fordergrund ist?
 
aus der SDK hab ich gelesen das es mit WM_ACTIVATE WA_INACTIVE geht...aber in welche prozedur kommt das? bzw wie fängt man die messages ab, und wann?

Pascal 15. Aug 2003 08:44

Re: wie merken, wenn mein Programm nicht im Vordergrund ist?
 
Ich habe mal einen Blick in Hilfe risikiert :wink:, und folgendes gefunden:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnDeactivate := AppDeactivate;
end;

procedure TForm1.AppDeactivate(Sender: TObject);
begin
  Application.Minimize;
end;
So müsste es gehen.
@DJTonic: Ich habe es selber probiert und es funktioniert wirklich nicht, keine Ahnung, warum. Vielleicht krieg ich noch was raus.

alcaeus 15. Aug 2003 09:14

Re: wie merken, wenn mein Programm nicht im Vordergrund ist?
 
Es gibt diese Komponente TApplicationEvents. Damit kannst du Anwendungs(nicht Formular-)ereignisse abfangen und behandeln. Beispiele dafür wären:
OnActivate
OnDeactivate
OnException
OnIdle
OnMinimize
OnRestore
Mit diesen Ereignissen kann man so ziemlich alles abfangen...

Hoffe das hilft weiter

Pascal 15. Aug 2003 09:57

Re: wie merken, wenn mein Programm nicht im Vordergrund ist?
 
Richtig, so habe ich es ja auch oben beschrieben.
Allerdings habe ich es so verstanden, dass er nicht beim minimieren etwas machen will, sondern irgenwann mal feststellen will, ob sein Fenster momentan minimiert ist.
Und wie er das feststellt, ist mir noch nicht klar.

alcaeus 15. Aug 2003 10:01

Re: wie merken, wenn mein Programm nicht im Vordergrund ist?
 
Am einfachsten: in OnMinimize eine Boolean-Variable setzen, bei OnActivate zurücksetzen. Ist Variable gesetzt => Fenster minimiert...


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:05 Uhr.
Seite 1 von 2  1 2      

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