读书人

一个小弟我不知道如何说的有关问题

发布时间: 2012-02-29 16:44:10 作者: rapoo

一个我不知道怎么说的问题
我的程序中的每个窗体都有ToolBar
ToolBar里的一个TooButton的STYLE设置为tbsDropDown
调用一个菜单PopupMenu,PopupMenu放在主窗体上,
ToolBar的TooButton都调用这个主窗体上的PopupMenu,

现在我想在单击PopupMenu里的菜单单击事件后,

接着再执行ToolBar里的TooButton的单击事件,


因为很多窗体都要调用同一个内容的PopupMenu,

但每个窗体的ToolButton的单击事件执行后传出来的值又不一样
,也就是要动态调用不同的ToolButton单击事件。

有没有办法啊

[解决办法]
假设
1、主窗口TForm1
2、主窗口PopupMenu的一个菜单项MenuItem1
3、其中一个窗口是TForm3
在Form3中点击那个按钮弹出主窗口的PopupMenu,假如点击了MenuItem1
MenuItem1的点击事件:
var
frm:TForm;
begin
frm:=Screen.Form[0]; //取激活窗口,MDI的可以用Self.ActiveMDIChild
if (frm is TForm3) then //假如是Form3
begin
TForm3(frm).ToolButton2Click(nil); //执行Form3 ToolButton2的点击事件
end;
end;
[解决办法]
创建一个基类窗口,扩展基类窗口的定义,加上一些方法属性,

在每个继承窗口中重写这些方法
调用这些窗口时直接调用基类的方法

基类的方法在不同的子类窗口中执行不同的操作如何?
[解决办法]
你的这样是可以的,
先谢谢了,
但是因为窗体有很多至少几十个,
if (frm is TForm3) then //假如是Form3
begin
TForm3(frm).ToolButton2Click(nil); //执行Form3 ToolButton2的点击事件
end;
所以这里要把所有的窗体名都写出来吗.
有没有再好点的方法呢
-------------
把你的菜单和toolbutton2放到窗体基类里,假设TBaseForm
把菜单的点击事件写在基类里,如:ToolButton2.Click;

然后在你的几十个窗体都继承TBaseForm,各自完成ToolButton2.Click的方法

读书人网 >.NET

热点推荐