Registriert seit: 7. Okt 2004
510 Beiträge
Delphi 11 Alexandria
|
Popupmenü zur Laufzeit erstellen
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;
|