EasyDev v2.7.2 [24-Abr-16]

Discute el uso de extensiones desarrolladas por terceros dentro de Apache OpenOffice
RMG
Mensajes: 3878
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por RMG »

Bueno, ya hemos dado otro pasito más. Ahora en la última instrucción sigue poniendo la "u". Mira la imagen.
Adjuntos
Imagen 6.png
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por mauricio »

¿No te gustan las Us?... :lol: :lol:

Es normal, el msgbox de EasyDev es para depurar y siempre convierte lo que sea a string... prueba:

Código: Seleccionar todo

	MsgBox(util.getInfoPC()(0))
	MsgBox(util.getInfoPC()(1))
	MsgBox(util.getInfoPC()(2))
	MsgBox(util.getInfoPC()(3))
	MsgBox(util.getInfoPC()(4))
	MsgBox(util.getInfoPC()(5))
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
RMG
Mensajes: 3878
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por RMG »

Así, sí lo muestra bien.

Continuare...... me llaman a cenar.
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
valenteres
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por valenteres »

Buenas noches Mauricio:


En una ocasión (https://forum.openoffice.org/es/forum/v ... 377#p50360) comentamos el sistema de codificación de colores.
En https://forum.openoffice.org/es/forum/v ... 367#p50361, facilitaste un código para definir el color como RGB. He hecho correr el código y entrando en la ventana "Observador". He visto que el color lo pasa a un código numérico único, con el formato AOO. Supongo que será el mismo. En cualquier caso he encontrado la relación entre este código y el formato RGB. Puede ser que haya descubierto la pólvora.

Esta relación es, que funciona como un sistema de numeración en base 256. Si en un formato RGB denominamos R al primer valor, G al segundo y B al tercero, El formato AOO se obtiene como AOO= R*253^2 + G*256 + B.
En sentido inverso, los valores de R, G y B se pueden obtener a partir de AOO de la siguiente forma:
  • B=RESIDUO(AOO;256)
  • G=RESIDUO((AOO-B)/256;256)
  • R=INT(AOO/POTENCIA(256;2))
Por otra parte, en https://forum.openoffice.org/es/forum/v ... =30#p50482 me quedé en asignar el eje Y primario/secundario a una serie.
Comentamos también los próximos desarrollos. Te planto las necesidades, que no son pocas. Trataré de dar una lista intentando asignar prioridades:
  • Prioridad 1: en una serie asignar eje Y principal/Secundario
  • Prioridad 2: Leyenda: Posición y formato
  • Prioridad 3: Título: Texto y formato
  • Prioridad 4: Ejes: Límites inferior y superior de la escala
  • Prioridad 5: Ejes: Nombre: Texto y formato
  • Prioridad 6: Ejes: Formato del número
He tratado de explicarlo lo mejor posible, aunque las listas no han quedado muy elegantes.
Muchas gracias por todo y un saludo
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por mauricio »

Hola...

Para que yo pueda darme tiempo a desarrollar, es "casi" necesario que no me dejen nada a la imaginación. En la medida de lo posible, casi casi tendrían que dar la receta completa, en un archivo de ejemplo, con código Basic cuando sea posible, de este modo avanzaremos mucho mejor.

También, es muy importante instalar y aprender a usar MRI: http://extensions.services.openoffice.o ... ction-tool
http://easydev.readthedocs.org/en/lates ... l#call-mri
y aprender a depurar: http://easydev.readthedocs.org/en/latest/debug.html
tendremos muchos mejores resultados...

Para los colores, en Python obtengo el entero correspondiente con:

Código: Seleccionar todo

def rgb(r, g, b):
    return int('%02x%02x%02x' % (r, g, b), 16)
Para asignar la serie al eje primario o secundario usas:

Código: Seleccionar todo

   	properties = Array(	_
   		Array("Color", RGB(255,0,0)), _
   		Array("LineWidth", 100), _
		Array("AttachedAxisIndex", 1) _
   	) 
AttachedAxisIndex == 1 sería el secundario

Te mande la lista de propiedades de las series en el otro tema que abriste de los gráficos. Junto con MRI puedes ir probando las propiedades que ya se pueden aplicar directamente.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por mauricio »

Fue mucho más fácil de lo que pense, todo esta, en acceder al elemento correcto y darle formato... y eso es todo...

Con la siguiente macro:

Código: Seleccionar todo

Sub GraficandoRangos()
   Dim pos_size As New com.sun.star.awt.Rectangle
   Dim series(1) As New org.universolibre.EasyDev.ChartSerie
   util = createUnoService("org.universolibre.EasyDev")
   
   address = createUnoStruct("org.universolibre.EasyDev.CellRangeAddress")
   data = createUnoStruct("org.universolibre.EasyDev.ChartData")
   
   doc = ThisComponent
   address.Doc = doc
   address.Sheet = "Hoja1"
   address.Col = 0
   address.Row = 1
   address.EndCol = 0
   address.EndRow = 8
   rango_X = util.getRange(address)

   address.Col = 1
   address.EndCol = 1
   rango_Y = util.getRange(address) 

   address.Col = 1
   address.Row = 0
   title_1 = util.getCell(address)
   
   	properties = Array(	_
   		Array("Color", RGB(255,0,0)), _
   		Array("LineWidth", 100), _
   	)     
      
   series(0).X = rango_X
   series(0).Y = rango_Y
   series(0).Title = title_1
   series(0).Properties = properties

   	properties = Array(	_
   		Array("Color", RGB(255,255,0)), _
   	)
   series(1).X = "Hoja1.C2:C9"
   series(1).Y = "Hoja1.D2:D9"
   series(1).Title = "Hoja1.D1"
   series(1).Properties = properties

   pos_size.X = 0
   pos_size.Y = 5000
   pos_size.Width = 12000
   pos_size.Height = 7000
   
   data.Doc = doc
   data.Sheet = util.getSheet(address)
   data.Name = "Grafico01"
   data.Type = "XYDiagram"
   data.PosSize = pos_size
   data.Series = series
   
   	properties = Array(	_
   		Array("Title", "Canal Chalco"), _
   		Array("HasLegend", True), _
   	)
	data.Properties = properties
    chart = util.chartAdd(data)
    
   	properties = Array(	_
   		Array("CharColor", RGB(0,0,255)), _
   		Array("CharHeight", 18), _
   		Array("CharWeight", 150), _
   		Array("CharFontName", "Liberation Serif"), _
   		Array("LineStyle", 1), _
   		Array("LineColor", RGB(255,0,0)), _
		Array("LineWidth", 100) _
   	)
   	title = chart.getTitleObject()
   	util.imageFormat(title, properties)
   	
   	legend = chart.Legend

	'https://www.openoffice.org/api/docs/common/ref/com/sun/star/chart/ChartLegendPosition.html
   	properties = Array(	_
   		Array("Alignment", 3), _
   		Array("CharColor", RGB(0,0,255)), _
   		Array("CharHeight", 12), _
   		Array("CharWeight", 150), _
   		Array("CharFontName", "Liberation Serif"), _
   		Array("LineStyle", 1), _
   		Array("LineColor", RGB(255,0,0)), _
		Array("LineWidth", 100) _
   	)
   	util.imageFormat(legend, properties)
   	
   	axis = chart.getDiagram().getXAxis()
   	axis.Min = -1
   	axis.Max = 10

   	axis = chart.getDiagram().getYAxis()
   	properties = Array(	_
   		Array("Min", -1), _
   		Array("Max", 7), _
   	) 
	util.imageFormat(axis, properties)   	
   	
End Sub
Obtenemos:
foro.png
La mayor parte de las opciones ya las he documentado en mi libro, así que no lo haré de nuevo:
https://wiki.openoffice.org/wiki/ES/Man ... candoDatos

Y el formato de los objetos:
https://wiki.openoffice.org/wiki/ES/Man ... osGraficos

Esto esta implementado en EasyDev v2.4: https://github.com/UniversoLibreMexicoA ... elop/files

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
valenteres
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por valenteres »

Buenos días Mauricio:

He probado la asignación de un eje secundario a una serie y ha funcionado a medias. Mi intención esta probar todas las opciones antes de informarte, pero ha ocurrido una pequeña catástrofe y estoy atascado.

Intentando resolver algún problema que surgía con el eje secundario he pensado que podría ser porque mi versión de EasyDev 2.3 era previa a la última acutalización. He bajado la última, he intentado instalarla pero no hay manera. Además ahora no consigo cargar ninguna de las versiones.

He desinstalado -eso creía- la versión 2.3. Al instalar la nueva, me dice que ya está instalada, si la quiero actualizar. le digo que si pero no lo hace. Me dice: "Rejecting types due to incompatibility! [org.universolibre.EasyDev.XTools, menbers] Different number of types!"

He intentando desactivando, eliminando. Cuando lo elimino, desaparece, pero al intentar instalar pero lo detecta como actualizacion de una extensión ya instalada. Después se ve como desactivado.

He intentado instalar a partir de archivo, las versiones 2.2, 2.3 y 2.4. En todos los casos con el mismo resultado.

Total, que estoy bloqueado.

Un saludo
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por mauricio »

Dado que estamos agregando nuevas funcionalidades, siempre es necesario para actualizar, primero eliminar la anterior, reiniciar LibreOffice, e instalar la nueva, con este proceso no tendrán problemas...

para arreglar cualquier problema de este tipo, si NO tienen nada especial en su perfil de usuarios, solo reinicienlo, si tienen alguna configuración especial, solo borren las carpetas de cualquier versión de EasyDev, eso es todo.
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
valenteres
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por valenteres »

¿A que te refieres con Reiniciar?

He eliminado la extensión he cerrado, apagado el ordenador, vuelta a encender, entro en libre Office Extensiones, añadir, y da el mismo problema

Un saludo
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por mauricio »

https://forum.openoffice.org/es/forum/v ... 1082#p3263

Otra forma de evitar problemas es forzar a sobreescribir la extensión:

Código: Seleccionar todo

unopkg add -v -f -s path_oxt
No se si este paquete este en Windows, si esta, un sencillo BAT les resuelve el problema...
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
valenteres
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por valenteres »

Buenas noches:
Generando un usuario nuevo me ha dejado cargar de nuevo la EasyDev.
Sustituyendo sucesivamente las diferentes carpetas, he podido saber que el problema esta en la carpeta user\uno_packages. De hecho he copiado en el nuevo usuario todas las carpetas antiguas excepto esta. De esta forma he podido recuperar todos "Mis Macros"

Los problemas del eje secundario permanecen. Prefiero probar todas las opciones que me has propuesto y te comento el resultado

Un saludo
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
valenteres
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por valenteres »

Buenas noches Mauricio:

Tu propuesta ha funcionado satisfactoriamente casi en todo.
* Titulo y Leyenda han funcionado perfectamente
* La escala de los ejes ha funcionado muy bien. En mi caso, el eje X corresponde a fechas. Los valores mínimo y máximo del intervalo los he indicado en valor numérico y ha funcionado sin problemas

El caso del eje secundario ha presentado algunas "cosas raras":
* En el gráfico las dos series se se representan en el eje Y principal
* La escala gráfica corresponde a la serie que tiene asignada el eje principal.
* La serie que tiene asignado el eje secundario, es de un orden de magnitud superior y no se ve adecuadamente en la gráfica
* Sin embargo, entrando en el gráfico en las propiedades de la serie aparece asignado el eje secundario. Activo el eje principal y la escala automática cambia a la correspondiente a esta serie
* Vuelvo a entrar y a activar el eje secundario y cada serie se representa correctamente en un eje

Sobre la propuesta que te hice hemos cubierto prácticamente toda la lista. Únicamente queda nombre y valores de los ejes así como sus formatos.

Para trabajar con el eje Y secundario, supongo que habrá que identificar cada uno de los dos ejes Y en la instrucción axis = chart.getDiagram().getYAxis(), supongo que con axis = chart.getDiagram().getYAxis(0) y con axis = chart.getDiagram().getYAxis(1). ¿Es así?

Por último, sería útil controlar el valor del eje Y en el que corta al eje X.

Espero tus noticias

Muchas gracias por todo
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
valenteres
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por valenteres »

No consigo subir gráficos ni archivos

Te adjunto el código

Código: Seleccionar todo

Option Explicit

Sub GraficandoRangos01()

' Con EasyDev 2.3
   Dim pos_size As New com.sun.star.awt.Rectangle
   Dim series(1) As New org.universolibre.EasyDev.ChartSerie
   Dim util as Object
   Dim Address as Object
   Dim data as Object
   Dim doc as Object
   Dim rango_X as Object
   Dim rango_Y as Object
   Dim Title_1 as Object
   Dim Properties as Object
   Dim chart as Object
   Dim Axis as Object
   Dim title as Object
   Dim legend as Object
   Dim Temp as String

   util = createUnoService("org.universolibre.EasyDev")
   
   address = createUnoStruct("org.universolibre.EasyDev.CellRangeAddress")
   data = createUnoStruct("org.universolibre.EasyDev.ChartData")
   
   doc = ThisComponent
   
' Definición de rango de datos por índice

   address.Doc = doc
   address.Sheet = "Hoja1"
   address.Col = 0
   address.Row = 4
   address.EndCol = 0
   address.EndRow = 10010

' Rango de las ordenadas
   rango_X = util.getRange(address)

' Los valores que no cambian mantienen su valor
   address.Col = 1
   address.EndCol = 1

' Rango de las abscisas
   rango_Y = util.getRange(address) 

' Título
   address.Col = 1
   address.Row = 3
   title_1 = util.getCell(address)

' Propiedades de la serie
properties = Array(   _
         Array("Color", RGB(0,0,255)), _
         Array("LineWidth", 100), _
      Array("AttachedAxisIndex", 0) _
      )

' Asignación de rangos a la serie
   series(0).X = rango_X
   series(0).Y = rango_Y
   series(0).Title = title_1
   'series(0).Color = 17798
   series(0).Properties = properties

properties = Array(   _
         Array("Color", RGB(255,0,0)), _
         Array("LineWidth", 100), _
      Array("AttachedAxisIndex", 2) _
      )

' Serie definiendo los rangos por String
'   	properties = Array(	_
'   		Array("Color", RGB(145,249,251)), _
'  		Array("LineWidth", 100), _
'   	)
   series(1).X = "Hoja1.C5:C10011"
   series(1).Y = "Hoja1.D5:D10011"
   series(1).Title = "Hoja1.D4"
   'series(1).Color = 16728590
   series(1).Properties = properties

' Posición del gráfico
   pos_size.X = 0
   pos_size.Y = 0
   pos_size.Width = 26000
   pos_size.Height = 14000

' Características del gráfico
   data.Doc = doc
 
   address.Sheet = "Graficos"		' Se redefine la hoja para poder hubicar el gráfico
   data.Sheet = util.getSheet(address)
   data.Name = "Grafico01"
   data.Type = "XYDiagram"
   data.PosSize = pos_size
   data.Series = series
 
'----------------------------------------------------------------------------------------------
	Temp= "Título por variable"
       properties = Array(   _
         Array("Title", Temp), _
         Array("HasLegend", True), _
      )
   data.Properties = properties
'----------------------------------------------------------------------------------------------

   chart = util.chartAdd(data)


'----------------------------------------------------------------------------------------------
      properties = Array(   _
         Array("CharColor", RGB(0,0,255)), _
         Array("CharHeight", 18), _
         Array("CharWeight", 150), _
         Array("CharFontName", "Liberation Serif"), _
         Array("LineStyle", 1), _
         Array("LineColor", RGB(255,0,0)), _
      Array("LineWidth", 100) _
      )
      title = chart.getTitleObject()
      util.imageFormat(title, properties)
      
      legend = chart.Legend

   'https://www.openoffice.org/api/docs/common/ref/com/sun/star/chart/ChartLegendPosition.html
      properties = Array(   _
         Array("Alignment", 4), _
         Array("CharColor", RGB(0,0,255)), _
         Array("CharHeight", 12), _
         Array("CharWeight", 150), _
         Array("CharFontName", "Liberation Serif"), _
         Array("LineStyle", 1), _
         Array("LineColor", RGB(0,0,0)), _
      Array("LineWidth", 10) _
      )
      util.imageFormat(legend, properties)
      
'----------------------------------------------------------------------------------------------

      axis = chart.getDiagram().getXAxis()
      axis.Min = 37074
      axis.Max = 37075

      axis = chart.getDiagram().getYAxis()
      properties = Array(   _
         Array("Min", -5), _
         Array("Max", 7), _
      ) 
   util.imageFormat(axis, properties)     


End Sub
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por mauricio »

Seguramente es por el tamaño, usa un servicio externo y enlazalo aquí...

En mis pruebas, los ejes secundarios siempre son igual a 1, no se por que usas: AttachedAxisIndex = 2

El formato de los ejes son parte de sus propiedades (NumberFormat), es importante te familiarices y uses MRI para estos casos...

El eje se corta usando la propiedad CrossoverValue, que también la encontré con MRI, insisto, hay que dominar esta importante herramienta...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
valenteres
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por valenteres »

Buenas tardes Mauricio y muchas gracias por tu trabajo.

Respecto a los archivos adjuntos, voy a editor completo, en la pestaña de archivos adjuntos, seleccionar archivo, selecciono el archivo y pulso agregar archivo. Se queda "pensando", termina de pensar, desaparece el nombre del archivo y no veo el documento por ningún sitio.
Por otra parte, en el editor hay una tecal "Img", pero tampoco he sido capaz de añadir una imagen, no he consegido saber como funciona. Si me puedes dar alguna indicación de como funciona alguna estas dos vías te lo agradecería.

Respecto a los valores de AttachedAxisIndex , he probado de todo, 0 en la primera serie y 1 en la segunda. También con los valores cambiados, 1 para loas dos series. En todos los casos las dos series aparecen referencias al eje principal. Si no recuerdo mal, la escala si que cambiaba.

Enseguida probaré las opciones de los ejes que me das y te comentaré el resultado.
Respecto a MRI, tengo dos preguntas: 1 ¿Tengo que instalarlo como extensión?, si es así ¿de donde lo puedo cargar?. 2 ¿donde puedo conseguir un manual?

Muchas gracias por todo y hasta pronto
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por mauricio »

http://easydev.readthedocs.org/es/lates ... amar-a-mri

Realmente solo necesitas tener un objeto seleccionad, el que sea, por ejemplo, la serie de un gráfico o el eje del mismo, e ir al menú Herramientas -> Add Ons... -> MRI.. Selection

y eso es todo... claro, encontrar lo que uno busca, ese, es otro cantar...

Reitero, debe ser el tamaño de tu archivo, subelo a un servicio externo y solo pon el enlace en este tema.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
valenteres
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por valenteres »

Buenas noches Mauricio:

Por fin el eje secundario Y se ha hecho visible
Ha sido posible con añadiendo el siguiente código

Código: Seleccionar todo

      axis = chart.getDiagram().getSecondaryYAxis()
      axis.Min = -50
      axis.Max = 50
      axis.Visible=true
       axis.axisTitle.String = "YSecundario"
He puesto puntos de parada en la ejecución del programa. En la ventana Observador he visto "axis".
La solución ha sido dar valores a los distintos componentes que aparecen en el listado. Problema resuelto.

He hecho lo mismo en el eje Y, he fijado los extremos de la escala y el título del eje. Lo he hecho por dos procedimientos:
El que acabo de comentar:

Código: Seleccionar todo

      axis = chart.getDiagram().getYAxis()
      axis.Min = -5
      axis.Max = 7
     axis.axisTitle.String = "Eje Y"
Ha funcionado sin problemas

Por otra parte he probado con el método de la matriz de propiedades:

Código: Seleccionar todo

      axis = chart.getDiagram().getYAxis()
      properties = Array(   _
         Array("Min", -1), _
         Array("Max", 10), _
         Array("axisTitle.String", " Array Eje Y"), _
         )
En este caso funciona el establecimiento de valores extremos, pero no el título
A la vista de estos resultados tengo dos preguntas:
1: ¿Que relación hay entre estos dos procedimientos?
2: ¿Porque en el segundo caso no funciona el título?

El primer procedimiento me resulta útil, porque parando el programa me permite saber cuales son las variables a las que puedo asignar valores.
Muchas gracias y hasta pronto
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por mauricio »

La mayor parte de los objetos de un gráfico, como lo explico por aquí: https://wiki.openoffice.org/wiki/ES/Man ... .C3.A1fico
son realmente formas (shapes), por lo que aplica la mayor parte del formato de las mismas.

El código con el que aplico las propiedades a las formas, es trivial:

Código: Seleccionar todo

    def imageFormat(self, image, data):
        properties = comun.to_dict(data)
        title = None
        if image.supportsService('com.sun.star.chart2.Title'):
            title = image.getText()[0]
        for k, v in properties.items():
            if hasattr(image, k):
                setattr(image, k, v)
            if title and hasattr(title, k):
                setattr(title, k, v)
        return
Primero convierto la matriz de datos a un diccionario, verifico si es el título de un gráfico, ya que esta es una forma muy especial, al final pregunta si el objeto (image) tiene una propiedad (hasattr), y si la tiene se le aplica (setattr), una belleza.

Entonces, si tu haces:

Código: Seleccionar todo

axis = chart.getDiagram().getYAxis()
Obtienes un objeto, pero si haces:

Código: Seleccionar todo

"axisTitle.String"
la propiedad axisTitle.String NO existe en el objeto.

Este es un caso especial para los ejes, ahora si me das toda la información necesaria (gracias y felicidades!) para solo agregar este caso especial al código.

1.- La primer forma es aplicando propiedades directamente a los objetos, como se hace de forma tradicional desde Basic, si hicieses todo con Basic, esta sería la única forma que tienes de manipular los objetos. La segunda forma, es como lo hace EasyDev, que al recibir un Array, te permite aplicar propiedades por nombre desde una cadena, algo muy común en Python pero no disponible en Basic.

2.- Ya lo explique más arriba, el título es un sub-objeto del eje.

Para saber que propiedades puedes aplicar, nada como MRI.

Saludos y gracias por tu retroalimentación.
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por mauricio »

Listo, ahora puedes usar:

Código: Seleccionar todo

    axis = chart.getDiagram().getSecondaryYAxis()
   	properties = Array(	_
   		Array("CharColor", RGB(0,0,255)), _
   		Array("CharHeight", 12), _
   		Array("CharWeight", 150), _
   		Array("CharFontName", "Liberation Serif"), _   	
   		Array("Min", -1), _
   		Array("Max", 7), _
   		Array("Visible", True), _
   		Array("String", "Y Secundario"), _
   	)        	
	util.imageFormat(axis, properties)  
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
RASAPA
Mensajes: 224
Registrado: Mar Mar 16, 2010 10:41 pm

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por RASAPA »

Buenos dias,
El Zip y el Unzip funcionan a la perfeccion.
Muchas gracias.

Se podria implementar que con un click del raton en la columna correspondiente de un grid hecho en un dialogo, se ordenara la lista del grid por el valor de dicha columna?
Es una idea, que hasta la fecha no he encontrado como hacerlo.

Saludos
LibreOffice 7.3.1.3
Linux Mint 20.3
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por mauricio »

Los método para ordenar un Grid existen:
http://www.openoffice.org/api/docs/comm ... Model.html
http://www.openoffice.org/api/docs/comm ... dData.html

Ahora solo hay que probarlos...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por fornelasa »

Hola a todos.
Antes que nada me gustaría decir que al dia de hoy no me he metido mucho a esta nueva extensión así que por favor disculpen ..... por el momento tengo dos preguntas:
1) ¿Esta nueva version EasyDev v2.3.0 [27-Nov-15] funcionará para AOO 4.1.2?
2) ¿En LibreOffice al instalar EasyDev v2.3.0 [27-Nov-15] borra/suprime el codigo digamos original de arranque del MRI?

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
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por mauricio »

