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

關於Properties的問題

尚未結案
ivanxyz
一般會員


發表:7
回覆:10
積分:3
註冊:2004-03-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-10 18:44:08 IP:210.202.xxx.xxx 未訂閱
大家好請教一個問題, 我自己寫了一個元件下面是元件部分的宣告和function,當我執行程式時我沒做 任何動作SetAutoCheck就會被呼叫一次,我要怎樣才能知道call SetAutoCheck 是程式開始執行的那一次,還是執行中我去改AutoCheck時被呼叫的? __published: __property bool AutoCheck={read=FAutoCheck,write=SetAutoCheck,default= 0}; void __fastcall TTest::SetAutoCheck(bool Value) { FAutoCheck = Value; }
Zard
尊榮會員


發表:24
回覆:396
積分:539
註冊:2003-11-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-10 20:46:59 IP:61.64.xxx.xxx 未訂閱
引言: 大家好請教一個問題, 我自己寫了一個元件下面是元件部分的宣告和function,當我執行程式時我沒做 任何動作SetAutoCheck就會被呼叫一次,我要怎樣才能知道call SetAutoCheck 是程式開始執行的那一次,還是執行中我去改AutoCheck時被呼叫的? __published: __property bool AutoCheck={read=FAutoCheck,write=SetAutoCheck,default= 0}; void __fastcall TTest::SetAutoCheck(bool Value) { FAutoCheck = Value; }
應該是您有設定 AutoCheck 才會觸發 SetAutoCheck 吧. 不然的話就用Flag擋住第一次.
void  __fastcall TTest::SetAutoCheck(bool Value)
{
  
  static bFirstTimeFlag = TRUE;
  if (bFirstTimeFlag) 
  {
    bFirstTimeFlag = FALSE;
    return;
  }
  
  FAutoCheck = Value;
}
allenchan
資深會員


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-10 20:49:10 IP:61.230.xxx.xxx 未訂閱
你在紅字那一行下一個中斷點,當程式一進到中斷點,你就看 BCB IDE 上頭,選 View -> Debug Windows -> Call Stack,就可以看到是怎麼進來的了。
void __fastcall TTest::SetAutoCheck(bool Value)
{
  FAutoCheck = Value;
}
Zard
尊榮會員


發表:24
回覆:396
積分:539
註冊:2003-11-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-10 20:49:46 IP:61.64.xxx.xxx 未訂閱
抱歉漏打BOOL, 重貼
void  __fastcall TTest::SetAutoCheck(bool Value)
{
  
  static BOOL bFirstTimeFlag = TRUE;
  if (bFirstTimeFlag) 
  {
    bFirstTimeFlag = FALSE;
    return;
  }
  
  FAutoCheck = Value;
}
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-10 23:00:50 IP:211.76.xxx.xxx 未訂閱
引言: 抱歉漏打BOOL, 重貼
void  __fastcall TTest::SetAutoCheck(bool Value)
{
  
  static BOOL bFirstTimeFlag = TRUE;
  if (bFirstTimeFlag) 
  {
    bFirstTimeFlag = FALSE;
    return;
  }
  
  FAutoCheck = Value;
}
把bFirstTimeFlag宣告為成員變數會是比較好的做法…。如果用static的話,第二個產生的物件就沒法子抓到第一次呼叫了。
StrongLemon
高階會員


發表:10
回覆:166
積分:105
註冊:2004-04-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-13 03:50:56 IP:211.74.xxx.xxx 未訂閱
SetAutoCheck會被呼叫就是你設定AutoCheck時會被呼叫。 而通常我們會在裡面寫一些Code做某些事。 如果你希望元件起始時並不要做某些事的話,則直接去對FAutoCheck做動作。
ivanxyz
一般會員


發表:7
回覆:10
積分:3
註冊:2004-03-03

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-13 11:17:02 IP:210.202.xxx.xxx 未訂閱
謝謝各位的幫忙
系統時間:2024-11-25 4:59:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!