estrafalhote
04-08-2007, 21:51
boas.
estou a tentar criar uma simples lista telefónica no vb.net 2005, mas com uma pequena diferença é que eu criei uma espécie de teclado virtual, ou seija tenho vários command button com as letras ou numeros que lhe correspondem e atravez desses mesmos command buttons queria que ao clicar nele aparecesse na textbox correspondente a letra ou numero em que cliquei.
já esperimentei atravéz do
txtnome.text = "A"
mas mal corri o programa vi que a letra aparecia mas quando carregava numa outra ela desaparecia para dar lugar à nova em que tinha clicado.
http://img514.imageshack.us/img514/8835/semttulokn7.jpg
aqui está a parte grafica do programa.
Julgo que o VB.Net já permite isto.
Experimenta isto:
txtnome.text += "A"Se não resultar, este resulta garantidamente:
txtnome.text = txtnome.text + "A"
HecKel
estrafalhote
05-08-2007, 11:40
txtnome.text = txtnome.text + "A"HecKel[/quote]
obrigado heckel este deu
já agora qual o código que utilizo para criar uma tecla de backspace?
Simples, usas a função left, salvo erro, ou a mid, e substituis todo o texto pelo mesmo texto EXCEPTO a última posição.
Explicando por exemplos:
txtnome.text = Mid(txtnome.text, 1, txtnome.text.length -1);
Julgo que isto resulta.
Para mais informações vê como funciona a função Mid (http://msdn2.microsoft.com/en-us/library/05e63829%28VS.71%29.aspx).
HecKel
estrafalhote
05-08-2007, 15:25
obrigado outra vez
mas já agora como faço para utilizando os commandbutons para "escrever" numa textbox selecionada e nao na txtnome?
É pá..., sinceramente não estou a ver nenhuma solução boa.
Ideia à martelo:
Na propriedade OnFocus (deve haver algo similar) guarda a informação de qual foi a textbox que seleccionaste numa variável global, após isso só tens de analisar essa variável e com um select case consegues fazer isso. Mas esta é a ideia à martelo..., não é a mais eficaz e sem qualquer sombra de dúvidas, não é nada extensível.
HecKel
estrafalhote
05-08-2007, 15:31
É pá..., sinceramente não estou a ver nenhuma solução boa.
Ideia à martelo:
Na propriedade OnFocus (deve haver algo similar) guarda a informação de qual foi a textbox que seleccionaste numa variável global, após isso só tens de analisar essa variável e com um select case consegues fazer isso. Mas esta é a ideia à martelo..., não é a mais eficaz e sem qualquer sombra de dúvidas, não é nada extensível.
HecKel
ok
obrigado na mesma pela ideia, vou investigar um pouco ver se encontro algo.
alfinete
13-08-2007, 02:32
variáveis
________________________
' guarda o nome final
Dim nome As String = ""
' guarda o nome do botão em causa
Dim caracter As String
botões
__________________________________
Private Sub btnA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnA.Click
' guarda o caracter do botão
caracter = "a"
' caixa de texto = a função cria nome com o parametro caracter que guuada o caracter do botão
Me.Txtnome.Text = cria_nome(caracter)
End Sub
Private Sub btnB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnB.Click
caracter = "b"
Me.Txtnome.Text = cria_nome(caracter)
End Sub
Private Sub btnc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnc.Click
caracter = "c"
Me.Txtnome.Text = cria_nome(caracter)
End Sub
Private Sub btnd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnd.Click
caracter = "d"
Me.Txtnome.Text = cria_nome(caracter)
End Sub
função generica que cria a string do nome
'função generica que pucha o caracter em causa atraves da variavel caract
'o nome é uma concatenação de nome com catact ou seja vai juntando os caracteres em causa
' retorna o nome
Function cria_nome(ByVal caract As String) As String
nome = nome & caract
Return nome
End Function
muito simples aqui esta uma solução para o teu problema
criei um form com 4 botões
de caracteres "a","b", "c","d" como podes ver no code
duas vars uma que guarda o caracter de cada botão - "caracter"
e outra para criar a string do nome neste caso - "nome"
depois uma função para criar o nome para não estar a repetir o mesmo codigo em cada botão
e por fim em cada botão chamar essa função com o respectivo parametro.
se não quiseres utilizar a função pões em cada botão
caracter =x
nome = nome & caracter
txtnome=nome
espero que ajude