1

TAdvStringGrid で特定のセルを選択しています。

定数
  MyCol=4;
  MyRow=1;
  HiddenCol=2;

手順 TForm1.FormCreate(送信者: TObject);
始める
  AdvStringGrid1.ColCount:=5;
  AdvStringGrid1.RowCount:=10;
終わり;

procedure TForm1.BtnHideClick(Sender: TObject);
始める
  AdvStringGrid1.HideColumn(2);
終わり;

procedure TForm1.BtnSelectCellClick(Sender: TObject);
始める
  AdvStringGrid1.SelectCells(MyCol,MyRow,MyCol,MyRow);
終わり;

ただし、私の問題は、列が非表示になった後、選択する必要があるセルが選択されないことです。これは、ColCount が 4 になり、列 5 のセルが存在しないことをプログラムが認識しているためです。非表示の列に関係なくセルを選択するにはどうすればよいですか?

選択することで、セルにフォーカスし、文字列値を読み取るだけでなく、どのセルが選択されているかをユーザーに示します。

4

1 に答える 1

2

TAdvStringGuide v6.1 開発者ガイドの 57 ページによると、grid.AllCells(ACol, ARow) を使用できます。説明には次のように書かれています。

選択したセルを表示するには、それらが提供するいくつかの追加機能を利用できます。ガイドの131ページから:

TAdvStringGrid は、実際のセル インデックスから可視セル インデックスへのマッピング、およびその逆のマッピングを実行できる一連の関数も提供します。これは、次の方法で提供されます。

function RealRowIndex(ARow: Integer): Integer;
function RealColIndex(ACol: Integer): Integer;

指定された可視列または行インデックスの実際の列または行インデックスを返します

function DisplRowIndex(ARow: Integer): Integer;
function DisplColIndex(ACol: Integer): Integer;

指定された実際の列または行インデックスの可視列または行インデックスを返します。

したがって、最後の方法を次のように変更することで、探しているものを見つけることができると思います。

procedure TForm1.BtnSelectCellClick(Sender: TObject);
begin
  AdvStringGrid1.SelectCells(DisplColIndex(MyCol),DisplRowIndex(MyRow),DisplColIndex(MyCol),DisplRowIndex(MyRow));
end;
于 2013-08-03T00:10:22.247 に答える