1) Solo he probado algunas funcionalidades en AOO, pero se instala de forma correcta... habría que probar casi todas las herramientas: http://easydev.readthedocs.org/en/latest/
2) No, EasyDev puede "llamar" a MRI, pero no lo toca para nada, obvio, debe estar previamente instalado MRI para poder llamarlo, pero NO lo reemplaza, si esa es la duda.

Saludos

P.D. No hay razón para pedir disculpas, el involucramiento con cualquier software libre es totalmente voluntario.
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por fornelasa »

ok ok ok ¡perfecto! muchas gracias.
Saludos, Federico. :super:
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!
valenteres
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por valenteres »

Hola Mauricio:
En relación con la elaboración de gráficos, siguiendo tus instrucciones, he podido confeccionar un código que funciona correctamente y que te adjunto:

Código: Seleccionar todo

Sub GraficandoRangosED()

' Con EasyDev 2.3
   Dim pos_size As New com.sun.star.awt.Rectangle
   Dim series(1) As New org.universolibre.EasyDev.ChartSerie
   Dim util as Object
   Dim Address as Object
   Dim data as Object
   Dim doc as Object
   Dim rango_X as Object
   Dim rango_Y as Object
   Dim Title_1 as Object
   Dim Properties as Object
   Dim chart as Object
   Dim Axis as Object
   Dim title as Object
   Dim legend as Object
   Dim Temp as String

   util = createUnoService("org.universolibre.EasyDev")
   
   address = createUnoStruct("org.universolibre.EasyDev.CellRangeAddress")
   data = createUnoStruct("org.universolibre.EasyDev.ChartData")
   
   doc = ThisComponent
   
