![]() |
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. |
Re: wie merken, wenn mein Programm nicht im Fordergrund ist?
Hallo,
Mit
Delphi-Quellcode:
bekommst du leicht heraus, ob dein Programm minimiert ist,
if Form1.WindowState = wsMinimized then ...
mit
Delphi-Quellcode:
ob dein Programm (bzw. Fenster) aktiv ist.
if Form1.Active then ...
Gruß Pascal |
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: |
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? |
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?
|
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?
|
Re: wie merken, wenn mein Programm nicht im Vordergrund ist?
Ich habe mal einen Blick in Hilfe risikiert :wink:, und folgendes gefunden:
Delphi-Quellcode:
So müsste es gehen.
procedure TForm1.FormCreate(Sender: TObject);
begin Application.OnDeactivate := AppDeactivate; end; procedure TForm1.AppDeactivate(Sender: TObject); begin Application.Minimize; end; @DJTonic: Ich habe es selber probiert und es funktioniert wirklich nicht, keine Ahnung, warum. Vielleicht krieg ich noch was raus. |
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 |
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. |
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. |
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