[RESUELTA]Colocar el Foco dentro de un Marco de Texto

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
Preguntar-Responder
Mensajes: 15
Registrado: Dom Oct 11, 2015 12:20 pm

[RESUELTA]Colocar el Foco dentro de un Marco de Texto

Mensaje por Preguntar-Responder »

Tengo una macro (copiada) pero que me ha servido para identificar por código qué es un Marco de Texto [Servicio TextContent] de Writer. Según la API de Apache OO, un Marco de Texto es una instancia del Servicio TextFrame.

Es decir instancio con “createInstance” a TextFrame y obtengo una Marco de Texto. Este Marco de Texto lo puedo usar. Quiero poner el cursor dentro del Marco de Texto. ¿Me puede ayudar alguien a usar el SetFocus para este propósito?. Es decir una vez creado el Marco de Texto, colocar dentro de él el cursor.

Adjunto la macro en cuestión copiada.

Le asigno al objeto “oFrame” el método SetFocus [oFrame.SetFocus] para colocar el cursor en el interior del Marco de Tetxto y no lo hace.

Se debe ejercutar la macro en un documento de Writer.

Gracias de antemano al Foro.
Adjuntos
Macro INSERTAR Marco de Texto.odt
(12.39 KiB) Descargado 301 veces
Última edición por Preguntar-Responder el Mié Mar 10, 2021 10:22 pm, editado 1 vez en total.
Libre Office 4.4.5.3. Sistema Operativo Windows 8 Pro
FJCC-ES
Mensajes: 873
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: Colocar el Foco dentro de un Marco de Texto

Mensaje por FJCC-ES »

Usé el método gotoRange del cursor

Código: Seleccionar todo

Sub principal


oFrame = ThisComponent.createInstance ("com.sun.star.text.TextFrame")

oFrame.Width = 6000
ThisComponent.Text.insertTextContent (ThisComponent.Text.Start, oFrame, false)

oFrame.Text.String = "Hola, este texto está dentro del marco"

'oFrame.SetFocus()

'código  nuevo
TextStart = oFrame.Text.Start
oVC = ThisComponent.CurrentController.ViewCursor
oVC.gotoRange(TextStart, False)
End Sub
Preguntar-Responder
Mensajes: 15
Registrado: Dom Oct 11, 2015 12:20 pm

Re: Colocar el Foco dentro de un Marco de Texto

Mensaje por Preguntar-Responder »

Ante todo gracias por responder con tanta claridad.
Esta pregunta la planteé porque no sabía como introducir el cursor dentro de un Marco de Texto creado en la misma macro pensando que sería muy parecido para hacer la misma tarea (colocar el cursor dentro de un Marco de Texto pero ahora que ya estuviese
en el documento) dentro del documento, pero claro ese Marco de Texto ya existente no puedo manejarlo porque no se cual es nombre del objeto que le corresponde.
Adjunto un archivo donde se ve con claridad lo que quiero decir.
Muchas gracias por la respuesta de antes.
Adjuntos
Documento CONSULTA.odt
(11.8 KiB) Descargado 285 veces
Libre Office 4.4.5.3. Sistema Operativo Windows 8 Pro
FJCC-ES
Mensajes: 873
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: Colocar el Foco dentro de un Marco de Texto

Mensaje por FJCC-ES »

Cada marco de texto tiene un nombre y un índice. Si el documento contiene solamente un marco de texto, puede usar su índice para identificarle

Código: Seleccionar todo

oFrame = ThisComponent.TextFrames.getByIndex(0)
TextStart = oFrame.Text.Start
oVC = ThisComponent.CurrentController.ViewCursor
oVC.gotoRange(TextStart, False)
Si hay varios marcos de texto en el documento, lo más fácil es dar un nombre fijo al marco que es el objetivo de la macro.
Preguntar-Responder
Mensajes: 15
Registrado: Dom Oct 11, 2015 12:20 pm

Re: Colocar el Foco dentro de un Marco de Texto

Mensaje por Preguntar-Responder »

Perfecto doy la consulta por RESUELTA y la cierro, no sin antes dar las gracias por la precisión y rapidez en la respuesta.
Sinceramente muchas gracias.
Libre Office 4.4.5.3. Sistema Operativo Windows 8 Pro
Responder