AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Anwendung in die Systemtray minimieren

Ein Thema von luckystar85 · begonnen am 23. Mär 2005 · letzter Beitrag vom 20. Mai 2005
Antwort Antwort
Seite 1 von 2  1 2      
luckystar85

Registriert seit: 21. Dez 2004
Ort: Rostock
138 Beiträge
 
Delphi 2009 Professional
 
#1

Anwendung in die Systemtray minimieren

  Alt 23. Mär 2005, 01:13
Sobald meine Anwendung minimiert wird, wird der Eintrag aus der Taskleiste entfernt und in die Systemtray hinzugefügt. Sobald der User mit der linken Maustaste auf den Eintrag in der Systemtray klickt, wird die Anwendung wieder hergestellt. Wenn er mit der rechten Maustaste drauf klickt wird ein Pop-Up Menü geöffnet.
Klickt der Benutzer mit der rechten Maustaste auf den Eintrag und dann mit der linken Maustaste auf das Icon, aber neben das Pop-Up Menü welches sich ja geöffnet hat. Wird die Anwendung wieder hergestellt. Ich habe in meiner Toolbar einen Button "minimieren". Wenn darauf geklickt wird, ruf ich Application.Minimize auf. Das funzt auch immer wunderbar, nur wenn der Benutzer wie oben beschrieben die Anwendung aus der Systemtray wiederherstellt, macht das Programm nichts mehr. Es wird nicht mehr minimiert. Woran kann das liegen?

in der Toolbar zum minimieren
Delphi-Quellcode:
procedure TMainForm.MinimierenMenuClick(Sender: TObject);
begin
  Application.Minimize;
end;
zum wiederherstellen:
Delphi-Quellcode:
procedure TMainForm.Systray(var sMsg: TMessage);
begin
  inherited;
  if (sMsg.LParam = WM_LBUTTONDOWN) then
  begin
    Show;
    Shell_NotifyIcon(NIM_DELETE, @NIM);
    Application.Restore;
    Application.BringToFront;
  end
  else if (sMsg.LParam = WM_RBUTTONDOWN) then
  begin
    Systemtray.Popup(Mouse.CursorPos.x, Mouse.CursorPos.y);
  end;
end;
Michael Klüber
Delphi ist was solides und besteht nicht wie C/C++ Quelltext nur aus Kommentaren.
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

Re: Anwendung in die Systemtray minimieren

  Alt 23. Mär 2005, 08:09
Zitat von luckystar85:
Sobald meine Anwendung minimiert wird, wird der Eintrag aus der Taskleiste entfernt und in die Systemtray hinzugefügt.
Es sieht so aus, als hättest Du das selbst programmiert.
Warum verwendest Du nicht eine "fertige" Komponente, die das für Dich erledigt?

z.B. CoolTrayIcon ( http://subsimple.com/delphi.asp )

Diese Komponente wird hundertfach eingesetzt und hat sich bewährt.
Man muss nicht jedes mal das Rad neu erfinden.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Anwendung in die Systemtray minimieren

  Alt 23. Mär 2005, 08:10
Zitat von MaBuSE:
Diese Komponente wird hundertfach eingesetzt und hat sich bewährt.
Man muss nicht jedes mal das Rad neu erfinden.
Aber man muss auch nicht gleich für jeden Pipifax eine Komponente benutzen und sich dann wundern warum man von C/C++ Programmierern als Klickibunti Programmierer verschrien wird.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Anwendung in die Systemtray minimieren

  Alt 23. Mär 2005, 08:24
Wenn's nur um die TNA geht, hat Luckie in der Code-Library einen hervorragenden Code gepostet: TNATNA.
  Mit Zitat antworten Zitat
luckystar85

Registriert seit: 21. Dez 2004
Ort: Rostock
138 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Anwendung in die Systemtray minimieren

  Alt 23. Mär 2005, 12:04
Ja gut, das Beispiel hilft mir aber nicht weiter. Damit habe ich das gleiche Problem wie oben.
Die Komponente dazu zu verwenden, finde ich auch nicht für sehr sinnvoll.
Michael Klüber
Delphi ist was solides und besteht nicht wie C/C++ Quelltext nur aus Kommentaren.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Anwendung in die Systemtray minimieren

  Alt 23. Mär 2005, 12:08
Moin!

Ich konnte deiner Beschreibung zu dem genauen Fehler nicht ganz folgen, aber ich würde dich mal bitten zu schauen ob es hier auch auftritt: Testprojekt.

Irgendwie kann ich es mit den Code nicht nachvollziehen...

MfG
Muetze1

(Grüsse aus Rostock nach Rostock... *g*)
  Mit Zitat antworten Zitat
luckystar85

Registriert seit: 21. Dez 2004
Ort: Rostock
138 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Anwendung in die Systemtray minimieren

  Alt 23. Mär 2005, 16:11
Moin Thomas!!!

Nein bei deinem Programm tritt das Problem nicht auf. Ich kann aber auch keine großen Unterschiede zwischen unseren Programmen feststellen.

//Beste Grüße aus Schmarl nach Lichtenhagen.\\
Michael Klüber
Delphi ist was solides und besteht nicht wie C/C++ Quelltext nur aus Kommentaren.
  Mit Zitat antworten Zitat
FrankBrin

Registriert seit: 8. Mär 2005
Ort: Oppenweiler
105 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Anwendung in die Systemtray minimieren

  Alt 19. Mai 2005, 10:28
Hallole,
habe gerade die Quellcodes in meine Applikation eingebaut. Erst den von Lucie und dann den von muetze1.

Bei mir tritt ein ganz anderer Effekt auf:

Programm wird in den TNA verkleinert - der Schalter im Programm Taskbar (also links vom TNA) bleibt weiterhin bestehen. Klickt man drauf, so sieht man einen Rahmen aufgehen, als ob das Programm wieder angezeigt wird. Man sieht aber kein Programm. Erst über das Icon in der TNA läßt sich das Programm wieder herstellen.

Hat jemand ne Ahnung was ich Falsch mache.
Frank Brinschwitz
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: Anwendung in die Systemtray minimieren

  Alt 19. Mai 2005, 11:35
Moin!

Ja, ich habe eine Idee. Wenn du das SC_MINIMIZE nicht abfängst sondern mit inherited weiterleitest, dann passiert sowas. Ich habe mein Projekt original von der Website genommen und folgendes geändert:

Delphi-Quellcode:
Procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
Begin
  If ( ( Message.CmdType And $FFF0 ) = SC_MINIMIZE ) Then
  Begin
    Hide;
    TaskBarAddIcon;
  End
  Else
    Inherited;
End;
zu

Delphi-Quellcode:
Procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
Begin
  If ( ( Message.CmdType And $FFF0 ) = SC_MINIMIZE ) Then
  Begin
    Hide;
    TaskBarAddIcon;
  End;
// Else
    Inherited;
End;
und es trat bei mir der beschriebene Effekt auf. Du rufst also anscheinend das Inherited auf und dadurch kommt es dazu.

MfG
Muetze1
  Mit Zitat antworten Zitat
FrankBrin

Registriert seit: 8. Mär 2005
Ort: Oppenweiler
105 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Anwendung in die Systemtray minimieren

  Alt 19. Mai 2005, 12:14
Hä?
Das verstehe ich jetzt nicht. Mal abgesehen davon das die Änderung bei mir nix bringt. Immer noch gleiches Verhalten.

Du schreibst
> Wenn du das SC_MINIMIZE nicht abfängst sondern mit inherited weiterleitest, dann passiert sowas

und dann nimmst Du das ELSE heraus. Also wird doch garantiert das SC_Minimize weitergeleitet.

Gruß Frank
Frank Brinschwitz
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz