Estoy trabajando con OpenOffice Writer, ¿se puede hacer una macro que envie el "foco" a un marcador?
Ya tengo terminada la macro que hace salto de pagina e inserta un documento, pero el (puntero, cursor, foco), no se como lo llamais, se queda al final del documento. Me gustaria conseguir que se quedara en el lugar de la pagina que yo quiera, he pensado en la posibilidad de que un "marcador" pudiera recibir el foco.
¿Alquien tiene alguna idea?
[RESUELTO] Enviar foco a un marcador
[RESUELTO] Enviar foco a un marcador
Última edición por Donilo el Mié May 19, 2010 3:08 pm, editado 1 vez en total.
OpenOffice 3.1 Windows XP
Re: Enviar foco a un marcador
Hola...
Puede haber muchas variantes para lo que quieres, a "bote pronto" se me ocurren dos, un campo oculto, la siguiente macro, te busca el primer campo oculto en el documento desde donde se llame y lleva el cursor visible a ese campo, toma en cuenta que queda seleccionado por lo que si escribes o el usuario escribe reemplazara al campo, también considera que si tu documento no tiene el campo oculto, y generas tu documento por código, tienes que insertar, también por código este campo para su posterior localización...
La otra seria, siguiente la misma tónica de la anterior, que insertaras un carácter "sui generis" para buscarlo y enviar el cursor ahí, la búsqueda en OOo es sumamente poderosa, como puedes verlo en el siguiente ejemplo: http://user.services.openoffice.org/es/ ... 083#p10068
Por favor, si esto responde tu pregunta, edita el primer mensaje de este hilo y agrega al principio del título la etiqueta [RESUELTO], de esta forma conseguiremos un foro más ordenado.
Saludos
Puede haber muchas variantes para lo que quieres, a "bote pronto" se me ocurren dos, un campo oculto, la siguiente macro, te busca el primer campo oculto en el documento desde donde se llame y lleva el cursor visible a ese campo, toma en cuenta que queda seleccionado por lo que si escribes o el usuario escribe reemplazara al campo, también considera que si tu documento no tiene el campo oculto, y generas tu documento por código, tienes que insertar, también por código este campo para su posterior localización...
Código: Seleccionar todo
Sub IrACampoOculto()
Dim oDoc As Object
Dim oCampos As Object
Dim oCampo As Object
Dim oVCursor As Object
'Este documento
oDoc = ThisComponent
'Los campos del documento
oCampos = oDoc.getTextFields.createEnumeration()
'Iteramos en todos
Do While oCampos.hasMoreElements
'Avanzamos al siguiente campo
oCampo = oCampos.nextElement()
'Verificamos que sea un campo oculto
If oCampo.supportsService("com.sun.star.text.TextField.HiddenText") Then
oVCursor = oDoc.getCurrentController.getViewCursor
oVCursor.gotoRange( oCampo.getAnchor, False )
Exit Do
End If
Loop
End SubPor favor, si esto responde tu pregunta, edita el primer mensaje de este hilo y agrega al principio del título la etiqueta [RESUELTO], de esta forma conseguiremos un foro más ordenado.
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Enviar foco a un marcador
Hola Mauricio, gracias por tu atencion.
He probado tu primera rutina, y no se en que me estoy equivocando, pero no consigo que el foco se valla a un campo oculto con la rutina que me proporcionaste.
La segunda opción si funciona, pero me sustituye el texto que busco por otro, no quedándose el foco en el lugar donde está el texto.
¿Alguien puede darme alguna otra opcion?
Gracias a todos.
He probado tu primera rutina, y no se en que me estoy equivocando, pero no consigo que el foco se valla a un campo oculto con la rutina que me proporcionaste.
La segunda opción si funciona, pero me sustituye el texto que busco por otro, no quedándose el foco en el lugar donde está el texto.
¿Alguien puede darme alguna otra opcion?
Gracias a todos.
OpenOffice 3.1 Windows XP
Re: Enviar foco a un marcador
Ya está resuelto. Mauricio tu rutina funcionaba perfectamente, el fallo lo estaba cometiendo yo. Una torpeza más mia.
Gracias por tu ayuda.
Un saludo a todos.
Gracias por tu ayuda.
Un saludo a todos.
OpenOffice 3.1 Windows XP
Re: [RESUELTO] Enviar foco a un marcador
Hola...
La respuesta que di a otro usuario: http://user.services.openoffice.org/es/ ... t=0#p11258
Me ayudo a mejorar la forma de enviar el foco a un marcador, específicamente a un campo de usuario invisible, la ventaja en esta nueva versión es que no iteramos entre los campos, si no que vamos directamente al campo que queramos con su nombre, por supuesto el campo debe de insertarse previamente con el nombre y posición deseado, aquí la macro.
Saludos
La respuesta que di a otro usuario: http://user.services.openoffice.org/es/ ... t=0#p11258
Me ayudo a mejorar la forma de enviar el foco a un marcador, específicamente a un campo de usuario invisible, la ventaja en esta nueva versión es que no iteramos entre los campos, si no que vamos directamente al campo que queramos con su nombre, por supuesto el campo debe de insertarse previamente con el nombre y posición deseado, aquí la macro.
Código: Seleccionar todo
Option Explicit
Sub Main
Dim oDoc As Object
Dim oCampos As Object
Dim oCampo As Object
Dim sNombre As String
Dim oRango As Object
Dim oVCursor AS Object
'El nombre de tu campo invisible
sNombre = "Dos"
'Este documento
oDoc = ThisComponent
'Los campos del documento
oCampos = oDoc.getTextFieldMasters()
'El campo de usuario invisible
sNombre = "com.sun.star.text.fieldmaster.User." & sNombre
'Nos aseguramos de que exista
If oCampos.hasByName( sNombre ) Then
'Accedemos al campo
oCampo = oCampos.getByName( sNombre )
'Accedemos al rango donde esta
oRango = oCampo.DependentTextFields(0).getAnchor()
'Referencia al cursor visual
oVCursor = oDoc.getCurrentController.getViewCursor
'Movemos el cursor al campo oculto
oVCursor.gotoRange( oRango, False )
'Movemos el cursor un caracter a la derecha, esta línea es para
'evitar el reemplazo del campo al escribir
oVCursor.goRight( 1, False )
End If
End Sub______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro