die Breite der DropDown-Liste der ComboBox ändern?
Um die Breite der DropDown Liste zu ändern reicht es die Windows API Message
CB_SETDROPPEDWIDTH an die ComboBox zu senden:
Delphi-Quelltext
1:
| ComboBox1.Perform (CB_SETDROPPEDWIDTH, 200 , 0); |
Der beste Platz zum Aufruf des o. g. Codes ist das
OnDropDown-Event der ComboBox:
Delphi-Quelltext
1: 2: 3: 4:
| Procedure tForm1.ComboBox1DropDown (Sender: tObject); Begin ComboBox1.Perform (CB_SETDROPPEDWIDTH, 200, 0); End; |
Besser wäre es natürlich eine neue Komponenten von tComboBox abzuleiten damit diese Funktionalität gleich in der Komponente enthalten ist. Dazu erstellen wir einfach eine Ableitung von tComboBox:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| Type tEnhComboBox = Class (tComboBox) Private fDropDownWidth : Integer; Protected procedure DropDown; override; Published Property DropDownWidth: Integer Read fDropDownWidth Write fDropDownWidth; End; |
Dadurch bekommt die neue Komponenten tEnhComboBox eine neue Eigenschaft
DropDownWidth. Die Implementation von tEnhComboBox sieht dann so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| Procedure tEnhCombo.DropDown; Begin Inherited DropDown;
If fDropDownWidth > 0 Then Self.Perform (CB_SETDROPPEDWIDTH, fDropDownWidth, 0) End; |
Moderiert von jasocul: Beitrag geprüft am 07.06.2006