Home » Tipps & Tricks » Komponenten » Menüs » Menüs klonen

Menüs klonen

Folgende Funktion klont ein komplettes Menü inkl. Untermenüs. Ihr muss als Parameter das MenuItem übergeben werden. Die Funktion basiert auf dem Aufruf von „NewItem“. Es werden die Eigenschaften Caption, ShortCut, Checked, Enabled und HelpContext übernommen. Außerdem wird das gleiche OnClick-Ereignis zugewiesen.

function CloneMenuitem(SourceItem: TMenuItem): TMenuItem;
var
  i: Integer;
begin
  with SourceItem do
  begin
    Result := NewItem(Caption, //Die einzelnen Eigenschaften
                     Shortcut,
                     Checked,
                     Enabled,
                     OnClick,
                     HelpContext,
                     Name+'Copy');
    for i:= 0 to Count-1 do
      Result.Add(CloneMenuItem(Items[i]));
  end;
end;

Der untenstehende Aufruf kopiert das komplette Menu von Form1 in das Menü von Form2:

procedure TForm1.Button1Click(Sender: TObject);
var
 I: Integer;
begin
 for i:= 0 To Form1.MainMenu1.Items.Count-1 Do
   Form2.MainMenu1.Items.Add(
       CloneMenuItem(MainMenu1.Items[i]));
end;