Entwickler-Ecke

Visual Component Library (VCL) - ...die Breite der DropDown-Liste der ComboBox ändern?


Tino - Di 03.09.02 11:07
Titel: ...die Breite der DropDown-Liste der ComboBox ändern?
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 {PixelWidth}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, 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:

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 user profile iconjasocul: Beitrag geprüft am 07.06.2006