Einzelnen Beitrag anzeigen

venc

Registriert seit: 4. Jan 2007
2 Beiträge
 
Delphi 2005 Personal
 
#1

TPopUpMenu Einträge zur Laufzeit ändern OnClick

  Alt 2. Jan 2009, 18:48
Hallo,

ich brauche Hilfe bei einem kleinen Problem, ich hab schon Google sowie das Forum hier befragt, die dort angewendeten Lösungen funktionieren bei mir leider nicht. Aber ersteinmal das Problem:

Mein Programm fügt zur Laufzeit einem existierenden PopUpMenu einzelnde Items hinzu.
Das funktioniert auch problemlos.
Nun, es liegt auf der Hand, dass man die Items aus dem PopUpMenu auch mit einer procedure verknüpfen möchte und das bereitet mir Kopfschmerzen.

Wie Luckie hier schreibt Link meckert mein Delphi 2005 leider, an folgender Stelle bleibt der compiler stehen:

NewItem.OnClick := OnMenuItemClick; Mit der Fehlermeldung:
[Fehler] Unit2.pas(124): E2009 Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'

Ich hab nun schon mehrere Lösungsansätze angeschaut und jedes mal wird es so gelöst (Ohne der OnClick Procedure einen Sender zuzuweisen) und es funktioniert bei mir nicht, entweder mit der eben erwähnten Fehlermedlung oder anderen... Habe nun schon nahezu alle möglichen schreibweisen durch.

Ich hoffe es liegt an einer falschen Deklaration eienr Variabel, hier mal die ganze Procedure:
Delphi-Quellcode:
procedure VariableMenuItemAdd(Menu: TPopUpMenu; ItemCaption: String);
var
  NewItem: TMenuItem;
begin
  NewItem:=TMenuItem.Create(Form2);
  inc(counter);
  NewItem.Caption:=ItemCaption;
  NewItem.Tag:=counter;
  NewItem.OnClick := OnMenuItemClick;
  Menu.Items.Add(NewItem);
end;
Ohne die Zeile NewItem.OnClick := OnMenuItemClick; funktioniert es... nur das OnClick lässt sich nicht zuordnen.... Hilfe!
Meine Vermutung, da bereits ein menu vorhanden ist muss ich mit NewItem:=TMenuItem.Create(Form2); kein neues erstellen, aber wie soll es sonst gehen?

Danke für die Hilfe

Edit: Die Vermutung ist falsch erstelle ja garkein zweites Menu
  Mit Zitat antworten Zitat