PDA

View Full Version : چگونه می توان در یک Combo Box را باز کرد .



محسن شمس
سه شنبه 18 مرداد 1384, 17:17 عصر
بطوری که وقتی من دکمه ای را کلیک کردم
در کادر کومبو باز شود

Hamedm
سه شنبه 18 مرداد 1384, 20:53 عصر
سلام دوست عزیز

این کار بوسیله توابع API براحتی قابل انجام است.
بوسیله تابع زیر میتونید ماوس و یا کیبورد رو شبیه سازی کنید:

Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, pInputs As GENERALINPUT, ByVal cbSize As Long) As Long
اگه نیازی بود بگو پارامترهاشو توضیح بدم.

در پناه حق موفق باشید و پرتوان

PalizeSoftware
سه شنبه 18 مرداد 1384, 21:23 عصر
با این کد این کار عملی است:


Private Const CB_SHOWDROPDOWN = &H14F

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 Sub DropDownCombo()
Call SendMessage(Combo1.hwnd, CB_SHOWDROPDOWN, True, 0&)
End Sub

Alirezagoodarzi
سه شنبه 18 مرداد 1384, 23:03 عصر
این کد باعث میشه اگر در text کومبو چیزی وارد کرده باشید ودر لیست موجود باشه علاوه بر باز شدن آن مورد انتخاب بشه.

هر جا خواستید این کار انجام بشه اون را به شکل زیر استفاده کنید.


Drop cmbMoin, True
پارامتر اول نام کومبو مورد نظره
پارامتر دوم هم برای جستجو در لیست

خودم ننوشتم از یک (یادم نیست) گرفتم.



Public Declare Function SendMessageAsString Lib "user32" Alias "SendMessageA" ( _
ByVal hWnd As Long, _
ByVal wMsg As Integer, _
ByVal wParam As Long, _
ByVal lParam As String) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
ByVal hWnd As Long, _
ByVal wMsg As Integer, _
ByVal wParam As Long, _
lParam As Any) As Long

Public Const CB_SHOWDROPDOWN = &H14F
Public Const CB_FINDSTRING = &H14C
Public Const CB_GETDROPPEDSTATE = &H157
Public Const CB_GETDROPPEDWIDTH = &H15F
Public Const CB_SETDROPPEDWIDTH = &H160
Public Const CB_LIMITTEXT = &H141
Public Const CB_SETITEMHEIGHT = &H153
Public Const CB_GETITEMHEIGHT = &H154

Public Function FindString(Combo As Object, ByVal mString As String, SelectIt As Boolean) As Integer

Dim lIndex As Integer
lIndex = SendMessageAsString(Combo.hWnd, CB_FINDSTRING, -1, mString & vbNullString)
FindString = lIndex

If SelectIt = True And Combo.ListCount > 0 Then

Combo.ListIndex = lIndex

End If

End Function

Public Sub SetItemHeight(Combo As Object, ByVal nItem As Integer)

' SendMessage Combo.hwnd, CB_SETITEMHEIGHT, nItem, nHeight

End Sub

Public Function GetEditBoxHeight(Combo As Object) As Long

'ret& = SendMessage(Combo.hwnd, CB_GETITEMHEIGHT, -1, 0)
'GetEditBoxHeight = ret&

End Function

Public Function SetEditBoxHeight(Combo As Object, ByVal nHeight As Long) As Long

SetEditBoxHeight = SendMessage(Combo.hWnd, CB_SETITEMHEIGHT, -1, nHeight)

End Function

Public Sub SetMaxLen(Combo As Object, ByVal MaxChars As Long)

If MaxChars > 0 Then

SendMessage Combo.hWnd, CB_LIMITTEXT, MaxChars, 0

Else

SendMessage Combo.hWnd, CB_LIMITTEXT, 0, 0 'reset to default

End If

End Sub

Public Sub SetDroppedWidth(Combo As Object, ByVal nWidth As Integer)

SendMessage Combo.hWnd, CB_SETDROPPEDWIDTH, nWidth, 0

End Sub

Public Function GetDroppedWidth(Combo As Object) As Long

GetDroppedWidth = SendMessage(Combo.hWnd, CB_GETDROPPEDWIDTH, 0, 0)

End Function

Public Function GetDroppedState(Combo As Object) As Boolean

GetDroppedState = SendMessage(Combo.hWnd, CB_GETDROPPEDSTATE, 0, 0)

End Function

Public Sub Drop(ByRef Combo As Object, ByVal n As Boolean)

Call SendMessage(Combo.hWnd, CB_SHOWDROPDOWN, n, ByVal 0&)

End Sub