1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[VB6]Contagem de caracteres numa textbox

Discussão em 'Programação' iniciada por eXcept, 24 de Outubro de 2006. (Respostas: 14; Visualizações: 12534)

  1. eXcept

    eXcept Power Member

    Viva.

    Como é que posso fazer um contador de caracteres numa textbox? Ou seja, à medida que for escrevendo ir contando os caracteres?

    Eu fiz uma coisa básica do género

    Código:
    Private Sub txt_texto_KeyUp(KeyCode As Integer, Shift As Integer)
    char = char + 1
    lbl_char.Caption = char
    End Sub
    
    mas isto não me resolve, por várias razões:

    1. ele conta-me backspaces, etc, sempre incrementando o valor do char
    2. Se faço delete de uma só vez ao conteúdo todo da textbox, ele não me faz o refresh ao contador.

    Ou seja, precisava mesmo de ler em tempo real a TextBox e calcular o seu "size" ou "lenght", mas não encontro nenhuma dessas propriedades numa textbox.
     
  2. miguas

    miguas Power Member

    A função Len() dá te o nº de Caracteres numa String. Basta apontares para a textbox. Para a actualização em tempo real é que não estou a ver.. tentei usar o on change fazendo um refresh mas nunca consigo escrever mais de um caractere ...


    :wow:
     
  3. eXcept

    eXcept Power Member

    Funcionou relativamente bem

    Código:
    Private Sub txt_texto_KeyUp(KeyCode As Integer, Shift As Integer)
    Dim bla As String
    bla = Len(txt_texto.Text)
    lbl_char.Caption = bla
    End Sub
    só me identifica os Enters como dois caracteres! mas isso resolve-se. Tks ;)
     
  4. chight

    chight Power Member

    simplifica isso.

    Private Sub txt_texto_KeyUp(KeyCode As Integer, Shift As Integer)
    lbl_char.Caption = Len(txt_texto.Text)
    End Sub

     
  5. eXcept

    eXcept Power Member

    já o tinha feito. Foi só mesmo à pressa para testar. Tks ;)
     
  6. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Se NÃO QUERES contar com os Enters:
    Código:
    Private Sub txt_texto_KeyUp(KeyCode As Integer, Shift As Integer)
        lbl_char.Caption = Len(Replace(txt_texto.Text, vbCrLf, vbNullString))
    End Sub
    
    Se QUERES contar com os Enters, como UM caracter:
    Código:
    Private Sub txt_texto_KeyUp(KeyCode As Integer, Shift As Integer)
        lbl_char.Caption = Len(Replace(txt_texto.Text, vbCrLf, " "))
    End Sub
    
    Um conselho: não ponhas no KeyUp. Põe no KeyPress.

    Cumprimentos [[[[[[[[[[]]]]]]]]]]
    angelofwisdom
     
  7. DarkevilPT

    DarkevilPT Power Member

    Boas, desculpem lá o desenterro do tópico, mas..
    Isso não funciona, desde quando é que dá para fazer Enter numa textbox em VB6?
    E depois esse código do len(variável) não actualiza a tempo real no vb6 o nr de variáveis na Label, alguém me pode ajudar?
     
    Última edição: 14 de Maio de 2010
  8. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Se a propriedade MultiLine da textbox estiver como True (complementada pelas scrollbars, que estão numa propriedade à parte), podes perfeitamente ter Enters nela.

    Não percebi a última frase - "esse código não actualiza a tempo real no vb6 o nr de variáveis na Label".
     
  9. DarkevilPT

    DarkevilPT Power Member

    OK obrigado, pela primeira parte, estava a utilizar RichTextBox1, e estavam-me a dar problemas porcausa da base de dados.
    Quanto ao segundo ponto, eu pretendo por exemplo por uma label que diga quantos caracteres faltam para atingir o limite ex: "0 de 255 Caracteres" mas a variavel 0 há-de ser qq coisa len(richtextbox1), quando vou introduzir dados nessa richtextbox o valor da label não se altera.. mantêm-se com o que existe.

    Voltando ao textbox:

    Agora para uma outra coisa -> Label11.Caption = (Text8 * Text9) * 0.2 + Text8 & " €"
    Os valores das text8 e text9 são retirados duma base de dados acess, via adodc1, com os botões anterior, próximo etc.. a label mantêm-se com os dados fixos não altera conforme os botões pq não está direccionada á base dados, mas os valores do text8 e text9 mudam. Há forma de conseguir meter a label a alterar isso também?

    Edit: Obrigadão com a dica da MultiLine, F*ck RichTextbox!!! Já me tá a bombar tudo!! (Mas continuo a espera duma dica acerca da actualização das labels)

    Edit: Mais 1 pergunta noob, é possível guardar dados numa base de dados acess através do adodc1 registos com enters duma textbox?
    (Tou a ver que não, é que não sei como guardar por exemplo uma biografia num campo em acess via VB com textbox)
     
    Última edição: 14 de Maio de 2010
  10. exprimenta por um timer
    ou entao chama de novo a funcao que fa essa conta a ver o que da...
     
  11. DarkevilPT

    DarkevilPT Power Member

    Tasse obrigadão, vou ja testar, já digo se funca..
     
  12. resposta

    use assim fica mais facil.

    Private Sub Text3_KeyUp(KeyCode As Integer, Shift As Integer)
    Lbl.Caption = Len(Replace(Text3.Text, vbCrLf, vbNullString))
    End Sub
     
  13. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Sabes que uma criança nascida no dia em que este tópico foi aberto já está na escola, certo?
     
  14. DarkevilPT

    DarkevilPT Power Member

    True Story
     
  15. Morphine0225

    Morphine0225 Power Member

    Ah ah ah ah muitooooo bom! :D
     

Partilhar esta Página