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

關於繼承+KeyEvent的問題,想先執行類別的KeyDown,再執行物件的KeyDown

缺席
arthur1993
一般會員


發表:5
回覆:2
積分:1
註冊:2006-07-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-07-11 23:30:50 IP:114.47.xxx.xxx 訂閱
 小弟想學習自 

TCustomMaskEdit衍生一個子類別叫TDateMaskEdit
[code cpp]
class PACKAGE TDateMaskEdit : public TCustomMaskEdit
{
__publish:
__property OnKeyDown;
protected:
DYNAMIC void __fastcall KeyDown(System::Word &Key, Classes::TShiftState Shift);
pubic:
}
void __fastcall TDateMaskEdit::KeyDown(System::Word &Key, Classes::TShiftState Shift)
{
ShowMessage("In Class");
}
[/code]
在應用程式Form1上,建立一個名為DateMaskEdit1的物件
[code cpp]
void __fastcall TForm1::DateMaskEdit1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{ShowMessage("In Apps");}[/code]
想要的結果是 先顯示 "In Class" 再顯示 "In Apps"

不過小弟我,只能顯示 "In Class" 或顯示 "In Apps"
就是不能先顯示 "In Class" 再顯示 "In Apps"
請問各位先進,小弟是那裡寫錯了??請不吝指教
謝謝
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-07-12 10:17:17 IP:203.75.xxx.xxx 未訂閱
函式不就已經被你覆蓋了嗎?
當然就只能顯示覆蓋後的指令。
arthur1993
一般會員


發表:5
回覆:2
積分:1
註冊:2006-07-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-07-15 02:07:24 IP:218.173.xxx.xxx 訂閱
小弟乃駑鈍之才
經過幾天研究,才終於試出來了
來個自問自答

在 MyMaskEdit.HPP
TMyMaskEdit : puclic TCustomMaskEdit
{
void KeyDown( System::Word &Key, TShiftState Shift );
}

在 MyMaskEdit.CPP
void TMyMaskEdit::KeyDown( System::Word &Key, TShiftState Shift )
{
ShowMessage(" In CLASS");

if( 0nKeyDown ) 0nKeyDown( this, Key, Shift ); <<<-----就是這一行

}

在 Unit1.CPP中
void WORD &Key, TShiftState Shift)
{
ShowMessage("In Apps");
}

這樣一來就可以先觸發
"In Class"

再觸發
"In Apps"

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