Autor Beitrag
Travis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: Mo 21.10.02 18:30 
Hallo Leute,

ich habe schon die komplette Auq.de Datenbank durchsucht, bin aber leider nicht fündig geworden. Wie kann ich das Tray-Icon meines Programms während der Laufzeit ändern?

Schon im voraus Danke,

Travis
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mo 21.10.02 18:46 
Mit Shell_NotifyIcon(NIM_MODIFY, @IconData) müßte es funktionieren.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
public
  IconData : TNotifyIconData;

...
   
procedure ...
begin
  ...
  IconData.hIcon := Application.Icon.Handle; //neues Icon zuteilen
  ...
  Shell_NotifyIcon(NIM_MODIFY, @IconData); //und aktualisieren
end;
Travis Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: Mo 21.10.02 19:21 
Aber wie mache ich das? Ich muss doch irgendwo den Pfad zu dem Icon angeben, oder wie funktioniert das?

Travis
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 21.10.02 19:34 
Über die VCL kommst du in dem Fall wohl mit einer "TIcon"-Variablen gut weg, über die du externe Icons laden kannst (LoadFromFile). Ansonsten stünden dir noch "ExtractIconEx", oder "LoadIcon" (für Icons in den Programm-Ressourcen) bzw. "LoadImage" (auch für externe Icons) zur Verfügung.

Die zuletzt genannten API-Funktionen liefern dir ein Icon-Handle zurück, dass du problemlos an die "hIcon"-Membervariable weiterreichen kannst, wie popov demonstriert hat.
Bei der Variable vom Typ "TIcon" hast du dafür die Eigenschaft "Handle". Das grundlegende Prinzip ist immer das selbe.
Travis Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: Mo 21.10.02 19:42 
Danke für die Antworten. Ich weiß zwar noch nicht genau, ob ich das hinbekomme, aber ich werde es mal versuchen. Ich bin nämlich erst seit kurzem mit Delphi am programmieren und mit der API hab ich eigentlich noch nie etwas gemacht.

Travis
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 21.10.02 19:57 
Wie gesagt, wenn du sowieso ein VCL-Programm hast (mit Forms!), dann nimm z.B. eine "TIcon"-Variable:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
ico := TIcon.Create;
try
  ico.LoadFromFile('icon.ico');
  IconData.hIcon := ico.Handle;
finally
  ico.Free;
end;

Ich hoffe, das haut so hin - das war nur aus´m Kopf. :?
Travis Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: Mo 21.10.02 20:21 
MathiasSimmack hat folgendes geschrieben:
Ich hoffe, das haut so hin - das war nur aus´m Kopf. :?


Jawoll, es hat funktioniert. Nochmals Danke für die Hilfe!

Travis