[RESUELTO] Cómo acceder al texto del Header

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
roliwar
Mensajes: 52
Registrado: Vie Feb 25, 2011 1:22 am

[RESUELTO] Cómo acceder al texto del Header

Mensaje por roliwar »

Hola, ¿alguien sabe cómo acceder al texto del header? necesito centrarlo. Actualmente tengo este codigo en mi macro:

Código: Seleccionar todo

oDoc = ThisComponent
oStyles = oDoc.getStyleFamilies
oPS = oStyles.getByName("PageStyles")
Stan = oPS.getByName("Standard")
Stan.HeaderIsOn = True
Stan.HeaderHeight = 2730
Stan.HeaderTopBorderDistance = 1270
Stan.HeaderText.String = "Este es mi texto del encabezado"

Stan.ParagraphAdjust = 3
Pero me marca error en la última linea, supongo que es porque el objeto Stan no es un estilo ¿alguna idea?

Gracias!!
Última edición por roliwar el Mar Mar 05, 2013 9:58 pm, editado 1 vez en total.
OpenOffice 3.1 en Windows Seven
roliwar
Mensajes: 52
Registrado: Vie Feb 25, 2011 1:22 am

Re: Cómo acceder al texto del Header

Mensaje por roliwar »

He corregido el codigo y ha quedado así:

Código: Seleccionar todo

oFam_Estilos = ThisComponent.StyleFamilies
	oEstilos_Para = oFam_Estilos.getByName("ParagraphStyles")
	oEstilo_Encab = oEstilos_Para.getByName("Header")
	oEstilo_Encab.CharFontName = "Times New Roman"
	oEstilo_Encab.CharHeight = 20
	oEstilo_Encab.CharColor = RGB(0,0,0)
	oDoc = ThisComponent
	oStyles = oDoc.getStyleFamilies
	oPS = oStyles.getByName("PageStyles")
	Stan = oPS.getByName("Standard")
	Stan.HeaderIsOn = True
	Stan.HeaderHeight = 2730 '+ Stan.HeaderBodyDistance
	Stan.HeaderTopBorderDistance = 1270
	'Stan.HeaderBackGraphicURL = ConvertToURL( "file:///C:/macro/ESCUDO NEGRO.JPG" )
	'Stan.HeaderBackGraphicLocation= com.sun.star.style.GraphicLocation.LEFT_TOP
	Stan.HeaderText.String = "Mi texto"
	
	oDoc = ThisComponent
    oVC = oDoc.getCurrentController.getViewCursor
	
	oVC.ParaAdjust = 3
En teoría, la función getViewCursor() obtiene la posición actual del cursor, así que cuando aplico la instrucción oVC.ParaAdjust = 3 se centra el texto del cuerpo del documento, no del encabezado. ¿Cómo posiciono el cursor el en header?
Última edición por roliwar el Mar Mar 05, 2013 9:50 pm, editado 1 vez en total.
OpenOffice 3.1 en Windows Seven
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Cómo acceder al texto del Header

Mensaje por mauricio »

Mira si te sirve esta respuesta: http://forum.openoffice.org/es/forum/vi ... 9942#p9955

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
roliwar
Mensajes: 52
Registrado: Vie Feb 25, 2011 1:22 am

Re: Cómo acceder al texto del Header

Mensaje por roliwar »

Bueno, he conseguido al fin lo que necesitaba: posicionar el cursor en el Encabezado (header). La solución la encontré modificando un script que me encontré aquí: http://www.oooforum.org/forum/viewtopic.phtml?t=85978.

Mi código finalmente quedó así, le agrego mis anotaciones a las últimas lineas:

Código: Seleccionar todo

