Entwickler-Ecke

Programmierwerkzeuge - Vorgabesymbole in Komponentenleiste!


galagher - Sa 15.10.16 07:40
Titel: Vorgabesymbole in Komponentenleiste!
Hallo!

Ich habe mit Delphi 10.1 einige Komponenten in ein neues Package eingebunden und erfolgreich installiert, jedoch wird in der Komponentenleiste statt des jeweils richtigen Symbols nur das Vorgabesymbol angezeigt. Es sind alle dcr-Dateien vorhanden und alle Pfade eingebunden.

Nachdem ich das Package kompiliert, Delphi beendet und dann neugestartet habe, werden die richtigen Symbole angezeigt. Nach dem Beenden und abermaligem Neustart von Delphi werden wieder nur die Vorgabesymbole dargestellt.

Also immer nach dem Kompilieren+Neustart richtig, ohne Kompilieren nicht!

Warum? :gruebel:

//Edit:
Jetzt ist alles korrekt!
Ich habe eine der Komponenten testweise auf die Form gezogen und das Projekt kompiliert, mehr nicht. Seit dem darauf folgenden Aufruf von Delphi werden alle Symbole korrekt angezeigt, auch nach Neustart des Laptops.


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Sa 15.10.2016 um 20:35


galagher - Mi 19.10.16 17:52

Nun habe ich schon wieder die Vorgabesymbole, nicht nur da, wie in der Grafik gezeigt, sondern auch an einigen anderen Stellen. Es sind die dcr-Dateien vorhanden und sie sind auch ins Package eingebunden.

Bereinigen und Neukompilieren nützt auf Dauer nichts: Zwar stimmt beim nächsten Delphi-Start (meistens) alles, doch dann tauchen die Vorgabesymbole wieder auf. Kriegt man das denn nicht in den Griff? Scheint ein Fehler von Delphi zu sein! Ist doch ärgerlich!


galagher - Di 25.10.16 19:47

