![]() |
Menüeintrag in bestehendes Menü einfügen?
Hallo,
ich habe folgendes Problem: Ein MainMenu nach folgendem Muster:
Delphi-Quellcode:
Nun will ich vor <ein weiterer Eintrag> das angemeldete Dienstprogramm einfügen, faktisch zwischen
// Datei Bearbeiten Tools Hilfe
// -Neu -Rückgängig -Tools einrichten -Verwenden der Hilfe // -Öffnen -<ein weiterer Eintrag> -Index // -Beenden "Tools einrichten" und "<ein witerer Eintrag>". So sieht mein Quelltext aus:
Delphi-Quellcode:
Mein Menüeintrag, der das Dienstprogramm beschreibt, überschreibt jedoch den Menüeintrag namens <"ein weiterer Eintrag>", der hierdurch verschwindet.
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; 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. |
Re: Menüeintrag in bestehendes Menü einfügen?
Zitat:
Wenn ich das richtig verstanden habe: Speichere den aktuellen Eintrag im Menu in einer Stringvariablen und mach dann so:
Delphi-Quellcode:
{...}.Add(sStringVariable + sDerDienst
|
Re: Menüeintrag in bestehendes Menü einfügen?
Hallo
Danke für die schnelle Antwort. Die Ursache meines Fehlers war aber noch was ganz Anderes, nämlich diese Zeile:
Delphi-Quellcode:
Wenn ich die weglasse, klappt das auch nit meiner Insert Anweisung. Durch das Delete abe ich den nachfolgenden Menüeinrag gelöscht und wenn ich dann einen Eintrag für ein Tool hinzufügen will, ist natürlich (wegen Delete) der Nachfolgende Eintrag weg. :wall:
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); Mit dem Add, so wie Du das beschrieben hast, gehrt das leider eh nicht, weil die Add Methode von TMenuitem einen TMenuitem, nicht String übergeben haben will. Trotzdem Danke! :hi: Nun suche ich eine geeignete Methode, um hinzugefügte Tools passend zu speichern, damit ich bei Neustart die hinzu gefügten Tools wieder im Menü sehe. Ist wahrscheinlich ein neuer Thread dafür fällig. Werd es mal mit Ini Datei probieren. Hab das bisher über Stringliste gemacht, scheint aber zu umständlich zu werden. Werde morgen weiter tüfteln. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz