Autor Beitrag
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Di 03.09.02 11:07 
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:
ausblenden Delphi-Quelltext
1:
ComboBox1.Perform (CB_SETDROPPEDWIDTH, 200 {PixelWidth}0);					

Der beste Platz zum Aufruf des o. g. Codes ist das OnDropDown-Event der ComboBox:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
Procedure tForm1.ComboBox1DropDown (Sender: tObject);
Begin
  ComboBox1.Perform (CB_SETDROPPEDWIDTH, 2000);
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:
ausblenden 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:
ausblenden 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 user profile iconjasocul: Beitrag geprüft am 07.06.2006