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

修改 TImage 元件--增加OnMouseLeave 與 OnMouseEnter

 
ray24
中階會員


發表:18
回覆:88
積分:56
註冊:2002-07-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-27 10:35:55 IP:61.218.xxx.xxx 未訂閱
■■■■■■■標頭檔■■■■■■■■■
//-------------------------------------------------------------------    #ifndef ImageExH
#define ImageExH
//--------------------------------------------------------------------
#include 
#include 
#include 
#include     typedef void __fastcall(__closure *CB_Action)(TObject *Sender);    //--------------------------------------------------------------------
class PACKAGE TImageEx : public TImage
{
private:           CB_Action  FOnMouseLeave;
       CB_Action  FOnMouseEnter;    protected:           void __fastcall FMouseLeave(TMessage &Msg);
       void __fastcall FMouseEnter(TMessage &Msg);           BEGIN_MESSAGE_MAP
         MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage, FMouseLeave)
         MESSAGE_HANDLER(CM_MOUSEENTER, TMessage, FMouseEnter)
       END_MESSAGE_MAP(TImage)    public:
        __fastcall TImageEx(TComponent* Owner);
__published:        __property CB_Action {read= FOnMouseLeave,write= FOnMouseLeave};
    __property CB_Action {read= FOnMouseEnter,write= FOnMouseEnter};    };
//--------------------------------------------------------------------
#endif
■■■■■■■■.cpp■■■■■■■■■■■■■■
//---------------------------------------------------------------------------    #include     #pragma hdrstop    #include "ImageEx.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// ValidCtrCheck is used to assure that the components created do not have
// any pure virtual functions.
//    static inline void ValidCtrCheck(TImageEx *)
{
        new TImageEx(NULL);
}
//---------------------------------------------------------------------------
__fastcall TImageEx::TImageEx(TComponent* Owner)
        : TImage(Owner)
{
}
//---------------------------------------------------------------------------
namespace Imageex
{
        void __fastcall PACKAGE Register()
        {
                 TComponentClass classes[1] = {__classid(TImageEx)};
                 RegisterComponents("Samples", classes, 0);
        }
}
//---------------------------------------------------------------------------
void __fastcall TImageEx::FMouseLeave(TMessage &Msg)
{
  FOnMouseLeave(this);
}
//---------------------------------------------------------------------------
void __fastcall TImageEx::FMouseEnter(TMessage &Msg)
{
  FOnMouseEnter(this);
}
昨天在逛 k top 討論區 研究 windows message 如何套用在 vcl 身上 心血來潮玩了一下 希望對各位有所幫助 以上程式碼僅在 windows 2000/BCB 6.0 測試過 若程式碼有不清楚的地方 還請各位先進告知.. ---------------------- 台上一分鐘,台下十年功 發表人 -
------
台上一分鐘,台下十年功
附加檔案:55483_sample.zip
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-27 12:46:59 IP:220.139.xxx.xxx 未訂閱
很讚! < > 下次記得在貼 >[<>><>] // >[<>/><>] 的方式來貼原始碼就更讚了 < > < href="http://dllee.ktop.com.tw" target="blank">吃軟也吃硬 dllee.ktop.com.tw 視動科技 VMASK - ViewMove Automation Software Kernel 發表人 - dllee 於 2004/08/27 12:56:34
------
http://www.ViewMove.com
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-27 13:33:20 IP:61.218.xxx.xxx 未訂閱
我來幫忙修正一下

■■■■■■■標頭檔■■■■■■■■■
//-------------------------------------------------------------------    #>
#>
#>
#>    >    #>    < class="code">/*生活是一種藝術,用心生活享受生活*/
ray24
中階會員


發表:18
回覆:88
積分:56
註冊:2002-07-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-27 16:30:20 IP:61.218.xxx.xxx 未訂閱
原來如此...要加下面的Tag
// BCB 的程式碼
恩恩..下次我會注意的 各位老大..謝謝喔 ---------------------- 台上一分鐘,台下十年功
------
台上一分鐘,台下十年功
xfile
初階會員


發表:21
回覆:80
積分:25
註冊:2004-10-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-28 17:58:37 IP:220.130.xxx.xxx 未訂閱
引言: 我來幫忙修正一下 < face="Verdana, Arial, Helvetica"> 奇怪,我用這個元件的時候 在沒有載入圖形的狀況下只要滑鼠經過元件的外框, 就會引發錯誤
xfile
初階會員


發表:21
回覆:80
積分:25
註冊:2004-10-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-11-28 17:59:18 IP:220.130.xxx.xxx 未訂閱
引言: 我來幫忙修正一下 < face="Verdana, Arial, Helvetica"> 奇怪,我用這個元件的時候 在沒有載入圖形的狀況下只要滑鼠經過元件的外框, 就會引發錯誤 請多放幾個這元件試試看
ray24
中階會員


發表:18
回覆:88
積分:56
註冊:2002-07-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-11-29 14:22:18 IP:220.135.xxx.xxx 未訂閱
剛剛測試了一下    應該是若沒指定 void __fastcall ImageEx1MouseLeave(TObject *Sender); 或 void __fastcall ImageEx1MouseEnter(TObject *Sender); 函式時....程式會出現記憶體錯誤的情況 是BUG 啦~~~~ 所以要再 > ---------------------- 台上一分鐘,台下十年功
------
台上一分鐘,台下十年功
ray24
中階會員


發表:18
回覆:88
積分:56
註冊:2002-07-24

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-11-29 14:44:18 IP:220.135.xxx.xxx 未訂閱
請再CPP檔中加上紅標字的內容就可以了 或者直接下載檔案即是最新的..我已經更新過了 < class="code"> //-------------------------------------- void __fastcall TImageEx::FMouseLeave(TMessage &Msg) { if(FOnMouseLeave) FOnMouseLeave(this); } //--------------------------------------- void __fastcall TImageEx::FMouseEnter(TMessage &Msg) { if(FOnMouseEnter) FOnMouseEnter(this); } xfile 感謝您幫我找BUG喔!! 發表人 -
------
台上一分鐘,台下十年功
xfile
初階會員


發表:21
回覆:80
積分:25
註冊:2004-10-02

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-12-06 02:00:03 IP:219.80.xxx.xxx 未訂閱
引言: 請再CPP檔中加上紅標字的內容就可以了 或者直接下載檔案即是最新的..我已經更新過了 < class="code"> //-------------------------------------- void __fastcall TImageEx::FMouseLeave(TMessage &Msg) { if(FOnMouseLeave) FOnMouseLeave(this); } //--------------------------------------- void __fastcall TImageEx::FMouseEnter(TMessage &Msg) { if(FOnMouseEnter) FOnMouseEnter(this); } xfile 感謝您幫我找BUG喔!! 發表人 - >< face="Verdana, Arial, Helvetica"> 哪裡哪裡,找 bug 比改 bug 簡單多了 這元件很實用,改得更完美對大家都有好處
casper97
一般會員


發表:13
回覆:18
積分:11
註冊:2004-12-30

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-01-18 19:32:26 IP:211.75.xxx.xxx 未訂閱
ray24 兄: 正苦於不知要如何增加元件的 Even , 參考您的大作, 有了初步的認識。 重點是這個元件很好用! 人類因夢想而偉大,但也要吃飯才會長大!
schwantz
一般會員


發表:4
回覆:4
積分:1
註冊:2005-09-15

發送簡訊給我
#11 引用回覆 回覆 發表時間:2008-12-06 15:35:54 IP:118.165.xxx.xxx 訂閱
雖然BCB2009 DELPHI2009已經新增提供mouseEnter mouseLeave Event
但還是感謝提供這麼好的範例,獲益良多
系統時間:2024-11-24 1:08:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!