[教程]DBGridEh 中获取当前鼠标位置的记录内容

第一步:在 OnMouseMove 事件中,调用 MouseCoord 函数,计算鼠标当前所在的行列信息。

第二步:用得到的行号(Y)减去当前表格选中的行号(Row)计算出两者的差值 (Distance)。

第三步:设置表格 DataLink.ActiveRecord 的值为 DataLink.ActiveRecord + Distance,然后直接取相应数据集中需要的字段值。

第四步:设置 DataLink.ActiveRecord 的值为 DataLink.ActiveRecord – Distance,以恢复数据集与表格显示的同步。

var
  ACell: TGridCoord;
  ADistance:Integer;
  AId:String;
begin
ACell := DBGridEh1.MouseCoord(X, Y);
ADistance := ACell.Y - DBGridEh1.Row;
if ADistance <> 0 then
  begin
  DBGridEh1.DataLink.ActiveRecord := DBGridEh1.DataLink.ActiveRecord + ADistance;
  AId := AdoDataSet1.FieldByName('id').AsString;
  DBGridEh1.DataLink.ActiveRecord := DBGridEh1.DataLink.ActiveRecord - ADistance;
  end
else
  AId := AdoDataSet1.FieldByName('id').AsString;
...
end

分享到: