Как установить свойство selected для TGrid на -1

Я использую FMX.Grid.TGrid в котором пользователь может выбрать полные строки. В некоторых случаях я хочу сбросить этот выбор. Если я сделаю это с grid.selected = -1 или с grid.selectRow(-1) выбор удаляется из сетки, но grid.selected установлен на "0" (в TCustomGrid.SelectCell), который является первым рядом.

Как я могу сбросить выбор, чтобы свойство grid.selected это "-1"?

2 ответа

Решение

Я проверил код библиотеки FMX, я сделал крошечный помощник класса, который позволяет вам получить прямой доступ к частному свойству, которое является значением хранилища выбранной строки. Проверено на 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;

Если ваша цель - не отображать выбранную строку в сетке, вы можете просто расфокусировать ее, сфокусировавшись на другом компоненте.

Другие вопросы по тегам