如何获取当前DBGrid View中的中间行号

How to get the middle row number in the current DBGrid View

谁能帮我得到当前DBGrid视图的中间行号?

我能够得到以下但无法得到它的行号。我也不知道这是干嘛的

DBGRid1.CenterCurRowInView

更新: 顺便说一句,网格处于滚动视图状态。

添加截图:

网格的行数由公式给出:

RowCount := DBGrid1.ClientHeight div (RowHeight + 1);

中间一行显然是该值的一半(也取决于您是否计算标题行)。

RowHeight 未在 DBGrid 中发布。要开始使用它,您可以使用 interposer class:

type
    TInterDBGrid = class(TDBGrid);

并像这样使用它:

RowHeight := TInterDBGrid(DBGrid1).RowHeights[0];

插入器 class 必须在表格 之前 定义。

我的回答here展示了如何确定DBGrid中的当前行号和行数:

type
  TMyDBGrid = Class(TDBGrid);

function TForm1.GetGridRow: Integer;
begin
  Result := TmyDBGrid(DBGrid1).Row;
end;

function TForm1.GridRowCount : Integer;
begin
  Result := TmyDBGrid(DBGrid1).RowCount;
end;

这避免了对 class 助手的需要,并且可以在 Delphi 支持它们的日期之前的版本中工作。

顺便说一句,如果网格中显示的行数是奇数,那么网格只有唯一的“中间行”,当然。还要注意你实际需要什么,因为如果数据集中的行数小于网格可以同时显示的行数,“中间行”是不明确的。