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?
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,
Muito obrigado Grafeno, na minha macro estava faltando apenas definir o valor mínimo para seleção, sua resposta me ajudou muito.