2010-02-05 52 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);