我有一个3TGrid
列FMX
,第二列是Visible False
,如果我单击第一列并按箭头将焦点放在下一个可见列上,光标不会转到第三列,它会消失,就像关注第二列一样列,如果我再次按箭头,那么他会转到第三列。
我该如何解决?
我有一个3TGrid
列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 Seattle 和更早的版本中(我验证到 XE6)需要修复
您可能还注意到,在 Delphi 10 Seattle 和更早的版本中,选择其他方向(从右到左)可以在没有修复的情况下工作(这解释了为什么只ACol + 1
需要考虑)。