我在具有3列的TGrid上有一个FMX,第二列是Visible False,如果我单击第一列并按箭头将焦点放在下一个可见列上,则光标不会移至第三列,它消失了,仿佛专注于第二列,并且如果我再次按箭头,则他会转到第三列。

我该如何解决?

最佳答案

使用OnSelectCell事件,如下所示:

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;




顺便说一句,您没有说您正在使用哪个版本的Delphi,并且存在差异。请问有关Firemonkey的问题,请始终用您的Delphi版本标记问题。这是一个更新:


在Delphi 10.1 Berlin中,不需要上述修复程序。
在西雅图的Delphi 10和更早的版本(我已验证到XE6)中,需要修复


您可能还已经注意到,在Delphi 10 Seattle及更早版本中,没有进行修复,就可以从另一个方向(从右到左)进行选择(这解释了为什么只考虑ACol + 1的原因)。

关于delphi - Delphi Firemonkey网格:导航时不可见的列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40463510/

10-15 20:20