|
|
|
|
|
Die Größe der aufgeklappten Liste einer ComboBox wird von
Windows automatisch festgelegt. Die Höhe der Aufklappliste können
Sie über die API-Funktion SetWindowPos
ändern. Der von Ihnen gewünschte Wert wird allerdings auf die
integrale Höhe abgerundet - das heißt, die Höhe der Liste ist
durch die Höhe eines einzelnen Eintrags glatt teilbar und es werden
nur vollständige Zeilen angezeigt. Die Breite der Liste ändern
Sie, indem Sie mit der API-Funktion SendMessage
die Nachricht CB_SETDROPPEDWIDTH
an das Fenster der ComboBox senden.
Die Hilfs-Funktion ComboDropDownSize vereinigt die beiden
separaten Aufrufe und nimmt gegebenenfalls die erforderliche
Umrechnung der übergebenen Größenangaben in Pixels automatisch
vor.
Die Parameter-Angaben für die Breite und die Höhe sind jeweils
optional. Lassen Sie eine der Angaben oder beide weg, oder
übergeben Sie den Wert 0, wird die jeweilige Funktion
nicht ausgeführt. Voreingestellt ist, dass die Größenangaben
Visual Basic-konform in Twips erfolgen. Übergeben Sie Pixelwerte,
setzen Sie den optionalen Parameter Pixels auf True.
Private Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
ByVal x As Long, ByVal y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOZORDER = &H4
Private Const CB_SETDROPPEDWIDTH = &H160
Public Sub ComboDropDownSize(Combo As ComboBox, _
Optional ByVal Width As Single, Optional ByVal Height As Single, _
Optional ByVal Pixels As Boolean)
Dim nWidth As Long
Dim nHeight As Long
If Pixels Then
nWidth = CLng(Width)
nHeight = CLng(Height)
Else
nWidth = CLng(Width \ Screen.TwipsPerPixelX)
nHeight = CLng(Height \ Screen.TwipsPerPixelY)
End If
With Combo
If nWidth > 0 Then
SendMessage .hwnd, CB_SETDROPPEDWIDTH, nWidth, 0
End If
If nHeight > 0 Then
SetWindowPos .hwnd, 0, 0, 0, _
(.Width \ Screen.TwipsPerPixelX), _
nHeight, SWP_NOMOVE Or SWP_NOZORDER
End If
End With
End Sub
 |
Mit der Hilfs-Funktion ComboDropDownSize
können Sie die Größe der Aufklappliste eine ComboBox
individuell festlegen

|

|
|
|