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

怎麼得知是哪一個物件的觸發事件??

 
Littleasss
一般會員


發表:12
回覆:6
積分:3
註冊:2006-08-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-09-17 18:35:21 IP:140.122.xxx.xxx 未訂閱
我是自己new一個物件比如說是TButton *button[100],先把這100個button new出來,並且加上一行 "button[i]->OnClick = Form1->button_click"再多寫一個觸發事件,在.h檔裡加 void __fastcall button_click(TObject *Sender); 在.cpp檔裡加void __fastcall Form1::button_click(TObject *Sender) { .......} 就在.cpp的這個觸發事件裡面我要怎麼得知是哪一個button被按下的呢?因為每個button的觸發都是在同一個副程式裡面。
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-09-17 20:48:41 IP:211.72.xxx.xxx 未訂閱


===================引 用 文 章===================
我是自己new一個物件比如說是TButton *button[100],先把這100個button new出來,並且加上一行 "button[i]->OnClick = Form1->button_click"再多寫一個觸發事件,在.h檔裡加 void __fastcall button_click(TObject *Sender); 在.cpp檔裡加void __fastcall Form1::button_click(TObject *Sender) { .......} 就在.cpp的這個觸發事件裡面我要怎麼得知是哪一個button被按下的呢?因為每個button的觸發都是在同一個副程式裡面。

Ans: 可加一行 button[i]->Tag = i;

然後於 Form1->button_click() 設 int ixBtn = ((TButton *)Sender)->Tag;

以 ixBtn 便可判斷是按下那個 button.

Littleasss
一般會員


發表:12
回覆:6
積分:3
註冊:2006-08-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-09-17 22:25:07 IP:140.122.xxx.xxx 未訂閱
((TButton *)Sender)這就是我要的阿!!!感謝感謝~~~但是對Sender我也不是很了解,到底Sender是做什麼的呢?
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-09-17 23:41:00 IP:211.72.xxx.xxx 未訂閱


===================引 用 文 章===================
((TButton *)Sender)這就是我要的阿!!!感謝感謝~~~但是對Sender我也不是很了解,到底Sender是做什麼的呢?

Ans: Sender 是指呼叫這個 Function 之 TObject. 因設計者已知 button_click() 是專供

button[0]....button[99] 呼叫的, 故可以直接轉型為 TButton,

否則尚須 用 try { some expr; } cath (...) { Error Procedure expr; } 的方式防止 Error.

或用 if (Sender->ClassnameIs("TButton")) { some expr; } 等方式判定 Sender 是

那一種元件.

系統時間:2024-11-23 11:59:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!