主窗体工具栏按纽(如复制、粘贴等)怎样为各个派生窗口共同使用?(50分)

  • 主题发起人 主题发起人 jtys
  • 开始时间 开始时间
J

jtys

Unregistered / Unconfirmed
GUEST, unregistred user!
用Switch(ActiveControl)控制?
 
Teditaction
不用代码
 
大虾,详细点哪!
 
什么意思?
 
是你自己没有说清楚。
把问题说的明白一点。
 
如果是标准的action,可以使用tactionlist里面的东东来做。
不过肯定有些不是标准的,
我原来写的:

设想这样一个系统界面:
左边是树型导航,右边是panel,在panel上根据不同的导航显示不同的form.
在工具栏有一个“打印”按钮。
当然,我们希望点击这个按钮调用的方法随当前显示form的不同而不同。
不同的form打印的情况都不相同,有的屏幕打印即可,有的需要做报表。
请实现之。

1、我原来的
procedure tform1.printButtonClick(sender:Tobjet)
begin
if currentForm = showform1 then //currentForm保存当前显示的窗口,为tform类型
showform1.printIt;
else if currentForm = showform2 then
showform2.printIt;
.....
end;

2、使用继承和多态的方法
所有的显示form都从一个fathrForm中继承。
在fatherForm中写一个虚方法printIt
所有继承的form根据自己的情况重载这个方法。
我们再看
procedure tform1.printButtonClick(sender:Tobjet)
begin
currentForm.printIt;//currentForm保存当前显示窗口,为tFatherForm类型
end

代码是不是简单了些,当新增加显示form时,这段代码不用改动了吧。
 
谢谢jian1!他举的打印例子很好!

to 大致若鱼:

工具栏上的工具对所有窗体都适用啊,比如复制、粘贴、删除等等。怎样少写代码实现这个
功能---即对所有主窗体外的窗体也适用?
 
其实有更酷的方法!!!,你看一个DELPHI帮助中
Programming width Delphi -> Devolopeing The User interface
中的Action部分,如何自已写Action,就比如那些标准的TEditAction等等,
还可能注册到Action Manager中呢。
 
请再讨论,不够分加分!
 
后退
顶部