AGB  ·  Datenschutz  ·  Impressum  







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

Systray Icon verschwindet

Ein Thema von Evian · begonnen am 15. Apr 2006 · letzter Beitrag vom 19. Apr 2006
Antwort Antwort
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#1

Systray Icon verschwindet

  Alt 15. Apr 2006, 02:10
Hallo Zusammen,

ich nutzte

Delphi-Quellcode:
...
Shell_NotifyIcon(NIM_MODIFY,@NID);
um ein ICON im Systray hinzuzufügen und

Delphi-Quellcode:
procedure MainForm.FormShow(Sender: TObject);
var
  TaskBar : HWnd;
begin
  TaskBar := GetWindow(Handle,GW_Owner);
  ShowWindow(TaskBar,SW_Hide);
end;
damitt die Mainform nicht in der Taskbar angezeigt wird. Der BorderStyle dieser Form ist bsNone und der FormStyle normalerweise "fsStayOnTop". Wenn ich nun aber wärend der Laufzeit den FormStyle auf fsNormal ändere und dann mit der Maus über das Anwendungs-Icon im Systray fahre, dann verschwindet es, als wäre die Anwendung beendet. Ist sie aber natürlich nicht.

Hat jemand eine Ahnung, woran das liegt und wie ich das möglicherweise umgehen könnte?

gruß,

Evian
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: Systray Icon verschwindet

  Alt 15. Apr 2006, 07:27
Nicht direkt, dazu müsste man ein wenig mehr Sourcecode sehen was du mit dem TrayIcon anstellst.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von klaus.meyer
klaus.meyer

Registriert seit: 19. Jun 2004
146 Beiträge
 
Delphi 7 Personal
 
#3

Re: Systray Icon verschwindet

  Alt 15. Apr 2006, 08:40
Schau dir doch mal in der Code-Libary den Eintrag zu TNA an.

http://www.delphipraxis.net/internal...&highlight=tna

Kannst dir ja was davon abguckn ^^


Viele Grüße

Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#4

Re: Systray Icon verschwindet

  Alt 15. Apr 2006, 12:55
also ich nutze eigendlich standartcode um das Icon zu erzäugen.:


Delphi-Quellcode:
 program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas{Form1},
  Unit2 in 'Unit2.pas{Form2};

{$R *.res}

begin
  Application.Initialize;
  Application.Title := 'ADAM';
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Unit1.Form1.Starter;
  Application.ShowMainForm := false;
  Application.Run;
end.
Delphi-Quellcode:
unit Unit1;

interface

uses
  ...

const WM_TASKBAREVENT = WM_USER + 1;

type
  TForm1 = class(TForm)
    ...
    procedure TaskBarAddIcon(add:boolean);
    procedure TaskBarRemoveIcon;
    procedure FormShow(Sender: TObject);
    ...
  private
    procedure WMTASKBAREVENT(var message: TMessage);
    message WM_TASKBAREVENT;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;


implementation

uses Unit2;

{$R *.dfm}

procedure Tform1.Starter;
BEGIN
  ...
  TaskBarAddIcon(true);
  ...
END;

//-------- Button im Contextmenü des Formulars um
// die Form entweder fsNormal, oder fsStayOnTop festzulegen -----------------

procedure TForm1.On1Click(Sender: TObject);
begin
  if form1.On1.Checked then
  BEGIN
    form1.FormStyle := fsNormal;
    form1.On1.Checked := false;
  END else
  BEGIN
    form1.FormStyle := fsStayOnTop;
    form1.On1.Checked := true;
  END;
end;

procedure TForm1.Beenden1Click(Sender: TObject);
begin
  TaskBarRemoveIcon;
  Application.Terminate;
end;


//----------Für Taskicon----------

