Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mestre fyoda

como se faz para deixar o cursor na segunda posiçã

Recommended Posts

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 .

Compartilhar este post


Link para o post
Compartilhar em outros sites

:o Não? :blink: Quando você fala "text" você quer dizer uma "TextBox", certo? Então, faça o seguinte:

 

Text1.SelStart = 3

Onde "Text1" é uma TextBox, e veja o resultado.

 

Abraços,

 

Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 nao finciona caso eu coloque nomedoform2.text1.selstart = 2 , ele ja da pau , pq se eu chamar no Mudar_Preco ai da pau no Cadastrar_Produto . entendeu .

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 = keyasciiend 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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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 = keyasciiEnd Function

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq nao esta funcionando o selstart ?ae mano no seu codigo eu tentei acrecentar esse comando

Public Function Vírgula(ByRef txt As TextBox, ByVal KeyAscii As Integer) As Integer If KeyAscii <> 8 Then      texto = txt.Text      cursorpos = txt.SelStart --->  cursorpos = 2   e tentei esse tb txt.Selstart = 2 , e nao deu   -> nao ta dando certo com ou sem esses comandos adicionais            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

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq nao esta funcionando o selstart ?

O que, exatamente, você está esperando que aconteça? :unsure: Abraços,Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu fiz uma função difirente dessa da Virgula , coloquei no form_load e funcionou , ai quando coloquei dentro do TextBox do evento Private Sub preco_compra_KeyPress(KeyAscii As Integer)nao funcionou . O problema é que quando executao form_load ele coloca e ae quando ele volta pro campo ele nao executa a função . Alguma ideia ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ixi mano nao to conseguindo , quando faço assim não esta digitando nada , esta travando . Pq 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 Integertxt2.SelStart = 2End FunctionPublic 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 = KeyAsciiEnd Function

Compartilhar este post


Link para o post
Compartilhar em outros sites

A funçlão Virgula ela trava depois da virgula após ser digitados 2 numeros por exemplo R$ 2,000 esse numero nao ocrre pq ele iria travar no R$ 2,00 .A função Acerto ele deveria fazer com que o campo ficasse assim R$|0,00 , mas nao sei pq ela esta travando o teclado , caso tire a função Acerto do Keypress a função Virgula funciona . O que esta acontecendo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

nessa função teria como fazer um Selstart ?eu ja tentei assim txt.selstart = 2 , e nao deu nada .

Public Function Vírgula(ByRef txt As TextBox, ByVal KeyAscii As Integer) As IntegerIf 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 = KeyAsciiEnd Function

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.