[RESUELTO] Enviar dibujo al fondo desde macro

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
xiseme
Mensajes: 1918
Registrado: Lun Nov 24, 2008 1:13 pm

[RESUELTO] Enviar dibujo al fondo desde macro

Mensaje por xiseme »

Del foro y del libro de Mauricio, logro crear una "forma" y adjudicarle tamaño, transparencia ...

Código: Seleccionar todo

Dim oPaginaDibujo As Object
Dim oForma As Object
Dim oTam As New com.sun.star.awt.Size

     oPaginaDibujo = ThisComponent.getCurrentController.getActiveSheet.getDrawPage()
     oForma = ThisComponent.createInstance("com.sun.star.drawing.RectangleShape")

     oTam.Width= Ancho
     oTam.Height= Alto

   With oForma
      .LineStyle = com.sun.star.drawing.LineStyle.NONE
      .FillColor = RGB( 75,75,75 )
      .FillTransparence = 85
      .setSize (oTam)   
      .Name = nDib
   End With

     oPaginaDibujo.Add( oForma )
El objetivo que no logro :crazy: es ponerla en el fondo del documento (Click-dcho → Posición → «En el Fondo»)

¿Cual es manera de situarla en el fondo mediante código?
Última edición por mauricio el Mar Oct 29, 2013 3:44 pm, editado 2 veces en total.
Razón: Marcar correctamente resuelto
Todo es mejorable, estamos dispuestos a mejorar. ¿Yo? ... poco a poco.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Enviar dibujo al fondo desde macro

Mensaje por mauricio »

Fácil...

Código: Seleccionar todo

oForma.LayerID = 1
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
xiseme
Mensajes: 1918
Registrado: Lun Nov 24, 2008 1:13 pm

Re: Enviar dibujo al fondo desde macro

Mensaje por xiseme »

Gracias Mauricio. muchas gracias.
¡menudo alegrón me has dado! estaba buscando por cosas como SetObjectToBackground
Todo es mejorable, estamos dispuestos a mejorar. ¿Yo? ... poco a poco.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: Enviar dibujo al fondo desde macro

Mensaje por SLV-es »

Dos palabras de cortesía, un objeto y una propiedad... asombroso.

Menos mal que tiene firma !!!! :lol: :lol: :lol:
+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
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Enviar dibujo al fondo desde macro

Mensaje por mauricio »

SLV-es escribió:Dos palabras de cortesía, un objeto y una propiedad... asombroso.

Menos mal que tiene firma !!!! :lol: :lol: :lol:
Acuerdate mi amigo de ese dicho que a la letra dice: -cuando hables, procura que tus palabras sean mejores que tu silencio-... :D :D

Un abrazo
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
xiseme
Mensajes: 1918
Registrado: Lun Nov 24, 2008 1:13 pm

Re: [RESUELTO] Enviar dibujo al fondo desde macro

Mensaje por xiseme »

Una vez que se me ha indicado el camino (todo es más fácil cuando te abren la puerta) ...
he intentando entender (más que consiguiendo) algo de las capas** he trasteado con otras opciones para ver donde sitúa el dibujo y si es seleccionable según la opción de LayerID=
  • 0 → delante de fondo celda y de algunas formas /seleccionable directamente con un click
    1 → detras de todo fondo celda incl. /selecc.indirecta
    2 → delante de fondo celda y de algunas formas /selecc.indirecta
    3 → frente delante de todo /selecc.directa con un click
    4 → invisible /no seleccionable
    5 → invisible /seleccionable directamente
La 2 es la buena para este caso de resaltar fila y columna ;)

** Como se ha comentado ya en el foro, para los menos aventajados, se hace difícil. He querido saber del ZOrder (más allá de que no es ni el orden X ni el Y :lol: ) para asegurarme que la forma creada está detrás de cualquier dibujo pero delante del fondo de celda, pero no he sabido. Imagino que tendría que ser intercambiando posiciones (pag.390 libro Mauricio) y que si le asigno orden 1 no "empujará" en uno el orden de las demás si las hubiera.
Todo es mejorable, estamos dispuestos a mejorar. ¿Yo? ... poco a poco.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: [RESUELTO] Enviar dibujo al fondo desde macro

Mensaje por fornelasa »

Hola a todos,
Estimado xiseme:
- poder llamarlos por su nombre en vez de por su índice.
Suponiendo que tengamos duda todavia con lo anterior aqui una posible opción:
¿Como puedo seleccionar la forma "rectangulo" por su nombre de entre un mar de formas?
Respuesta: Corro la macro Seleccionar y listo.

Código: Seleccionar todo

Sub Seleccionar
oDoc = ThisComponent
oHoja = oDoc.CurrentController.ActiveSheet
Dibujos = oHoja.GetDrawPage
oFormas = Dibujos.Count
For i = 0 To oFormas - 1
If Dibujos.GetByIndex(i).Name = "Rectangulo" Then
oDoc.CurrentController.Select(Dibujos.GetByIndex(i))
exit for
end if
Next
end sub
En cuanto a lo de la famosa extensión.... me espero....jejejejeje.....ya verán mis criticas...jejejeje :twisted: siempre hay un "aguafiestas"... :mrgreen:
Saludos, Federico.
Adjuntos
PorNombre.ods
Selecccionar forma por nombre.
(10.78 KiB) Descargado 231 veces
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
xiseme
Mensajes: 1918
Registrado: Lun Nov 24, 2008 1:13 pm

