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/)
-   -   Komponenten Icon (https://www.delphipraxis.net/207326-komponenten-icon.html)

TurboMagic 13. Mär 2021 16:03

Komponenten Icon
 
Hallo,

bei den Arbeiten eine alte Komponente evtl. neu herauszubringen bin ich auch über
deren Icon gestolpert. Ich habe in der dcp Datei das bisherige Icon gefunden.
Dieses ist 24x24 mit 16 Farben.

Muss das immer noch so sein? Oder geht da inzwischen auch "mehr"?
Und wie ist der normale Weg das zu tun?
Ja, mittels XN Ressource Editor könnte ich das vorhandene Icon austauschen,
aber dann wär's ja vermutlich nur wieder24x24 mit 16 Farben und ein Bitmap.

Grüße
TurboMagic

Uwe Raabe 13. Mär 2021 16:18

AW: Komponenten Icon
 
Bei den PngComponents habe ich vor einiger Zeit die DCRs durch einzelne PNGs in den Größen 16, 24, 32 und 128 ersetzt. Dies habe ich in der IDE über Projekt - Ressourcen und Bilder mit den entsprechenden Namen in das Projekt aufgenommen.

Du kannst dir das ja mal direkt dort ansehen: https://github.com/UweRaabe/PngComponents

KodeZwerg 13. Mär 2021 22:56

AW: Komponenten Icon
 
Oder über Windows selbst editieren, siehe hier als Beispiel für 24x24x16(256).

himitsu 13. Mär 2021 23:09

AW: Komponenten Icon
 
Oder über den Ressourcen Manager ins Projekt.

Das Bild muß ja einfach nur so heißen, wie die Klasse, und muß im selben Modul (EXE/DLL/BPL) liegen, aber wie es in die Ressoucen kommt, ist vollkommen egal.

[add] Beschreibung gefunden
https://blogs.embarcadero.com/easy-a...ons-in-delphi/

TurboMagic 14. Mär 2021 09:41

AW: Komponenten Icon
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1485049)
Bei den PngComponents habe ich vor einiger Zeit die DCRs durch einzelne PNGs in den Größen 16, 24, 32 und 128 ersetzt. Dies habe ich in der IDE über Projekt - Ressourcen und Bilder mit den entsprechenden Namen in das Projekt aufgenommen.

Du kannst dir das ja mal direkt dort ansehen: https://github.com/UweRaabe/PngComponents

Danke, aber bei mir klappt das irgendfwie nicht:

1. $R auf die alte DCP mit dem alten Icon auskommentiert

2. PNGs zum Design Time Package als RCDATA hinzugefügt und benannt wie bei dir: Klassenname + Auflösung

3. Die PNGs werden auch im Projekt gelistet, es compiliert und installiert (ja vorher deinstalliert und
auch IDE neugestartet). Wenn ich jetzt ein leeres VCL Projekt erzeuge und die Komponente suiche hat die
das Icon, welches die IDE benutzt wenn keines definiert ist. PNG Größen: 16x16. 24x24, 32x32, 48x48 und 64x64

Woran kann es noch liegen?

Grüße
TurboMagic

KodeZwerg 14. Mär 2021 09:55

AW: Komponenten Icon
 
Die neue bpl auch mit der alten ausgetauscht?

TurboMagic 14. Mär 2021 09:59

AW: Komponenten Icon
 
Ich habe immer deinstalliert und neu Compiliert.
Wo sollte da eine alte BPL übrig bleiben?

TurboMagic 14. Mär 2021 10:15

AW: Komponenten Icon
 
