請問如何指定物件的事件後還包含原有的事件? |
答題得分者是:danny
|
rookie_me
一般會員 發表:4 回覆:3 積分:1 註冊:2007-05-25 發送簡訊給我 |
我寫了一個Edit的事件
myEvent.pas …… procedure newKeyDown; begin //想公用的keyDown end; <textarea cols="60" rows="10" class="delphi" name="code"> procedure MyKeyDown(edit:TEdit); begin edit.onKeyDown:=newKeyDown; end; </textarea> 在需使用的form中 xxxform.pas procedure xxxform.FormCreate(Sender: TObject); begin MyKeyDown(Edit1); end; procedure xxxform.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin //這裡寫的事件就不會執行,要如何才能都執行呢? end; |
danny
版主 發表:100 回覆:522 積分:595 註冊:2002-03-11 發送簡訊給我 |
無法理解你這樣作的意義, 以下可能是你要的
另外, 事件共用在設計時就可以直接指定, 這個你應該知道吧! ===================引 用 rookie_me 文 章=================== 我寫了一個Edit的事件 myEvent.pas …… procedure newKeyDown; begin ? //想公用的keyDown end; procedure MyKeyDown(edit:TEdit); begin ? edit.onKeyDown:=newKeyDown; end; 在需使用的form中 xxxform.pas procedure xxxform.FormCreate(Sender: TObject); begin ? end; procedure MyNewKeyDown(edit:TEdit); begin // do something end; procedure xxxform.Edit1KeyDown(Sender: TObject; var Key: Word; ? Shift: TShiftState); begin MyNewKeyDown(Edit1); ? //這裡寫的事件就不會執行,要如何才能都執行呢? end;
------
將問題盡快結案也是一種禮貌! |
rookie_me
一般會員 發表:4 回覆:3 積分:1 註冊:2007-05-25 發送簡訊給我 |
會這樣做的原因是
有些共用的事件,如按F2跳小窗, 但某些edit 又需加上特別的事件,如 按F3做其他事 myEvent.pas …… procedure newKeyDown; begin //想公用的keyDown,按F2 跳小視窗 end; xxxform.pas procedure xxxform.FormCreate(Sender: TObject); begin MyKeyDown(Edit1); end; procedure xxxform.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin //按F3做其他事 end; |
danny
版主 發表:100 回覆:522 積分:595 註冊:2002-03-11 發送簡訊給我 |
那麼就用下方式判斷就好了啊!
<textarea class="delphi" rows="10" cols="60" name="code"> if (Sender = Edit1) then begin // 按F2跳小窗 if (Key = VK_F2) then .......... end; if (Sender = Edit2) then begin // 按F3做其他事 if (Key = VK_F3) then ..... end; </textarea> ===================引 用 rookie_me 文 章=================== 會這樣做的原因是 有些共用的事件,如按F2跳小窗, 但某些edit 又需加上特別的事件,如 按F3做其他事 myEvent.pas …… procedure newKeyDown; begin ? //想公用的keyDown,按F2 跳小視窗 end; xxxform.pas procedure xxxform.FormCreate(Sender: TObject); begin ? MyKeyDown(Edit1); end; procedure xxxform.Edit1KeyDown(Sender: TObject; var Key: Word; ? Shift: TShiftState); begin ? //按F3做其他事 end;
------
將問題盡快結案也是一種禮貌! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |