AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Menüeintrag in bestehendes Menü einfügen?
Thema durchsuchen
Ansicht
Themen-Optionen

Menüeintrag in bestehendes Menü einfügen?

Ein Thema von schöni · begonnen am 27. Dez 2009 · letzter Beitrag vom 28. Dez 2009
Antwort Antwort
schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#1

Menüeintrag in bestehendes Menü einfügen?

  Alt 27. Dez 2009, 22:25
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.
  Mit Zitat antworten Zitat
Micha88
(Gast)

n/a Beiträge
 
#2

Re: Menüeintrag in bestehendes Menü einfügen?

  Alt 27. Dez 2009, 23:00
Zitat:
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.
Aja, "Add()" hat in dem Sinne nix mit "dranhängen an einen bestehenden Eintrag" zu tun =)

Wenn ich das richtig verstanden habe:

Speichere den aktuellen Eintrag im Menu in einer Stringvariablen und mach dann so:
{...}.Add(sStringVariable + sDerDienst
  Mit Zitat antworten Zitat
schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#3

Re: Menüeintrag in bestehendes Menü einfügen?

  Alt 28. Dez 2009, 23:00
Hallo

Danke für die schnelle Antwort.

Die Ursache meines Fehlers war aber noch was ganz Anderes, nämlich diese Zeile:

Delphi-Quellcode:
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);
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.

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!

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.
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz