Combobox Flat
Hola amigos: alguien sabe de algun control ocx que sea un combobox flat o algun ejemplo de como hacerlo?
Utiliza o ComboBox do VB6
Deves fazer subclassing e interceptar WM_PAINT
Utiliza API SendMessage com CB_GETCOMBOBOXINFO para teres acesso a uma estrutura COMBOBOXINFO onde terás informação do RECT do ComboBox, do hWnd do EditControl, do hWnd do ListBox , etc ...
Com tudo isto, podes alterar todo o aspecto do ComboBox, como por exemplo trocar a cor da linha que o contorna. Se pretenderes colocar uma imagem no listbox do combobox:
'Subclassin do ComboBox - Form_Load
PrevHWND = SetWindowLong(Combo1.hwnd, GWL_WNDPROC, AddressOf NovoComboPROC)
'no Form_Unload
Dim RetVal as Long
RetVal=SetWindowLong(Combo1.hWnd,GWL_WNDPROC, AddressOf PrevHWND)
Coloca num mĂłdulo
Public PrevHWND as Long
Private Function NovoComboPROC(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_CTLCOLORLISTBOX Then
SetBkMode wParam, 1
gBRUSH = CreatePatternBrush(Form1.Picture1.Picture.Handle)
NovoComboPROC = gBRUSH
Else
NewComboPROC = CallWindowProc(PrevHWND, hwnd, uMsg, wParam, lParam
end If
End Function
É claro que se pretenderes, poderás tambĂ©m substituir o botão do combobox e colocar lá mais uma imagem do teu agrado. Poderás ter um novo OCX ...
Deves fazer subclassing e interceptar WM_PAINT
Utiliza API SendMessage com CB_GETCOMBOBOXINFO para teres acesso a uma estrutura COMBOBOXINFO onde terás informação do RECT do ComboBox, do hWnd do EditControl, do hWnd do ListBox , etc ...
Com tudo isto, podes alterar todo o aspecto do ComboBox, como por exemplo trocar a cor da linha que o contorna. Se pretenderes colocar uma imagem no listbox do combobox:
'Subclassin do ComboBox - Form_Load
PrevHWND = SetWindowLong(Combo1.hwnd, GWL_WNDPROC, AddressOf NovoComboPROC)
'no Form_Unload
Dim RetVal as Long
RetVal=SetWindowLong(Combo1.hWnd,GWL_WNDPROC, AddressOf PrevHWND)
Coloca num mĂłdulo
Public PrevHWND as Long
Private Function NovoComboPROC(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_CTLCOLORLISTBOX Then
SetBkMode wParam, 1
gBRUSH = CreatePatternBrush(Form1.Picture1.Picture.Handle)
NovoComboPROC = gBRUSH
Else
NewComboPROC = CallWindowProc(PrevHWND, hwnd, uMsg, wParam, lParam
end If
End Function
É claro que se pretenderes, poderás tambĂ©m substituir o botão do combobox e colocar lá mais uma imagem do teu agrado. Poderás ter um novo OCX ...
Enviado por AbĂlio - PORTUGAL el dĂa 2 de diciembre de 2003
Utiliza o ComboBox do VB6
Deves fazer subclassing e interceptar WM_PAINT
Utiliza API SendMessage com CB_GETCOMBOBOXINFO para teres acesso a uma estrutura COMBOBOXINFO onde terás informação do RECT do ComboBox, do hWnd do EditControl, do hWnd do ListBox , etc ...
Com tudo isto, podes alterar todo o aspecto do ComboBox, como por exemplo trocar a cor da linha que o contorna. Se pretenderes colocar uma imagem no listbox do combobox:
'Subclassin do ComboBox - Form_Load
PrevHWND = SetWindowLong(Combo1.hwnd, GWL_WNDPROC, AddressOf NovoComboPROC)
'no Form_Unload
Dim RetVal as Long
RetVal=SetWindowLong(Combo1.hWnd,GWL_WNDPROC, AddressOf PrevHWND)
Coloca num mĂłdulo
Public PrevHWND as Long
Private Function NovoComboPROC(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_CTLCOLORLISTBOX Then
SetBkMode wParam, 1
gBRUSH = CreatePatternBrush(Form1.Picture1.Picture.Handle)
NovoComboPROC = gBRUSH
Else
NewComboPROC = CallWindowProc(PrevHWND, hwnd, uMsg, wParam, lParam
end If
End Function
É claro que se pretenderes, poderás tambĂ©m substituir o botão do combobox e colocar lá mais uma imagem do teu agrado. Poderás ter um novo OCX ...
Utiliza o ComboBox do VB6
Deves fazer subclassing e interceptar WM_PAINT
Utiliza API SendMessage com CB_GETCOMBOBOXINFO para teres acesso a uma estrutura COMBOBOXINFO onde terás informação do RECT do ComboBox, do hWnd do EditControl, do hWnd do ListBox , etc ...
Com tudo isto, podes alterar todo o aspecto do ComboBox, como por exemplo trocar a cor da linha que o contorna. Se pretenderes colocar uma imagem no listbox do combobox:
'Subclassin do ComboBox - Form_Load
PrevHWND = SetWindowLong(Combo1.hwnd, GWL_WNDPROC, AddressOf NovoComboPROC)
'no Form_Unload
Dim RetVal as Long
RetVal=SetWindowLong(Combo1.hWnd,GWL_WNDPROC, AddressOf PrevHWND)
Coloca num mĂłdulo
Public PrevHWND as Long
Private Function NovoComboPROC(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_CTLCOLORLISTBOX Then
SetBkMode wParam, 1
gBRUSH = CreatePatternBrush(Form1.Picture1.Picture.Handle)
NovoComboPROC = gBRUSH
Else
NewComboPROC = CallWindowProc(PrevHWND, hwnd, uMsg, wParam, lParam
end If
End Function
É claro que se pretenderes, poderás tambĂ©m substituir o botão do combobox e colocar lá mais uma imagem do teu agrado. Poderás ter um novo OCX ...