Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Icon/Bild für eigene Komponente erstellen (BDS 2006) (https://www.delphipraxis.net/89310-icon-bild-fuer-eigene-komponente-erstellen-bds-2006-a.html)

CK_CK 29. Mär 2007 09:56


Icon/Bild für eigene Komponente erstellen (BDS 2006)
 
Hallo,
ich bin schon ewig auf der Suche danach, aber ich finde einfach keine Anleitung...

Also, früher konnte man mit D6 einfach mit einem beiliegendem Programm eine dcr-Datei erstellen und via "{$R 'icon.dcr'}" in die eigene Komponente einfügen. Dadurch konnte man in der Komponentenpalette ein anderes Icon, als das Standard-Icon sehen.

Meine Frage ist nun: Wie geht das bei Delphi 2006? Ich finde nirgendwo diesen Bild-Editor, der früher bei Delphi dabei war. Macht man das heute anders? Wenn ja: Wie?

Würde mich über eine kleine Kurzanleitung freuen... :stupid:

Viele Grüße,
Chris

franktron 29. Mär 2007 11:05

Re: Icon/Bild für eigene Komponente erstellen (BDS 2006)
 
Ist eine DCR nicht ein ICO ??? oder ein BMP irgendwas in der art wahr das doch

scrat1979 29. Mär 2007 12:11

Re: Icon/Bild für eigene Komponente erstellen (BDS 2006)
 
Hallo CK_CK,

vielleicht kann dir Folgender Thread etwas weiterhelfen. Ich hatte auch mal bei google was gefunden, allerdings finde ich es momentan nicht :wall:

Als Resourceeditor empfehle ich Dir "Xn Resource Editor".

SCRaT

CK_CK 29. Mär 2007 13:57

Re: Icon/Bild für eigene Komponente erstellen (BDS 2006)
 
Hi!
Vielen Dank schonmal für die Antworten. Leider haben sie mir noch nicht geholfen, da
1. ich nicht mit .NET arbeite, sondern mit Win32-Delphi
2. dcr-Dateien glaube ich irgendwelche Resourcen-Dateien sind und keine ico/bmp-Dateien. :cry:

Anscheinend bin ich der einzige mit dem Problem... Ist denn bei D2006 der Bild-Editor DOCH dabei und nur bei mir nicht? :gruebel:

Chris

Flocke 29. Mär 2007 13:59

Re: Icon/Bild für eigene Komponente erstellen (BDS 2006)
 
Ein wenig genauer (ist in dem anderen Thread aber teilweise schon beschrieben): eine DCR-Datei ist vom Format her einfach eine RES-Datei.

Male dir eine 24x24 Bitmap für deine Komponente und schreibe dir eine RC-Datei mit dem Inhalt
Code:
TMEINEKOMPONENTE BITMAP "TMeineKomponente.bmp"
Die kannst du dann mit
Code:
brc32.exe /Fo TMeineKomponente.dcr TMeineKomponente.rc
umwandeln.

Ab BDS2005 unterstützt Delphi auch kleine (16x16) und große (32x32) Symbole. Das kannst du auch machen, indem du dir für diese Größen ebenfalls Bitmaps erstellst und die RC-Datei wie folgt erweiterst:
Code:
TMEINEKOMPONENTE BITMAP "TMeineKomponente.bmp"
TMEINEKOMPONENTE16 BITMAP "TMeineKomponente16.bmp"
TMEINEKOMPONENTE32 BITMAP "TMeineKomponente32.bmp"
Hinweis: die eigentlichen Dateinamen sind egal - nur die Ressourcen müssen so heißen wie deine Komponente (inkl. T am Anfang).

// Edit: Ressourcennamen in Großschrift geändert.

turboPASCAL 29. Mär 2007 14:40

Re: Icon/Bild für eigene Komponente erstellen (BDS 2006)
 
*.dcr Dateien sind im grunde eine art Resourcedateien (*.res).

Falls du keinen Bileditor (Borland Image Editor) zu deinem Delphi hast macht das auch nix.
Erstelle dir eine Resourcetextdatei zB.:

Code:
; ResName  |   ResTyp | Path/ResFile
; ----------+-----------+----------------------
TBassDLLPlayer Bitmap "TBassDllPlayer.bmp"
TBassPlayer Bitmap "TBassPlayer.bmp"
Speichere diese ab und kompeliere sie mit dem Borlandresourcecompieler über die Console zB. so:

Code:
brcc32.exe -r ".\res\BassDllPlayer.rc" -fo".\BassDllPlayer.dcr"
Das wars schon. Das "Einbinden" in die Komponente mach du einfach in dem du über
"Komponente insalieren" -> "Durchsuchen" etc. deine Unit hinzufügst.
Delphi sucht dann selbstständig in diesem Path nach einer *.dcr - Datei und bindet sie in
das Package ein.

Das hinzufügen über den Compilerschalter {$R ...} in der Unit der Komponente halte ich für Unsin,
da dann das/die Bitmaps auch in die Kompilierte Anwendung mit aufgenommen werden wo man sie ja nu
nicht braucht.

Das Package schaut dann ungefähr so aus:
Delphi-Quellcode:
package BassDLLpkg;

{$R *.res}
{$R 'BassPlayer.dcr'} // <--<<<
{$ALIGN 8}
// ... etc.
{$IMPLICITBUILD OFF}

requires
  rtl,
  vcl;

contains
  Bass203 in 'bass203.pas',
  BassPlayer in 'BassPlayer.pas'; // <--<<<

end.

// Edit:

Irgend wie hätte ich mir das Sparen können, Flocke war nu 40 min schneller.
Habs aber nicht gesehen... :gruebel:

CK_CK 29. Mär 2007 14:44

Re: Icon/Bild für eigene Komponente erstellen (BDS 2006)
 
Vielen Dank :thumb:

Das hat geklappt. Ich musste aber beide Resourcen (32 und 16 px) einfügen, damit das Icon auch in der Palette UND auf dem Formular angezeigt wird.

Meine rc-Datei sieht folgendermaßen aus:
Code:
TMYCOMPONENT BITMAP "icon32.bmp"
TMYCOMPONENT16 BITMAP "icon16.bmp"
TMYCOMPONENT21 BITMAP "icon32.bmp"
Ich konnte das auch mit brcc32.exe kompilieren. (Gibt's einen Unterschied zwischen brc32.exe und brcc32.exe?)

Als Hintergrundfarbe habe ich 255,0,255 (clFuchsia) genommen, dadurch wird das Icon sogar transparent dargestellt... :stupid:

Die erzeugte dcr-Datei habe ich dann in der Unit der Komponente via "{$R "icon.dcr"}" eingebunden.

Also, vielen Dank nochmal,
Chris

EDIT: Auch an turboPascal vielen Dank! Der Tipp mit dem $R... in das Package und nicht in die Unit ist gut... Wär' ich nicht drauf gekommen... :mrgreen:

MagicAndre1981 10. Apr 2007 13:12

Re: Icon/Bild für eigene Komponente erstellen (BDS 2006)
 
ich hab das auch probiert, aber nix passiert.

Wie muss die .dcr genau lauten und wie die .rc?

Warum kann das nicht so schick wie in .NET sein, da muss ich nur ein Attribut setzen :wall:

MagicAndre1981 10. Apr 2007 16:29

Re: Icon/Bild für eigene Komponente erstellen (BDS 2006)
 
so, das icon ist nun auf der Kompo wenn ich sie auf die Form haue, aber nicht in der Toolpalette :wall:

http://s6.bilder-hosting.de/img/XGNGJ.png

scrat1979 10. Apr 2007 17:23

Re: Icon/Bild für eigene Komponente erstellen (BDS 2006)
 
Hallo!!

Das passiert mir komischerweise mit meinen eigenen Komponenten auch hin und wieder. Wenn Du die Möglichkeit hast, dann installiere mal Dein Package auf einem anderen System und schaue ob es da nicht korrekt in der Toolbar angezeigt wird. Ich persönliche denke es handelt es sich dabei um eine Eigenart der IDE!!!

SCRaT

CK_CK 10. Apr 2007 17:47

Re: Icon/Bild für eigene Komponente erstellen (BDS 2006)
 
Achte auf meinen letzten Beitrag. Du musst die .rc-Datei so:
Code:
TMYCOMPONENT BITMAP "icon32.bmp"
TMYCOMPONENT16 BITMAP "icon16.bmp"
[b]TMYCOMPONENT32[/b] BITMAP "icon32.bmp"
füllen. Dann funktioniert es auch ;)
Ich hatte aus Versehen "TMYCOMPONENT21" geschrieben...

Viele Grüße,
Chris

Flocke 10. Apr 2007 17:51

Re: Icon/Bild für eigene Komponente erstellen (BDS 2006)
 
Zitat:

Zitat von MagicAndre1981
Wie muss die .dcr genau lauten und wie die .rc?

Muss nicht der Königsweg sein, aber so mache ich es:

1. Entwerfe 1-3 Bitmaps. Die Standardgröße ist 24x24, die Größen 16x16 und 32x32 werden für die kleinen und großen Listeneinträge ab BDS2005 benutzt. Ich nenne die jetzt mal "TMyCompo24.bmp" sowie "TMyCompo16.bmp" und "TMyCompo32.bmp", die Dateinamen sind aber eigentlich egal.

2. Erstelle eine RC-Datei mit dem folgenden Inhalt (ich nenne sie mal MyCompo.rc):
Code:
TMYCOMPO BITMAP "TMyCompo24.bmp"
TMYCOMPO16 BITMAP "TMyCompo16.bmp"
TMYCOMPO32 BITMAP "TMyCompo32.bmp"
Die unteren beiden Zeilen brauchst du nur, wenn du die Bitmaps in diesen Größen auch wirklich gemacht hast. Wichtig ist das "TMYCOMPO" am Anfang der Zeilen - das muss der Name deiner Komponente in Großbuchstaben sein.

3. Diese RC-Datei musst du nun übersetzen mit BRCC32.EXE
Code:
BRCC32.EXE /R /Fo MyCompo.dcr MyCompo.rc
Die Dateinamen kannst du dir beliebig aussuchen, wichtig ist abschließend:

4. Genau diese DCR-Datei musst du in der Projektdatei (DPR) angeben:
Delphi-Quellcode:
{$R 'MyCompo.dcr'}
// Da ist mir CK_CK wohl etwas zuvorgekommen...

MagicAndre1981 10. Apr 2007 21:26

Re: Icon/Bild für eigene Komponente erstellen (BDS 2006)
 
:? grml, ich krieg gleich einen Koller

ich hab es so gemacht, wie ihr es beschrieben habt. Nix, in der Toolpalette seh ich das Icon nicht. :wiejetzt:

Code:
TDETECTWINVERSION BITMAP "TDetectWindowsVersion24.bmp"
TDETECTWINVERSION16 BITMAP "TDetectWindowsVersion16.bmp"
TDETECTWINVERSION32 BITMAP "TDetectWindowsVersion.bmp"
Das ist die rc und mit dem Befehl

Code:
brcc32.exe -r ".\DetectWinVersion.rc" -fo".\DetectWinVersion.dcr"
übersetzt. Die dcr ist im Projekt, aber wie gesagt auf der Form hat die Kompo das Icon aber in der Toolpalette nicht. :wall:

Vllt ist das auch ein Bug im Delphi 2007.

turboPASCAL 13. Apr 2007 10:25

Re: Icon/Bild für eigene Komponente erstellen (BDS 2006)
 
Was hast du denn für eine Farbtiefe für die Bitmaps? Mit 16 Farben sollte das immer funktionieren.
:gruebel:

MagicAndre1981 13. Apr 2007 10:35

Re: Icon/Bild für eigene Komponente erstellen (BDS 2006)
 
Zitat:

Zitat von turboPASCAL
Was hast du denn für eine Farbtiefe für die Bitmaps? Mit 16 Farben sollte das immer funktionieren.
:gruebel:

ich hab 8Bit Farbtiefe also 256 Farben.

CK_CK 13. Apr 2007 11:29

Re: Icon/Bild für eigene Komponente erstellen (BDS 2006)
 
Existieren denn alle Bilddateien? Und haben die größeren Bilder 32x32 Pixel und das kleine 16x16 Pixel?
Hast du sie unkomprimiert als .bmp gespeichert? (Am besten mit "Paint")

Kleiner Tipp noch: Wenn du transparente Bereiche Willst, musst du diese mit clFuchsia, also R 255, G 0, B 255 füllen.

Viele Grüße,
Chris

Flocke 13. Apr 2007 12:32

Re: Icon/Bild für eigene Komponente erstellen (BDS 2006)
 
Zitat:

Zitat von CK_CK
Wenn du transparente Bereiche Willst, musst du diese mit clFuchsia, also R 255, G 0, B 255 füllen.

Die eigentliche Farbe ist egal, Delphi nimmt den Punkt links unten als Referenz für die transparente Farbe (TBitmap mit TransparentColor=clDefault / TransparentMode=tmAuto).

turboPASCAL 13. Apr 2007 23:42

Re: Icon/Bild für eigene Komponente erstellen (BDS 2006)
 
Zitat:

Zitat von CK_CK
... Wenn du transparente Bereiche Willst, musst du diese mit clFuchsia, also R 255, G 0, B 255 füllen.

Nein, das ist nicht wahr, es wird geprüft welche Farbe der Radn hat, die wird dann als transparenter Bereich genommen. :stupid:

@MagicAndre1981, binde die Datei mal als *.res in die Kompo ein. Ich glaube mich zu erinnern
das ich das selbe Probl. schon mal bei D2k5 hatte... :gruebel:

MagicAndre1981 14. Apr 2007 12:06

Re: Icon/Bild für eigene Komponente erstellen (BDS 2006)
 
Zitat:

Zitat von turboPASCAL
@MagicAndre1981, binde die Datei mal als *.res in die Kompo ein. Ich glaube mich zu erinnern
das ich das selbe Probl. schon mal bei D2k5 hatte... :gruebel:

ok, probiere ich nachher mal aus.

MagicAndre1981 15. Apr 2007 15:04

Re: Icon/Bild für eigene Komponente erstellen (BDS 2006)
 
nun gehts :firejump:

die 24x24 Bitmap war als 16Bit gespeichert :wall: :wall:


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