Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm bei Klick auf "X" minimieren (https://www.delphipraxis.net/44688-programm-bei-klick-auf-x-minimieren.html)

Matze 22. Apr 2005 20:33


Programm bei Klick auf "X" minimieren
 
Moin :hi:

Ich möchte, dass meine Anwendung per Klick auf das "X" oben rechts minimiert wird (es wird dann in der TNA eingetragen).

Versucht habe ich's so:
Delphi-Quellcode:
//OnCloseQuery
  if MinimizeAtClose then
  begin
    Application.Minimize;
    CanClose := false;
  end else
    CanClose := true;
und so:
Delphi-Quellcode:
//OnClose
  if MinimizeAtClose then
  begin
    Application.Minimize;
    Action := caNone;
  end;
beides geht nur einmal gut, danach passiert bei Klick auf "X" nichts mehr.
Und wenn ich die Anwendung so in die TNA minimiere und doppelt auf das TNA Icon klicke, wird das Fenster nur im Hintergrund sichtbar, was mir auch ein Rätsel ist.

Kann mir jemand sagen, wo der Fehler liegt?

Rastaman 22. Apr 2005 20:35

Re: Programm bei Klick auf "X" minimieren
 
Vllt erst Action := canone und dann minimieren?

Matze 22. Apr 2005 20:36

Re: Programm bei Klick auf "X" minimieren
 
Nein, kommt auf das gleiche heraus. :?

malo 22. Apr 2005 20:42

Re: Programm bei Klick auf "X" minimieren
 
Vielleicht anders herum? Erst minimieren und dann Action auf caNone? Oder... ich weiß nicht genau, aber ich glaub, es gibt sowas wie caMinimize. Schau mal in der OH unter Delphi-Referenz durchsuchenClose oder Delphi-Referenz durchsuchenCloseAction. ;)

//edit: Der erste Fall fällt natürlich aus, hat ja nicht geklappt :oops:

Matze 22. Apr 2005 20:47

Re: Programm bei Klick auf "X" minimieren
 
Zitat:

Zitat von malo
Vielleicht anders herum? Erst minimieren und dann Action auf caNone?

So hatte ich es ja.

Zitat:

Zitat von malo
Oder... ich weiß nicht genau, aber ich glaub, es gibt sowas wie caMinimize.

Kenne ich nicht, gibt's in der Form wohl nicht.

Zitat:

Zitat von malo
Schau mal in der OH unter Delphi-Referenz durchsuchenClose oder Delphi-Referenz durchsuchenCloseAction. ;)

Da finde ich nichts. Ich muss zugeben, mit der neuen OH komme ich gar nicht klar.

Sprache: Delphi
Begriff: "CloseAction"
Ergebnisse: keine :gruebel:

malo 22. Apr 2005 20:49

Re: Programm bei Klick auf "X" minimieren
 
Zitat:

Zitat von Matze
Zitat:

Zitat von malo
Vielleicht anders herum? Erst minimieren und dann Action auf caNone?

So hatte ich es ja.

Zitat:

Zitat von malo
Oder... ich weiß nicht genau, aber ich glaub, es gibt sowas wie caMinimize.

Kenne ich nicht, gibt's in der Form wohl nicht.

Zitat:

Zitat von malo
Schau mal in der OH unter Delphi-Referenz durchsuchenClose oder Delphi-Referenz durchsuchenCloseAction. ;)

Da finde ich nichts. Ich muss zugeben, mit der neuen OH komme ich gar nicht klar.

Sprache: Delphi
Begriff: "CloseAction"
Ergebnisse: keine :gruebel:

Ich hab hier grad kein Delphi auf dem PC. Ein kleiner Tipp jedoch: Schau mal in deiner D7-OH. Mach ich auch immer :zwinker:

Ich selbst hab es jedoch irgendwie mit der CloseAction gemacht... ich glaub, es war caMinimize ;)

//edit: Eventuell mal etwas unter "Close" suchen... hab ich auch gemacht. Wenn ich hier ein Delphi hätte, würd ich selbst eben nachgucken ;)

BenjaminH 22. Apr 2005 21:07

Re: Programm bei Klick auf "X" minimieren
 