procedure TForm1.WMTASKBAREVENT(var message: TMessage);
VAR
MousePos: TPOINT;
begin
  case message.LParamLo of
  WM_LBUTTONDOWN : BEGIN
  end;
  WM_RBUTTONDOWN : begin
  IconPop.Popup(MousePos.x, MousePos.y);
  end;
  WM_LBUTTONDBLCLK : begin
  
  end;
  end;
end;

procedure Tform1.TaskBarAddIcon(add:boolean);
var
tnid: TNOTIFYICONDATA;
begin
  with tnid do
  begin
    cbSize := sizeof(TNOTIFYICONDATA);
    Wnd := Form1.handle;
    uID := 1;
    uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
    uCallbackMessage := WM_TASKBAREVENT;
    hIcon := application.icon.handle;
  end;
  strcopy(tnid.szTip,'ADAM');
  if add then
  Shell_NotifyIcon(NIM_ADD, @tnid) else
  Shell_NotifyIcon(NIM_MODIFY, @tnid)
end;

procedure TForm1.TaskBarRemoveIcon;
var
tnid: TNOTIFYICONDATA ;
begin
  tnid.cbSize := sizeof(TNOTIFYICONDATA);
  tnid.Wnd := Form1.handle;
  tnid.uID := 1;
  Shell_NotifyIcon(NIM_DELETE, @tnid);
end;

procedure TForm1.FormShow(Sender: TObject);
var
  Owner: HWnd;
begin
  Owner := GetWindow(Form1.Handle,GW_OWNER);
  If Owner<>0 Then
  ShowWindow(Owner,SW_HIDE);
end;

//-------- Button im Contextmenü des TrayIcons -----------------
procedure TForm1.OnlineCheck1Click(Sender: TObject);
begin
  Application.ShowMainForm := true;
  Form1.Show;
end;

...
Wenn man das Programm startet ist die Mainform noch nicht sichtbar, weil "Application.ShowMainForm := false".
Wärend der Laufzeit wechselt öfter das Tray-Icon.. indem ich pplication.Icon ein neues Icon zuweise und dann TaskBarAddIcon(false); aufrufe. Keine Ahung, aber vielleicht liegt es daran?
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#5

Re: Systray Icon verschwindet

  Alt 15. Apr 2006, 15:06
Hallo,

ich hatte damit ab und zu Probleme, die ich gelöst habe, in dem ich TNotifyIconData global (aber wohl besser: Private) deklariert habe und in der Lösch-Prozedur alles bis auf Wnd und uID (und natürlich den Shell_...-Aufruf) weggelassen habe.

Edit: So steht es ja auch in der CodeLib.

Gruß,
ManuMF
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Systray Icon verschwindet

  Alt 15. Apr 2006, 18:14
TNOTIFYICONDATA muss global sein, sonst arbeitest du ja immer mit einer anderen TNOTIFYICONDATA Struktur.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#7

Re: Systray Icon verschwindet

  Alt 19. Apr 2006, 13:38
tnid: TNOTIFYICONDATA; ist jetzt Global, trotzdem verschwindet das Icon, wenn ich den FormStyle auf fsNormal stelle. kA. warum, aber ich habe jetzt erstmal die Option den Formstyle zu ändern rausgenommen.
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Systray Icon verschwindet

  Alt 19. Apr 2006, 13:41
Man sollte die Hilfe lesen und auch die Hinweise beachten:
Zitat:
Hinweis

Der Wert von FormStyle sollte nicht zur Laufzeit geändert werden.
Beim Ändern des FormStyles wird das Fenster neu erzeugt und bekommt somit ein neues Handle. Es stimmt somit nicht mehr mit dem Handle überein, welches du zuvor beim Erstellen des TNA Icons angegeben hast.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#9

Re: Systray Icon verschwindet

  Alt 19. Apr 2006, 13:59
Ok Entschuldigung, werd mir beim nächsten Mal sofort die Hilfe zu Gemüte führen...
auch wenn die nicht ganz so freundlich ist, wie die DP-Community
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:18 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