如何获取当前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 支持它们的日期之前的版本中工作。
顺便说一句,如果网格中显示的行数是奇数,那么网格只有唯一的“中间行”,当然。还要注意你实际需要什么,因为如果数据集中的行数小于网格可以同时显示的行数,“中间行”是不明确的。
谁能帮我得到当前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 支持它们的日期之前的版本中工作。
顺便说一句,如果网格中显示的行数是奇数,那么网格只有唯一的“中间行”,当然。还要注意你实际需要什么,因为如果数据集中的行数小于网格可以同时显示的行数,“中间行”是不明确的。