Autor Beitrag
UweK
Hält's aus hier
Beiträge: 15

Win 7
Delphi Enterprise XE6
BeitragVerfasst: Di 13.02.18 15:02 
Guten Tag,

Wie kann ich eine TImageList einschließlich der darin enthaltenen Bilder in eine Komponente bringen?

Beispiel: Ich biete in einer TComboBoxEx eine Auswahlliste für wählbare Sprachen an, die zu jedem Namen einer Sprache die zugehörige Landesfahne als kleines 16x16 Pixelbild zeigt. Das ist im Prinzip simpel, indem ich im Parent-Fenster der TComboBoxEx einfach eine TImageList anlege, diese von Hand in der IDE über das entsprechende Dialogfenster fülle, und dann an TComboBoxEx.Images zuweise. Das hat aber den Nachteil, dass ich diese Prozedur in jedem neuen Programm wiederholen muss.

Ich würde gern eine neue Komponente TLanguageComboBoxEx = class(TComboBoxEx) ableiten, die fix und fertig die gefüllte TImageList enthält, so dass ich jeweils nur noch diese neue Komponente ins Formular ziehen muss. Wie lässt sich das bewerkstelligen?

Danke für Tipps.
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1844
Erhaltene Danke: 333

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Di 13.02.18 16:02 
Guten Tag,

lager deine Grafiken in eine Ressourcendatei (.res) aus, die du dann über ein TBitmap-Objekt ausliest:
- bmpObj.LoadFromResourceName()
- bmpObj.LoadFromResourceID()

und dieses an eine ImageList übergibst: imgList.Add(bmpObj, nil);

Der TLanguageComboBoxEx weist du über die Eigenschaft .Images die imgList zu, und im Anschluss kannst du einen Eintrag tätigen, wie:

ausblenden Delphi-Quelltext
1:
LanguageComboBoxEx1.ItemsEx.AddItem('Deutsch'0000nil); // 0 = jeweiliger ImageIndex der imgList					

Nur eine grobe Vorschau.

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)