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

如何判斷滑鼠游標是否進入TImage的範圍

答題得分者是:jessechan
okiss
一般會員


發表:11
回覆:55
積分:13
註冊:2002-11-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-25 11:42:02 IP:140.127.xxx.xxx 未訂閱
各位大大... 我有用cursor下去搜尋過..找到Delphi有解決方法: http://delphi.ktop.com.tw/topic.php?topic_id=22891 但是我不知C 要怎麼做... 可否請大大們幫我翻譯一下..^^ 或是TImage有其他的方法來判斷mouse_enter and mouse_leave?? 感謝各位大大..^^
jessechan
版主


發表:109
回覆:394
積分:254
註冊:2002-04-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-25 12:02:55 IP:203.75.xxx.xxx 未訂閱
因為 TImage 也是繼承自 TControl, 所以也有MouseEnter 及 MouseLeave, 所以你要新增一個 class 繼承自 TImage, 然後在 protect: 中 override 這兩個函數, 其原型宣告為 DYNAMIC void __fastcall MouseEnter(TControl* AControl); DYNAMIC void __fastcall MouseLeave(TControl* AControl); Jesse Chan
------
Jesse Chan
okiss
一般會員


發表:11
回覆:55
積分:13
註冊:2002-11-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-25 12:23:19 IP:140.127.xxx.xxx 未訂閱
我的作法如下: .h file class SImage : public TImage { protected: DYNAMIC void __fastcall MouseEnter(TControl* AControl); DYNAMIC void __fastcall MouseLeave(TControl* AControl); public: __fastcall virtual SImage(Classes::TComponent* AOwner){} __fastcall virtual ~SImage(void){} private: }; ---------------- .cpp file void __fastcall SImage::MouseEnter(TControl* AControl) { int a = 3; a ; } // set break point //-------------------------------------------------------------------void __fastcall SImage::MouseLeave(TControl* AControl) { int a = 3; a ; } // set break point ----------------------------------------------- 但是not work.....怎辦?? 感謝大大的回答..^^
jessechan
版主


發表:109
回覆:394
積分:254
註冊:2002-04-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-25 13:21:21 IP:203.75.xxx.xxx 未訂閱
我鄭重道歉, 回答這題時剛好老闆找我, 所以答錯了, 那部份是屬於 CLX 的作法, 在BCB中的做法如下, class SImage : public TImage { public: __fastcall SImage(TComponent* Owner); __fastcall virtual ~SImage(void){}; BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(CM_MOUSEENTER,TMessage,OnMouseEnter); END_MESSAGE_MAP(TImage); private: void __fastcall OnMouseEnter(TMessage &Message); }; void __fastcall SImage::OnMouseEnter(TMessage &Message) { Screen->Cursor = crHandPoint; } 我把它簡略了一些, 但我相信你可以知道我的意思. Jesse Chan
------
Jesse Chan
jessechan
版主


發表:109
回覆:394
積分:254
註冊:2002-04-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-25 13:27:50 IP:203.75.xxx.xxx 未訂閱
再加個提示, __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { hMenu = GetSystemMenu(Handle,false); SImage * FImage = new SImage(this); FImage->Parent = this; FImage->Left = 0; FImage->Top = 0; FImage->Width = 100; FImage->Height = 100; FImage->Canvas->Brush->Color = clWhite; } Jesse Chan
------
Jesse Chan
okiss
一般會員


發表:11
回覆:55
積分:13
註冊:2002-11-27

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-25 13:35:24 IP:140.127.xxx.xxx 未訂閱
ok... you are right..^^ Thank you....^^ 只要大大有心...別說抱歉..^^ 反正問題還是你幫我解決的...^^ 再一次謝謝您...^^
China Join
中階會員


發表:81
回覆:242
積分:89
註冊:2003-03-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-06-06 13:22:02 IP:218.170.xxx.xxx 未訂閱
抱歉小弟執行時會有連結的錯誤 [Linker Error] Unresolved external 'SImage::' referenced from C:\DOCUMENTS AND SETTINGS\CJ\桌面\TEMP2\UNIT1.OBJ [Linker Error] Unresolved external '__fastcall SImage::SImage(Classes::TComponent *)' referenced from C:\DOCUMENTS AND SETTINGS\CJ\桌面\TEMP2\UNIT1.OBJ 是否 void __fastcall OnMouseEnter(TMessage &Message); 宣告的位子不對ㄋ?THX
mzhuang
一般會員


發表:6
回覆:11
積分:3
註冊:2002-08-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-06-27 02:20:46 IP:220.229.xxx.xxx 訂閱
在繼承然後改造元件的 Event 的時候
也遇到同樣的問題了
一模一樣的 Link Error
有人知道為什麼嘛?
系統時間:2024-05-07 13:39:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!