Re: [RESUELTO] Enviar dibujo al fondo desde macro

Mensaje por xiseme »

Gracias Federico.
Sí, tenía dudas de si era posible algo como oPagDibujo.hasByName(nombre) para saber si existe y oPagDibujo.getByName(nombre) para acceder a él.

Queda aclarado que tiene que ser por índice.

Y las críticas ... venga va! ... ayudan a mejorar. ;) ¿aguafiestas? eso es bueno; indica que hay una y que lo estamos pasando bien :lol: :lol:
Todo es mejorable, estamos dispuestos a mejorar. ¿Yo? ... poco a poco.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: [RESUELTO] Enviar dibujo al fondo desde macro

Mensaje por fornelasa »

Si xiseme, es claro que hay fiesta pero........... ¡ah para fiestecitas!...... :lol: :lol:
Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: [RESUELTO] Enviar dibujo al fondo desde macro

Mensaje por fornelasa »

Aqui mi comentario:
1) No es en contra de alguien, es solo una opinión.
2) Entiendo, comprendo y sé que algunos no estarán de acuerdo con lo expresado más abajo, ok bien, que se le va a hacer :cry: :cry:
3) Para que no se mal interprete desde el 24/JUNIO/2011 cuestioné esto del resaltado de fila http://forum.openoffice.org/es/forum/vi ... leccionada
4) Lo importante, lo trascendente y lo genial con respecto a este tema fue tratado aqui http://forum.openoffice.org/es/forum/vi ... =21&t=9119
5) Se pidió la incorporación de esta caracteristica al programa en bugzilla desde el 17 de Enero del 2011 y solo ha obtenido un voto (recientemente un voto hecho por salva :evil:) :mrgreen: :mrgreen: https://issues.apache.org/ooo/show_bug.cgi?id=116489
Tres conclusiones:
A) Hacer una extension o incorporación al programa de este "resaltado de fila" para tener tal caracteristica en el programa se me hace de lo mas trivial.
B) Me quedo con el punto 4
C) Por supuesto que no la votaré.
¡recorcholis ya lo dije! :geek:

Tengo un poco de temor xiseme de que vayas a pensar que es contra ti, por supuesto que para nada, al contrario gracias por darme "entrada" para poder externar mis traumas :super:
Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
xiseme
Mensajes: 1918
Registrado: Lun Nov 24, 2008 1:13 pm

Re: [RESUELTO] Enviar dibujo al fondo desde macro

Mensaje por xiseme »

Puedes (debes ;)) contradecirme y rebatirme todo cuanto consideres. Ni se me ocurriría malinterpretar tal cosa y menos tomármelo a mal. Como muy bien dices en el punto 1: es claro en tu caso y en el de otros que nunca es en contra, siempre es a favor (en este caso lo es de invertir el tiempo en otras características)

La funcionalidad ... bueno, como todo, para la generalidad muy importante no será, pero reconoce que puede ser «vistosa». Desconozco si otras hojas de cálculo la tienen.

A mí solo me falta un detalle, que es situar los "resaltados" delante de lo que entiendo es la capa de color de celda LayerID=2 pero detrás de todas las «shapes» incluso de las «anotaciones de celda» que es lo que hace click-dcho → Posición → Enviar al fondo (no En el fondo que eso ya ha quedado bien respondido) abriré tema al respecto.
Todo es mejorable, estamos dispuestos a mejorar. ¿Yo? ... poco a poco.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: [RESUELTO] Enviar dibujo al fondo desde macro

Mensaje por fornelasa »

Hola,
xiseme si es que he entendido bien, lo que le da transparencia a un "rectangulo" es algo como esto:

Código: Seleccionar todo

Dibujos.GetByIndex(i).FillTransparence = 30
Saludos, Federico.
Última edición por fornelasa el Mié Oct 30, 2013 12:38 am, editado 3 veces en total.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
xiseme
Mensajes: 1918
Registrado: Lun Nov 24, 2008 1:13 pm

Re: [RESUELTO] Enviar dibujo al fondo desde macro

Mensaje por xiseme »

Gracias. No me refiero a la transparencia que, si te fijas en el código del principio. ya la he incluido en el bloque "whith" (solo que yo soy más trasparente, concretamente al 85 :lol: )
Es enviarla "al" fondo (de la capa) pero no "en el fondo" de la hoja. Como al hacer Click-drcho. → Posición → Enviar al fondo.
Todo es mejorable, estamos dispuestos a mejorar. ¿Yo? ... poco a poco.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: [RESUELTO] Enviar dibujo al fondo desde macro

Mensaje por fornelasa »

Segun yo si el objeto esta seleccionado, tal vez así:

Código: Seleccionar todo

sub EnviarAlFondo
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:SendToBack", "", 0, Array())
end sub
Si corremos la macro Seleccionar tal vez así:

Código: Seleccionar todo

Sub Seleccionar
oDoc = ThisComponent
oHoja = oDoc.CurrentController.ActiveSheet
Dibujos = oHoja.GetDrawPage
oFormas = Dibujos.Count
For i = 0 To oFormas - 1
If Dibujos.GetByIndex(i).Name = "Rectangulo" Then
Dibujos.GetByIndex(i).ZOrder = 0
exit for
end if
Next
end sub

Saludos, Federico.
Adjuntos
PorNombre.ods
Enviar al fondo capas
(9.9 KiB) Descargado 231 veces
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Responder