Delphi Firemonkey TGrid как обновить - PullRequest
8 голосов
/ 19 октября 2011

У меня есть TGrid со смесью столбцов (ImageColumn и StringColumn).Я могу заполнить его, используя событие onGetValue, которое работает нормально.Мои вопросы:

  1. Как заставить всю сетку перестроиться и вызвать событие onGetValue?Я использую UpdateStyle на сайте.

  2. Как мне обновить одну ячейку в сетке?

Ответы [ 2 ]

5 голосов
/ 19 октября 2011

Сетка обновляет только видимые ячейки! Grid1.UpdateStyle заставляет сетку перестраиваться и вызывает onGetValue событий, но она медленная. Grid1.ReAlign намного быстрее.

Как только ячейки станут видимыми, они будут обновлены.

Обновление 1 ячейки:

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;

ячейка не назначается, когда строка никогда не становится видимой.

3 голосов
/ 17 ноября 2016

Другой вариант - вызвать Grid1.beginUpdate;, внести изменения, а затем вызвать Grid1.endupdate;, что приведет к пересчету и перерисовке видимой сетки.

...