So, jetzt nochmal deinstalliert, IDE geschlossen und BPLs gelöscht.
Danach neu installiert: immer noch falsch. :(

KodeZwerg 14. Mär 2021 10:26

AW: Komponenten Icon
 
Also ich glaube es Dir ja, Du wirst schon Wissen was auf Deinem System so ab geht.
Bei mir versagt sehr oft, wenn nicht sogar immer, ein "ich klick ma Deinstall" und alle files sind weg (so wie vom Windows Uninstaller auch erwartet wird).
Leider löscht der bei mir nur den Registrierungseintrag für Komponente X aber nicht die Dateien.
Deswegen bin ich etwas gebrandmarkt.

Zurück zum Thema, himitsu hat ja irgendwie nur Uwe wiederholt also stehen nur zwei Möglichkeiten zur Auswahl, plus Deiner "Resource-Editor" Sache.
Deshalb mal ein klitzekleines "klappt es denn mit der Methode aus meinem Link"?

himitsu 14. Mär 2021 11:25

AW: Komponenten Icon
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn man beim Package in den ProjektOptionen keinen Ausgabepfad angibt, dann landen die BPL/DCP im Standard-Package-Pfad in einem der Delphi-Verzeichnisse.



Es muß immenoch Bitmap sein und was Anderes als 24x24 ist wohl auch sinnlos, da die Dinger eben nur 28x28 groß sind. (also VCL ... bei FMX kann es anders sein)

Aber 16 Bit und 24x24 muß es nicht sein.
siehe Ressourcen-Manager (Menü > Projekt > Ressourcen und Bilder...)

Die VCL sucht ausschließlich nach RC_BITMAP. (ich weiß aber nicht wo ... einfach nur nach der Exception zu schauen, wenn ein falsches Format geladen wird, bringt nichts, da es im Formdesigner nicht knallt)


Ich sah mal jemanden, der hatte statt TComponent irgendwas Anderes genommmen und konnte dann selbst malen. (meine TestKomponente HACK geht aber nicht auf einem DatenModul und die Caption fehlt, aber malen kann ich, was ich will)
[edit] auch für TTestComponentHack müsste ein Bitmap in die Ressource, obwohl selbstgemalt, damit auch in der Komponentenpalette was ist [/edit]

TurboMagic 14. Mär 2021 11:39

AW: Komponenten Icon
 
Danke für den Tipp mit es muss Bitmap sein.
Nur: warum nutzt Uwe's Beispiel dann PNGs mit RCData?
Ist das für FMX?

himitsu 14. Mär 2021 11:45

AW: Komponenten Icon
 
Kann sein.
FMX nutzt an vielen Stellen PNG (auch in der TImageList).
Aber Bitmap muß dort auch gehn, für CrossPlatform-Komponenten (VCL und FMX).

Aber mehrere Bilder/Formate wäre schon toll,
denn auf der Form ist es im VCL 24x24, aber in der neuen ToolPalette 16x16.

Der VCL-FormDesigner bräuchte doch nur TPicture verwenden, anstatt TBitmap, und schon könnte man alle Typen verwenden. (ICO, BMP, GIF, PNG, ...)

TurboMagic 14. Mär 2021 12:51

AW: Komponenten Icon
 
Hallo,

habe die jetzt durch BMPs ersetzt, deinstalliuert, bpls gelöscht, reinstalliert und IDE neu gestartet.
Ergebinis: in der Tool Palette funktioniert es jetzt, auf der Form ist immer noch das Default Icon... :-(

@Himitsu: dein letzter Post ist zur Bildgröße etwas verwirrend: einmal schreibst du was von 24x24 und das
andere mal von 28x28...

Grüße
TurboMagic

himitsu 14. Mär 2021 13:07

AW: Komponenten Icon
 
Ja, das Icon auf Form/Datenmodul ist 24x24, in der Komponente mit 28x28 drumrum, mit 1 Pixel Rahmen und 1 Pixel Margin. :angle:
In der neuen ToolPalette ist es 16x16 und in der Alten 20x20.

Da passt einfach nichts, damit das eine Bitmap überall "gut" aussieht,

vor allem da für das StretchDraw der unschönste Modus gekommen wird.
Wobei, vielleicht könnte man das sogar ausnutzen. Das Bitmap sooooo groß, dass man die 3 Bilder überlagen könnte und jedes Format abwechseln seine eigenen Pixel daraus zieht (außer beim 0:0).
Müsste man mal schauen was man mit TScaledGraphicDrawer, WinAPI.StretchBlt, WinAPI.TransparentStretchBlt und WinAPI.AlphaBlend alles machen kann.

Uwe Raabe 14. Mär 2021 13:47

AW: Komponenten Icon
 
Zitat:

Zitat von TurboMagic (Beitrag 1485071)
2. PNGs zum Design Time Package als RCDATA hinzugefügt und benannt wie bei dir: Klassenname + Auflösung

Klassenname + Auflösung + '_PNG'

Beispiel: TPngImageList128_PNG

Ohne das PNG müsste es ein BMP sein.

TurboMagic 14. Mär 2021 14:00

AW: Komponenten Icon
 
Seufz!
Habe die BMPs jetzt wie beschrieben durch PNGs ausgetauscht.
Ja, in der Palette funktioniert das, auf der Form immer noch das Standard Icon.
Woran hängt das bitte?

Und ja, vorher deinstalliert und BPLs gelöscht und erst nach IDE Neustart das
Design Time Package wieder installiert.

Das darf doch nicht so kompliziert sein...

himitsu 14. Mär 2021 14:08

AW: Komponenten Icon
 
Ohhh, _ICO geht nicht
aber _PNG geht wirklich, sogar ohne die Auflösung.
Delphi-Quellcode:
TPngImageList_PNG


Für was/wo ist denn das Bild mit 128?

[EDIT]
16, 24, 32 und/oder 128 Pixel (das Letzte geht nur als PNG)
https://blogs.embarcadero.com/new-in...mponent-icons/

16 für neue Palette
20 für alte Palette (das fehlt)
24 für FormDesigner
32 für keine Ahnung
64 verwenden Delphi irgendwo und berechnet es sich aus dem 128
128 für keine Ahnung

TurboMagic 14. Mär 2021 14:32

AW: Komponenten Icon
 
Naja, wofür das 128er Icon ist beschreibt der Blog Post ja auch.
Nur. Warum es bei mir nicht klappt wenn die nicht visuelle Komponete auf eine
Form platziert wird beschreibt das alles nicht.

himitsu 14. Mär 2021 14:44

AW: Komponenten Icon
 
Dein Delphi ist kaputt
oder du machst was falsch?

Es ist auch im richtigen Package?
Unit der Komponente und das Bild müssen im selben Package liegen. (muß man z.B. aufpassen, wenn man mit getrennten Runtime- und DesignTimePackages arbeitet)
Ist auch bissl sinnlos, eil so gibt man es immer in seinen EXEn mit, obwohl es zur Runtime niemals gebraucht wird. (außer man baut sich dort einen Formdesigner ein, aber egal, denn den von Emba kann man eh nicht nutzen und kann das mit dem Bild dort anders machen)
Und du hast geprüft, dass auch das richtige Package geladen wird? (nicht daß ein altes Packge irgendwo liegt)

Das mit dem falschen Package hatte ich auch grade erst. https://www.delphipraxis.net/206825-...-entladen.html
In Hilfe > Info > Versionsinfo sieht man nicht alle geladenen Module. Und in Komponente > Packages installieren findest zumindestens die explizit eingebundenen Packages (aber ohne implizit geladene RuntimePackages).

Die Groß-/Kleinschreibung scheint egal zu sein.

TurboMagic 14. Mär 2021 15:07

AW: Komponenten Icon
 
Die Images hab ich in das Design Time Package gesteckt.
Da gehören die ja denke ich auch rein.

TurboMagic 14. Mär 2021 15:11

AW: Komponenten Icon
 
Spasseshalber mal dem Laufzeitpackage die Images hinzugefügt.
Ändert aber nix.

Uwe Raabe 14. Mär 2021 15:16

AW: Komponenten Icon
 
Zitat:

Zitat von himitsu (Beitrag 1485102)
Unit der Komponente und das Bild müssen im selben Package liegen.

Nein, die Bilder kommen in das Design Package, während die Unit mit der Komponente ruhig im Runtime Package liegen kann. Die Bilder auch in das Runtime Package zu packen macht auch keinen Sinn.

Zitat:

Zitat von TurboMagic (Beitrag 1485101)
Nur. Warum es bei mir nicht klappt wenn die nicht visuelle Komponete auf eine
Form platziert wird beschreibt das alles nicht.

Kannst du das Package mal bereitstellen um das auf einem anderen System zu probieren? Dann könnte man schonmal feststellen, ob es wirklich an einem Fehler im Projekt liegt.

KodeZwerg 14. Mär 2021 15:54

AW: Komponenten Icon
 
[OT]

Zitat:

Zitat von Uwe Raabe (Beitrag 1485095)
Klassenname + Auflösung + '_PNG'

Beispiel: TPngImageList128_PNG

Ohne das PNG müsste es ein BMP sein.

Gibt es dazu was zum nachlesen? Ich such und Stöber aber finde keine Anhaltspunkte.
Mich würde auch interessieren was man noch so mit einer .rc Datei machen kann abgesehen vom Standard (wie in meinem Link auf Seite 1) und non-Standard (wo man in einer art c++ alles definiert und beschreibt [dialoge zB]).

Danke für dieses Thema an TurboMagic wo ich sonst niemals bemerkt hätte das es so geheime switches gibt!

Ps an TM: Du hast gestern/vorgestern eine Topic "neues DEC nun erhältlich" o.ä. gepostet, praktisch wäre es wenn Du in den Zusammenhang auch geschrieben hättest "wo?" :-]

[/OT]

Uwe Raabe 14. Mär 2021 16:00

AW: Komponenten Icon
 
Zitat:

Zitat von KodeZwerg (Beitrag 1485110)
Gibt es dazu was zum nachlesen?

Himitsu hatte den Link ja schon gepostet: https://blogs.embarcadero.com/new-in...mponent-icons/

TurboMagic 14. Mär 2021 16:44

AW: Komponenten Icon
 
Zitat:

Zitat von KodeZwerg (Beitrag 1485110)
[OT]

Ps an TM: Du hast gestern/vorgestern eine Topic "neues DEC nun erhältlich" o.ä. gepostet, praktisch wäre es wenn Du in den Zusammenhang auch geschrieben hättest "wo?" :-]