' Definición de rango de datos por índice

   address.Doc = doc
   address.Sheet = "Hoja1"
   address.Col = 0
   address.Row = 4
   address.EndCol = 0
   address.EndRow = 10010

' Rango de las ordenadas
   rango_X = util.getRange(address)

' Los valores que no cambian mantienen su valor
   address.Col = 1
   address.EndCol = 1

' Rango de las abscisas
   rango_Y = util.getRange(address) 

' Título
   address.Col = 1
   address.Row = 3
   title_1 = util.getCell(address)

' Propiedades de la serie
properties = Array(   _
         Array("Color", RGB(0,0,255)), _
         Array("LineWidth", 100), _
      Array("AttachedAxisIndex", 0) _
      )

' Asignación de rangos a la serie
   series(0).X = rango_X
   series(0).Y = rango_Y
   series(0).Title = title_1
   'series(0).Color = 17798
   series(0).Properties = properties

properties = Array(   _
         Array("Color", RGB(255,0,0)), _
         Array("LineWidth", 100), _
      Array("AttachedAxisIndex", 1) _
      )

' Serie definiendo los rangos por String
'   	properties = Array(	_
'   		Array("Color", RGB(145,249,251)), _
'  		Array("LineWidth", 100), _
'   	)
   series(1).X = "Hoja1.C5:C10011"
   series(1).Y = "Hoja1.D5:D10011"
   series(1).Title = "Hoja1.D4"
   'series(1).Color = 16728590
   series(1).Properties = properties

' Posición del gráfico
   pos_size.X = 0
   pos_size.Y = 0
   pos_size.Width = 26000
   pos_size.Height = 14000

' Características del gráfico
   data.Doc = doc
 
   address.Sheet = "Graficos"		' Se redefine la hoja para poder hubicar el gráfico
   data.Sheet = util.getSheet(address)
   data.Name = "Grafico01"
   data.Type = "XYDiagram"
   data.PosSize = pos_size
   data.Series = series
 
'----------------------------------------------------------------------------------------------
	Temp= "Caso 5: Propiedades de eje Y como Array"
       properties = Array(   _
         Array("Title", Temp), _
         Array("HasLegend", True), _
         )
'         Array("HasSecondaryYAxis", True), _
'         Array("HasXAxisTitle", True), _
'         Array("HasYAxisTitle", True), _
'         Array("HasSecondaryYAxisTitle", True), _
'      )
'         Array("HasSecondaryYAxis", True), _
'      )
   data.Properties = properties
'----------------------------------------------------------------------------------------------

   chart = util.chartAdd(data)


'----------------------------------------------------------------------------------------------

' Título
      properties = Array(   _
         Array("CharColor", RGB(0,0,255)), _
         Array("CharHeight", 18), _
         Array("CharWeight", 150), _
         Array("CharFontName", "Liberation Serif"), _
         Array("LineStyle", 1), _
         Array("LineColor", RGB(255,0,0)), _
      Array("LineWidth", 100) _
      )
      title = chart.getTitleObject()
      util.imageFormat(title, properties)

' Leyenda
      legend = chart.Legend

   'https://www.openoffice.org/api/docs/common/ref/com/sun/star/chart/ChartLegendPosition.html
      properties = Array(   _
         Array("Alignment", 4), _
         Array("CharColor", RGB(0,0,255)), _
         Array("CharHeight", 12), _
         Array("CharWeight", 150), _
         Array("CharFontName", "Liberation Serif"), _
         Array("LineStyle", 1), _
         Array("LineColor", RGB(0,0,0)), _
      Array("LineWidth", 10) _
      )
      util.imageFormat(legend, properties)
      
'----------------------------------------------------------------------------------------------

      axis = chart.getDiagram().getXAxis()
      axis.Min = 37074
      axis.Max = 37075

'      axis = chart.getDiagram().getYAxis()
'      axis.Min = -5
'      axis.Max = 7
'	  axis.axisTitle.String = "Eje Y"

'      axis = chart.getDiagram().getYAxis()
'      properties = Array(   _
'         Array("Min", -1), _
'         Array("Max", 10), _
'         Array("axisTitle.String", " Array Eje Y"), _
'         )
'         Array("AxisTitle.String", "Eje Y"), _
'      )
   util.imageFormat(axis, properties)
  
      axis = chart.getDiagram().getSecondaryYAxis()
      axis.Min = -50
      axis.Max = 50
      axis.Visible=true
      axis.axisTitle.String = "YSecundario"



      axis = chart.getDiagram().getYAxis()
      properties = Array(   _
         Array("Min", -3), _
         Array("Max", 10), _
         Array("String", "Eje Y Array"), _
      )
 util.imageFormat(axis, properties)       
