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

動態生成控制項問題

答題得分者是:jcjroc
jean2004
初階會員


發表:69
回覆:80
積分:39
註冊:2004-12-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-11-05 17:55:43 IP:222.135.xxx.xxx 未訂閱
動態生成一控制項,代碼如下:      SnakeTimer = new TSnakeTimer;
  SnakeTimer->Interval = 300;
  SnakeTimer->OnTimer = SnakeTimerTimer;
  SnakeTimer->OnTimer = SnakeTimerTimer;
  SnakeTimer->TriggerTimer();
  SnakeTimer->DestroyTimer();    各位先進,最後那兩行是什麼意思?      SnakeTimer->TriggerTimer();//什麼意思?
  SnakeTimer->DestroyTimer();//什麼意思?    另外,這個代碼在.EXE表單裏很正常,但是在.DLL表單裏運行,
滑鼠指標必須在表單上移動這兩句代碼才有效,滑鼠指標離開表
單這個代碼就沒有作用了,何故?往各位先進不吝賜教     
發表人 - jean2004 於 2005/11/05 17:57:25 發表人 - jean2004 於 2005/11/05 17:58:37
haman
中階會員


發表:46
回覆:137
積分:56
註冊:2005-03-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-11-05 20:30:37 IP:211.76.xxx.xxx 未訂閱
SnakeTimer這個東西是你自已新增的控制項嗎? 我在help跟commponent list裡都找不到, 如果你是自已定義的,方便把code po上來嗎? 如果是用別人寫好的,你可能要去找作者或是那家公司了 就字面意思來看, SnakeTimer->TriggerTimer();//翻成觸發計時,應該是相當於計時開始吧(個人猜測) SnakeTimer->DestroyTimer();//翻成毀滅(或消滅)計時 Destroy這個字常用在物件釋放的類似事件中 ==================================== 懂的不多,卻想學的更多,搞得不自覺的將問題複雜化@@
jean2004
初階會員


發表:69
回覆:80
積分:39
註冊:2004-12-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-11-06 12:43:37 IP:222.135.xxx.xxx 未訂閱
感謝haman先進回復,關於: SnakeTimer->TriggerTimer(); SnakeTimer->DestroyTimer(); 兩個我已明白,是自定義了兩個事件,我在程式中已經找到了,但是現在還不能結貼,因為這個代碼在.EXE表單裏很正常,但是在.DLL表單裏運行,滑鼠指標必須在表單上移動這兩句代碼才有效,滑鼠指標離開表單這個代碼就沒有作用了,我還沒有找到原因,這個代碼在.EXE裏很正常,轉移到.DLL裏就不行了,還請知道的先進指點迷津
jcjroc
高階會員


發表:21
回覆:279
積分:115
註冊:2002-09-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-11-06 23:02:24 IP:60.248.xxx.xxx 未訂閱
唉!!在DLL 中new一個Form時,你一定沒設定它的Owner吧???? 另:如果呼叫端不是BCB時而你的TSnakeTimer是繼承自TTimer或是用WM_TIME訊息來觸發的時候,請檢查呼叫端AP的Message qeue是否有問題.
jean2004
初階會員


發表:69
回覆:80
積分:39
註冊:2004-12-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-11-07 08:36:46 IP:222.135.xxx.xxx 未訂閱
jcjroc先進,我在DLL中是這樣載入DLL表單的: Form2=new TForm2(Application); Form2->ShowModal(); delete Form2; 不知道要如何設置它的Owner,還請指點迷津 我的DLL是BCB程式調用的 發表人 - jean2004 於 2005/11/07 08:45:18
jean2004
初階會員


發表:69
回覆:80
積分:39
註冊:2004-12-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-11-07 08:42:50 IP:222.135.xxx.xxx 未訂閱
目前我通過不斷的刷新控制項(滑鼠在表單上移動就好用了,大概也是因為控制項刷新了)來維持程式運行,感覺是不倫不類,沒有從本質上解決問題,很苦惱 另外,ApplicationEvents這個控制項在DLL表單中好像沒有任何反應,在.EXE裏卻好好的,煩勞各位給個代碼吧,我已數天寢食難安,麻煩各位了
jcjroc
高階會員


發表:21
回覆:279
積分:115
註冊:2002-09-18

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-11-07 16:13:58 IP:211.75.xxx.xxx 未訂閱
從呼叫端把Applicatio傳進去給DLL用
jean2004
初階會員


發表:69
回覆:80
積分:39
註冊:2004-12-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-11-08 08:17:40 IP:222.135.xxx.xxx 未訂閱
jcjroc先進我是對與DLL傳遞資訊不瞭解,我是這樣調用DLL中的表單的: void (*CustomerForm)(char *); HINSTANCE hInst=LoadLibrary("..\\Project2.dll"); (FARPROC &)CustomerForm=GetProcAddress(hInst,"CustomerForm"); CustomerForm(); FreeLibrary(hInst); 我要如何傳遞參數給DLL才能使DLL中的表單子類化?
jcjroc
高階會員


發表:21
回覆:279
積分:115
註冊:2002-09-18

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