Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Komponentenentwicklung/Komponenten-Icons anzeigen (https://www.delphipraxis.net/210963-komponentenentwicklung-komponenten-icons-anzeigen.html)

archimedix 5. Jul 2022 20:59

Komponentenentwicklung/Komponenten-Icons anzeigen
 
Hallo zusammen,

baue gerade einen Komponenteneditor (TDesignWindow).
Der listet u.a. eine Auswahl der auf dem Formular befindlichen Controls mit Namen und Typ auf.
Zusätzlich würde ich noch gerne das dazugehörende Komponentensymbol anzeigen.

Weiß jemand, wie man an die Komponentensymbole herankommt?

Es geht in dieser Frage *nicht* darum, wie man Komponentenklassen Icons zuweist, sondern wie man sie ausliest.

himitsu 5. Jul 2022 21:57

AW: Komponentenentwicklung/Komponenten-Icons anzeigen
 
lmfdg Bei Google suchendelphi component icon :roll:
https://stackoverflow.com/questions/...t-palette-page

Man könnte natürlich auch eines der vielen Tutorials sich ansehn.
http://mc-computing.com/languages/delphi/Components.htm


Überall wird zwar immernoch von
Delphi-Quellcode:
{$R ...}
bzw.
Delphi-Quellcode:
{$RESSOURCE ...}
gesprochen,
aber empfehlen würde ich eher den Ressourcen-Editor, also ganz einfach direkt in die Projekt-Ressource rein.
https://blogs.embarcadero.com/easy-a...ons-in-delphi/


Es wird einfach nur in das selbe Package, wo die Komponente drin steckt, eine Ressource mit dem selben Namen erstellt/eingebunden.
Wie Womit ist dabei völlig egal.
[edit] das Format ist nicht egal, aber das womit/worüber/wodruch die Ressorce rein kommt.

archimedix 5. Jul 2022 22:45

AW: Komponentenentwicklung/Komponenten-Icons anzeigen
 
Ging eigentlich mehr darum, wie man es über eines der Designer- oder ToolsAPI-Interfaces bekommt.

Über die Resourcen habe ich schon ausprobiert:

Bmp.LoadFromResourceName(HInstance, Uppercase(AClass.ClassName));
Bmp.LoadFromResourceName(FindClassHInstance(AClass ), Uppercase(AClass.ClassName));


Hat beides nicht geklappt: "Resource TEDIT nicht gefunden".

himitsu 6. Jul 2022 02:02

AW: Komponentenentwicklung/Komponenten-Icons anzeigen
 
Die Ressource existiert aber?
Man könnte mal mit dem RessourceHacker in die BPL reinsehen.


HInstance kann nicht funktionieren, außer die Ressource liegt in der EXE, bzw. in einer DLL.

FindClassHInstance ist eigentlich richtig.
Aber man könnte auch die DLL/BPL-Handle von GetModuleHandle/LoadLibrary/LoadLibraryEx/LoadPackage verwenden.

mal ganz billig schnell in einer EXE getestet (daher LoadPackage, weil dort ja diese Packages normal nicht drin sind)
Delphi-Quellcode:
Image.LoadFromResourceName(LoadPackage('dclrtl280.bpl'), UpperCase('TBluetoothLE'));
Image.LoadFromResourceName(LoadPackage('dclrtl280.bpl'), 'TBluetoothLE');
Groß-/Kleinschreibung ist erwartungsbemäß egal, da Ressourcen-API case-insensitive ist.

Delphi-Quellcode:
Image.LoadFromResourceName(FindClassHInstance(TImage), TImage.ClassName);
Image.LoadFromResourceName(LoadPackage('dclstd280.bpl'), 'TImage');
Image.LoadFromResourceName(LoadPackage('vcl280.bpl'), 'TImage'); // hier nicht erwartet, aber dennoch probiert
Aber hier hängt es auch, denn das Bild ist wirklich nicht in diesen Packages drin.

Uwe Raabe 6. Jul 2022 08:49

AW: Komponentenentwicklung/Komponenten-Icons anzeigen
 
Die Delphi IDE verwendet seit 10.2.2 PNG-Icons für die Komponenten (siehe https://blogs.embarcadero.com/new-in...mponent-icons/). Diese haben aber andere Namen für die Ressourcen und sind auch nicht als TBitmap einzulesen sonder als TPngImage.


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