Thema: Delphi Menüs zur Laufzeit

Einzelnen Beitrag anzeigen

urs.liska

Registriert seit: 6. Aug 2003
Ort: Freiburg
195 Beiträge
 
Delphi 6 Professional
 
#4

Re: Menüs zur Laufzeit

  Alt 7. Feb 2005, 13:36
Hallo DelphiSourcer.
Zunächst mal solltest Du die Delphi-Code-Tags verwenden, dann ist Dein Code lesbar (geht auch noch nachträglich mit "Edit").
Zitat von DelphiSourcer:
Delphi-Quellcode:
Menu.Items.Add(Datei); //Zeile 1
Menu.Items.Items[0].Insert(0,Neu); //Zeile 2
// Sobald ich Untermenüs einfügen will, Wird Exception
// EListError ausgelöst
// Meldung: Listenindex überschreiete das Maximum (1)
// Menu.Items.Items[1].Add(Oeffnen);
// Menu.Items.Items[2].Add(N1);
// Menu.Items.Items[3].Add(Beenden);

Menu.Items.Add(Bearbeiten);
Menu.Items.Add(Fenster);
Menu.Items.Add(Hilfe);
Wenn ich das richtig verstehe (ich habe das so noch nie gemacht), sieht die Sache so aus:
Zeile 1 erzeugt das Objekt Menu.Items[0] Das ist das Menü "Datei". Dieses hat noch keine Untermenüpunkte.
Der Aufruf in Zeile 2 ginge auch kürzer:
Delphi-Quellcode:
Menu.Items[0].Insert(0, Neu) // wg. Default-Property
// alternativ:
Menu.Items[0].Add(Neu)
Damit existiert das Objekt Menu.Items[0].Items[0] (nämlich "Datei->Neu").
Das Objekt Menu.Items[1] existiert aber noch nicht, deshalb wird bei Deinem Versuch, mit Menu.Items[1].Add(Oeffnen) auf das Objekt zuzugreifen, eine Exception ausgelöst.
Der Abschnitt müsste also (wie gesagt, wenn ich es richtig sehe) so aussehen:
Delphi-Quellcode:
Menu.Items.Add(Datei);
Menu.Items[0].Add(Neu);
Menu.Items[0].Add(Oeffnen); /etc.
Den zweiten problematischen Abschnitt habe ich mir nicht angesehen, aber vielleicht hat sich das ja auch erledigt- sofern mein Vorschlag funktioniert.

HTH
Urs
  Mit Zitat antworten Zitat