Also mit dem Begriff Delphi-Referenz durchsuchenTCloseAction hab ich genug gefunden:
caMinimize
[Edit]Das war sogar die D2005 Hilfe [/Edit]

malo 22. Apr 2005 21:08

Re: Programm bei Klick auf "X" minimieren
 
Zitat:

Zitat von BenjaminH
Also mit dem Begriff Delphi-Referenz durchsuchenTCloseAction hab ich genug gefunden:
caMinimize
[Edit]Das war sogar die D2005 Hilfe [/Edit]

//edit: :oops: Hätte es wissen müssen, dass "CloseAction" ja kein Typ ist :wall:

Matze 22. Apr 2005 21:19

Re: Programm bei Klick auf "X" minimieren
 
Ah "TCloseAction" stimmt, da findet er was.

Delphi-Quellcode:
Action := caMinimize;
geht soweit, nur ist mein Symbol nicht mehr in der TNA :gruebel:

malo 22. Apr 2005 21:32

Re: Programm bei Klick auf "X" minimieren
 
Zitat:

Zitat von Matze
Ah "TCloseAction" stimmt, da findet er was.

Delphi-Quellcode:
Action := caMinimize;
geht soweit, nur ist mein Symbol nicht mehr in der TNA :gruebel:

Womit jagst du dein Programm denn in die TNA? Der Code aus der CodeLib? Oder CoolTrayIcon? Zeig doch einfach mal die enstprechende Funktion, vielleicht lässt sich da der Fehler finden ;)

Matze 22. Apr 2005 21:35

Re: Programm bei Klick auf "X" minimieren
 
Ich mache das mit dem CodeLib-Code.

In die TNA habe ich es dann so gegeben, da es anders per Klick auf "X" nicht ging:

Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
  Hide;
  Shell_NotifyIcon(NIM_ADD, @IconData);
end;

Stanlay Hanks 22. Apr 2005 21:42

Re: Programm bei Klick auf "X" minimieren
 
Hi Matze. Versuchs doch mal mit dem in D2005 enthaltenen "NotifyIcon". Vielleicht gehts ja damit.

Man liest sich, Stanlay :hi:

malo 22. Apr 2005 21:42

Re: Programm bei Klick auf "X" minimieren
 
Versuch mal in der Prozedur "WndProc" eine neue Case-Abzweigung zu erstellen, die "WM_Minimize" heißt, und da einfach mal den Code einzugeben. Ich weiß zwar nicht, ob es funktioniert, aber ein Versuch wär es ja wert... ;)

Matze 22. Apr 2005 21:44

Re: Programm bei Klick auf "X" minimieren
 
Das kenne ich nur für .NET (WinForms). Wo ist das denn bei der VCL zu finden? :angle2:

MathiasSimmack 22. Apr 2005 21:50

Re: Programm bei Klick auf "X" minimieren
 
Zitat:

Zitat von malo
Versuch mal in der Prozedur "WndProc" eine neue Case-Abzweigung zu erstellen, die "WM_Minimize" heißt, und da einfach mal den Code einzugeben.

Richtiger wäre WM_SIZE mit Auswertung SIZE_MINIMIZED. Es gibt ja noch diesen Systemhotkey [Win]+[M], mit dem man alle Fenster minimieren kann. Wir hatten das schon mal ausprobiert, aber mit WM_MINIMIZE funktioniert es irgendwie nicht, und das Programm würde normal in die Taskleiste minimiert werden. Es klappt nur mit dem o.g. WM_SIZE/SIZE_MINIMIZED. Allerdings nur bei nonVCL. Bei Delphi 5 reagierte das Programm irgendwie nicht korrekt. Aber evtl. ist das ja in Delphi 2005 endlich behoben worden.

Matze 22. Apr 2005 21:57

Re: Programm bei Klick auf "X" minimieren
 
Ich habe es nun so versucht:

Delphi-Quellcode:
procedure TForm1.WMSize(var Message: TWMSize);
begin
    if(Message.Msg = WM_SIZE) and
    (Message.SizeType = SIZE_MINIMIZED) then
  begin
    Hide;
    // Icon nur anzeigen wenn Fenster minimiert
    Shell_NotifyIcon(NIM_ADD, @IconData);
  end
  else
    inherited;
end;
Aber einen Unterschied kann ich nicht feststellen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:11 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