【问题标题】:How to set 'selected' property of TGrid to -1如何将 TGrid 的“选定”属性设置为-1
【发布时间】:2015-07-21 14:02:22
【问题描述】:

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

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

【问题讨论】:

  • 这只是网格的本质,在任何给定时间总会有选择的东西。在 VCL 中也是如此。
  • 任何时候都不会。在创建和第一次选择单元格之间的时间里,“selected”属性是“-1”。
  • 好吧,在添加任何内容之前,没有什么可以选择的。一旦添加了一行,它默认为 0。现在如果添加行的同一过程也检查索引,它可能暂时为 -1,直到过程退出。
  • 有没有办法检查一行是否突出显示以及哪一行被突出显示?因为可以使用 'grid.selectRow(-1)' 删除突出显示。
  • 你到底想做什么?我们只是猜测。例如,您可以散焦网格。但答案取决于你的目标是什么!!!

标签: delphi firemonkey tgrid


【解决方案1】:

我检查了 FMX 库的代码,我做了小类助手,它允许您直接访问私有属性,这些私有属性是所选行的存储值。在德尔福 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;

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • grid.selected 不会是-1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多