不同 form 共用 event 得方法 |
答題得分者是:jessechan
|
yhk
一般會員 發表:11 回覆:7 積分:3 註冊:2002-10-29 發送簡訊給我 |
請問大家,
拍謝 ^_^ 我問題真多~~ ;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 發送簡訊給我 |
|
jessechan
版主 發表:109 回覆:394 積分:254 註冊:2002-04-05 發送簡訊給我 |
我的作法是宣告一個事件函數指標的變數,
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 發送簡訊給我 |
我發如果我在 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.... 給大家參考 ^____^
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |