Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi szTip von TNotifyIconData aktualisieren (https://www.delphipraxis.net/12993-sztip-von-tnotifyicondata-aktualisieren.html)

Lefko 8. Dez 2003 19:49


szTip von TNotifyIconData aktualisieren
 
Hallo Freunde :hi: ,

ich hab ein TrayIcon gemacht mit TNID, aber jetzt will ich jede sekunde den szTip aktualisieren, weiss aber nicht, wie ich das am besten mache...
ich hab schon eine möglichkeit, die funktioniert, aber da muss ich das icon immer erst entfernen und dann mit dem neuen text wieder hinzufügen, das ist doof und flimmert! wie kan ich denn nur den text aktualisieren?

hier der text für das icon:

Delphi-Quellcode:
procedure TForm1.AddIcon(Enabled: Boolean);
var TNID : TNotifyIconData;
begin
FillChar(TNID,Sizeof(TNID),0);
TNID.cbSize := SizeOf(TNotifyIconData);
TNID.Wnd := Form1.Handle;
TNID.uID := 1;
TNID.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
TNID.uCallbackMessage := WM_TASKBAREVENT;
if Enabled
  then
   begin
    tnid.hIcon := Form1.IconAN.Picture.Icon.Handle;
    strcopy(TNID.szTip, 'ShutMeDown (aktiv)'); //hier soll n timer hin! (jede sekunde refreshen)
   end
  else
   begin
    tnid.hIcon := Form1.IconAUS.Picture.Icon.Handle;
    strcopy(TNID.szTip, 'ShutMeDown (inaktiv)');
   end;
Shell_NotifyIcon(NIM_ADD, @TNID);
end;


procedure TForm1.ChangeIcon(Enabled: Boolean);
var TNID : TNotifyIconData;
begin
TNID.Wnd := Form1.Handle;
TNID.uID := 1;
TNID.uFlags := NIF_ICON;
if Enabled
  then
   begin
    TNID.hIcon := IconAN.Picture.Icon.Handle;
    Icon := IconAN.Picture.Icon;
   end
  else
   begin
    TNID.hIcon := IconAUS.Picture.Icon.Handle;
    Icon := IconAUS.Picture.Icon;
   end;
Shell_NotifyIcon(NIM_MODIFY, @TNID);
end;


procedure TForm1.RemoveIcon;
var TNID : TNotifyIconData;
begin
FillChar(TNID,Sizeof(TNID),0);
TNID.cbSize := sizeof(TNotifyIconData);
TNID.Wnd := Form1.Handle;
TNID.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
TNID.uCallbackMessage := WM_TASKBAREVENT;
TNID.szTip := 'ShutMeDown (inaktiv)';
TNID.uID := 1;
Shell_NotifyIcon(NIM_DELETE, @TNID);
end;
Hoffe, ihr wisst Rat!

MfG Lefko.

PS: Wenn hier jemand meint, das sei aus seinem Programm oder so, ich hab das zum Teil aus einem Freeware-Prog-Open-Source (weiss aber nicht mehr woher) ok? :)

d3g 8. Dez 2003 20:49

Re: szTip von TNotifyIconData aktualisieren
 
MSDN Library -- Shell Functions -- Shell_NotifyIcon()
Besonders der Teil zu NIM_MODIFY ist interessant.

SirThornberry 8. Dez 2003 21:32

Re: szTip von TNotifyIconData aktualisieren
 
also ist ja ganz schön viel zeugs. Am besten du machst das TNID global oder halt als variable der klasse und nicht nur in der funktion oder procedure. Dann einfach den sztip ändern und mit
Shell_NotifyIcon(NIM_MODIFY, @TNID);
sollte das ganze dann aktuallisiert werden. so hab ichs zumindest bei meinen applicationen wenn ich das icon animiere und mit dem sztip ist ja auch nix anderes

Lefko 9. Dez 2003 14:31

Re: szTip von TNotifyIconData aktualisieren
 
alles klar leute,

das funktioniert jetzt! hab TNID als variable der klasse definiert und nur noch den sztip geändert!


aber eins wüsste ich ncoh gern:

kann man das irgendwie auch so machen, dass man nicht immer erst den cursor n stückchen bewegen muss, damit die zeit neu angezeigt wird?
so, dass sozusagen auch ein timer im sztip läuft, der jede sekunde aktualisiert wird!


MfG Lefko.

Lefko 10. Dez 2003 16:03

Re: szTip von TNotifyIconData aktualisieren
 
Huhu, weiss keiner, wie sowas gehen könnte??


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