首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

求解释下面的代码,该如何处理

2012-04-21 
求解释下面的代码procedure TForm5.RzDBGrid1DragDrop(Sender, Source: TObject X, Y: Integer)var gc:T

求解释下面的代码
procedure TForm5.RzDBGrid1DragDrop(Sender, Source: TObject; X, Y: Integer);
  var gc:TGridCoord;
begin
gc :=TDBGhack(RzDBGrid1).MouseCoord(x,y);
 if(gc.X>0)and(gc.Y>0) then
 begin //
RzDBGrid1.DataSource.DataSet.MoveBy(gc.Y -TDBGHack(RzDBGrid1).Row);
 RzDBGrid1.DataSource.DataSet.Edit;
 RzDBGrid1.Columns.Items[gc.X -1].Field.Asstring:=listbox1.Items.Strings[listbox1.itemindex];


 end;
  RzDBGrid1.SetFocus;

end;


以上是grid控件拖动的代码,gc.Y -TDBGHack(RzDBGrid1).Row,这段不是很明白,经过断点观看,gc.Y跟TDBGHack(RzDBGrid1).Row数值是一样的,结果就是相减等于0,那么我就直接不要这段代码,直接写个0上去,运行之后却发现很怪,求解释下这段代码,并解释下 RzDBGrid1.DataSource.DataSet.MoveBy用法

[解决办法]
MoveBy就是移动记录
参数表示相隔行数,负数后退(向第1条记录方向),正数前进(向第N条记录方向)

你的这段代码是在DragDrop事件,即拖动放下时触发
gc.Y是鼠标坐标转换成行索引值,TDBGHack(RzDBGrid1).Row是原来的行索引,2者相减:
负数(表示向后拖动);正数(表示向前拖动);0(同一行)

放个label在窗体是看看吧:

label1.caption:=inttostr(gc.Y)+','+inttostr(TDBGHack(RzDBGrid1).Row);

热点排行