BLOQUEAR CHANGE DO COMBO SEU USAR LOCKED
Bem, no meu programa tem um COMBOBOX, certo? Gostaria de fazer com que no combo ficasse desabilitada a digitaçao, enquanto o Recordset estivesse em modo de ediçao, mas nao a navegaçao, entendem?
Entao eu fiz +ou -assim:
Bem, isso funciona, mas de vez em quando da uns probleminhas, sera que nao teria uma forma mais viaÂÂÂ'vel? bem, esta eÂÂÂ' a minha pergunta, se nao tiver, acho q isso ja ta bom demais para mim, heh.
Falow!!
Entao eu fiz +ou -assim:
Private sub COMBO_keypress(keyascii as integer)
if not data1.recordset.editmode = 0 then
keyascii = 0
endif
Bem, isso funciona, mas de vez em quando da uns probleminhas, sera que nao teria uma forma mais viaÂÂÂ'vel? bem, esta eÂÂÂ' a minha pergunta, se nao tiver, acho q isso ja ta bom demais para mim, heh.
Falow!!
Desalibite e habilite a edição de combos via API:
' Exemplo de uso:
' Habilita edição : Call EnableComboEdit(Combo1.hwnd)
' Desabilita edição: Call DisableComboEdit(Combo1.hwnd)
Option Explicit
Public Const EM_SETREADONLY = &HCF
Public 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 Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
(ByVal hWnd1 As Long, ByVal hWnd2 As Long, _
ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Public Sub DisableComboEdit(cmbHnd As Long)
Dim hwndEdit As Long
hwndEdit = FindWindowEx(cmbHnd, 0&, vbNullString, vbNullString)
If hwndEdit 0 Then Call SendMessage(hwndEdit, EM_SETREADONLY, 1&, ByVal 0&)
End Sub
Public Sub EnableComboEdit(cmbHnd As Long)
Dim hwndEdit As Long
hwndEdit = FindWindowEx(cmbHnd, 0&, vbNullString, vbNullString)
If hwndEdit 0 Then Call SendMessage(hwndEdit, EM_SETREADONLY, 0&, ByVal 0&)
End Sub
Esqueci que alguns operadores não aparecem no forum.
Corrija os IFs de: If hwndEdit 0 Then Call
para: If hwndEdit DIFERENTE 0 Then Call
Corrija os IFs de: If hwndEdit 0 Then Call
para: If hwndEdit DIFERENTE 0 Then Call
Marcelo,
Combos possuem a propriedade Style que define o modo de exibição e comportamento da mesma, essa propriedade não pode ser alterada em tempo de execução e aceita os seguintes valores:
0 - DropDown Combo (vbComboDropDown) - O usuario pode selecionar através de uma lista drop-down ou digitar um valor na combo;
1 - Simple Combo (vbComboSimple) - A combo tem o comportamento de uma text box e não é possivel selecionar um item através da lista drop-down;
2 - DropDown List (vbComboDropDownList) - A combo não aceita digitação de valores e o item desejado deve ser obrigatórimanete selecionado atraves da lista drop-down.
As funções postadas acima alternam a propriedade style da combo entre "DropDown Combo" e "DropDown List" através de APIs uma vez que via VB isso não é possivel.
Obs: A propriedade Style da combo deve iniciar com valor "0 - DropDown Combo" para as funções a acima funcionem !
Combos possuem a propriedade Style que define o modo de exibição e comportamento da mesma, essa propriedade não pode ser alterada em tempo de execução e aceita os seguintes valores:
0 - DropDown Combo (vbComboDropDown) - O usuario pode selecionar através de uma lista drop-down ou digitar um valor na combo;
1 - Simple Combo (vbComboSimple) - A combo tem o comportamento de uma text box e não é possivel selecionar um item através da lista drop-down;
2 - DropDown List (vbComboDropDownList) - A combo não aceita digitação de valores e o item desejado deve ser obrigatórimanete selecionado atraves da lista drop-down.
As funções postadas acima alternam a propriedade style da combo entre "DropDown Combo" e "DropDown List" através de APIs uma vez que via VB isso não é possivel.
Obs: A propriedade Style da combo deve iniciar com valor "0 - DropDown Combo" para as funções a acima funcionem !
Tópico encerrado , respostas não são mais permitidas