有没有办法找出TDBGrid中当前行的位置?
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;
这个技巧在其他情况下也很有用,但我不能声称这是我自己的。我从这里学到了它。
我不确定我是否理解了您的问题,但我会尝试回答,如果这不是您想问的,请您澄清一下。
TDBGrid与DataSource绑定,当前行与数据源中的当前行相同。您可以查询DataSource,通过查看主键值或RecNo属性来确定哪个记录是当前记录。
如果您不想依赖数据源提供记录计数和当前记录(例如,因为您正在远程服务器上使用单向游标),那么可以使用访问底层网格控件属性的技术。
请参见此答案以获取类似的StackOverflow问题的解决方案。
Row := TDummyGrid(MyDBGrid).Row
而是RowCount := TDummyGrid(MyDBGrid).RowCount
?需要一点思考,你知道的... - mghie