[RESUELTO] Enviar dibujo al fondo desde macro

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...

[RESUELTO] Enviar dibujo al fondo desde macro

Notapor xiseme » Lun Oct 28, 2013 11:34 pm

Del foro y del libro de Mauricio, logro crear una "forma" y adjudicarle tamaño, transparencia ...
Código: Seleccionar todo   Expandir vistaContraer vista
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.
xiseme
 
Mensajes: 1888
Registrado: Lun Nov 24, 2008 1:13 pm

Re: Enviar dibujo al fondo desde macro

Notapor mauricio » Mar Oct 29, 2013 12:20 am

Fácil...
Código: Seleccionar todo   Expandir vistaContraer vista
oForma.LayerID = 1

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
AOO 4.1 | LibO 6.1.5 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5793
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: México, D.F.

Re: Enviar dibujo al fondo desde macro

Notapor xiseme » Mar Oct 29, 2013 2:31 am

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.
xiseme
 
Mensajes: 1888
Registrado: Lun Nov 24, 2008 1:13 pm

Re: Enviar dibujo al fondo desde macro

Notapor SLV-es » Mar Oct 29, 2013 3:03 am

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
SLV-es
 
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España

Re: Enviar dibujo al fondo desde macro

Notapor mauricio » Mar Oct 29, 2013 3:23 am

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
AOO 4.1 | LibO 6.1.5 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5793
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: México, D.F.

Re: [RESUELTO] Enviar dibujo al fondo desde macro

Notapor xiseme » Mar Oct 29, 2013 5:03 pm

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.
xiseme
 
Mensajes: 1888
Registrado: Lun Nov 24, 2008 1:13 pm

Re: [RESUELTO] Enviar dibujo al fondo desde macro

Notapor fornelasa » Mar Oct 29, 2013 6:56 pm

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   Expandir vistaContraer vista
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) 83 veces
lo 6.1.2 | 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: 3182
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: [RESUELTO] Enviar dibujo al fondo desde macro

Notapor xiseme » Mar Oct 29, 2013 8:35 pm

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.
xiseme
 
Mensajes: 1888
Registrado: Lun Nov 24, 2008 1:13 pm

Re: [RESUELTO] Enviar dibujo al fondo desde macro

Notapor fornelasa » Mar Oct 29, 2013 9:12 pm

Si xiseme, es claro que hay fiesta pero........... ¡ah para fiestecitas!...... :lol: :lol:
Saludos, Federico.
lo 6.1.2 | 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: 3182
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: [RESUELTO] Enviar dibujo al fondo desde macro

Notapor fornelasa » Mar Oct 29, 2013 10:01 pm

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 viewtopic.php?f=21&t=5546&p=20201&hilit=fila+seleccionada
4) Lo importante, lo trascendente y lo genial con respecto a este tema fue tratado aqui viewtopic.php?f=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.1.2 | 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: 3182
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: [RESUELTO] Enviar dibujo al fondo desde macro

Notapor xiseme » Mar Oct 29, 2013 11:47 pm

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.
xiseme
 
Mensajes: 1888
Registrado: Lun Nov 24, 2008 1:13 pm

Re: [RESUELTO] Enviar dibujo al fondo desde macro

Notapor fornelasa » Mié Oct 30, 2013 12:13 am

Hola,
xiseme si es que he entendido bien, lo que le da transparencia a un "rectangulo" es algo como esto:
Código: Seleccionar todo   Expandir vistaContraer vista
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.1.2 | 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: 3182
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: [RESUELTO] Enviar dibujo al fondo desde macro

Notapor xiseme » Mié Oct 30, 2013 12:36 am

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.
xiseme
 
Mensajes: 1888
Registrado: Lun Nov 24, 2008 1:13 pm

Re: [RESUELTO] Enviar dibujo al fondo desde macro

Notapor fornelasa » Mié Oct 30, 2013 12:43 am

Segun yo si el objeto esta seleccionado, tal vez así:
Código: Seleccionar todo   Expandir vistaContraer vista
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   Expandir vistaContraer vista
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) 79 veces
lo 6.1.2 | 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: 3182
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 1 invitado