Einzelnen Beitrag anzeigen

ringli

Registriert seit: 7. Okt 2004
510 Beiträge
 
Delphi 11 Alexandria
 
#1

Popupmenü zur Laufzeit erstellen

  Alt 19. Jun 2005, 13:57
Ich mache grade meine ersten Versuche damit ein Popupmenü zur Laufzeit zu erstellen. Einzelne Einträge erstellen funktioniert, aber wenn ich versuche ein Untermenü mit Einträgen zu erstellen bekomme ich entweder eine Zugriffsverletzung oder der Compiler zeigt mir die Fehlermeldung [Fehler] Unit1.pas(37): E2010 Inkompatible Typen: 'dynamic array' und 'TMenuItem' an.

Hier die Variante die die Fehlermeldung(en) erzeugt:
Code:
procedure TForm1.FormCreate(Sender: TObject);
var
  aSubMenu : TMenuItem;
  aNewItem : array of TMenuItem;
begin
  //hier Fehlermeldung da aNewItem kein Array ist
  aNewItem := NewItem('Eintrag 1', 0, False, True, btnOKClick, 0, 'item1');
  aNewItem := NewItem('Eintrag 2', 0, False, True, btnOKClick, 0, 'item2');
  aNewItem := NewItem('Eintrag 3', 0, False, True, btnOKClick, 0, 'item3');
  aSubMenu := NewSubMenu('Untermenü', 0, 'subMenu0', aNewItem, True);

  PopupMenu1.Items.Add(aSubMenu);
end;

procedure TForm1.btnOKClick(Sender: TObject);
begin
  showmessage('Hallo');
end;
Und das ist die Variante die eine Zugriffsverletzung erzeugt:
Code:
procedure TForm1.FormCreate(Sender: TObject);
var
  aSubMenu : TMenuItem;
  aNewItem : array of TMenuItem;
begin
  aNewItem[0] := NewItem('Eintrag 1', 0, False, True, btnOKClick, 0, 'item1');
  aNewItem[1] := NewItem('Eintrag 2', 0, False, True, btnOKClick, 0, 'item2');
  aNewItem[2] := NewItem('Eintrag 3', 0, False, True, btnOKClick, 0, 'item3');
  aSubMenu := NewSubMenu('Untermenü', 0, 'subMenu0', aNewItem, True);

  PopupMenu1.Items.Add(aSubMenu);
end;

procedure TForm1.btnOKClick(Sender: TObject);
begin
  showmessage('Hallo');
end;
  Mit Zitat antworten Zitat