線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1763
推到 Plurk!
推到 Facebook!

DBGrid VS 滾輪的滑鼠

答題得分者是:jcjroc
salo0610
高階會員


發表:42
回覆:120
積分:107
註冊:2003-02-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-10 10:41:11 IP:220.130.xxx.xxx 未訂閱
各位大大好: 我搜尋到相關的文章,可是沒找到 > >
salo0610
高階會員


發表:42
回覆:120
積分:107
註冊:2003-02-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-11 11:22:34 IP:220.130.xxx.xxx 未訂閱
TwinControl有一onMouseWheel Event(protected). Tform published此event,故From可接受滾輪移動. TDBGrid 則未published此Event.無法直接使用,但由於為proteced,只要繼承即可使用 那 BCB 的語法要如何寫?? 謝謝!!!
jcjroc
高階會員


發表:21
回覆:276
積分:114
註冊:2002-09-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-13 03:23:21 IP:61.219.xxx.xxx 未訂閱
去看一下WindowProc這個Property 你要的東西就在那裡面
salo0610
高階會員


發表:42
回覆:120
積分:107
註冊:2003-02-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-16 09:16:13 IP:220.130.xxx.xxx 未訂閱
我看 Delphi 的寫法不是以下的寫法~~~ 那位大大可以幫幫我啊?? 謝謝!!!    為什麼要     宣告 TWndMethod oldDBGridProc;    oldDBGridProc = dgView->WindowProc; oldDBGridProc( Message );    沒有的話,會出錯??? "A Call to an OS Function Failed"    
//----------------------------------------------------------------    private:
    TWndMethod oldDBGridProc;
    void __fastcall DBGridWndProc(Messages::TMessage &Message);    //----------------------------------------------------------------        oldDBGridProc = dgView->WindowProc;
    dgView->WindowProc = DBGridWndProc;    //----------------------------------------------------------------    void __fastcall DBGridWndProc(Messages::TMessage &Message)
{
    short int Delta;
    try
    {            if ( Message.Msg == WM_MOUSEWHEEL &&  adoDB->Active == true )
        {
            Delta = Message.WParamHi;
            if ( Delta<0 ){ adoDB->Next();  }
            if ( Delta>0 ){ adoDB->Prior(); }
        }
        else
            oldDBGridProc( Message );
    }
    catch(...)
    {
    }
}
jcjroc
高階會員


發表:21
回覆:276
積分:114
註冊:2002-09-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-06-16 21:00:18 IP:61.219.xxx.xxx 未訂閱
你把原本的WinProc攔掉,可是你並沒有把它的事全接手過來做,那樣當然會錯 ,所以才會再把其它你沒處裡的事,丟回去本來的WinProc處理
yachu721
初階會員


發表:50
回覆:98
積分:44
註冊:2003-07-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2012-05-22 01:10:39 IP:180.177.xxx.xxx 訂閱
 參考 http://yao67.pixnet.net/blog/post/36446236
BCB-DBGrid 滑鼠滾輪





void __fastcall TForm1::DBGridWndProc(TMessage &Message)


{


short int Delta;


if(Message.Msg == WM_MOUSEWHEEL) // 判斷訊息是否為 [滑鼠滾輪]


{


Delta = Message.WParamHi;


if (Delta < 0) DataSource1->DataSet->Next(); // 往上滾動時跳到上一筆資料


if (Delta > 0) DataSource1->DataSet->Prior(); // 往下滾動時跳到下一筆資料


}else{


OldDBGridProc(Message); //記得要送回給原來的訊息處理函式


}


}





void __fastcall TForm1::FormCreate(TObject *Sender)


OldDBGridProc = DBGrid1->WindowProc; //儲存原始訊息處理函式


DBGrid1->WindowProc = DBGridWndProc; //賦予新處理












標頭檔 private:


TWndMethod OldDBGridProc; //儲存原始訊息處理函式


void __fastcall DBGridWndProc(TMessage &Message);
編輯記錄
yachu721 重新編輯於 2012-05-21 11:12:50, 註解 無‧
系統時間:2017-10-20 9:33:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!