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

給定一個變數,如何讓它賦予message event呢?

尚未結案
okeyla
一般會員


發表:51
回覆:20
積分:19
註冊:2003-06-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-22 23:48:24 IP:211.76.xxx.xxx 未訂閱
As title,希望讓此變數在變化的時候,程式做些事情, 可是又不想利用timer去實做... 可以告訴我該如何做嗎?thanks!
dllee
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-05 21:08:31 IP:211.76.xxx.xxx 未訂閱
在 Unit1.h 檔內的 Form1 private, public 加入以下的宣告:
class TForm1 : public TForm
{
private:
  int FValue;
  void __fastcall SetValue(int NewValue);
public:
  __property int Value={read=FValue,write=SetValue};
};
在 Unit1.cpp 加入
void __fastcall TForm1::SetValue(int NewValue)
{
  if(FValue!=NewValue)
  {
     FValue=NewValue;
     // 在此再加上您要作的事,如:
     ShowMessage(IntToStr(FValue));
  }
}
如此在程式中可以直接使用 Value 來讀取 FValue 目前的數值,而當對 Value 寫入資料時,則會交由 SetValue 函式來處理,在數值改變時,可以再加入想要做的事。使用範例:
void __fastcall TForm1::Button3Click(TObject *Sender)
{
  Value=100;
  Value=1000;
  Value=10;
}
沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com
kwu
中階會員


發表:10
回覆:57
積分:58
註冊:2003-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-06 09:07:13 IP:61.63.xxx.xxx 未訂閱
引言: As title,希望讓此變數在變化的時候,程式做些事情, 可是又不想利用timer去實做... 可以告訴我該如何做嗎?thanks!
okeyla你好: 請參考下面連結 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=44151
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-06 09:59:21 IP:61.63.xxx.xxx 未訂閱
引言:
……    public:
  __property int Value={read=FValue,write=SetValue};
};
在 Unit1.cpp 加入
void __fastcall TForm1::SetValue(int NewValue)
{    ……  
dllee版主你好: 前幾篇剛好也有這樣的問題,好像是kwu兄答覆的,對於你們的寫法不是很有概念,查過說明也有看沒有懂(果然是中國人),所以還是直接問的比較快吧,請賜教! >< >< >!
kwu
中階會員


發表:10
回覆:57
積分:58
註冊:2003-10-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-06 11:26:04 IP:61.63.xxx.xxx 未訂閱
引言:
引言:
……    public:
  __property int Value={read=FValue,write=SetValue};
};
在 Unit1.cpp 加入
void __fastcall TForm1::SetValue(int NewValue)
{    ……  
dllee版主你好: 前幾篇剛好也有這樣的問題,好像是kwu兄答覆的,對於你們的寫法不是很有概念,查過說明也有看沒有懂(果然是中國人),所以還是直接問的比較快吧,請賜教! >< >< >! < face="Verdana, Arial, Helvetica"> m8815010你好: 你所提出的問題以我的觀念整理如下: 因為 int FValue 宣告在 private 是 TForm1 類別的私有變數,類別本身可以存取此變數,使用此類別時就無法存取此變數了,所以將其設計成 __priperty 以提供使用此類別時,可存取私有變數的對外管道 你把 __property int Value = {read = FValue, write = SetValue}; 寫成 __property int Value = {read = Value, write = Value}; 當然不行,因為 __property int Value 的 Value 是此類別的屬性名稱,就好像是 Form1->Width 的 Width 是此類別的屬性一樣 read = FValue 是指可以將值由 Form1->Value 讀出此類別的私有變數 FValue 的值 例:int v = Form1->Value; write = SetValue 是指可以透過 Form1->Value 的屬性將值寫入此類別的私有變數 FValue 例:Form1->Value = 100; write 是透過此類別的成員函數 SetValue() 來將值寫入 FValue 也可以寫成 __property int Value = {read = FValue, write = FValue}; 這樣 write 就會跟 read 一樣直接將值寫入 FValue 若有不對之處尚請各位大大多多指教
dllee
站務副站長


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-02-06 11:50:12 IP:220.139.xxx.xxx 未訂閱
kwu 說的都對  其實這樣的用法也是最近在學會用的,而我學的方法,是去參考內建 > > )都不知道而已。 有興趣的可以參考一下 >沒空更新的網頁... href="http://dllee.adsldns.org">http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-02-09 16:23:22 IP:61.63.xxx.xxx 未訂閱
引言: kwu 說的都對 其實這樣的用法也是最近在學會用的,而我學的方法,是去參考內建 > > )都不知道而已。 < face="Verdana, Arial, Helvetica"> 嗯…感謝dllee兄及kwu兄的說明,受教< >< >!
系統時間:2024-07-01 16:13:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!