2011-10-19 21 views
7

Tengo un TGrid con una mezcla de columnas (ImageColumn y StringColumn). Puedo poblarlo usando el evento onGetValue que funciona bien. Mis preguntas son:Delphi Firemonkey TGrid cómo actualizar

  1. Cómo forzar a toda la grilla a reconstruir y causar el evento onGetValue? Estoy usando UpdateStyle en el momento.

  2. ¿Cómo puedo actualizar una sola celda en la cuadrícula?

Respuesta

5

¡La cuadrícula actualiza solo las celdas visibles! Grid1.UpdateStyle fuerza la cuadrícula para reconstruir y está causando eventos onGetValue, pero es lento. Grid1.ReAlign es mucho más rápido.

Tan pronto como las celdas se vuelvan visibles, se actualizarán.

Actualización 1 celular:

procedure TForm1.UpdateCell(col, row: integer); 
var 
    cell: TStyledControl; 
begin 
    cell := Grid1.Columns[col].CellControlByRow(row); 
    if Assigned(cell) then 
    cell.Data := 'Note: use the same datasource as OnGetValue'; 
end; 

célula no se asigna cuando la fila no se hacen visibles.

+0

gracias por la respuesta, respuesta perfecta. –

2

La otra opción es llamar al Grid1.beginUpdate; hacer los cambios y luego llamar al Grid1.endupdate; que hará que la cuadrícula visible se vuelva a calcular y volver a dibujar.

Cuestiones relacionadas