Delphi Firemonkey 网格:导航时不可见的列
Delphi Firemonkey Grid: Invisible Columns When Navigating
我在 FMX
上有一个有 3 列的 TGrid
,第二列是 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
).
我在 FMX
上有一个有 3 列的 TGrid
,第二列是 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
).