vb的datagrid在拖动上下滚动条时,被选中的行始终不变,delphi里面的dbgrid或dbgrideh则是跟着滚动条跑,如何能像vb那样?

解决方案 »

  1.   

    锁定列!
    dbgrid或dbgrideh都可以
      

  2.   

    用消息處理 好了
    private
      OldGridWnd : TWndMethod;procedure NewGridWnd (var Message : TMessage);  OldGridWnd := DBGrid1.WindowProc ;
      DBGrid1.WindowProc := NewGridWnd;procedure TfrmMain.NewGridWnd(var Message: TMessage);
    var
      IsNeg : Boolean;
    begin
      if Message.Msg = WM_MOUSEWHEEL then
      begin
        IsNeg := Short(Message.WParamHi) < 0;
        if IsNeg then
          DBGrid1.DataSource.DataSet.MoveBy(1)
        else
          DBGrid1.DataSource.DataSet.MoveBy(-1)
      end
      else
        OldGridWnd(Message);
    end;