如题,我是想鼠标的中键在滚动的时候,DBGRID里面的值也随着变动.如何实现?

解决方案 »

  1.   

    我当然知道要关联同一个DATASOURCE,比如:DBGRID1关联DATASOURCE1,DBEDIT1也关联DATASOURCE1,但是没有用.
    当鼠标在DBGRID1中的纪录滚动时,DBEDIT1里面的数据是不会变化的,一定要在鼠标左键点击到DBGRID1中的某一条数据时,DBEDIT1里面才会显示出相应的数据.有没有办法?
      

  2.   

    不知道你怎么搞的,本来简单问题,搞的复杂化
    --//实在不行,在添加一个DATASOURCE2,Ado2,DBedit连接DATASOURCE2,在鼠标滑动事件里面写程序付值,
     private//定义变量
        { Private declarations }
          OldGridWnd: TWndMethod;
          OlgGrid2wnd: TWndMethod;
          procedure NewGridWnd(var Message: TMessage);
    -----
    procedure TZKPL.FormCreate(Sender: TObject);
    begin
      OldGridWnd := DBGrid1.WindowProc;
      DBGrid1.WindowProc := NewGridWnd;
    end;
    -----
    procedure TZKPL.NewGridWnd(var Message: TMessage);
    var
      IsNeg: Boolean;
      str: string;
    begin
        if Message.Msg = WM_MOUSEWHEEL then
         begin
              IsNeg := Short(Message.WParamHi) < 0;
                    if IsNeg then
                      Begin
                        //DBGrid1.DataSource.DataSet.MoveBy(1)
                        AdoQuery1.MoveBy(1);
                        str:=AdoQuery1.FieldByName('zkuan_').AsString ;
                        AdoQuery2.Close;
                        Adoquery2.SQL.Clear;
                        AdoQuery2.SQL.Add('select  top '+Edit1.Text+'  * from klbom where zkuan_='''+str+'''');
                        Adoquery2.Open;
                      End
                    else
                     Begin
                        AdoQuery1.MoveBy(-1);
                        str:=AdoQuery1.FieldByName('zkuan_').AsString ;
                        AdoQuery2.Close;
                        Adoquery2.SQL.Clear;
                        AdoQuery2.SQL.Add('select top '+Edit1.Text+'  * from klbom where zkuan_='''+str+'''');
                        Adoquery2.Open;
                     End;
             end
        else
          OldGridWnd(Message);
    end;
    //
      

  3.   

    你的问题在于DBGrid按鼠标滚轮的时候,记录指针不会跟着走。5楼方法可解决这个问题,或者用DBGridEh,那就可不需要另作这些特殊处理。直接用同一个数据源就可以了。
      

  4.   

    换控件,用DBGridEh,正常情况下是不需要修改什么代码。除非你有对DBGrid控件的展现做文章。
      

  5.   

    用dbgrideh就可以实现不写代码,才可以实现鼠标的中键在滚动的时候,DBGRID里面的值也随着变动的功能,你下载ehLib414该控件,安装一下就可以了.