Combobox Flat

Ariel
22 de Octubre del 2008
Hola amigos: alguien sabe de algun control ocx que sea un combobox flat o algun ejemplo de como hacerlo?

Ab?o - PORTUGAL
22 de Octubre del 2008
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 ...


Ab?o - PORTUGAL
22 de Octubre del 2008
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 ...



jose alberto morales dominguez
22 de Octubre del 2008
que pedos

Baltasar
22 de Octubre del 2008
qué es un combobox flat?