Combobox, Scroll

22/11/2007 - 19:54 von Jens Müller | Report spam
Hallo Leute,

Ich habe eine Combobox mit 10 Eintràgen. Wegen zwei Eintràgen wird hier
eine vertikale Scrolleiste angezeigt. Ist es möglich alle Eintràge
aufzulisten?

Ich habe in der MSDN keine Fensternachricht gefunden, die hier etwas
beeinflussen zu scheint.

Danke!
Jens
 

Lesen sie die antworten

#1 Thorsten Doerfler
22/11/2007 - 20:25 | Warnen spam
Jens Müller schrieb:
Ich habe eine Combobox mit 10 Eintràgen. Wegen zwei Eintràgen wird hier
eine vertikale Scrolleiste angezeigt. Ist es möglich alle Eintràge
aufzulisten?

Ich habe in der MSDN keine Fensternachricht gefunden, die hier etwas
beeinflussen zu scheint.



Tatsàchlich keine Fensternachricht. Statt dessen kann man die Höhe der
Auswahlliste über SetWindowPos festlegen:

' -- Deklaration --
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Declare Function GetWindowRect Lib "user32" ( _
ByVal hwnd As Long, _
ByRef lpRect As RECT _
) As Long

Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" ( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByRef lParam As Any _
) As Long

Private Const CB_GETITEMHEIGHT As Long = &H154

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 Const SWP_NOMOVE As Long = &H2
Private Const SWP_NOZORDER As Long = &H4

Public Sub SetDropDownSize(ByRef ComboBox As ComboBox, _
ByVal VisibleItems As Integer)
Dim lWidth As Long
Dim lItemHeight As Long
Dim lHeight As Long
Dim lRC As RECT

With ComboBox
GetWindowRect .hwnd, lRC

lWidth = lRC.Right - lRC.Left
lHeight = lRC.Bottom - lRC.Top

lItemHeight = SendMessage(.hwnd, CB_GETITEMHEIGHT, 0, ByVal 0&)
lHeight = (lItemHeight * VisibleItems) + lHeight + 2

SetWindowPos .hwnd, 0, 0, 0, _
lWidth, _
lHeight, _
SWP_NOMOVE Or SWP_NOZORDER
End With
End Sub

' Anwendung:
SetDropDownSize Combo1, Combo1.ListCount
'

Thorsten Dörfler
Microsoft MVP Visual Basic

vb-hellfire visual basic faq | vb-hellfire - einfach anders
http://vb-faq.de/ | http://www.vb-hellfire.de/

Ähnliche fragen