2010-02-05 54 views
3

在我的主窗体上,我有一个TPanel,其中包含充当工具栏的按钮。我想克隆/复制这个工具栏和按钮及其功能到第二种形式。德尔福 - 第二种形式的重复tpanel和tbuttons

克隆菜单很简单,使用newmenu.merge(mainmenu)。这是复制Tmainmenu的绝佳捷径。

但是我很困惑如何轻松复制我的工具栏,而不必手动分配事件,并保持计时器比较和跟踪哪些按钮与主窗体上的实际主菜单相比启用和禁用。根据应用程序的作用,主工具栏按钮将在不同时间启用和禁用。

这里的任何想法?感谢您提供任何建议或提示,以使此更轻松。

回答

4
  • 复制的控制

    在窗体设计器,选择面板,然后按按Ctrl + C复制它和它的所有儿童到剪贴板。转到第二个表格并按Ctrl + V进行粘贴。

    如果您仍在研究设计并希望保持两个表单之间的一致性,请在此处创建TFrame并设计您的工具栏布局。然后把这个框架的一个实例放在你的两个表单上。框架设计的变化将反映在表格中。

    请参阅Working with frames的帮助。

  • 确保启用按钮的两套一贯

    创建一个数据模块。把一个TActionList就可以了。为主窗体上的每个按钮添加一个操作。将事件处理程序分配给操作'OnUpdate事件。在他们中,设置动作'Enabled属性。最后,分配每个按钮的Action属性以引用相应的操作对象。这些按钮将自动通过操作得到启用和禁用。不需要定时器。

    此外,您也可以处理操作'OnExecute事件。清除每个按钮的OnClick属性,然后将该按钮的OnClick代码移入相应操作的OnExecute处理程序。即使OnClick属性为空,它也会在您点击按钮时自动被调用。

    当您指定的CaptionHint属性时,任何关联控件的相应属性也会更改。同样的图像,如果控制支持他们。操作也可以分配给菜单项目。

    请参阅Using action lists的帮助。

  • 像代理工具栏

    只需使用TToolbar。这就是它的目的。

    或者,一旦您习惯了操作,请将TActionManager放入您的项目中,并与TActionToolbarTActionMainMenuBar一起使用。请参阅帮助中的Organizing actions for toolbars and menus

+0

谢谢,框架选项工作正常。我以前没有用过它们,现有的方法是带按钮的标准tpnael。 – TallGuy 2010-02-05 23:49:34

1

按钮是否附加到动作?如果是这样,您可以使用TActionList的OnUpdate事件来指定应该启用和不应启用的内容。如果没有,转换为使用操作并不是太多工作。

如果您将此路径转换为使用ActionList,请考虑将ActionList放入数据模块中,其中不同的单位和形式可以引用它。

0

您可以使用剪贴板对象为复制您的面板。

Clipboard.SetComponent(Panel1);
Clipboard.GetComponent(Form2,GroupBox1);