Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Tooltip im Systray ändern (https://www.delphipraxis.net/14215-tooltip-im-systray-aendern.html)

Yan 4. Jan 2004 21:19


Tooltip im Systray ändern
 
Guten Abend!

Ich habe (mal wieder) ein Problem. :?
Und zwar liegt ein Icon meiner Anwendung im Systray und zeigt im dazugehörigen Tooltip
den momentanen Status an. Dieser wird häufig geändert. Wie kann ich jetzt diesen Tooltip
ändern, ohne den ganzen Systray-Eintrag zu entfernen und mit neuem Tooltip wieder anzuzeigen??

Lästig ist auch, dass dann das Systray-Icon wieder ganz rechts steht. (Sieht ja auch nicht gerade
so toll aus, wenn da eine Anwendung immer wieder so auf sich aufmerksam macht...)

Ich kann jede Hilfe gebrauchen!! :thuimb:

Luckie 4. Jan 2004 21:59

Re: Tooltip im Systray ändern
 
Kuck dir mal:
Delphi-Quellcode:
Shell_NotifyIcon(NIM_MODIFY,@NID);
an. Wobei NID vom Typ TNotifyIconData ist.

Yan 5. Jan 2004 10:08

Re: Tooltip im Systray ändern
 
:wiejetzt:

Im Moment habe ich folgenden Code:
Delphi-Quellcode:
procedure TaskBarAddIcon;
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,'Status');
  Shell_NotifyIcon(NIM_ADD, @tnid);
end;
Kann ich dann das ganze einfach nochmal mit einem anderen Tooltip ausführen?

MathiasSimmack 5. Jan 2004 10:31

Re: Tooltip im Systray ändern
 
Sicher kannst du. Nur anstelle von NIM_ADD benutzt du NIM_MODIFY.

Idealer ist es aber, wenn du die TNotifyIcon-Variable global deklarierst und grundlegende Einstellungen von Anfang an festlegst, bzw. im "OnCreate"-Ereignis zuweist. Dann kannst du das TNA-Symbol hinzufügen, modifizieren und entfernen, ohne ständig alle Eigenschaften (= Einstellungen) neu angeben zu müssen.

Schau dir doch mal ein paar Hier im Forum suchenTNA-Beispiele im Forum an. ´s sollten einige sein.

dakleene 5. Jan 2004 10:55

Re: Tooltip im Systray ändern
 
Wo wir gerade dabei sind, ich hab dazu auch gleich direkt eine frage,

und zwar arbeite ich auch schon einige zeit mit systrayIcon's und auch mit
Delphi-Quellcode:
Shell_NotifyIcon(NIM_MODIFY,@NID);
(sieht auch gleich viel schoener aus) und da ich meine taskleiste nicht gern allzuvoll habe verstecke ich meine tools auch immer gern vor ihr.

Delphi-Quellcode:
procedure THauptForm.FormShow(Sender: TObject);
var
  TaskBar : HWnd;
begin
  TaskBar := GetWindow(Handle,GW_Owner);
  ShowWindow(TaskBar,SW_Hide);
end;
jedoch sieht man beim starten meiner tools leider immer ganz kurz dass tool in meiner taskleiste, also bevor HauptForm.Show eintritt. Da muss es doch auch eine moeglichkeit geben dass abzuaendern dass mir dies kein dorn mehr im auge ist :gruebel: weiss da jmd evtl rat ?

MathiasSimmack 5. Jan 2004 11:29

Re: Tooltip im Systray ändern
 
Zitat:

Zitat von dakleene
und zwar arbeite ich auch schon einige zeit mit systrayIcon's [...]

SysTray? Was is´n das eigentlich?
Zitat:

Zitat von PSDK
The taskbar notification area is sometimes erroneously called the "tray."

Soll heißen: der korrekte Ausdruck ist eigentlich Taskbar Notification Area, kurz TNA.

Zitat:

[...](sieht auch gleich viel schoener aus) und da ich meine taskleiste nicht gern allzuvoll habe verstecke ich meine tools auch immer gern vor ihr.
Ob´s aber besser ist, wenn die TNA vor Symbolen überquillt?

Zitat:

jedoch sieht man beim starten meiner tools leider immer ganz kurz dass tool in meiner taskleiste, also bevor HauptForm.Show eintritt. Da muss es doch auch eine moeglichkeit geben dass abzuaendern dass mir dies kein dorn mehr im auge ist :gruebel: weiss da jmd evtl rat ?
Kommt auf deine Tools an. Wenn die Form ohnehin nicht als Benutzeroberfläche gedacht ist, dann würde es sich anbieten, auf die VCL zu verzichten und die TNA-Programme generell ohne Hauptfenster (bzw. mit unsichtbaren Hauptfenster von 0px Größe) zu schreiben.

Evtl. reicht´s aber auch, die Haupt-Form beim Start nicht anzeigen zu lassen. Da gab´s auch eine Befehlszeile dafür, allerdings muss das schon Jahre her sein, dass ich so was mit einem VCL-Programm gemacht habe. ... Soll heißen: ich weiß es im Augenblick nicht.

Yan 6. Jan 2004 09:27

Re: Tooltip im Systray ändern
 
'Morgen!
Erstmal vielen Dank an euch! :thuimb: Jetzt läuft's und meine App zeigt vernünftig ihren Status an!

Jetzt zu dem anderen Problem:
Zitat:

Zitat von MathiasSimmack
Evtl. reicht´s aber auch, die Haupt-Form beim Start nicht anzeigen zu lassen.

Würde so gehen (einfach in Projekt-Quellcode einfügen):
Delphi-Quellcode:
[...]
Application.ShowMainForm:= false;
[...]
Habe aber noch nicht getestet ob das hilft...

Sonst würde ich versuchen schon bei "Form.OnActivate" den Taskbar-Eintrag zu verstecken.
Oder nimm ein anderes Ereignis, das auf jeden Fall vor OnShow auftritt, weil da wird ja erst die Form angezeigt und dann versteckt.

[edit]Da wurde aus dem "versuchen" doch tatsächlich ein "verseuchen"...[/edit]


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