Fenster unsichtbar machen --> Systray

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Fenster unsichtbar machen --> Systray

Beitrag von bembulak »

Hallo!

Gerade beschäftigt mich das Thema Systray unter Windows. Ich habe im Examples Verzeichnis der Laz-Installation auch ein Beispiel gefunden.
Ich weiß somit, wie man ein Icon im Systray hinzufügt.

Was ich allerding nicht raffe:
ich möchte gerne, dass ich meine MainForm durch klicken von "X" oder beim Shortcut "ALT+F4" nicht schließt, sonder nur in den Tray minimiert wird. Wenn ich dann auf den Tray klicke, hätte ich gerne ein Popup-Menü, um das Fenster wieder zu vergrößern.

Kann mir jemand einen Tip geben, oder einen Hinweis, wo ich die Information finden kann? Die Frage bezieht sich in dem Fall ausschließlich auf W32, es ist also nicht nötig, dass der Code/die Ressource/die Information crossplattform ist. Dankeschön und schönen Abend noch!

edit:// OK,

Code: Alles auswählen

Form1.Visible %u3a= False;
dürfte meine Frage wohl beantwortet haben. Manchmal übersieht man einfach das Offensichtlichste.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Du kannst im OnClose deiner MainForm CloseAction auf caNone setzen. Damit wird deine Applikation nicht beendet.
Mit MainForm.Hide; kannst du sie dann verstecken.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Code: Alles auswählen

CloseAction := caNone;
Mainform.Hide;
Ah, dankeschön!
Das hilft mir sicher weiter.

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Sorry, ich muss das hier noch mal hochpushen.

Das mit der CloseAction verstehe ich nämlich nicht ganz. Ich kann diese Eigenschaft im Objektinspektor leider nicht finden und auch im Editor bekomme ich dazu im AutoComplete keinen Eintrag.
Könnt ihr mir ein wenig auf die Sprünge helfen? Danke.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6857
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

bembulak hat geschrieben:Das mit der CloseAction verstehe ich nämlich nicht ganz. Ich kann diese Eigenschaft im Objektinspektor leider nicht finden und auch im Editor bekomme ich dazu im AutoComplete keinen Eintrag.
Erzeuge mal den OnClose mittels Objektinspektor und schau dir mal dann die Definition im Sourcecode an. Dort findest du die CloseAction.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Ok, danke. Ich hatte mir das jetzt mal angesen und die OnClose Action wird folgendermaßen definiert (per default vom System):

Code: Alles auswählen

procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
 
end;
Aha, da ist die CloseAction. Gut. Ich habe dann (wahrscheinlich aus Unwissenheit) die Prozedur folgendermaßen erweitert:

Code: Alles auswählen

procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
   CloseAction := caNone;
   // weiterer Code....
   //Form1.Visible:= False;
end;
Das scheint auf meiner Maschine in der Arbeit auch ohne Probleme zu funktionieren. Zuhause am Notebook bekomme ich allerdings wieder die lustigsten Fehler. Wie schon einmal schmiert der Debugger ab und ich bekomme SIG_SEG....
Ganz verstehen tu ich das allerdings nicht. :(

Danke jedenfalls für die Hilfe.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ich glaub kaum das das, was damit zu tun hat.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Die Frage wäre dabei wohl...gehts ohne Debugger? Bestimmte dinge mag dieser ja nicht, auch wenns an sich stimmt.
Johannes

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

geht bei mir mit und ohne
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten