[VB6]Contagem de caracteres numa textbox

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.
 
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:
 
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 ;)
 
simplifica isso.

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

 
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
 
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:
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".
 
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".

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:
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
 
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 ;)


Tente usar assim:

Crie uma textBox para mostrar o numero de caracteres digitados, e siga as instruções abaixo.
Sem o uso de botão de comando.

Private Sub TextBox1_Change()
Dim Char As String
Char = Len(TextBox1.Text)
TextBox2 = Char
End sub

Private Sub TextBox2_Change()

If TextBox2 = quantidade de caracteres digitados, Ex: "7" Then

With Application

.ScreenUpdating = False
.EnableEvents = False

Call (Digite Seu Código aqui:)

.ScreenUpdating = True
.EnableEvents = True

End With
End If
End Sub
 
Última edição:
Back
Topo