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

請問如何指定物件的事件後還包含原有的事件?

答題得分者是:danny
rookie_me
一般會員


發表:4
回覆:3
積分:1
註冊:2007-05-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-07-27 09:37:16 IP:211.20.xxx.xxx 訂閱
我寫了一個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;
編輯記錄
rookie_me 重新編輯於 2007-07-27 11:48:48, 註解 無‧
rookie_me 重新編輯於 2007-07-27 11:49:56, 註解 無‧
danny
版主


發表:100
回覆:522
積分:595
註冊:2002-03-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-07-27 10:51:17 IP:211.76.xxx.xxx 訂閱
無法理解你這樣作的意義, 以下可能是你要的
另外, 事件共用在設計時就可以直接指定, 這個你應該知道吧!

===================引 用 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
? MyKeyDown(Edit1); // 這裡已經指定新事件給 Edit1, 原來的 Edit1KeyDown 已經失去主控權
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-07-27 11:45:15 IP:211.20.xxx.xxx 訂閱
會這樣做的原因是
有些共用的事件,如按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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-07-27 11:57:48 IP:211.76.xxx.xxx 訂閱
那麼就用下方式判斷就好了啊!

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