'      axis = chart.getDiagram().getSecondaryYAxis()
'      properties = Array(   _
'         Array("Min", -5), _
'         Array("Max", 7), _
'      ) 
'   util.imageFormat(axis, properties)     

End Sub
Con objeto de sinplificarlo y poder generalizarlo he intantado generar una función para confeccionar los datos de las series
Prevamento he comprobado que la rutina funciona pasando la variable Series(1) a Pública
Como primera aproximación ha generado el siguiente código:

Código: Seleccionar todo

Function fGrfPr001(Hoja As Integer, ColX As Integer, ColY As Integer, FilA As Long, FilZ As Long, FilT As Long, EjeY As Integer, Form As Integer) As New org.universolibre.EasyDev.ChartSerie

'Sub GraficandoRangosED()

' Con EasyDev 2.3
	Dim util as Object
	Dim Address as Object
	Dim data as Object
	Dim doc as Object
	Dim rango_X as Object
	Dim rango_Y as Object
	Dim Title_1 as Object
	Dim Properties as Object

   util = createUnoService("org.universolibre.EasyDev")
   
   address = createUnoStruct("org.universolibre.EasyDev.CellRangeAddress")
   data = createUnoStruct("org.universolibre.EasyDev.ChartData")
   
   doc = ThisComponent
   
