适用情况:各种GRID
要求:1 行序字段数据类型为实型,且数据根据此字面排序
2 拖动时触发动作产生startdragid值,放下时产生enddragid值,
行序修改的代码
procedure dragmove(startid,enddragid:real;orderlist:string;destination:tdataset);
var
neighborid,currentid:Real;
begin
if enddragid<=startdragid then
begin
destination.Prior;
if destination.bof then
neighborid:=-1
else
neighborid:=destination.fieldbyname(orderlist).Value;
end
else
begin
destination.next;
if destination.eof then
neighborid:=enddragid+1
else
neighborid:=destination.fieldbyname(orderlist).Value;
end;
if destination.Locate(orderlist,startdragid,[loCaseInsensitive]) then
begin
with destination do
begin
Edit ;
currentid:=(enddragid+neighborid)/2;
FieldByName(orderlist).AsFloat :=currentid;
Post ;
Close;
Open ;
Locate(orderlist,currentid,[loCaseInsensitive])
end;
end;
end;