[RESUELTO] Actualizar celda en grid

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
JoTacoronte
Mensajes: 10
Registrado: Lun Oct 05, 2015 11:13 am

[RESUELTO] Actualizar celda en grid

Mensaje 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

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

Re: Actualizar celda en grid

Mensaje por mauricio »

Claro...

Código: Seleccionar todo

	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
JoTacoronte
Mensajes: 10
Registrado: Lun Oct 05, 2015 11:13 am

Re: Actualizar celda en grid

Mensaje 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.
OpenOffice 4.1.1 - Windows 8.1 Pro x64
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: Actualizar celda en grid

Mensaje 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.
+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: Actualizar celda en grid

Mensaje 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"...
______________________________________________
"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: Actualizar celda en grid

Mensaje por mauricio »

Me olvidaba, si deseas actualizar varias celdas, puedes usar...

Código: Seleccionar todo

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
JoTacoronte
Mensajes: 10
Registrado: Lun Oct 05, 2015 11:13 am

Re: [RESUELTO] Actualizar celda en grid

Mensaje 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.
OpenOffice 4.1.1 - Windows 8.1 Pro x64
Responder