拖動記錄改變行序

適用情況:各種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; 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章