Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TrayIcon - Icons statisch laden (https://www.delphipraxis.net/206030-trayicon-icons-statisch-laden.html)

TERWI 11. Nov 2020 12:05

TrayIcon - Icons statisch laden
 
Ich möchte einem Tool nebem dem Main-TrayIcon auch noch weitere spendieren, welche zur LZ je nach Progammstatus wechseln und habe mich da erst mal an eine Emba-Demo gehalten.
Das funzt so weit auch prima, aber irgendwie stört es mich sehr, die Icons aus Dateien zur Laufzeit zu laden - ich hätte die gerne gleich zum Design statisch als Ressource eingebunden.
(Weil: Ico's vergessen mitzugeben, gelöscht, defekt, ...)
Über den Objektinspektor kann ich ja 1 Icon definieren - und offensichtlich auch mehrere:
Delphi-Quellcode:
  // http://docwiki.embarcadero.com/CodeExamples/Sydney/en/TTrayIcon_(Delphi)
  TrayIcon.Icons := TImageList.Create(Self);
  MyIcon := TIcon.Create;
  // Load main tray icon:
  MyIcon.LoadFromFile('icons/BATW_AC.ico');
  TrayIcon.Icons.AddIcon(MyIcon);
  TrayIcon.Icon.Assign(MyIcon);
  // Load charge icons (for looping)
  MyIcon.LoadFromFile('icons/Special_1.ico');
  TrayIcon.Icons.AddIcon(MyIcon);
  // Load charge icons (for looping)
  MyIcon.LoadFromFile('icons/Special_2.ico');
  TrayIcon.Icons.AddIcon(MyIcon);
  ... u.s.w.
Mit einer ImagelList hab ich ewig nicht mehr gearbeitet - zuletzt mit Delphi 7.
Heute - mit der Community-Edition (10.3.2) - finde ich da nix mehr zu "New Item - Load' o. ä...
Oder sehe ich den Wald vor lauter Bäumen nicht mehr ?
Meea-Dank im vorraus für hilfreiche Tipps.

scrat1979 11. Nov 2020 12:08

AW: TrayIcon - Icons statisch laden
 
Vielleicht kannst du die Icons auch zur Entwurfszeit in eine ImageList laden und zur Laufzeit das entsprechende Icon zuweisen?!

TERWI 11. Nov 2020 12:32

AW: TrayIcon - Icons statisch laden
 
Eigentlich & genau war das ja zum Schluss meine Frage:
Ich erinnere mich, das es 'Damals' mit D7 kinderleicht war ..... aktuell mit der CE hab ich da so meine Prob's, weil: WIE ?

scrat1979 11. Nov 2020 12:55

AW: TrayIcon - Icons statisch laden
 
Habe momentan leider keine Zeit zu testen, aber auf die Schnelle mit Google bei den Kollegen von SO gefunden:

Delphi-Quellcode:
var
  Bmp: TBitmap;
begin
  Bmp := TBitmap.Create;
  try
    ImageList1.GetBitmap(0, Bmp);
    TrayIcon1.Icon.Assign(Bmp);
    TrayIcon1.Show;
  finally
    Bmp.Free;
  end;
Eventuell statt TBitmap ein TPNGImage verwenden, aber die Vorgehensweise sollte klar sein.
Die ImageList füllst du zur Designtime über Doppelklick.

Du musst - im Bezug auf das TrayIcon - eine „externe“ ImageList verwenden. IMHO dient die ImageList des TrayIcon der Animation des TrayIcons.

Beste Grüße!

EDIT: Geht eventuell auch ohne den Umweg über ein Bitmap-Objekt:

ImageList1.GetIcon(0, TrayIcon1.Icon);

haentschman 11. Nov 2020 13:01

AW: TrayIcon - Icons statisch laden
 
Ich benutze das TJvTrayIcon wegen der Visibitiy... :thumb:

Da gibt es Icons -> ist eine Imagelist. Über den Icon Index hat man die Wahl...8-)
PS: das hat TTrayIcon auch

TERWI 11. Nov 2020 13:08

AW: TrayIcon - Icons statisch laden
 
Denke mal, ich werde falsch verstanden ....
Frage ist: Wie bekomme ich zur ENTWURFSZEIT ( ! ) z.b. über den Obj-Inspektor die ICON's in den Source.
NICHT zur Laufzeit ( !!! ).
Ich möchte die ICON als Ressource IM Programm haben.
.....ansonsten wäre ja das o.g. Beispiel schon perfekt - isses aber nicht.

Nachtrag:
TJyTrayIcon macht das betreff mehren Icon auch nur als Imagelist....

haentschman 11. Nov 2020 13:16

AW: TrayIcon - Icons statisch laden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Denke mal, ich werde falsch verstanden ....
...allerdings. Wenn ich eine Imagelist (auf einem Datenmodul etc.) zur ENTWURFSZEIT fülle, ist es im Programm immer vorhanden. :gruebel:

TERWI 11. Nov 2020 13:39

AW: TrayIcon - Icons statisch laden
 
Danke für deinen Hinweis - dieser und das Pic sagt mir aber gar nichts.
Datenmodul ? Bahnhof...
Eine kurze Erklärung, wie es funzt oder Link dazu wäre hilfreich.

ghubi01 11. Nov 2020 13:51

AW: TrayIcon - Icons statisch laden
 
Hallo TERWI,

Zitat:

Zitat von TERWI (Beitrag 1477127)
Frage ist: Wie bekomme ich zur ENTWURFSZEIT ( ! ) z.b. über den Obj-Inspektor die ICON's in den Source.

- ImageList-Komponente auf die Form ziehen
- mit Doppelklick auf diese Komponente öffnet sich ein Bilderlisten-Editor
- in diesem Editor Icons hinzufügen
- im Objektinspektor: Dem Property Icons die ImiageList1 zuweisen

Zur Laufzeit einfach den IconIndex ändern, das Icon wird dann automatisch geändert.

scrat1979 11. Nov 2020 19:43

AW: TrayIcon - Icons statisch laden
 
Zitat:

Zitat von ghubi01 (Beitrag 1477134)
Hallo TERWI,

Zitat:

Zitat von TERWI (Beitrag 1477127)
Frage ist: Wie bekomme ich zur ENTWURFSZEIT ( ! ) z.b. über den Obj-Inspektor die ICON's in den Source.

- ImageList-Komponente auf die Form ziehen
- mit Doppelklick auf diese Komponente öffnet sich ein Bilderlisten-Editor
- in diesem Editor Icons hinzufügen
- im Objektinspektor: Dem Property Icons die ImiageList1 zuweisen

Zur Laufzeit einfach den IconIndex ändern, das Icon wird dann automatisch geändert.

Das würde exakt meiner Vorgehensweise entsprechen :cyclops:

scrat1979 11. Nov 2020 19:47

AW: TrayIcon - Icons statisch laden
 
Zitat:

Zitat von TERWI (Beitrag 1477127)
Denke mal, ich werde falsch verstanden ....
Frage ist: Wie bekomme ich zur ENTWURFSZEIT ( ! ) z.b. über den Obj-Inspektor die ICON's in den Source.
NICHT zur Laufzeit ( !!! ).
Ich möchte die ICON als Ressource IM Programm haben.
.....ansonsten wäre ja das o.g. Beispiel schon perfekt - isses aber nicht.

Nachtrag:
TJyTrayIcon macht das betreff mehren Icon auch nur als Imagelist....

Also bei meinem Beispiel füllst du die ImageList wie gewünscht zur Entwurfzeit und hast diese (Icons darin) dann in der Laufzeit wie gewünscht zur Verfügung.

Es sei denn deine Betonung liegt auf RESOURCE - dann wäre mein Beispiel nicht zielführend. Dann wäre meine Frage aber warum unbedingt als Ressource...?

TERWI 12. Nov 2020 10:53

AW: TrayIcon - Icons statisch laden
 
Oh Man Oh Man Oh Man ... ist mir die Anfrage hier ehrlich peinlich ....
Aber wie ich schon oben sagte: Wald ... viel Bäüme ... nix mehr sehen ... und so.
Ein einfacher DblClick. Das ging in D7 auch schon so - nur halt vergessen.
Der Rest im Einsatz/Umgang von ImageList war dann auch wieder da.
Auf jeden Fall den Mega Dank von mir für die prompte Hilfe. :-D

scrat1979 12. Nov 2020 18:44

AW: TrayIcon - Icons statisch laden
 
🤣🤣🤣 Sehr gerne 👍


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