rt

解决方案 »

  1.   

    因为你移动滚轮只是输入焦点变了.但纪录指针并没变化,当然不会再retrieve 翻页了。
      

  2.   

    回复人: jishiping(JSP 季世平) (  ) 信誉:105  2002-8-16 13:03:21  得分:70  
     
     
      或者直接使用下面的方法:
    LRESULT CALLBACK (*OldWinProc)(HWND hwnd, UINT uMsg,
        WPARAM wParam, LPARAM lParam);
    LRESULT CALLBACK NewWinProc(HWND hwnd, UINT uMsg,
        WPARAM wParam, LPARAM lParam)
    {
        if (uMsg==WM_MOUSEWHEEL) {
            TDBGrid* DBGrid = dynamic_cast<TDBGrid*>(
                FindControl(hwnd));
            if (DBGrid && DBGrid->DataSource && DBGrid
                ->DataSource->DataSet) {
                TDataSet* DataSet = DBGrid->DataSource
                    ->DataSet;
                if ((short)HIWORD(wParam) > 0) {
                    if (!DataSet->Bof)
                        DataSet->Prior();
                }
                else {
                    if (!DataSet->Eof)
                        DataSet->Next();
                }
            }
            return 0;
        }
        else
            return OldWinProc(hwnd, uMsg, wParam, lParam);
    }
    //------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
    {
        OldWinProc = (WNDPROC)GetWindowLong(DBGrid1
            ->Handle, GWL_WNDPROC);
        SetWindowLong(DBGrid1->Handle, GWL_WNDPROC,
            (LPARAM)NewWinProc);