Pergunte aqui
0

Como mudar posição do cursor dentro de uma caixa de texto

perguntadas 2019-07-16 20:47:09 +0100

imagem do gravatar de Júnio Vieira

updated 2019-07-29 18:19:22 +0100

imagem do gravatar de Schiavinatto

Quando digito algo dentro de uma caixa de texto o cursor se desloca para a direita, estou utilizando a função UCase para que o texto fique sempre em maiúsculo. No excel coloca-se textbox1.Text = UCase( textbox1.Text) e atribui a macro ao modificar, porém no libreoffice calc quando faço isso ele simplesmente trava e fecha, então resolvi atribuir a macro ao evento tecla pressionada, porém o cursor volta para o início da textbox, ele até converte em tempo real, mas o curso volta ao início, posso utilizar no evento ao perder o foco, porém esteticamente não fica legal, pois enquanto o usuário digita, as letras aparecem em maiúsculo, alguém sabe se é possível controlar a posição do cursor dentro da textbox?

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

1 Resposta

0

respondidas 2019-07-17 04:46:12 +0100

imagem do gravatar de Grafeno

Boa noite,

A solução que pesquisei é possível adaptando os códigos aqui e aqui:

Sub UPPER_case (oEvento As Object) 'Textfield > Eventos > Tecla pressionada'
   oTextBox = oEvento.Source.Model
   sText = Ucase(oTextBox.Text)
   oTextBox.Text = sText

'Colocar o cursor no final do texto através da seleção'   
Dim oSelecao As New com.sun.star.awt.Selection
   oSelecao.Min = Len(sText)
   oSelecao.Max = Len(sText)

   oTextBoxView = oEvento.Source
   oTextBoxView.setSelection( oSelecao )
End Sub

Atte,

editar assinalar como ofensivo Excluir Link mais

Comentários

1

Muito obrigado Grafeno, na minha macro estava faltando apenas definir o valor mínimo para seleção, sua resposta me ajudou muito.

imagem do gravatar de Júnio VieiraJúnio Vieira ( 2019-07-17 12:57:52 +0100 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2019-07-16 20:47:09 +0100

Lidas: 159 vezes

Última atualização: Jul 17 '19