[/OT]

Ich dachte das wäre bekannt.
Aber kein Problem, guckst du hier:

https://github.com/MHumm/DelphiEncry...ndium/releases

Grüße
TurboMagic

himitsu 14. Mär 2021 17:30

AW: Komponenten Icon
 
Wenn ich das Bild nicht im selben Modul habe, wie die Komponente, dann wird kein Bild gefunden.

Hatte jetzt keine Lust ein zweites Package zu machen, aber einfach TBaseImageList in meinem TestPackage registriert und die BMP-Ressource in TBaseImageList umbenannt = kein Bild.

[EDIT]
Ohh, ich wäre davon ausgegangen, dass wie bei den Form-DFMs im Modul der Klasse gesucht wird (Delphi-Referenz durchsuchenFindClassHInstance),
aber die suchen scheinbar in mehreren/allen Modulen (war das früher vielleicht mal anders?),

UND es gibt einen Cache, der auch "es gibt nichts" speichert.
Die Komponente wurde angezeigt, ohne Icon ... da konnte ich dann anschließend neukompilieren/deinstallieren/installieren, wie ich wollte ... erst nach Neustart der IDE war das Bild da.
Beim Deinstallieren/Installieren von Packages wäre es schön, wenn der Cache geleert würde. :stupid:

TurboMagic 14. Mär 2021 18:08

