2016-11-07 78 views
2

我對FMX一個TGrid 3列,第二列是Visible False,如果我點擊第一欄,按箭頭專注於下一個可見列,光標不會去到第三欄,它消失了,彷彿專注於第二欄,如果我再次按下箭頭,他就會到第三欄。德爾福Firemonkey網:隱形列當導航

我該如何解決?

回答

1

使用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)。

+0

謝謝@湯姆布倫伯格,工作完美,我只添加了一個'如果(Sender as TGrid).ColumnByIndex(ACol + 1)<> nil then'然後選擇下一列 –

+0

@Tallys Ferrante歡迎您!我不明白爲什麼你的添加是必要的。那麼你在使用哪個版本? –

+0

我使用德爾福西雅圖。我添加了此驗證,因爲我的最後一列也是不可見的,所以如果用戶無意中按下箭頭,則應用程序在嘗試選擇下一列(不存在)時不會引發訪問衝突。 –