11

列 (ImageColumn と StringColumn) が混在する TGrid があります。正常に動作する onGetValue イベントを使用してデータを入力できます。私の質問は次のとおりです。

  1. グリッド全体を強制的に再構築して onGetValue イベントを発生させる方法は? 私は現在 UpdateStyle を使用しています。

  2. グリッド内の単一のセルを更新するにはどうすればよいですか?

4

2 に答える 2

6

グリッドは表示されているセルのみを更新します!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;

行が表示されない場合、セルは割り当てられません。

于 2011-10-19T17:30:33.307 に答える
6

もう 1 つのオプションはGrid1.beginUpdate;、変更を行ってから呼び出してGrid1.endupdate;、表示されているグリッドを再計算して再描画することです。

于 2016-11-17T09:06:02.027 に答える