移动你的数据集就可以啊,比如说,你用的QUERY组件,名称为qrGetStaff
那么,你qrGetStaff.Next就可以啊,这一些变化也会在Dbgrid中表现出来。你会发现DBGrid中的数据指针也在变化的。

解决方案 »

  1.   

    我说得是要让他在dbgrid中显示位置发生变化,而不是移动指针
    也就是说当点击下移按钮时,当前行移到下一行显示,原本的下一行上移
      

  2.   

    具体怎么做呀?我用的ADOQUERY,SQLSERVER。
    DBGRID 可供编辑输入数据,我要的效果就是在DBGRID 中用户可随意移动一行的位置,当然后台数据库表存储的每一行也要与用户移动后的结果对应。
      

  3.   

    adoquery.sql写为: select field1,field2...... form yourtable order by field1    //field1 是向表中添加的用来排序的列.整型
    procedure TForm1.BitBtn1Click(Sender: TObject);
    var temp1,temp2:integer;
        book:Tbookstr;
    begin
        temp1:=adoquery1.fieldbyname('field1').AsInteger;
        if not adoquery1.Eof then
         begin
            adoquery1.DisableControls;
           adoquery1.Next;
            book:=adoquery1.Book;
            temp2:=adoquery1.fieldbyname('field1').AsInteger;
            adoquery1.Edit;
            adoquery1.fieldbyname('field1').AsInteger:=temp1;
            adoquery1.Post;
            adoquery1.Prior;
            end;
            adoquery1.Edit;
            adoquery1.fieldbyname('field1').AsInteger:=temp2;
            adoquery1.Post;
            adoquery1.Close;
            adoquery1.Open;
            adoquery1.Book:=book;
            adoquery1.EnableControls;
    end;
      

  4.   

    非常抱歉,上面方法有问题,当到达最后一行时就不会交换两行的位置了.修改如下:procedure TForm1.BitBtn1Click(Sender: TObject);
    var temp1,temp2:integer;
        book:Tbookstr;
    begin
        temp1:=adoquery1.fieldbyname('field1').AsInteger;
        adoquery1.Next;
         if not adoquery1.Eof then
        begin
         begin
            adoquery1.DisableControls;
              book:=adoquery1.Book;
            temp2:=adoquery1.fieldbyname('field1').AsInteger;
            adoquery1.Edit;
            adoquery1.fieldbyname('field1').AsInteger:=temp1;
            adoquery1.Post;
            adoquery1.Prior;
            end;
            adoquery1.Edit;
            adoquery1.fieldbyname('field1').AsInteger:=temp2;
            adoquery1.Post;
            adoquery1.Close;
            adoquery1.Open;
            adoquery1.Book:=book;
            adoquery1.EnableControls;
          end;
    end;