[RESUELTO] Actualizar celda en grid

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

[RESUELTO] Actualizar celda en grid

Notapor JoTacoronte » Lun Oct 05, 2015 11:31 am

Hola a todos.

Mi primer post en el foro, intentaré explicarme correctamente.

Mi versión de OpenOffice es 4.1.1 en Windows 8.1 Pro x64

He insertado un grid en un diálogo (writer), que creo mediante código de la forma siguiente:

Código: Seleccionar todo   Expandir vistaContraer vista
   ' Inicializar
   Dim oPage1    As Object
   Dim oCol1     As Object
   Dim oCol2     As Object
   Dim oColModel As Object
   
   gridFicheros = FormModel.createInstance ( "com.sun.star.awt.grid.UnoControlGridModel" )
   gridFicheros.setPropertyValues ( Array ( "Height", "PositionX", "PositionY", "Width" ), _
      Array ( 62, 4, 126, 369 ) )
   FormModel.insertByName ( "grdFicheros", gridFicheros )
   gridFicheros.Name = "grdFicheros"
   gridFicheros.ShowColumnHeader = True
   gridFicheros.ShowRowHeader = True
   gridFicheros.HScroll = False
   gridFicheros.VScroll = False

   oCol1 = CreateUnoService ( "com.sun.star.awt.grid.GridColumn" )
   oCol1.Title = "TIPO"
   oCol1.MaxWidth = 31
   oCol1.MinWidth = oCol1.MaxWidth -1
   oCol1.HorizontalAlign = com.sun.star.style.HorizontalAlignment.LEFT

   oCol2 = CreateUnoService ( "com.sun.star.awt.grid.GridColumn" )
   oCol2.Title = "PATH"
   oCol2.MaxWidth = 327
   oCol2.MinWidth = oCol2.MaxWidth -1
   oCol2.HorizontalAlign = com.sun.star.style.HorizontalAlignment.LEFT

   oColModel = CreateUnoService ( "com.sun.star.awt.grid.DefaultGridColumnModel" )
   oColModel.addColumn ( oCol1 )
   oColModel.addColumn ( oCol2 )
   gridFicheros.ColumnModel = oColModel
   
   ' Rellenar celdas
   Dim oDataModel As Object
   
   oDataModel = CreateUnoService ( "com.sun.star.awt.grid.DefaultGridDataModel" )
   oDataModel.addRow ( "1", Array ( "Informe", PathFicheroOdt ) )
   oDataModel.addRow ( "2", Array ( "Informe", PathFicheroPdf ) )
   oDataModel.addRow ( "3", Array ( "Certificado", PathFicheroOdt ) )

   gridFicheros.GridDataModel = oDataModel


La salida es correcta, ya que se visualiza correctamente el grid en el diálogo.

Mi pregunta es, ¿se puede actualizar el contenido de una celda en el grid? He buscado bastante pero no encuentro la forma. Si que puedo acceder al contenido de las celdas usando (gridFicheros.GridDataModel.getRowData (0...N)), pero no modificar su contenido.

Gracias desde ya por la ayuda. Gran foro, se aprende bastante por aquí
Última edición por JoTacoronte el Mié Oct 07, 2015 8:40 am, editado 2 veces en total
OpenOffice 4.1.1 - Windows 8.1 Pro x64
JoTacoronte
 
Mensajes: 5
Registrado: Lun Oct 05, 2015 11:13 am

Re: Actualizar celda en grid

Notapor mauricio » Lun Oct 05, 2015 3:25 pm

Claro...
Código: Seleccionar todo   Expandir vistaContraer vista
   gridFicheros.GridDataModel.updateCellData(COLUMNA, FILA, NUEVO_VALOR)

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

Re: Actualizar celda en grid

Notapor JoTacoronte » Mar Oct 06, 2015 8:49 am

Funcionó.
Muchas gracias crack.
Ahí voy pillando rodaje en esto de las macros. Aunque poca información hay del los grids.
Son muy buenos, sigan así.
Un saludo.
OpenOffice 4.1.1 - Windows 8.1 Pro x64
JoTacoronte
 
Mensajes: 5
Registrado: Lun Oct 05, 2015 11:13 am

Re: Actualizar celda en grid

Notapor SLV-es » Mar Oct 06, 2015 3:28 pm

Quiero felicitar a JoTacoronte y a todos los usuarios que utilizan este foro del mismo modo que él lo ha hecho.

Esto es una pregunta bien hecha, en la que podemos interpretar fácilmente lo que se pide, y además, adjunta la demostración de que (al menos) lo ha intentado.

Así da gusto. Puede ser tomado como ejemplo.
+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: Actualizar celda en grid

Notapor mauricio » Mié Oct 07, 2015 3:27 am

SLV-es escribió:y además, adjunta la demostración de que (al menos) lo ha intentado.

esto de acuerdo en todo, aunque en muchos casos con esto me conformaría...

Ahora, al compañero solo le falta marcar correctamente como resuelto este tema para obtener un "sobresaliente"...
______________________________________________
"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: 5873
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: Actualizar celda en grid

Notapor mauricio » Mié Oct 07, 2015 3:33 am

Me olvidaba, si deseas actualizar varias celdas, puedes usar...
Código: Seleccionar todo   Expandir vistaContraer vista
grid.GridDataModel.updateRowData(COLUMNAS, FILA, NUEVOS_VALORES)

Nota que LEN(COLUMNAS) == LEN(NUEVOS_VALORES)

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

Re: [RESUELTO] Actualizar celda en grid

Notapor JoTacoronte » Mié Oct 07, 2015 8:46 am

Sois unos monstruos.
Me ha costado encontrar info respecto al control grid.
Estoy metido con la automatización de generación de documentación, envío de correos, generación de pdfs, etc. En fin tratando de ahorrar tiempo en tareas comunes. Pero no encontraba como actualizar celdas en el grid. Ahora me toca pelear con sus eventos, a ver quien gana.
Un saludo y gracias por todo.
OpenOffice 4.1.1 - Windows 8.1 Pro x64
JoTacoronte
 
Mensajes: 5
Registrado: Lun Oct 05, 2015 11:13 am


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados