1

我在 TAdvStringGrid 中选择某个单元格:

常量
  我的科尔=4;
  我的行=1;
  HiddenCol=2;

过程 TForm1.FormCreate(Sender: TObject);
开始
  AdvStringGrid1.ColCount:=5;
  AdvStringGrid1.RowCount:=10;
结尾;

过程 TForm1.BtnHideClick(Sender: TObject);
开始
  AdvStringGrid1.HideColumn(2);
结尾;

过程 TForm1.BtnSelectCellClick(Sender: TObject);
开始
  AdvStringGrid1.SelectCells(MyCol,MyRow,MyCol,MyRow);
结尾;

但是,我的问题是,隐藏该列后,将不会选择我需要选择的单元格,因为程序看到 ColCount 现在是 4 并且 col 5 处的单元格不再存在。无论隐藏列如何,我仍然可以选择单元格?

通过选择我的意思是关注单元格,并向用户显示选择了哪个单元格,而不仅仅是读取其字符串值。

4

1 回答 1

2

根据第 57 页的 TAdvStringGuide v6.1 开发人员指南,您可以使用 grid.AllCells(ACol, ARow)。描述说:“以字符串形式访问网格单元格,而不管隐藏的列或行。grid.AllCells 返回显示的单元格,即在可能通过事件 OnGetDisplText 处理真实单元格文本之后”。

要显示选定的单元格,您可以使用它们为您提供的一些附加功能。从他们指南的第 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 回答