Delphi Firemonkey Grid: Invisible Columns When Navigating

279 Views Asked by At

i have a TGrid on FMX with 3 columns, the second column is Visible False, if I click the first column and press the arrow to focus on the next visible column, the cursor does not go to the third column, it disappears, as if focusing on the second column, and if I push arrow again, then he goes to the third column.

How can i fix it?

1

There are 1 best solutions below

4
Tom Brunberg On BEST ANSWER

Use the OnSelectCell event as follows:

procedure TForm7.Grid1SelectCell(Sender: TObject; const ACol, ARow: Integer;
  var CanSelect: Boolean);
begin
  if not (Sender as TGrid).Columns[ACol].Visible then
  begin
    CanSelect := False;
    if (Sender as TGrid).ColumnByIndex(ACol+1) <> nil then
      (Sender as TGrid).SelectColumn(ACol+1);
  end;
end;

Btw, you did not say which version of Delphi you are using, and there are differences. Please, when asking about Firemonkey, always tag the question with your version of Delphi. Here's an update:

  • In Delphi 10.1 Berlin the above fix is not needed.

  • In Delphi 10 Seattle and earlier (I verified down to XE6) the fix is needed

You may also have noticed that selecting in the other direction (right to left) works without the fix in versions Delphi 10 Seattle and earlier (which explains why only ACol + 1 needs to be considered).