' Definición de rango de datos por índice

   address.Doc = doc
   address.Sheet = Hoja
   address.Col = ColX
   address.Row = FilA
   address.EndCol = ColX
   address.EndRow = FilZ

'------------------------------------------------------------
'	R A N G O S
'------------------------------------------------------------

' Rango de las ordenadas
   rango_X = util.getRange(address)

' Los valores que no cambian mantienen su valor
   address.Col = ColY
   address.EndCol = ColY

' Rango de las abscisas
'   rango_Y = address
   rango_Y = util.getRange(address)





' Asignación de rangos a la serie
   SerieTr.X = rango_X
   SerieTr.Y = rango_Y


fGrfPr001=SerieTr

'End Sub
End Function
Funciona aparentemente bien, pero hay un problema
- La carga de dirección en address es correcta
- A aplicar la instrucción rango_X = util.getRange(address) el valor de Rango_X.RangeAddress.Sheet, toma el valor de 2 en lugar de 0 como correspondería
No entiendo porqué ocurre esto, porque en el código anterior está igual, o al menos a mi me lo parece, alli funciona aquí no.

Muchas gracias y un saludo
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
valenteres
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.3.0 [27-Nov-15]

Mensaje por valenteres »

Pido disculpas, al último código le falta la cabecera

Código: Seleccionar todo

REM  *****  BASIC  *****
Option Explicit

Public Series(1) As New org.universolibre.EasyDev.ChartSerie


Sub Main