AW: Komponenten Icon
 
Naja, Uwe hat mein Projekt mit dem selben
Ergebnis wie ich gestestet.

Bei ihm war da ja dann auch sicher nichts im Cache.

Uwe Raabe 14. Mär 2021 21:05

AW: Komponenten Icon
 
:roll: 10x gelesen und nicht gesehen.

Lass mal beim dem Namen der 24er Resource die 24 weg. Eventuell musst du Delphi beenden und vielleicht auch in der Registry die Einträge im Package-Cache entfernen.

TurboMagic 15. Mär 2021 17:57

AW: Komponenten Icon
 
Das funktioniert jetzt!
SUper, danke!

himitsu 15. Mär 2021 18:31

AW: Komponenten Icon
 
Also am Besten immer eine Ressource ohne Größe und wer will kann zusätzlich noch weitere Größen hinzufügen.

Uwe Raabe 15. Mär 2021 21:45

AW: Komponenten Icon
 
Zitat:

Zitat von himitsu (Beitrag 1485211)
Also am Besten immer eine Ressource ohne Größe und wer will kann zusätzlich noch weitere Größen hinzufügen.

Genauer gesagt, die 24er Größe ist Standard und muss weggelassen werden. Alle anderen Größen sind erlaubt, wobei die 24 für den Designer und die 16, 24 und 32 für die Palette (je nach Einstellung) verwendet werden.

TurboMagic 15. Mär 2021 21:55

AW: Komponenten Icon
 
So, eine erste Version (noch kein Release!) der Komponente ist jetzt (wieder) verfügbar:
https://github.com/MHumm/ComPortDriver

Beim Kritisieren bitte dran denken, dass es eine etwas aufgehübschte Version des TComPortDriver
von ca. 2001 oder so ist. :)

Grüße und viel Spaß damit
TurboMagic


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