oFam_Estilos = ThisComponent.StyleFamilies
	oEstilos_Para = oFam_Estilos.getByName("ParagraphStyles")
	oEstilo_Encab = oEstilos_Para.getByName("Header")
	oEstilo_Encab.CharFontName = "Times New Roman"
	oEstilo_Encab.CharHeight = 20
	oEstilo_Encab.CharColor = RGB(0,0,0)
	oDoc = ThisComponent
	oStyles = oDoc.getStyleFamilies
	oPS = oStyles.getByName("PageStyles")
	Stan = oPS.getByName("Standard")
	Stan.HeaderIsOn = True
	Stan.HeaderHeight = 2730 '+ Stan.HeaderBodyDistance
	Stan.HeaderTopBorderDistance = 1270
	Stan.HeaderText.String = "Mi texto del encabezado"
	
	objHeaderText = Stan.getPropertyValue("HeaderText") ' Del style Standarad obtengo el texto del Header
	xHeaderText = objHeaderText.createTextCursor()       ' Creo un TextCursor a partir del Texto del Header
		
	oDoc = ThisComponent
        oVC = oDoc.getCurrentController.getViewCursor 'Obtengo el cursor actual (que está en el body del documento)
	oVC.gotoRange(xHeaderText, false) 'le digo al cursor que se mueva al texto del header
	oVC.ParaAdjust = 3 'Felizmente aplico mi alineación de párrafo
OpenOffice 3.1 en Windows Seven
roliwar
Mensajes: 52
Registrado: Vie Feb 25, 2011 1:22 am

Re: Cómo acceder al texto del Header

Mensaje por roliwar »

mauricio escribió:Mira si te sirve esta respuesta: http://forum.openoffice.org/es/forum/vi ... 9942#p9955

Saludos
Gracias por la respuesta Mauricio, ya había leído el post al que te refieres, de ahi tomé algo para modificar el header, lo que yo necesitaba era pasar el cursor al header, finalmente lo logré, pero ahora me queda un problema: como regreso el cursor a la primera linea del cuerpo del documento?

Gracias!! :D
OpenOffice 3.1 en Windows Seven
roliwar
Mensajes: 52
Registrado: Vie Feb 25, 2011 1:22 am

Re: Cómo acceder al texto del Header

Mensaje por roliwar »

Ok, ya logré regresar al texto del Body del documento.

La respuesta la encontre aqui http://www.oooforum.org/forum/viewtopic.phtml?t=100014 y consiste en guardar la seleccion actual del cuerpo y despues regresar al dicha posicion, al final, la función quedó así:

Código: Seleccionar todo

       oFam_Estilos = ThisComponent.StyleFamilies
	oEstilos_Para = oFam_Estilos.getByName("ParagraphStyles")
	oEstilo_Encab = oEstilos_Para.getByName("Header")
	oEstilo_Encab.CharFontName = "Times New Roman"
	oEstilo_Encab.CharHeight = 20
	oEstilo_Encab.CharWeight = com.sun.star.awt.FontWeight.BOLD
	oEstilo_Encab.CharColor = RGB(0,0,0)
	oDoc = ThisComponent
	oStyles = oDoc.getStyleFamilies
	oPS = oStyles.getByName("PageStyles")
	Stan = oPS.getByName("Standard")
	Stan.HeaderIsOn = True
	Stan.HeaderHeight = 2730 '+ Stan.HeaderBodyDistance
	Stan.HeaderTopBorderDistance = 1270
	Stan.HeaderText.String = "Mi texto de encabezado"
	
	objHeaderText = Stan.getPropertyValue("HeaderText")
	xHeaderText = objHeaderText.createTextCursor()
		
	oDoc = ThisComponent
    oVC = oDoc.getCurrentController.getViewCursor
    
    
    selActual = oDoc.currentSelection 'AQUI se guarda la posición actual del cursor en el cuerpo del documento
    oDoc.lockControllers 
    
	oVC.gotoRange(xHeaderText, false)
	oVC.ParaAdjust = 3
	
	oDoc.CurrentController.Select (selActual) 'AQUI regresamos el cursor a la posición guardada
	oDoc.unlockControllers  
Espero a alguien le sirva.
OpenOffice 3.1 en Windows Seven
Responder