Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

DBCombo number of lines displayed

Status
Not open for further replies.

mtrudel

Programmer
Nov 7, 2000
2
0
0
CA
Can we modify the number of lines displayed in a DBCombo? In Access we have List Rows in the ComboBox but in VB, is there something similar?
Thanks for any help.
 
Determine The Number Of Rows In Combo Box

'Add a module to your project (In the menu choose Project -> Add Module, Then click Open)
'Add 2 Command Buttons, 1 Combo Box and 1 Text Box.
'At Run-Time, Insert into the Text Box the number of items the Combo Box will display
'for each scroll, and press Command1 to apply. Press Command2 to return to default state.
'Insert the following code to your module:

Option Explicit
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
(ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal _
wParam As Long, ByVal lParam As Long) As Long
Private Const GWL_WNDPROC = (-4)
Private lpPrevWndProc As Long
Public lHookedhWnd As Long
Public iListItems As Integer

Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Const LB_GETITEMHEIGHT = &H1A1
Private Const WM_CTLCOLORLISTBOX = &H134
Private Declare Function GetWindowRect Lib "user32" _
(ByVal hWnd As Long, lpRect As RECT) As Long
Private Declare Function MoveWindow Lib "user32" _
(ByVal hWnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, _
ByVal nHeight As Long, ByVal bRepaint 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

Public Sub Hook()
lpPrevWndProc = SetWindowLong(lHookedhWnd, GWL_WNDPROC, _
AddressOf WindowProc)
End Sub

Public Sub Unhook()
Dim lRetVal As Long
lRetVal = SetWindowLong(lHookedhWnd, GWL_WNDPROC, lpPrevWndProc)
End Sub

Function WindowProc(ByVal hw As Long, ByVal uMsg _
As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
Select Case uMsg
Case WM_CTLCOLORLISTBOX
Dim rc As RECT
Dim lItemHeight As Long
Dim lListHeight As Long
Static bIgnore As Boolean
Const LIST_ITEMS As Long = 20
If Not bIgnore Then
With rc
lItemHeight = SendMessage(lParam, LB_GETITEMHEIGHT, 0, ByVal 0&)
lListHeight = lItemHeight * iListItems + 2
Call GetWindowRect(lParam, rc)
bIgnore = True
Call MoveWindow(lParam, .Left, .Top, (.Right - .Left), lListHeight, True)
bIgnore = False
End With
End If
Case Else
End Select
End Function

'Insert the following code to your form:

Private Sub Command1_Click()
Command1.Enabled = Not (Command1.Enabled)
Command2.Enabled = Not (Command2.Enabled)
Hook
End Sub

Private Sub Command2_Click()
Command1.Enabled = Not (Command1.Enabled)
Command2.Enabled = Not (Command2.Enabled)
Unhook
End Sub

Private Sub Form_Load()
Command2.Enabled = False
Text1 = "2"
Command1.Caption = "Set"
Command2.Caption = "Release"
Dim i As Integer
For i = 1 To 51
Combo1.AddItem "Num " & i
Next
iListItems = 2
lHookedhWnd = Combo1.hWnd
End Sub

Private Sub Text1_Change()
iListItems = Val(Text1)
If iListItems < 1 Then
iListItems = 1
End If
End Sub

Eric De Decker
vbg.be@vbgroup.nl

Licence And Copy Protection AxtiveX
Source CodeBook for the programmer
 
Hello rened,

I have seen many questions about the VB combobox control over the last year or so. Most have to do with the number of columns. Every one seems to like the combobox from Access. About a month ago I saw an answer to the column question.
In the Project Components:Select Microsoft Forms 2.0 Object Library.
This has a combobox that lets you specify the number of columns and rows.

Raney
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top