如何在运行期间,实现一个BUTTON的ONCLICK事件是另两个BUTTON事件的合集? |
答題得分者是:Stallion
|
aKnightChen@Hotmail.com
一般會員 發表:62 回覆:57 積分:23 註冊:2003-06-13 發送簡訊給我 |
我3个BUTTON,
第1个BUTTON的on_click事件是: showmessage('1'); 第2个BUTTON的on_click事件是: showmessage('2'); 第3个BUTTON的on_click事件空, 现在,我想在程序运行时(不是在设计期),执行一段代码, 来实现第三个Button的on_click事件是: showmessage('1'); showmessage('2'); 即,是前两个BUTTON的on_click合集. 这段代码我该怎么写? 編輯記錄
aKnightChen@Hotmail.com 重新編輯於 2007-07-16 15:45:13, 註解 论坛不允许onclick字符出现,,,晕‧
taishyang 重新編輯於 2007-07-16 15:46:18, 註解 將文章分類成[問題]‧ |
aKnightChen@Hotmail.com
一般會員 發表:62 回覆:57 積分:23 註冊:2003-06-13 發送簡訊給我 |
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('1'); end; procedure TForm1.Button2Click(Sender: TObject); begin ShowMessage('2'); end; procedure TForm1.Button3Click(Sender: TObject); begin //目前没有事件(在设计期间,是不允许在这里写事件,否则,与本题意不符), //想实现以下两个功能(但要求通过点击Button4来实现设置它的事件) //Button1Click(Sender); //Button2Click(Sender); end; procedure TForm1.Button4Click(Sender: TObject); begin //我要在这里写代码,实现Button3的事件是:执行Button1.Click,Button2.Click //即,最终效果是,showmessage('1');ShowMessage('2'); end; end.
編輯記錄
aKnightChen@Hotmail.com 重新編輯於 2007-07-16 16:13:48, 註解 無‧
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
aKnightChen@Hotmail.com
一般會員 發表:62 回覆:57 積分:23 註冊:2003-06-13 發送簡訊給我 |
好,我讲一下我真实的使用目的,
我有个程序,我想for i=0 to Screen.FormCount-1 的方法, 再遍历所有FORM,如果有StringGrid控件的话, 就看看它有没有PopupMenu,如果有的话,就再增加几个'我自已的定义的通用'PopupMenu.MenuItem 如果没有的话,;就创建一个PopupMenu,并也增加几个'我自已的定义的通用'PopupMenu.MenuItem (注:我这里会使用到OnPopup事件,所以,我会做: PopupMenu1.OnPopup=myStandPopupEvent) 这样做并没有什么困难, 我已实现了, 可是,问题来了, 如果我原先的StringGrid中存在PopupMenu,并且也有OnPoup事件, 我希望在我的myStandPopupEvent中,能兼容原先的onPopup事件,而不是完全覆盖。 |
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
1.你前後的問題也太風馬牛不相及了吧~
2.按照你的狀況來說,你最好在自訂的myStandPopupEvent裡面動手腳,按照所在的FORM裡面的StringGrid來增減自訂的PopupMenu裡想要顯示的MenuItem,再將該自訂的PopupMenu指定給VCL元件上的PopupMenu比較實在。也就是說所有VCL元件上的PopupMenu屬性要動態設定,而被設定的自訂PopupMenu元件內容也要動態增減如此。 ===================引 用 aKnightChen@Hotmail.com 文 章=================== 好,我讲一下我真实的使用目的, 我有个程序,我想for i=0 to Screen.FormCount-1 的方法, 再遍历所有FORM,如果有StringGrid控件的话, 就看看它有没有PopupMenu,如果有的话,就再增加几个'我自已的定义的通用'PopupMenu.MenuItem 如果没有的话,;就创建一个PopupMenu,并也增加几个'我自已的定义的通用'PopupMenu.MenuItem (注:我这里会使用到OnPopup事件,所以,我会做: PopupMenu1.OnPopup=myStandPopupEvent) 这样做并没有什么困难, 我已实现了, 可是,问题来了, 如果我原先的StringGrid中存在PopupMenu,并且也有OnPoup事件, 我希望在我的myStandPopupEvent中,能兼容原先的onPopup事件,而不是完全覆盖。 |
aKnightChen@Hotmail.com
一般會員 發表:62 回覆:57 積分:23 註冊:2003-06-13 發送簡訊給我 |
|
aKnightChen@Hotmail.com
一般會員 發表:62 回覆:57 積分:23 註冊:2003-06-13 發送簡訊給我 |
搞定,在DelphiBBS.com上,有一位朋友教我了,这里与大家一起分享一下。
private
{ Private declarations } FOldPopup: TNotifyEvent; procedure NewPopup(Sender: TObject); public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.NewPopup(Sender: TObject); begin if Assigned(FOldPopup) then FOldPopup(Sender); ShowMessage('2'); end; procedure TForm1.SetEventClick(Sender: TObject); begin //保存旧的Popup事件 FOldPopup := PopupMenu1.OnPopup; //挂上新的Popup事件 PopupMenu1.OnPopup := NewPopup; end; |
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
還有更活的寫法~
1.把自訂的PopupMenu AutoPopup屬性設定為false。 2.然後在相關的StringGrid VCL元件上面利用Mouse Down來動態設定與顯示PopupMenu,並在自訂的PopupMenu的OnPopup事件裡面依照所作用的元件來增減項目,小弟認為這樣是最活的。 3.以下有兩篇相似的範例,請參考~ http://delphi.ktop.com.tw/board.php?cid=30&fid=69&tid=28297 http://delphi.ktop.com.tw/board.php?cid=168&fid=913&tid=75364 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |