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

不同 form 共用 event 得方法

答題得分者是:jessechan
yhk
一般會員


發表:11
回覆:7
積分:3
註冊:2002-10-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-11-21 13:51:12 IP:61.220.xxx.xxx 未訂閱
請問大家, 拍謝 ^_^ 我問題真多~~ ;p 我想要在一個 Form 裡面定義一個 OnKeyPress 的物件 然後讓其他的 Form 可以共用 比如說在 frm1 void __fastcall Tfrm1::CheckNumKeyPress(TObject *Sender, char &Key) { if(Key>'0'&&Key <'9') MessageBeep(MB_OK); else Key=0; } 我在 .h 裡面 宣告 __published: ... void __fastcall CheckNumKeyPress(TObject *Sender, char &Key); ... 那麼在 frm2 的任一個 Edit 物件我要去設定他的 KeyPress(有 include frm1.h) 照道理講他應該會出現 frm1->CheckNumKeyPress 給我選才對 但卻看不到... 而且我擺在 __public: 也是一樣, 只有在 frm1 裡面的 Edit 物件可以通用 之前我 try 過 不同的 form 共用一個 PopupMenu1 屬性就可以說.... 大家有何想法?
lcsboy
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-11-21 14:09:09 IP:211.23.xxx.xxx 未訂閱
宣告在全域中! 然後再每個元件都assign到那一個全域的不就行了
jessechan
版主


發表:109
回覆:394
積分:254
註冊:2002-04-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-11-21 14:20:52 IP:203.75.xxx.xxx 未訂閱
我的作法是宣告一個事件函數指標的變數, void __fastcall (__closure *TestKeyPress)(TObject *Sender, char &Key); 然後將 TestKeyPress = Form1->OnKeyPress; 再來作一些必要的處理把 Unit1.h include 到 Form2 (記得上面變數要加 extern). 就可以指定 Form2->OnKeyPress = TestKeyPress; Jesse Chan
------
Jesse Chan
yhk
一般會員


發表:11
回覆:7
積分:3
註冊:2002-10-29

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-11-22 14:38:35 IP:61.220.xxx.xxx 未訂閱
我發如果我在 Form1 宣告好我要的 event 如 .cpp==== void __fastcall TMain::CheckHexKeyPress(TObject *Sender, char &Key) { if((Key>='0'&&Key <='9')||(Key>='A'&&Key <='F')||(Key>='a'&&Key <='f')) MessageBeep(MB_OK); else Key=0; } .h==== void __fastcall TMainForm::CheckHexKeyPress(TObject *Sender,char &Key); 在 Form2 的相關物件可以直接 assign 如 Form2->edtTest->Form1->CheckHexKeyPress; 但是有一點我要說的是..在 Form2 的 edtTest 屬性表 Object Inspector 的 event 看不到 Form1 的 Event.. 所以只能用程式直接 assign.... 給大家參考 ^____^
系統時間:2024-04-26 16:24:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!