第一步:在 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