[RESUELTO] Activar anchura completa en anclaje de texto

Discute sobre la aplicación de presentaciones
Responder
gmolleda
Mensajes: 25
Registrado: Jue Ago 27, 2009 3:50 pm

[RESUELTO] Activar anchura completa en anclaje de texto

Mensaje por gmolleda »

¿Cómo activamos para un objeto que el texto dentro de él coja la anchura completa?

Quisiera, desde una macro en basic, activar para un objeto con texto la opción de "Anchura completa" en las propiedades de anclaje del texto.
En la versión en inglés a esa opción la llaman "Full width" y el recuadro de propiedades es "Anchor".

La idea es cambiar todos los objetos de un slide así:

numObjektoj = slide.getCount()
for i = 0 to numObjektoj-1
__objekto = slide.getByIndex(i)
__objekto.TextAutoGrowWidth = false
__objekto. ¿Qué pongo aquí? = true
next

¿Todos los objetos tienen las propiedades de texto o tendría que hacer alguna comprobación del tipo de objeto antes de cambiarle propiedades de texto?

Gracias.
Última edición por gmolleda el Dom Feb 22, 2015 4:53 am, editado 1 vez en total.
gmolleda
Mensajes: 25
Registrado: Jue Ago 27, 2009 3:50 pm

Re: Activar anchura completa en anclaje de texto

Mensaje por gmolleda »

Para explicarlo mejor adjunto una presentación con tres objetos: dos de texto y una línea vertical para ver el efecto.

Los dos objetos de texto tienen el texto con la propiedad de alineación a la derecha (poner el cursos del ratón en el sitio del texto como para editarlo y verán que está puesto el ajuste de párrafo a la derecha).

Pero mientras el primer texto con un "0" está realmente a la derecha, el segundo texto con un "2" está a la izquierda del contenedor que lo contiene.

Si pulsamos en propiedades del objeto cuadro de texto con el 2 y en las propiedades del texto, en Ajuste, marcamos la opción "Anchura completa" o pulsamos el ajuste a la esquina superior derecha veremos que ocurre lo que estoy buscando. Pero quisiera hacerlo desde una macro en basic.

Unas veces el texto ya tiene ajuste a la izquierda y otras veces a la derecha, lo que quiero es la figura tenga el ajuste que tenga el texto para que el texto se coloque donde debe estar. Me gustaría saber leer la propiedad TextHorizontalAdjust de los párrafos de texto que contiene la figura y si alguno es a la derecha poner el ajuste de la figura arriba a la derecha.

¿Alguien que sepa hacerlo o me pueda dar una pista?
Adjuntos
borrame.odp
Odp con el problema
(12.14 KiB) Descargado 139 veces
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: Activar anchura completa en anclaje de texto

Mensaje por SLV-es »

Hola

No tengo solución a tu problema, pero esto que recomendó mauricio quizás pueda ayudarte: Extensión Inspector

Saludos
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
gmolleda
Mensajes: 25
Registrado: Jue Ago 27, 2009 3:50 pm

Re: Activar anchura completa en anclaje de texto

Mensaje por gmolleda »

Gracias, ya había encontrado todo por internet y CASI tengo todo funcionando, pero tengo un error:
Recorro los objetos de la presentación para si tienen párrafos en el texto ponerle el ajuste correcto, bien pero:
Tras coger el objeto:
objekto = slide.getByIndex(i)

En algún objeto, por ejemplo una tabla, cuando hago:
eNum = objekto.Text.CreateEnumeration
me sale error:
Error de ejecución de BASIC.
Variable de objeto no establecida.

Es cierto que para usar los párrafos del texto, primero hago la comprobación de si soporta párrafos:
if oTeksto.SupportsService("com.sun.star.text.Paragraph") then

¿Qué condicional tendría que poner tras tener el objeto para asegurarme que no haya un error?
gmolleda
Mensajes: 25
Registrado: Jue Ago 27, 2009 3:50 pm

Re: Activar anchura completa en anclaje de texto

Mensaje por gmolleda »

Finalizado, ya conseguí todo:

Ver si un objeto es de un tipo que pueda tener texto:

Código: Seleccionar todo

    numSlides = doc.getDrawPages().getCount()
    for i = numSlides-1 to 0 step -1
        slide = doc.drawPages(i)
        numObjektoj = slide.getCount()
        for i = 0 to numObjektoj-1
           objekto = slide.getByIndex(i)
           if objekto.GetShapeType() = "com.sun.star.drawing.TextShape" then
               ...
El objeto gráfico tiene el ajuste para el texto que contiene en:

Código: Seleccionar todo

      objekto.TextAutoGrowWidth = false 'sirve para ver si la forma cambia su ancho según el texto
      objekto.TextHorizontalAdjust = 3 ' sirve para situar el texto a la izquierda 0, centro 1, derecha 2 u ocupando todo el interior 3
Ir uno a uno por los párrafos de texto que contenga:

Código: Seleccionar todo

     eNum = objekto.Text.CreateEnumeration
      while eNum.HasMoreElements
          oTeksto = eNum.NextElement
El ajuste de cada línea se hace con la propiedad ParaAdjust, pero existe también dentro del párrafo un objeto Anchor que tiene también ParaAdjust y no tengo ni idea de para qué sirve, pero en mi caso tenía que hacer que oTeksto.Anchor.ParaAdjust fuera igual al valor de oTeksto.ParaAdjust

Código: Seleccionar todo

     oTeksto.ParaAdjust = 1 'es el ajuste del párrafo: 0 izquierda, 1 derecha, 2 justificar ambos lados sin última línea, 3 centrar, 4 justificar ambos lados incluyendo última línea
     oTeksto.Anchor.ParaAdjust = oTeksto.ParaAdjust ' Este no tengo ni idea de para qué sirve pero tiene que ser igual al otro.
Gracias a todos, el hecho de preguntar ayuda a pensar también por uno mismo.
gmolleda
Mensajes: 25
Registrado: Jue Ago 27, 2009 3:50 pm

Re: [RESUELTO] Activar anchura completa en anclaje de texto

Mensaje por gmolleda »

Me he dado cuenta ahora que hay un foro específico para dudas de macros, allí he copiado la pregunta y la respuesta final:
https://forum.openoffice.org/es/forum/v ... 50&t=10672
Responder