Series(0) = fGrfPr001(0, 0, 1, 4, 10010, 3, 0, 2)

End Sub

Function fGrfPr001(Hoja As Integer, ColX As Integer, ColY As Integer, FilA As Long, FilZ As Long, FilT As Long, EjeY As Integer, Form As Integer) As New org.universolibre.EasyDev.ChartSerie

'Sub GraficandoRangosED()

' Con EasyDev 2.3
	Dim util as Object
	Dim Address as Object
	Dim data as Object
	Dim doc as Object
	Dim rango_X as Object
	Dim rango_Y as Object
	Dim Title_1 as Object
	Dim Properties as Object

   util = createUnoService("org.universolibre.EasyDev")
   
   address = createUnoStruct("org.universolibre.EasyDev.CellRangeAddress")
   data = createUnoStruct("org.universolibre.EasyDev.ChartData")
   
   doc = ThisComponent
   
' Definición de rango de datos por índice

   address.Doc = doc
   address.Sheet = Hoja
   address.Col = ColX
   address.Row = FilA
   address.EndCol = ColX
   address.EndRow = FilZ

'------------------------------------------------------------
'	R A N G O S
'------------------------------------------------------------

' Rango de las ordenadas
   rango_X = util.getRange(address)

' Los valores que no cambian mantienen su valor
   address.Col = ColY
   address.EndCol = ColY

' Rango de las abscisas
'   rango_Y = address
   rango_Y = util.getRange(address)





' Asignación de rangos a la serie
   SerieTr.X = rango_X
   SerieTr.Y = rango_Y


fGrfPr001=SerieTr

'End Sub
End Function
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: EasyDev v2.4.0 [07-Dic-15]

Mensaje por mauricio »

No veo ningún problema, pero si te sucede obvio que lo hay... solo que si no anexas un archivo con datos me obligas a preparar un entorno de pruebas... siempre es más rápido que agregues el archivo para solo ejecutarlo y tratar de encontrar el problema...

He pasado a producción los cambio realizados...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
valenteres
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.4.0 [07-Dic-15]

Mensaje por valenteres »

Gracias Mauricio.
El problema es que, por más que lo intento, no consigo subir archivos al foro. Acabo de hacer una prueba con un archivo muy pequeño y he conseguido subirlo. Probaré a reducirlo a la mínima expresión y te lo haré llegar. Lo intentaré esta tarde hora española

Gracias y hasta pronto
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: EasyDev v2.4.0 [07-Dic-15]

Mensaje por mauricio »

Agradezco infinitamente a mi amigo y nuestro compañero en este foro (Salva) la publicación de una nota, hablando de EasyDev en su insuperable blog de OpenOffice: http://blog.open-office.es/extensiones/ ... a-en-basic

Muchas gracias
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
valenteres
Mensajes: 81
Registrado: Mié Jun 17, 2015 6:04 pm

Re: EasyDev v2.4.0 [07-Dic-15]

Mensaje por valenteres »

Hola de nuevo Mauricio.

Respecto a los gráficos he visto donde está el problema. No se como resolverlo, pero lo he identificado.

En el primer caso que planteé siguiendo tus instrucciones, el que funciona, la hoja se identifica por su nombre, como String

Código: Seleccionar todo

' Definición de rango de datos por índice

   address.Doc = doc
   address.Sheet = "Hoja1"
   address.Col = 0
   address.Row = 4
   address.EndCol = 0
   address.EndRow = 10010

' Rango de las ordenadas
   rango_X = util.getRange(address)
En este caso el código funciona sin ningún problema. Pongo un punto de ruptura en la linea de código siguiente, voy a la ventana de Observador, y en Rango_X.RangeAddress.Sheet tiene el valor 0. He comprobado que si cambio "Hoja1" por cualquier otro nombre de hoja válido, funciona bien, y en Rango_X.RangeAddress.Sheet figura el valor correspondiente a esa hoja.

Si el valor de address.Sheet es entero se presentan dos casos:
- address.Sheet = 0 --> Rango_X.RangeAddress.Sheet toma el valor (indice) correspondiente a la hoja que está activa en Calc
- address.Sheet tiene cualquier otro valor entero --> da error

Espero que tenga una solución. De nuevo muchas gracias por tu trabajo

P.D. He intentado subir algunos archivos, pero siguen siendo demasiado grandes. ¿Cual es el tamaño máximo que admite?
Respecto a las imágenes, sigo sin saber como incluirlas en el mensaje, ¿Que es lo que hay que poner entre los corchetes? La ruta para encontrarla?. Supongo que ademas tendrá el mismo problema de tamaño
-------------------------------------------------------------
"Como no sabían que era imposible, lo hicieron"

Open Office 4.1.1
Libre Office 5.0
Windows 10
-------------------------------------------------------------
Cerrado