![]() |
Popupmenü zur Laufzeit erstellen
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:
Und das ist die Variante die eine Zugriffsverletzung erzeugt:
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;
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; |
Re: Popupmenü zur Laufzeit erstellen
Bei einem Dynamischen Array musst du die länge festlegen.
Delphi-Quellcode:
Win32.API
setlength(aNewItem,3);
|
Re: Popupmenü zur Laufzeit erstellen
So funktionierts! Danke für die Hilfe. :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:58 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