mestre fyoda Postado Maio 29, 2005 Denunciar Share Postado Maio 29, 2005 Por exemplo no campo text eu tenho como padrão R$0,00 , como faço para quando o usuario clicar no campo text ele fica piscando depois do sifrão , tipo assim R$|0,00 . Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 29, 2005 Denunciar Share Postado Maio 29, 2005 Dê uma olhada na propriedade SelStart.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mestre fyoda Postado Maio 29, 2005 Autor Denunciar Share Postado Maio 29, 2005 não achei nenhuma proprieda dessa SelStart . Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 29, 2005 Denunciar Share Postado Maio 29, 2005 Não? Quando você fala "text" você quer dizer uma "TextBox", certo? Então, faça o seguinte:Text1.SelStart = 3Onde "Text1" é uma TextBox, e veja o resultado.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mestre fyoda Postado Maio 29, 2005 Autor Denunciar Share Postado Maio 29, 2005 teria como eu controlar o numero de casas depois da virgula , por exemplo tenho um campo textbox e nele vai ser digitado um valor em reais , e depois da virgula so pode ter 2 numeros , tem como só poder digitar dois numeros depois da virgula ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 29, 2005 Denunciar Share Postado Maio 29, 2005 Achou a propriedade SelStart? teria como eu controlar o numero de casas depois da virgula , por exemplo tenho um campo textbox e nele vai ser digitado um valor em reais , e depois da virgula so pode ter 2 numeros , tem como só poder digitar dois numeros depois da virgula ?Sim, você pode colocar isso aqui no evento KeyPress: If KeyAscii <> 8 Then texto = Text1.Text cursorpos = Text1.SelStart posição = InStr(1, texto, ",") If cursorpos >= posição Then If posição > 0 Then depois = Right(texto, Len(texto) - posição) If Len(depois) > 1 Then KeyAscii = 0 End If End If End If End IfEsse código aí verifica se já existem dois caracteres depois da vírgula e se o caboclo está digitando depois dela; caso positivo, ele bloqueia a tecla. Sacou? Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mestre fyoda Postado Maio 29, 2005 Autor Denunciar Share Postado Maio 29, 2005 a a propriedae selstart deu certo sim . Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mestre fyoda Postado Maio 29, 2005 Autor Denunciar Share Postado Maio 29, 2005 If KeyAscii <> 8 Then cursorpos = Text1.SelStart posição = InStr(1, texto, ",") If cursorpos >= posição Then If posição > 0 Then depois = Right(texto, Len(texto) - posição) If Len(depois) > 1 Then KeyAscii = 0Grato pela atenção Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 29, 2005 Denunciar Share Postado Maio 29, 2005 Form_Load? Você tem que colocar esse código no evento KeyPress da caixa de texto (eu disse isso no outro post). E também eu já expliquei, em termos gerais, o que esse código faz. Se você quiser tirar alguma dúvida sobre o que uma determinada coisa faz, pergunte especificando-a.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mestre fyoda Postado Maio 29, 2005 Autor Denunciar Share Postado Maio 29, 2005 eu fiz uma função assim no Modal Sub Virgula()Cadastrar_Produto.preco_compra.SelStart = 2Cadastrar_Produto.preco_venda.SelStart = 2'Mudar_Preco.preco_compra.SelStart = 2'Mudar_Preco.preco_venda.SelStart = 2 If KeyAscii <> 8 Then preco_c = Cadastrar_Produto.preco_compra.Text cursorpos = Cadastrar_Produto.preco_compra.SelStart preco_v = Cadastrar_Produto.preco_venda.Text cursorpos2 = Cadastrar_Produto.preco_venda.SelStart posição = InStr(1, preco_compra, ",") posição2 = InStr(1, preco_venda, ",") If cursorpos >= posição Then If posição > 0 Then depois = Right(preco_compra, Len(preco_compra) - posição) If Len(depois) > 1 Then KeyAscii = 0 End If End If End If If cursorpos2 >= posição2 Then If posição2 > 0 Then depois2 = Right(compra_venda, Len(venda) - posição2) If Len(depois2) > 1 Then KeyAscii = 0 End If End If End If End IfEnd Sub Repare que usei o nomedoform.text1.selstart = 2 , mas se no caso eu usar mais de um form nessa função como eu faço ? detalhe não finciona caso eu coloque nomedoform2.text1.selstart = 2 , ele já da pau , porque se eu chamar no Mudar_Preco ai da pau no Cadastrar_Produto . entendeu . Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 29, 2005 Denunciar Share Postado Maio 29, 2005 O mais correto nesse caso seria passar a caixa de texto para a função e retornar o valor de KeyAscii (note que ali você usou KeyAscii... mas de onde está vindo essa variável??? ). O código seria algo assim:public function Vírgula(byref txt as textbox, byval keyascii as integer) as integer If KeyAscii <> 8 Then texto = txt.Text cursorpos = txt.SelStart posição = InStr(1, texto, ",") If cursorpos >= posição Then If posição > 0 Then depois = Right(texto, Len(texto) - posição) If Len(depois) > 1 Then KeyAscii = 0 End If End If End If End If Vírgula = keyascii end function E para utilizar essa função você teria que colocar no evento *KEYPRESS* de *CADA UMA* das textboxes, o seguinte: keyascii = Vírgula(NOME_DA_TEXTBOX, keyascii)Onde, é claro, você trocaria "NOME_DA_TEXTBOX" pelo respectivo nome da textbox.Certo? Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mestre fyoda Postado Maio 29, 2005 Autor Denunciar Share Postado Maio 29, 2005 ta dando problema , Erro :Produce declaration does no match description of event or produce having the same name Private Sub preco_compra_KeyPress() <------ erro ta aqui keyascii = Vírgula(preco_compra.Text, keyascii)End SubPublic Function Vírgula(ByRef txt As TextBox, ByVal keyascii As Integer) As Integer If keyascii <> 8 Then texto = txt.Text cursorpos = txt.SelStart posição = InStr(1, texto, ",") If cursorpos >= posição Then If posição > 0 Then depois = Right(texto, Len(texto) - posição) If Len(depois) > 1 Then keyascii = 0 End If End If End If End If Vírgula = keyasciiEnd Function Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 29, 2005 Denunciar Share Postado Maio 29, 2005 ta dando problema , Erro :Produce declaration does no match description of event or produce having the same name Private Sub preco_compra_KeyPress() <------ erro ta aqui keyascii = Vírgula(preco_compra.Text, keyascii) End Sub Claro. E a mensagem de erro é *bem* clara quanto ao porquê disso. Dê uma olhada em *qualquer* outra declaração de KeyPress em *qualquer* outro componente e você verá que não é essa daí que você colocou...Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mestre fyoda Postado Maio 30, 2005 Autor Denunciar Share Postado Maio 30, 2005 ixi mano não to conseguindo , quando faço assim não esta digitando nada , esta travando . porque isso ocorre ?Private Sub preco_compra_KeyPress(KeyAscii As Integer)KeyAscii = Acerto(preco_compra, KeyAscii)KeyAscii = Vírgula(preco_compra, KeyAscii)End Sub Public Function Acerto(ByRef txt2 As TextBox, ByVal KeyAscii2 As Integer) As Integer txt2.SelStart = 2 End Function Public Function Vírgula(ByRef txt As TextBox, ByVal KeyAscii As Integer) As Integer If KeyAscii <> 8 Then texto = txt.Text cursorpos = txt.SelStart cursospos = 2 posição = InStr(1, texto, ",") If cursorpos >= posição Then If posição > 0 Then depois = Right(texto, Len(texto) - posição) If Len(depois) > 1 Then KeyAscii = 0 End If End If End If End If Vírgula = KeyAscii End Function Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 31, 2005 Denunciar Share Postado Maio 31, 2005 O que você ainda não entendeu é como o evento KeyPress funciona (não só ele, mas qualquer outro evento). Quando você digita a letra 'a', por exemplo, KeyPress é chamado da seguinte maneira:keypress(97) Por que 97? Porque esse é o código referente ao caracter 'a' na tabela ASCII/ANSI. E, para onde vai esse 97? Para o parâmetro KeyAscii da rotina. Então, se você alterar o valor de KeyAscii, consequentemente, você estará alterando a tecla digitada. Ou seja, se você fizer algo assim... if keyascii=97 then keyascii=98... fará com que se 'a' for pressionado a tecla pressionada seja, na verdade, 'b'. Então, você *só*, e *somente só* vai trocar KeyAscii se você quiser alterar a tecla pressionada. Então, pra quê você joga o retorno de "Acerto" para KeyAscii??? Aliás, qual o retorno de "Acerto" já que você não colocou nenhum? De uma forma ou de outra, ainda não entendi o que você quer fazendo essa função "Acerto"... qual seria, exatamente, o propósito dela?Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mestre fyoda Postado Maio 31, 2005 Autor Denunciar Share Postado Maio 31, 2005 a função Acerto serveria para cetar o cursor após o sifrão quando o usuario clicar no campo textbox para digitar o valor da mercadoria . Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Maio 31, 2005 Denunciar Share Postado Maio 31, 2005 a função Acerto serveria para cetar o cursor após o sifrão quando o usuario clicar no campo textbox para digitar o valor da mercadoria . Mas, você não precisaria criar uma função para isso. É só utilizar o evento GotFocus, não?Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mestre fyoda Postado Junho 1, 2005 Autor Denunciar Share Postado Junho 1, 2005 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Junho 1, 2005 Denunciar Share Postado Junho 1, 2005 Deve ser porque FormatCurrency deve pedir um valor (double ou single, provavelmente).Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mestre fyoda Postado Junho 1, 2005 Autor Denunciar Share Postado Junho 1, 2005 você tem alguma ideia de como devo proceder ?Grato pela atenção . Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mestre fyoda Postado Junho 3, 2005 Autor Denunciar Share Postado Junho 3, 2005 alguém saberia resolver esse problema ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Junho 4, 2005 Denunciar Share Postado Junho 4, 2005 você tem alguma ideia de como devo proceder ? FormatCurrency *só* e *somente só* vai aceitar um valor que possa ser convertido para um double (assim com a função cdbl() que converte uma expressão qualquer para um double). E "R$" com certeza não é um valor que possa ser convertido para double...Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
mestre fyoda
Por exemplo no campo text eu tenho como padrão R$0,00 , como faço para quando o usuario clicar no campo text ele fica piscando depois do sifrão , tipo assim R$|0,00 .
Link para o comentário
Compartilhar em outros sites
21 respostass a esta questão
Posts Recomendados
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.