Hallo,
ich habe folgendes Problem:
Ein MainMenu nach folgendem Muster:
Delphi-Quellcode:
// Datei Bearbeiten Tools Hilfe
// -Neu -Rückgängig -Tools einrichten -Verwenden der Hilfe
// -Öffnen -<ein weiterer Eintrag> -Index
// -Beenden
Nun will ich vor <ein weiterer Eintrag> das angemeldete Dienstprogramm einfügen, faktisch zwischen
"Tools einrichten" und "<ein witerer Eintrag>".
So sieht mein Quelltext aus:
Delphi-Quellcode:
if ToolsOptDlg.Execute then
begin
//Hier wird der neue Menüpunkt angelegt;
// := ToolsOptDlg.Menuname;
// := ToolsOptDlg.CommandLine;
if MainMenu.Items.Items[IDE_MEMU_TOOLS_COMMANDS].Count > IDE_MENU_TOOLS_BASE then
for Index := MainMenu.Items.Items[IDE_MEMU_TOOLS_COMMANDS].Count-1 downto IDE_MENU_TOOLS_BASE do
MainMenu.Items.Items[IDE_MEMU_TOOLS_COMMANDS].Delete(Index);
FCommandTools.Assign( ToolsOptDlg.Tools );
//Die folgenden Zeilen entsprechen der Methode AddToolsToMenu
//Aber hier kommt nur ein neues Tool hinzu
CommandTool := TMenuItem.Create(self);
CommandTool.Caption := GetMenuName(0);
CommandTool.OnClick := CommandToolClick;
MainMenu.Items.Items[IDE_MEMU_TOOLS_COMMANDS].Insert(1, CommandTool);
end;
Mein Menüeintrag, der das Dienstprogramm beschreibt, überschreibt jedoch den Menüeintrag namens <"ein weiterer Eintrag>", der hierdurch verschwindet.
Wenn ich die Add Methode verwende, habe ich das gleiche Problem, obwohl ich mit Add() erwarte der Name meines Dienstprogrammes dann an das Ende dieses Menüs angehängt wird.
Was muss ich anders machen?
"<ein weiterer Eintrag>" steht nur bespielhaft für eine nachfolgende Funktion meines Programmes.
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.