全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1441
推到 Plurk!
推到 Facebook!

在TDrawGrid 中MouseMove時變更滑鼠游標?

尚未結案
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-06 16:17:18 IP:220.142.xxx.xxx 未訂閱
大家好: 我使用TDrawGrid 並將DragMode 設定為dmManual(手動模式), 在MouseMove中我偵測使用者是否有按下左鍵,以表示現在是拖曳狀態, 此時我想要改變滑鼠游標為crDrag(拖曳圖示), 但圖沒改變, 直到放開後才會改變,不知如何能即時改變此游標? 因為設計上的問題,所以不想用dmAutomatic(自動模式),但游標卻無法即時更換. 我使用下列語法: DrawGrid->Cursor = crDrag;
------
FPGA驗證, FPGA開發平台, http://smims.com
allenchan
資深會員


發表:10
回覆:306
積分:283
註冊:2004-01-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-06 22:20:15 IP:61.62.xxx.xxx 未訂閱
或許您試試在 OnMouseDown event 做這件事:
void __fastcall TForm1::DrawGrid1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
    if (Button == mbLeft)
        DrawGrid1->BeginDrag(false);
}
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-07 09:44:16 IP:220.142.xxx.xxx 未訂閱
謝謝你的回應.. 我試過你的方法,但此模式就會變成mdAutomatic的狀態一樣, 此時會無法偵測MouseMove, 因為我想在MouseMove做些事, 所以只要改變滑鼠游標即可...
------
FPGA驗證, FPGA開發平台, http://smims.com
allenchan
資深會員


發表:10
回覆:306
積分:283
註冊:2004-01-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-07 18:15:22 IP:61.230.xxx.xxx 未訂閱
void __fastcall TForm1::Label1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
    TPoint P;        if (Button == mbLeft)
    {
        Label1->Cursor = crDrag;            GetCursorPos(&P);
        P = ScreenToClient(P);
        Perform(WM_LBUTTONUP, 0, (int)&P);
    }
}
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-09 11:36:56 IP:220.142.xxx.xxx 未訂閱
謝謝回應... 我有試了, 你使用WM_LBUTTONUP, 是等放開時改變圖示, 我是想按下去後,在MouseMove判斷是否要改變圖示,因為拖曳時,滑鼠的Button 是都不動的,所以無法使用此法. 我也試過使用WM_MOUSEMOVE, 但還是沒變.
------
FPGA驗證, FPGA開發平台, http://smims.com
allenchan
資深會員


發表:10
回覆:306
積分:283
註冊:2004-01-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-09 13:05:17 IP:203.70.xxx.xxx 未訂閱
我想那您可能改變 Screen->Cursor 來試試看,程式大致如下:
void __fastcall TForm1::Memo1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
{
    TPoint P;
    if (blMouseDown) /* 請改成您判斷滑鼠被按下的條件 */
    {
        /* 如果滑鼠在 Memo1 範圍內就變圖示 */
        if (X > 0 && X < Memo1->Width && Y > 0 && Y < Memo1->Height)
            Screen->Cursor = crDrag;
        /* 如果滑鼠超出 Memo1 範圍就變回來 */
        else
            Screen->Cursor = crDefault;
    }
}
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-09 17:03:55 IP:220.142.xxx.xxx 未訂閱
謝了! 這樣的確是可以達到我要的目的!
------
FPGA驗證, FPGA開發平台, http://smims.com
系統時間:2024-04-30 7:34:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!