COMBOBOX
Boa tarde!
Estou usando no combo box no VB6 os seguintes códigos:
KeyAscii = Combo_AutoCompletar(txt_item, KeyAscii) - [ô] para completar o valores atribuido no combo de acordo com a digitação[ô]
KeyAscii = Asc(UCase(Chr(KeyAscii))) - [Ô]Para ficar maiusculo o valor que digito.
só que quando eu digito uma letra errada e apago a letra, todo o conteudo que estou digitando é apagado, alguem pode me ajudar para não ficar apagando o conteudo que digitei.
obrigado!
Estou usando no combo box no VB6 os seguintes códigos:
KeyAscii = Combo_AutoCompletar(txt_item, KeyAscii) - [ô] para completar o valores atribuido no combo de acordo com a digitação[ô]
KeyAscii = Asc(UCase(Chr(KeyAscii))) - [Ô]Para ficar maiusculo o valor que digito.
só que quando eu digito uma letra errada e apago a letra, todo o conteudo que estou digitando é apagado, alguem pode me ajudar para não ficar apagando o conteudo que digitei.
obrigado!
tente postar a function combo_autocompletar pra nós
Public Function Combo_AutoCompletar(xCombo As ComboBox, ByVal xKeyAscii As Long, Optional ByVal xUpperCase As Boolean = True) As Long
Dim lngFind As Long, intPos As Long, intLength As Long, tStr As String
With xCombo
If xKeyAscii = 8 Then
If .SelStart = 0 Then _
Exit Function
.SelStart = .SelStart - 1
.SelLength = Len(.Text)
.SelText = vbNullString
Else
intPos = .SelStart
tStr = .Text
.SelText = IIf(xUpperCase, _
UCase$(Chr$(xKeyAscii)), _
LCase$(Chr$(xKeyAscii)))
End If
lngFind = SendMessage(.hwnd, CB_FINDSTRING, 0, ByVal .Text)
If lngFind = -1 Then
.Text = tStr
.SelStart = intPos
.SelLength = (Len(.Text) - intPos)
Combo_AutoCompletar = xKeyAscii
Else
intPos = .SelStart
intLength = Len(.List(lngFind)) - Len(.Text)
.SelText = .SelText & Right$(.List(lngFind), intLength)
.SelStart = intPos
.SelLength = intLength
End If
End With
End Function
Dim lngFind As Long, intPos As Long, intLength As Long, tStr As String
With xCombo
If xKeyAscii = 8 Then
If .SelStart = 0 Then _
Exit Function
.SelStart = .SelStart - 1
.SelLength = Len(.Text)
.SelText = vbNullString
Else
intPos = .SelStart
tStr = .Text
.SelText = IIf(xUpperCase, _
UCase$(Chr$(xKeyAscii)), _
LCase$(Chr$(xKeyAscii)))
End If
lngFind = SendMessage(.hwnd, CB_FINDSTRING, 0, ByVal .Text)
If lngFind = -1 Then
.Text = tStr
.SelStart = intPos
.SelLength = (Len(.Text) - intPos)
Combo_AutoCompletar = xKeyAscii
Else
intPos = .SelStart
intLength = Len(.List(lngFind)) - Len(.Text)
.SelText = .SelText & Right$(.List(lngFind), intLength)
.SelStart = intPos
.SelLength = intLength
End If
End With
End Function
olha o problema acredito estar aqui
If xKeyAscii = 8 Then
If .SelStart = 0 Then _
Exit Function
.SelStart = .SelStart - 1
.SelLength = Len(.Text)
.SelText = vbNullString
Else
intPos = .SelStart
tStr = .Text
.SelText = IIf(xUpperCase, _
UCase$(Chr$(xKeyAscii)), _
LCase$(Chr$(xKeyAscii)))
End If
tente uma modificação, tudo acima por isto
If xKeyAscii = 8 Then
ykeyascii = 0
Exit Function
End If
If xKeyAscii = 8 Then
If .SelStart = 0 Then _
Exit Function
.SelStart = .SelStart - 1
.SelLength = Len(.Text)
.SelText = vbNullString
Else
intPos = .SelStart
tStr = .Text
.SelText = IIf(xUpperCase, _
UCase$(Chr$(xKeyAscii)), _
LCase$(Chr$(xKeyAscii)))
End If
tente uma modificação, tudo acima por isto
If xKeyAscii = 8 Then
ykeyascii = 0
Exit Function
End If
ainda não dá para excluir, com isso está travando a exclusão de tudo
Tópico encerrado , respostas não são mais permitidas