Ir para conteúdo
Fórum Script Brasil
  • 0

Auto Completar com opção de BackSpace


Lameira

Pergunta

Olá Galera do Bem!!!

Há um tempo atras eu pedi um código para "auto completar" num TextBox e deu certinho, o projetinho já está funcionando belezinha, mas falta um detalhe, quando eu começo a digitar e se por acaso eu queira mudar/voltar algum caracter eu não consigo (ex BackSpace, tecla '<-'), ai eu tenho que apagar o conteúdo e começar tudo de novo.

O código que está em uso é este:

Dim Pos As Integer
   If nommotos.SelStart = 0 Then Exit Sub
      On Error Resume Next
'filtro para pesquisa de registros
      Set mot = baseos.OpenRecordset("select top 1 nommot, codmot, modmot, plamot FROM mot WHERE nommot Like '" & Mid(nommotos.Text, 1, nommotos.SelStart) & "*' ORDER BY nommot Asc")
      Set datamot.Recordset = mot
      On Error GoTo verror
verror:
      Select Case Err.Number
         Case 3021 'tabela vazia
            MsgBox "Não há motoqueiros com a(s) inicial(is) " & "'" & nommotos.Text & "'", 48, usuario
            nommotos.Text = ""
            veios.Text = ""
         Case 0 'nenhum erro
            Pos = nommotos.SelStart
            With mot
               codmotos.Text = !codmot
               nommotos.Text = !nommot
               veios.Text = IIf(IsNull(!modmot), "", !modmot) & ", " & IIf(IsNull(!plamot), "", !plamot)
            End With
               nommotos.SelStart = Pos
               nommotos.SelLength = Len(nommotos)
               nomclios.Enabled = True
      End Select

eu preciso incrementar o programa, tendo a opção de usar a tecla BackSpace(<-) para alterar o conteúdo da TextBox, apagando caracter por caracter.

Estou usando o código

If KeyAscii = 8 Then

nommotos.Text = Left(nommotos.Text, Len(nommotos.Text) - 1) ' apaga o último caracter

End If

mas o efeito não é o esperado, apesar de apagar o último caracter cada vez que aciono a tecla BackSpace, o cursor fica no primeiro caracter e se o usuário não prestar atenção vai digitar na primeira casa da TextBox e uma nova pesquisa se inicia a partir do último caracter é digitado, a idéia é que o cursor fique após o último caracter e a pesquisa se desenvolva a partir do que foi digitado.

desde já eu agradeço

Lameira

Editado por Lameira
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

lameira, ainda ta precisando disso ai??

em q sub esta esse codigo ai?? poste o codigo inteiro desde o Private Sub...

porque você ta tendo q adicionar o codigo do backspace pra apagar?? não devia apagar normalmente??

quanto ao problema de voltar ao inicio do textbox, você pode mudar a posicao do cursor pela propriedade SelStart.

Link para o comentário
Compartilhar em outros sites

  • 0
lameira, ainda ta precisando disso ai??

em q sub esta esse codigo ai?? poste o codigo inteiro desde o Private Sub...

porque você ta tendo q adicionar o codigo do backspace pra apagar?? não devia apagar normalmente??

quanto ao problema de voltar ao inicio do textbox, você pode mudar a posicao do cursor pela propriedade SelStart.

Olá Kuroi, minha questão estava sendo em fazer com que, caso o usuário digitasse algo errado o cursor retornasse um caracter quando pressionado o BackSpace, a partir do último caracter digitado, criei essa rotina e deu certo.

If KeyAscii = 8 Then ' tecla BackSpace apaga o último caracter da TextBox, a partir do último digitado.
      Dim x As Integer
      x = Len(nommotos.Text) - Pos
      For i = 1 To x
         nommotos.Text = Left(nommotos.Text, Len(nommotos.Text) - 1) ' apaga o último caracter
         nommotos.SelStart = Pos
      Next
   End If

você citou que o BackSpace deve apagar normalmente..., concordo, mas usando o código de busca acima (primeira parte, no topo de tópico) o que acontecia é que o BackSpace eliminava o último caracter do resultado da pesquisa, mas a digitação era antes do primeiro caracter(?!?!?!), o que poderia causar confusão para o usuário caso ele não percebesse isso, além disso, a intensão era que o BackSpace atuasse também sobre o que estava sendo digitado e não sobre o resultado da pesquisa; com este código logo acima tanto o BacSpace como o cursor ficam na posição correta (após o último caracter digitado) e a pesquisa continua sendo executada.

mais uma vez, grato pelo seu auxílio.

Editado por Lameira
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...