Página 1 de 1

[RESUELTO] Actualizar celda en grid

NotaPublicado: Lun Oct 05, 2015 11:31 am
por JoTacoronte
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í

Re: Actualizar celda en grid

NotaPublicado: Lun Oct 05, 2015 3:25 pm
por mauricio
Claro...
Código: Seleccionar todo   Expandir vistaContraer vista
   gridFicheros.GridDataModel.updateCellData(COLUMNA, FILA, NUEVO_VALOR)

Saludos

Re: Actualizar celda en grid

NotaPublicado: Mar Oct 06, 2015 8:49 am
por JoTacoronte
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.

Re: Actualizar celda en grid

NotaPublicado: Mar Oct 06, 2015 3:28 pm
por SLV-es
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.

Re: Actualizar celda en grid

NotaPublicado: Mié Oct 07, 2015 3:27 am
por mauricio
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"...

Re: Actualizar celda en grid

NotaPublicado: Mié Oct 07, 2015 3:33 am
por mauricio
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

Re: [RESUELTO] Actualizar celda en grid

NotaPublicado: Mié Oct 07, 2015 8:46 am
por JoTacoronte
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.