2016-11-07 10 views
2

TGridFMXで3列、第2列はVisible Falseです。最初の列をクリックして矢印を押して次の表示列にフォーカスすると、カーソルは移動しません3番目の列には、2番目の列に焦点を当てているかのように消えます。矢印をもう一度押すと、3番目の列に移動します。Delphi 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ベルリンでは、上記の修正は必要ありません。デルファイ10シアトルおよびそれ以前で

  • (私はXE6まで検証済み)修正は

を必要とされているまた、(右から左へ)、他の方向に選択することで修正なしに動作することに気づいたかもしれませんバージョンのDelphi 10 Seattle以前(なぜACol + 1のみを考慮する必要があるのか​​説明しています)。

+0

おかげ@Tom Brunbergは、完璧に働いていた、私は '.ColumnByIndex(ACol + 1)(TGridとして送信者)<> nilのthen'の前には、次の列 –

+0

@Tallysフェランテを選択するあなたは歓迎されている場合を追加しました!私はなぜあなたの追加が必要であるかわかりません。どのバージョンで作業していますか? –

+0

私はDelphi Seattleを使用しています。最後の列も見えないので、この検証を追加します。ユーザーが矢印を押した場合、次の列(存在しない列)を選択しようとするとアクセス違反が発生しません。 –

関連する問題