Hat wirklich niemand eine Idee? :(


Delete - Mi 26.10.16 15:26

- Nachträglich durch die Entwickler-Ecke gelöscht -


galagher - Mi 26.10.16 17:09

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Wie ist es wenn du ein Projekt mit der Komponente abspeicherst? Wird die Komponente beim Öffnen des Projektes richtig dargestellt?
Nein, schon beim Einfügen der Komponente nicht!

Bei den wenigen Jedi-Komponenten, wo das Problem besteht, stört es mich ja nicht. Aber bei einigen anderen, bei denen ich das Package selbst erstellt habe (es sind alle dcr's drinnen! Und selbst, wenn nicht, sollte doch das Symbol des Vorfahren angezeigt werden), möchte ich schon das richtige Symbol haben!


Th69 - Mi 26.10.16 17:49

Ich habe noch in Erinnerung, daß bei früheren Delphi (und BCB) Versionen die Symbolnamen alle komplett in GROSSBUCHSTABEN geschrieben sein mußten.


galagher - Mi 26.10.16 18:05

user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe noch in Erinnerung, daß bei früheren Delphi (und BCB) Versionen die Symbolnamen alle komplett in GROSSBUCHSTABEN geschrieben sein mußten.
Ob das jetzt auch noch so ist, weiss ich nicht. Aber sie sind alle in Grossbuchstaben!

Das Seltsame dabei ist: Wenn ich das Package bereinige, dann neu kompiliere und Delphi danach neu starte, stimmt alles. Delphi wieder beenden und wieder neu starten und alles ist wie vorher. Jedesmal nach dem Kompilieren also passt es, aber das bleibt nicht so!

In allen dcr's ist alles korrekt, alle Dateien sind am richtigen Ort und alle dcr's sind im Package angegeben! Und trotzdem betrifft es immer die selben - vor allem sichtbare - Komponenten.


Delete - Mi 26.10.16 18:11

- Nachträglich durch die Entwickler-Ecke gelöscht -


galagher - Mi 26.10.16 18:39

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Es wäre ein Versuch wert, wenn du eine neue .DCR Datei erstellen würdest, und diese dem jeweiligen Package zuweist.
Das Package brauchst du im Anschluss nur noch kompilieren und abspeichern.
Die Grafiken findest du unter:


Quelltext
1:
\jvcl-master\tests\restructured\images                    
Die Jedis sind mir zunächst einmal egal. Ich habe einige Komponenten in einem Package visual.dpk zusammengefasst, da trat der Fehler bei einigen Komponenten auf, bis plötzlich eine davon korrekt dargestellt wurde, warum auch immer. (Siehe Anhang). Die anderen hingegen weiterhin nicht.

Zum Neuerstellen der dcr-Dateien bei meinem eigenen Package: Habe ich gamacht, nützt nichts. Bitmap mit 16 Farben oder mehr, ganz egal. Wird nicht dargestellt.


Delete - Do 27.10.16 05:58

- Nachträglich durch die Entwickler-Ecke gelöscht -


jaenicke - Do 27.10.16 09:23

Du könntest einmal den Icon Cache der entsprechenden Icons löschen. Diese Daten findest du in der Registry unter:

Quelltext
1:
HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\18.0\Palette\Cache                    

Denn dort sind Icons in verschiedenen Versionen abgespeichert, vielleicht gibt es dort Konflikte. Du kannst dem ganzen Schlüssel Cache umbenennen oder löschen. Der wird beim Öffnen des Formulardesigners automatisch wieder erstellt.


galagher - Do 27.10.16 17:23

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Wie bist du dabei vorgegangen? Sofern die Koponenten vorher schon installiert waren, hätten sie entfernt werden müssen, um in einem neuen Package erstellt, und daraus wieder installiert werden zu können.
Die waren vorher in Delphi 10.1 noch nie installiert!

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Du könntest einmal den Icon Cache der entsprechenden Icons löschen. Diese Daten findest du in der Registry unter:

Quelltext
1:
HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\18.0\Palette\Cache                    
Da fehlen bei genau den betreffenden Komponenten die Icon16-, Icon24- und Icon32-Einträge! Wie bringe ich die da rein? Umbenennen von "Cache" bringt nichts.


Delete - Do 27.10.16 17:45

- Nachträglich durch die Entwickler-Ecke gelöscht -


galagher - Do 27.10.16 18:10

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Und wenn du den betreffenden Unterpunkt löscht, das Package neu kompilierst und abspeicherst, wie ist es dann?
Da ändert sich nichts, das Vorgabesymbol bleibt. Und wie gesagt, nach dem Neukompilieren werden alle Symbole korrekt angezeigt, wenn ich Delphi dann neu starte. Danach aber nicht mehr, und es sind immer dieselben Komponenten. Die dazugehörigen dcr's haben nichts Besonderes an sich, ich habe sie wie alle anderen mit ImageEdit erstellt.

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Um den Wert unterzubringen, öffne die Grafik/en mit einem HexEditor, kopier' die Werte heraus und füge sie in den dafür vorgesehenen Eintrag.
Das habe ich auch schon überlegt!

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Hast du die Packages auch unter einer anderen Delphi Version getestet?
Nein, möchte ich auch nicht, denn unter XE2 hatte ich die selben Probleme, aber mit anderen Komponenten, u.a. auch mit TSynEdit und den Jedis. Dort hat sich das aber fast alles erledigt.

Ich werde jetzt versuchen, eine .dcr einer anderen Komponente, bei der es funktioniert, zu verwenden und dann sehe ich ja, was passiert.

//Edit: Es ändert sich gar nichts. Nach dem Kompilieren wird zunächst das neue Symbol angezeigt, dann wieder das Vorgabesymbol. Warum nur?


Delete - Do 27.10.16 19:08

- Nachträglich durch die Entwickler-Ecke gelöscht -


galagher - Do 27.10.16 19:25

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Wie groß sind deine Grafiken?
24x24, so wie alle diese Icons. Was ich nicht verstehe: Bei meinem Test vorhin habe ich einfach eine dcr in den anderen Ordner kopiert, umbenannt, den Namen des Bitmaps in Grossbuchstaben ebenfalls umbenannt, und es hat nicht funktioniert. Es kann doch nicht am Namen der Komponente liegen? :eyecrazy:
Das muss doch völlig egal sein, ob die nun TMemoPlus oder TImgCombo heisst und ob in der dcr-Datei nun TMEMOPLUS oder TIMGPLUS steht, ist doch auch egal, Hauptsache, Name der Komponente = Name des Bitmaps!

Ich werde jetzt versuchen, in der Registry einfach den entsprechenden Wert einer dieser Komponenten aus XE2 nach 10.1 zu kopieren, mal sehen...


galagher - Do 27.10.16 20:07

user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
Ich werde jetzt versuchen, in der Registry einfach den entsprechenden Wert einer dieser Komponenten aus XE2 nach 10.1 zu kopieren, mal sehen...
Da habe ich bei den exakt gleichen Komponenten die Vorgabesymbole!

Ich habe auch andere Komponenten in beiden Delphiversionen mit den richtigen Symbolen. Ich verwende jeweils ein Package mit diesen Komponenten, es sind zwei Dateien, die an zwei verschiedenen Orten gespeichert sind, bei den meisten Komponenten klappt es, bei einigen nicht. Auch dann nicht, wenn ich eine andere, funktionierende .dcr kopiere, anpasse und diese verwende. Weder mit 16, noch mit 256 Farben.

Da ist nichts Besonderes an den Dateien oder Grafiken, die Schreibweise der Namen stimmt, alles ist korrekt im Package aufgelistet und die .dcr werden auch in der Projektverwaltung angezeigt.
Bereinigen, neu erzeugen/kompilieren, dproj löschen - nichts ändert etwas.

Beispiel:
Ich habe eine Komponente TImageCheckListBox, abgeleitet von TCheckListbox. Wenn dafür nun keine .dcr vorhanden ist oder, wenn doch, ich das Bitmap in TCHECKLISTBOX umbenenne, ändert das gar nichts! Es bewirkt nicht, wie zu erwarten wäre, dass das Symbol für TCheckListbox dargestellt wird. Nein, es bleibt beim Vorgabesymbol.

Aber wohlgemerkt:
- Package kompilieren, Delphi beenden.
- Delphi neu starten: alles in Ordnung.
- Delphi beenden und wieder starten: Vorgabesymbole.

Versteht das wer?


Delete - Do 27.10.16 22:22

- Nachträglich durch die Entwickler-Ecke gelöscht -


galagher - Fr 28.10.16 17:53

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Schau mal ob die Test-Komponente im Anhang richtig angezeigt wird.
Nein, Vorgabe!

Im übrigen werden jetzt fast alle Bitmaps richtig angezeigt, bis auf eines, das weiterhin das Vorgabebitmap hat und zwei, die eine ältere Grafik zeigen, die Bitmaps in den .dcr-Dateien wurden aber längst geändert! Woher also kommen die alten Grafiken denn? Werde also versuchen, komplett neue .dcr-Files zu erstellen.

//Edit: Wieder: Zunächst wird das korrekte, neue Bitmap angezeigt, nach Neustart von Delphi wieder das alte, nicht mehr vorhandene, das Bitmap gibt es nicht mehr, nirgendwo, in keiner Datei! Wo hält Delphi bloss den alten Schrott bereit und warum?


galagher - Fr 28.10.16 19:50

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Schau mal ob die Test-Komponente im Anhang richtig angezeigt wird.
Jetzt wird sie plötzlich richtig angezeigt!


galagher - Mo 31.10.16 19:38

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Schau mal ob die Test-Komponente im Anhang richtig angezeigt wird.
Hatte das einen besonderen Grund? Warum zuerst nicht, dann doch?


Delete - Di 01.11.16 17:31

- Nachträglich durch die Entwickler-Ecke gelöscht -


galagher - Di 01.11.16 18:06

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Mit Delphi7 habe ich einen Bildeditor von Borland mit dabei, der mir auch jegliche Ressource Dateien erzeugen kann.
Ja, ImageEdit.exe habe ich auch. Auch das Erstellen einer neuen .dcr ändert nichts. Und dann plötzlich sind die Bitmaps richtig, zumindest fast alle.

Das Beste ist wie gesagt, es gibt auch noch zwei Bitmaps, bei denen die alten .dcr's mit den alten Bitmaps gar nicht mehr existieren, und dennoch werden statt der neuen die alten Bitmaps angezeigt, obwohl die alten nie unter Delphi 10.1 installiert waren! (Unter XE2 aber schon, da werden aber immer noch die Vorgabe-Bitmaps angezeigt, da habe ich also das selbe Problem). Ich frage mich, wo Delphi 10.1 die alten Bitmaps ausliest, sind die irgendwo in den Tiefen der Registry?

Natürlich ist das alles nur ein optischer "Schönheitsfehler", die Komponenten funktionieren ja. Auch bei den Jedis habe ich diesen Effekt, siehe Anhang!


jaenicke - Mi 02.11.16 08:26

Irgendetwas ist auf deinem Rechner wirklich komisch. Das Setup der JEDIs für Delphi 10.1 findet dein XE2, hier bei den Komponentenbildern sagst du auch, dass 10.1 Bilder von XE2 benutzt, ...
Ich kann mir wirklich nicht vorstellen wie das passieren kann.

Vielleicht wäre eine Neuinstallation von Windows + Delphi sinnvoller als zu viel Zeit in die Fehlersuche zu stecken.


galagher - Do 03.11.16 20:19

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Irgendetwas ist auf deinem Rechner wirklich komisch. Das Setup der JEDIs für Delphi 10.1 findet dein XE2,
Ja, ist tatsächlich so. :nixweiss:

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
hier bei den Komponentenbildern sagst du auch, dass 10.1 Bilder von XE2 benutzt, ...
10.1 benutzt nun die richtigen Bilder, bis auf drei: einmal immer noch die Vorgabe- oder Standardgrafik, und zweimal veraltete Bilder. Woher es die hat, weiss ich nicht, es gibt sie schlicht nicht mehr. Hingegen benutzt XE2 für die gleichen Komponenten die Standardgrafik, sollte dafür aber auch neuere Bilder haben...
Bei den Jedis passt fast - aber eben nur fast - alles.

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Vielleicht wäre eine Neuinstallation von Windows + Delphi sinnvoller als zu viel Zeit in die Fehlersuche zu stecken.
Ist mir den "Aufwand" nicht wert!


Delete - Do 03.11.16 20:31

- Nachträglich durch die Entwickler-Ecke gelöscht -


galagher - Fr 04.11.16 22:08

Zuerst: Beide falsch dargestellten Komponenten werden nun dauerhaft korrekt dargestellt! Ich habe sie einfach in ein neues Projekt eingefügt (und dort wieder entfernt, brauche sie da nicht) - und siehe da!

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Die veralteten Grafiken sind vielleicht ein Mitbringsel einer .RES Datei.
Nur bei der immer noch mit Vorgabe-Bitmap dargestellten Komponente gibt's eine .res-Datei, die ein Bitmap enthält. Ich könnte jetzt einfach das Bitmap austauschen und alles nochmal kompilieren, aber erstens heute nicht mehr und zweitens: Wo ist dann der Unterschied? Es ist doch völlig egal, wie das Bild aussieht.
Ich würde ja noch verstehen, wenn Delphi das Bitmap aus der .res nimmt statt aus der .dcr, aber gar kein Bild?

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Nimm von einer falsch dargestellten Komponente die .PAS Datei her, benenn' die Unit um, füge sie in ein neues Package hinzu mit einer dazugehörigen .DCR Datei und installier es. Damit keine Konflikte entstehen, deaktiviere/entferne die gleichnamige bereits existierende Komponente.
Das mache ich vielleicht noch, mal sehen.


Delete - Sa 05.11.16 02:00

- Nachträglich durch die Entwickler-Ecke gelöscht -


galagher - Sa 05.11.16 06:17

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
und nebenbei die zwei Delphi Versionen im Clinch miteinander sind, dann wäre es besser, diese sauber zu deinstallieren und nochmal aufzusetzen. Eventuell, wenn schon eine Version installiert wurde, zu schauen, ob dieses Mal die Icons auch richtig dargestellt werden, denn vielleicht ist die andere Version die Quelle des Übels.
Das glaube ich deshalb nicht, weil ich das selbe Problem schon mit Delphi XE2 hatte (habe), und diese Delphi-Version damals die einzige war! Es waren/sind exakt die gleichen Komponenten!
Da ansonsten ja alles funktioniert, auch die Komponenten selbst, denke ich, ein Neuinstallieren bringt nur eins: Wieder die falschen Bitmaps bei diesen Komponenten. Dann kompiliere ich wieder rum, und irgendwann passt es so halbwegs. Irgendwie habe ich da keine Lust mehr drauf... :puke:


Delete - Sa 05.11.16 15:29

- Nachträglich durch die Entwickler-Ecke gelöscht -