Delphi - TPanel und tbuttons auf zweite Form Duplizieren
Frage
Auf meinem Haupt-Form habe ich eine TPanel Schaltflächen enthält, die als Symbolleiste wirken. Ich mag diese Symbolleiste klonen / kopieren und die Tasten und ihre Funktionalität zu einer zweiten Form.
das Menü Klonen war einfach newmenu.merge (mainmenu) verwendet wird. Das war eine ausgezeichnete Verknüpfung zu einem TMainMenu duplizieren.
Aber ich bin ratlos, wie leicht meine Symbolleiste duplizieren, ohne manuell die Ereignisse zuweisen und einen Timer halten zu vergleichen und verfolgen, welche Tasten aktiviert und deaktiviert im Vergleich zum realen mainmenu auf dem Hauptformular. Je nachdem, was die Anwendung der wichtigsten Schaltflächen der Symbolleiste tun wird zu verschiedenen Zeiten aktiviert und deaktiviert werden.
Irgendwelche Ideen hier? Vielen Dank für alle Anregungen oder Tipps dies erleichtern.
Lösung
-
Duplizieren Sie die Bedienelemente
In dem Formulardesigner, wählen Sie das Panel und drücken Sie Strg + C , es zu kopieren und alle seine Kinder in die Zwischenablage. Gehen Sie auf die zweite Form und drücken Sie Strg + V einzufügen.
Wenn Sie immer noch auf die Gestaltung zu arbeiten und wollen, dass es konsistent halten zwischen den beiden Formen, dann erstellen Sie ein
TFrame
und gestalten Sie Ihre Symbolleiste Layout gibt. Dann legen Sie eine Instanz dieses Rahmens auf beide Formulare. Änderungen an der Rahmenkonstruktion wird in den Formen berücksichtigt werden.Siehe mit Frames Arbeiten in der Hilfe.
-
Sicherstellen, dass beide Sätze von Tasten sind durchweg
aktiviertErstellen Sie ein Datenmodul. Setzen Sie einen
TActionList
darauf. Fügen Sie eine Aktion, um es für jede Taste auf dem Hauptformular. Event-Handler die Aktionen derOnUpdate
Ereignisse zuordnen. In ihnen, stellen Sie die AktionenEnabled
Eigenschaften. Schließlich weisen Sie jedeAction
Eigenschaft der Schaltfläche in dem entsprechenden Aktionsobjekt zu verweisen. Die Tasten automatisch erhalten aktiviert und deaktiviert mit den Aktionen. Kein Timer erforderlich.Darüber hinaus können Sie die Aktionen der
OnExecute
Ereignisse behandeln. Klare jederOnClick
Eigenschaft der Schaltfläche, und dann bewegen sich dieOnClick
Code der Schaltfläche in dieOnExecute
Handler entsprechende Aktion. Es wird automatisch aufgerufen, wenn Sie auf die Schaltfläche klicken, obwohl dieOnClick
Eigenschaft ist leer.Wenn Sie die
Caption
oderHint
Eigenschaft einesTAction
zuweisen, die entsprechenden Eigenschaften aller zugehörigen Steuerungen ändern auch. Das gleiche gilt für Bilder, wenn die Steuerung unterstützt sie. Aktionen können Menüpunkte zugeordnet werden, auch.Siehe Verwenden von Aktionslisten in der Hilfe.
-
wie eine Symbolleiste Acting
Verwenden Sie einfach
TToolbar
. Das ist, was es ist für.Oder wenn Sie auf Aktionen gewöhnt sind, stellen eine
TActionManager
in Ihrem Projekt und verwenden sie es mitTActionToolbar
undTActionMainMenuBar
. Siehe Organisation von Aktionen für Symbolleisten und Menüs in der Hilfe.
Andere Tipps
Sind die Tasten zu Aktionen angebracht? Wenn ja, können Sie das OnUpdate Ereignis des TActionList verwenden, um festzulegen, was sollte und sollte nicht aktiviert werden. Wenn nicht, es ist nicht zu viel Arbeit mit Aktionen zu konvertieren.
Wenn Sie diesen Weg gehen, um mit einer Action zu konvertieren, sollten Sie die Action in einem Datenmodul setzen, wo verschiedene Einheiten und Formen auf sie verweisen können.
Sie können Clipboard-Objekt Für Kopie Ihres Feld verwenden.
Clipboard.SetComponent (Panel1);
Clipboard.GetComponent (Form2, GroupBox1);