Hallo zusammen.
Dieses Beispielprojekt ermöglicht es, mehrere Child-Windows in ein PageControl "einzudocken". Außerdem wird das MainMenu dynamisch angepasst, je nachdem, welche Seite im PageControl angezeigt wird. Das ganze wird auf der Basis der doch recht dürftig dokumentierten Funktion TMainMenu.Merge gemacht.
Merge verschmelzt zwei TMainMenus miteinander und generiert dadurch ein einziges. Die Eigenschaft GroupIndex eines Menutitels bestimmt, ob ein vorhandener erstetzt wird oder ob er neu angehangen wird. Im Detail steht dies in der Delphi-Hilfe unter dem Punkt TMenuItem.GroupIndex.
In dem Beispielprojekt habe ich im Hauptformular insgesamt 3 TMainMenus benutzt (
). "MainMenu" ist das Basismenü, welches immer sichtbar ist. "HelperMenu" und "EmptyMenu" werden dynamisch verwendet, um das Hauptmenü zu ergänzen und diese Einträge auch wieder entfernen zu können. Der Grund für 3 Menüs liegt darin, dass auf diese Weise auch ChildWindows
ohne TMainMenu - Komponente eingebunden werden können. In diesem Falle wird MainMenu mit dem EmptyMenu verschmolzen, welches natürlich keine Änderung erzielt. Es ist auf diese Weise extrem einfach, neue Elemente hinzuzufügen.
Ich hoffe es besteht Interesse daran und freue mich über viel Feedback.
Grüße
Thomas aka Codewalker