[RESUELTO] Colocar el cursor en un lugar específico de un te

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
keko
Mensajes: 5
Registrado: Mié Mar 15, 2017 9:19 am

[RESUELTO] Colocar el cursor en un lugar específico de un te

Mensaje por keko »

Hola.Estoy empezando con las macros en formularios de Base y me surge una duda.

En uno de los campos de mi formulario hay una serie de valores que se repiten mucho, así que he puesto un cuadro combinado para seleccionar esos valores. Pero también hay valores únicos que no están entre los que ofrece el cuadro, y en ese caso hay que escribirlos.

El 90% de los valores que van en ese campo empiezan con los mismos caracteres (es un campo de referencias, y la mayoría empiezan por "C-AXB0" y luego siguen números, por ejemplo "C-AXB004381"), entonces lo que he hecho es una macro que cuando el cuadro combinado recibe el foco escribe automáticamente C-AXB0, de forma que el usuario sólo tenga que completarlo con los números que faltan. En caso de que sea una referencia de las pocas que no empiezan así, se sobreescribe y ya está.

El problema es que cuando recibe el foco, escribe C-AXB0 pero el cursor se queda al principio del campo (antes de la C) y me preguntaba si es posible desde la propia macro dejar el cursor ya colocado después del 0 para escribir sin más lo que falta.

No es un problema grave (se arregla pulsando la tecla Fin del teclado antes de escribir la parte que falta), pero me queda la duda de si es posible hacerlo.

Muchas gracias.
Última edición por mauricio el Jue Jul 27, 2017 4:17 pm, editado 2 veces en total.
Razón: Marcar icono de resuelto
Libreoffice 4.2.6.3 / Windows 10
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Colocar el cursor en un lugar específico de un texto

Mensaje por RMG »

Hola,

Creo que hay algún que otro ejemplo en el foro sobre esto. Con una búsqueda lo encontrarás.

Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
keko
Mensajes: 5
Registrado: Mié Mar 15, 2017 9:19 am

Re: Colocar el cursor en un lugar específico de un texto

Mensaje por keko »

Buenos días.

Lo intenté antes de hacer la consulta, pero todas las referencias que encuentro en el foro a posiciones de cursor se refieren a celdas, rangos, etc de excel o bien a poner el foco en uno u otro campo. No he encontrado ningún hilo que se refiera a lo que yo busco, que es mover el cursor al final del texto dentro del mismo campo en el que ya está.

Pero bueno, volveré a mirar por si se me ha escapado algo.

Un saludo y gracias.
Libreoffice 4.2.6.3 / Windows 10
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Colocar el cursor en un lugar específico de un texto

Mensaje por RMG »

Hola,

Mira si este ejemplo te sirve.

Código: Seleccionar todo

Sub RecibeFoco( Evento )
Dim oSel As Object
   oSel = Evento.Source.Selection
   oSel.Min = 0
   oSel.Max = Len(Evento.Source.Text)
   Evento.Source.Selection = oSel
End Sub
Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
keko
Mensajes: 5
Registrado: Mié Mar 15, 2017 9:19 am

[Resuelto] Colocar el cursor en un lugar específico de un te

Mensaje por keko »

Solucionado.

Con el código que has puesto pone el cursor al final pero deja el texto seleccionado, con lo que al escribir algo nuevo elimina lo que ya estaba. Pero lo he solucionado cambiando el límite inferior de la selección de 0 a Len(Evento.Source.Text), con lo que el cursor queda al final del texto sin tener nada seleccionado :D

Código: Seleccionar todo

Sub RecibeFoco( Evento )
Dim oSel As Object
   oSel = Evento.Source.Selection
   oSel.Min = Len(Evento.Source.Text)
   oSel.Max = Len(Evento.Source.Text)
   Evento.Source.Selection = oSel
End Sub
Muchas gracias!
Libreoffice 4.2.6.3 / Windows 10
Responder