Autor |
Beitrag |
Stevie
      
Beiträge: 85
Windows 7
Delphi XE Professional
|
Verfasst: Mo 02.06.03 13:15
Hi,
ich hab folgendes Problem: Ich hab mein Programm bereits aus der Taskleiste in den Tray verbannt. Jetzt möchte ich bei einem bestimmten Ereignis das Icon verändern. Am besten wäre eine kleine Animation. Ich hab das schon versucht:
Delphi-Quelltext 1: 2: 3:
| myIcon.LoadFromFile('NewMail.ico'); <-- var myIcon: TIcon; TrayIcon.hIcon := myIcon.Handle; Shell_NotifyIcon(NIM_MODIFY, @TrayIcon); |
Das Icon ändert sich nicht und wenn ich das Fenster wiederherstelle, kann ich es nicht wieder minimieren.
|
|
MaxiTB
      
Beiträge: 679
Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
|
Verfasst: Mo 02.06.03 13:53
Kann dir nur soviel sagen - der Code ist korrekt - bis auf eine Kleinigkeit ...
Wo werden die restlichen Eigenschaften von TrayIcon gesetzt ?
Da gehört ja noch einiges dazu - ganz wichtig cbSize usw.
_________________ Euer Mäxchen
Wer früher stirbt, ist länger tot.
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Mo 02.06.03 13:55
Hallo,
wo genau ist die Variable TrayIcon definiert? In der Procedure oder global zum Beispiel in der Form Deklaration?
Gruß
Tino
|
|
Stevie 
      
Beiträge: 85
Windows 7
Delphi XE Professional
|
Verfasst: Mo 02.06.03 13:56
Die hab ich ja schon vorher gesetzt, wenn ich das Programm starte:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TfrmMyProgram.FormShow(Sender: TObject); begin ShowWindow(Application.Handle, SW_HIDE); with TrayIcon do begin cbSize := SizeOf(TrayIcon); Wnd := Handle; uID := 0; uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; uCallbackMessage := IC_CLICK; hIcon := Application.Icon.Handle; szTip := 'Mein Programm'; end; Shell_NotifyIcon(NIM_ADD, @TrayIcon); end; |
Tino hat folgendes geschrieben: | In der Procedure oder global zum Beispiel in der Form Deklaration? |
Global deklariert.
|
|
MaxiTB
      
Beiträge: 679
Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
|
Verfasst: Mo 02.06.03 14:01
TrayIcon ist also keine lokale Variable ... aha ...
Ups ...
Hast du dir schon mal angeschaut, was Handle für einen Wert hat ?
Unter C++ z.B. bekommt man für HWND=NULL wenn es nicht sichtbar ist (hide) !
_________________ Euer Mäxchen
Wer früher stirbt, ist länger tot.
|
|
Stevie 
      
Beiträge: 85
Windows 7
Delphi XE Professional
|
Verfasst: Mo 02.06.03 14:05
Nee, hab ich noch nicht nachgeschaut, aber das Anlegen des Icons funzt ja. Ich kann das Icon nur nicht wieder ändern. Oder klappt das nur, wenn das Fenster bzw. die Applikation wieder aktiv/sichtbat ist? Ich probier mal was aus...
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Mo 02.06.03 14:08
Das Record TrayIcon müsste also noch gültige Werte haben. Dann sollte es eigentlich auch funktionieren.
Gruß
Tino
|
|
MaxiTB
      
Beiträge: 679
Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
|
Verfasst: Mo 02.06.03 14:10
Eigentlich nicht - und du änderst ja auch nicht das Hwnd ... also eigentlich - wie am Anfang gesagt, paßt alles.
Einzig und alleine beim Anlagen muß das Fenster sichtbar sein (oder besser gesagt ein gültiges Handle haben).
_________________ Euer Mäxchen
Wer früher stirbt, ist länger tot.
|
|