Delphi 中禁止 FMX 框架的 TStringGrid 單元格被選中

有欲發表於2024-10-16

Delphi 中禁止 FMX 框架的 TStringGrid 單元格被選中

環境

  1. Windows 11 23H2
  2. Delphi 12 Update 1
  3. Multi-Device Application

使用 Delphi 中 FMX 框架的 TStringGrid 展示資料而不願意某個單元格被選中時,曾經的 VCL 手段是把選中位置調整到無效位置從而實際上使得單元格無法被選中。閱讀文件偶然發現 OnSelectCell 事件提供了很簡單也更規範的方法實現了這一目的。

procedure TFrom.StrGrdSelectCell(Sender: TObject; const ACol, ARow: Integer; var CanSelect: Boolean);
begin
  CanSelect := False;
end;

在 FMX 框架中測試此方法有效。在 VCL 程式碼中觀察到使用此方法的效果不理想。設定CanSelect := False後在程式啟動時依然有某個單元格處於被選中的渲染狀態。

文件地址: Vcl.Grids.TCustomDrawGrid.OnSelectCell

Occurs before a cell in the grid is selected.
Write an OnSelectCell event handler to specify whether any particular cell in the grid can be selected. The Col and Row parameters indicate the column and row indexes of the cell that is about to be selected. Set the CanSelect parameter to False to prevent the cell being selected.

相關文章