2
我對FMX
一個TGrid
3列,第二列是Visible False
,如果我點擊第一欄,按箭頭專注於下一個可見列,光標不會去到第三欄,它消失了,彷彿專注於第二欄,如果我再次按下箭頭,他就會到第三欄。德爾福Firemonkey網:隱形列當導航
我該如何解決?
我對FMX
一個TGrid
3列,第二列是Visible False
,如果我點擊第一欄,按箭頭專注於下一個可見列,光標不會去到第三欄,它消失了,彷彿專注於第二欄,如果我再次按下箭頭,他就會到第三欄。德爾福Firemonkey網:隱形列當導航
我該如何解決?
使用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;
順便說一句,你不是說你正在使用的德爾福的版本,也有不同之處。請在詢問有關Firemonkey
時,始終用您的Delphi版本標記問題。這裏有一個更新:
在德爾福10.1柏林上述修復是不需要的。
在Delphi西雅圖10和更早版本(我覈實到XE6)修復需要
你也可能已經注意到,在另一個方向選擇(從右到左)未經修復的工作版本Delphi 10 Seattle和更早版本(這解釋了爲什麼只需要考慮ACol + 1
)。
謝謝@湯姆布倫伯格,工作完美,我只添加了一個'如果(Sender as TGrid).ColumnByIndex(ACol + 1)<> nil then'然後選擇下一列 –
@Tallys Ferrante歡迎您!我不明白爲什麼你的添加是必要的。那麼你在使用哪個版本? –
我使用德爾福西雅圖。我添加了此驗證,因爲我的最後一列也是不可見的,所以如果用戶無意中按下箭頭,則應用程序在嘗試選擇下一列(不存在)時不會引發訪問衝突。 –