PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : popup menü eintrag dynamisch erzeugen


mcbrunox
15.09.2002, 15:32
hallo,
wie kann ich einem popupmenü zur laufzeit einen eintrag hinzufügen ?


Felix Kaiser
15.09.2002, 15:35
var
NewItem: TMenuItem;
begin
NewItem:= TMenuItem.Create(self);
NewItem.Caption:= 'Neuer Eintrag';
NewItem.OnClick:= NewItemClick; // Prozedur muss definiert sein
PopupMenu1.Items.Add(NewItem);
end;

Würde einen Menüeintrag zu PopupMenu1 zur Laufzeit hinzufügen.

mcbrunox
15.09.2002, 15:57
Ich dachte ich kann eine Prozedur aufrufen mit newitem.onclick:='prozedur';
wieso bringt er bei mir dann die fehlermeldung:"Inkompatible Typen: 'TNotifyevent' und 'procedure untyped pointer...." ?

var s:char;
cds,i,cd:integer;
NewItem: TMenuItem;
begin
NewItem:= TMenuItem.Create(self);
NewItem.Caption:= 'Öffne CD-ROM'+chr(cd)+':';
NewItem.OnClick:= geoeffnet(chr(cd)); //prozeduraufruf
PopupMenu1.Items.Add(NewItem);
...

oder geht das nur mit proceduren ala form1.testclick(sender:object); ?

Felix Kaiser
15.09.2002, 17:05
Exakt, denn TNotifiyEvent ist eine Deklaration der Form 'procedure of object'.

bleedingcoke
15.01.2004, 15:16
heißt das, dass es nicht möglich mit komponenten die zur Laufzeit erstellt worden sind, variabeln an prozeduren zu übergeben ?


???:confused:

Felix Kaiser
15.01.2004, 16:35
Nein. Deine Frage passt außerdem irgendwie garnicht zu dem Problem.

bleedingcoke
15.01.2004, 16:47
ich weiß aber ich wollte deshalb keinen neuen thread eröffnen..;)

Wie könnte ich denn dann folgendes realisieren:

Ich habe ein array mit labels, welches in einer vor schleife ausgelesen wird. Nun möchte ich jedem array einen text zuweisen (kein problem) und ein onClick ereignis und zwar
möchte ich eine Url ausfürhren (immer eine andere aus einem anderen array).
Ich habe eine Procedure Execute(url: string;) begin ... end;
Wie kann ich diese, denn dann ausführen bzw. das OnClick Event eintreten lassen.

plz help

:confused:
thx

Felix Kaiser
15.01.2004, 18:35
Eigentlich hast du totalen Blödsinn ausformuliert. Du musst deinen OnClick-Handler einfach nur im Format von TNotifyEvent deklarieren, sonst nichts. Wie das ausschaut steht in der Hilfe.