8

有没有办法找出 TDBGrid 中的哪一行是当前行?

4

3 回答 3

5

我不确定我是否理解你的问题,但我会尝试回答,也许你可以澄清这是否不是你要问的。

由于 TDBGrid 与 DataSource 相关联,因此当前行与数据源中的当前行相同。您可以通过查看主键值或 RecNo 属性来查询 DataSource,以确定哪条记录是当前记录。

于 2009-03-23T04:55:55.437 回答
5

你可以这样做:

1 - 定义一个作为 TDBGrid 副本的本地类(这将允许您访问私有方法):

type
  THackDBGrid = class(TDBGrid);

2 - 然后您可以转换为本地定义的类,并从私有方法中提取,如下所示:

function TfrmMain.GetFieldValue(colnum : integer): string;
begin
  Result := THackDBGrid(grdMain).GetFieldValue(colnum);
end;

或者,要获取第 # 行:

function CurrentRowNumber: integer;
  Result := THackDBGrid(grdMain).Row;
end;

这种技术在其他情况下也很有用,但我不能声称功劳。 我从这里得到的

于 2009-03-23T16:30:39.197 回答
0

如果您不想依赖数据源来提供记录计数和当前记录(例如,因为您在远程服务器上使用单向游标),那么访问底层网格控件属性的技术可以使用。

请参阅类似 StackOverflow 问题的答案。

于 2009-03-23T05:14:22.367 回答