如何将TGrid的'selected' 属性设置为-1

How to set 'selected' property of TGrid to -1

我正在使用 FMX.Grid.TGrid,用户可以在其中 select 完成行。在某些情况下,我想重置此 selection。如果我使用 grid.selected = -1grid.selectRow(-1) 执行此操作,则 selection 将从网格中删除,但 grid.selected 设置为“0”(在 TCustomGrid.SelectCell 中),这是第一行。

如何重置 selection 以使 属性 grid.selected 为“-1”?

我检查了 FMX 库的代码我做了一个小 class 帮助程序,它允许您直接访问私有 属性,这是所选行的存储值。在 Delphi XE8 上测试。此代码将正常工作,即使您启用了选项 "AlwaysShowSelection"。

  TMyG = class helper for TCustomGrid
  public
    procedure DoSomethingStrange;
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.btnReadSelectionClick(Sender: TObject);
begin
  Caption := Grid1.Selected.ToString;
end;

procedure TForm1.btnResetSelectionClick(Sender: TObject);
begin
  Grid1.DoSomethingStrange;
end;

{ TMyG }

procedure TMyG.DoSomethingStrange;
begin
  Self.FSelected := -1;
  Self.UpdateSelection;
end;

如果您的目标是不在网格中显示所选行,那么您可以通过关注另一个组件来散焦它。