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

元件呼叫元件事件

尚未結案
Ming Lin
一般會員


發表:27
回覆:53
積分:21
註冊:2003-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-26 17:43:17 IP:61.57.xxx.xxx 未訂閱
請問我想在void()內呼叫 void __fastcall TForm1::Timer1Timer(TObject *Sender) 應該如何用ㄋ?    像Button1呼叫Button2Click 是 void __fastcall TForm1::Button1Click(TObject *Sender) {     Button2Click(Sender); }    那為何上面那個不行ㄋ 請教教我
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-26 17:47:43 IP:61.221.xxx.xxx 未訂閱
Ming Lin, 您好 請改為這樣試試看。 Button2Click(this); 補充一下: 這樣寫好像會比較好 Button2->Click(); ================================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之 發表人 - tech_state 於 2003/06/26 18:01:22
lcsboy
版主


發表:87
回覆:622
積分:394
註冊:2002-06-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-26 18:59:20 IP:63.84.xxx.xxx 未訂閱
引言: 請問我想在void()內呼叫 void __fastcall TForm1::Timer1Timer(TObject *Sender) 應該如何用ㄋ? 像Button1呼叫Button2Click 是 void __fastcall TForm1::Button1Click(TObject *Sender) { Button2Click(Sender); } 那為何上面那個不行ㄋ 請教教我 < face="Verdana, Arial, Helvetica"> 正解: Button2Click(NULL); 也就是說, 不知道丟什麼進去時, 就丟個
Ming Lin
一般會員


發表:27
回覆:53
積分:21
註冊:2003-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-26 19:30:26 IP:61.57.xxx.xxx 未訂閱
謝謝兩位ㄉ回答 可以compile 但動作有問題 正常應該要我按button才會動作 可能是因為我呼叫ㄉ是time 不是button 所以會發生程式一跑完馬上就動作ㄌ 請教教我
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-26 19:45:06 IP:140.135.xxx.xxx 未訂閱
Ming Lin您好:    先將Timer的Enable設定成false    在Button的OnClick事件中再讓Timer的Enable=true;    要停止時,再改成false;    不曉得有沒有誤會您的意思    順心 <>~我也是在學習的階段,所以請您多多見諒與指教~
dllee
站務副站長


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-06-26 23:22:18 IP:61.224.xxx.xxx 未訂閱
taishyang 版主所說的應該是您要的吧。    其實,那個 Sender 是看您想要如何利用的,就字面上的意思, Sender 就是寄件人,也就是發出訊息、觸發事件的人。 例如:    void __fastcall TForm1::Button1Click(TObject *Sender) { }    內定,我們在表單上放個 TButton ,對它按兩下就會有以上的 code ,而真正在執行時,我們在 Button1 上 Click 一下,Button1Click() 就會被叫用,而此時的輸入參數 Sender 就會是 Button1 的指標。 我們可以將很多個按鈕的 OnClick 事件都指定到這個 Button1Click(),而如果我們需要對不同按鈕作不同的回應時,就可以由這個 Sender 得知是那個按鈕觸發的,例如:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  if(Sender==Button1)
     ShowMessage("Button1 Clicked!");
  else if(Sender==Button2)
     ShowMessage("Button2 Clicked!");
  else if(Sender==Button3)
     ShowMessage("Button3 Clicked!");
}
在這樣的情況下,直接叫用 Button1Click() 時,輸入的 Sender 參數就有作用,例如: Button1Click(Button1); 等於模擬 Button1 按一下 Button1Click(Button3); 等於模擬 Button3 按一下 而如果輸入 Button1Click(NULL); 從上述的 code 自然就等於沒有作用。 想要在 Button1Click 叫用 Timer1Timer 也是可以的
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Timer1Timer(Timer1); // 模擬是 Timer1 自己觸發
}
當然,如果您要這樣用,那就不需要用 Timer 了,因為 Timer 是定時觸發的,如果要作 Timer 控制,就如 taishyang 版主所說
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Timer1->Enabled = !Timer1->Enabled; // 切換 Timer1 致能狀態
}
只要 Timer1->Enabled 是 true , Timer1Timer() 就定時被叫用。 沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com
Ming Lin
一般會員


發表:27
回覆:53
積分:21
註冊:2003-04-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-06-27 09:08:36 IP:61.57.xxx.xxx 未訂閱
嗯~可以ㄌ 真是謝謝大家 對我都很有幫助 但因為dllee比較詳細 學到比較多 所以我投他
系統時間:2024-05-06 23:06:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!