Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TPopUpMenu Einträge zur Laufzeit ändern OnClick (https://www.delphipraxis.net/126795-tpopupmenu-eintraege-zur-laufzeit-aendern-onclick.html)

venc 2. Jan 2009 17:48


TPopUpMenu Einträge zur Laufzeit ändern OnClick
 
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:

Delphi-Quellcode:
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

taaktaak 2. Jan 2009 17:54

Re: TPopUpMenu Einträge zur Laufzeit ändern OnClick
 
VariableMenuItemAdd() muss eine Methode sein (d.h. im private-Abschnitt deklariert)

TBx 2. Jan 2009 17:56

Re: TPopUpMenu Einträge zur Laufzeit ändern OnClick
 
Erst einmal herzlich willkommen in der DP!

Zeig doch mal bitte, wie Du die ONClick-Prozedur deklariert hast.

Diese muss zum einen eine Methode des Objektes sein und zum anderen auch eine bestimmte Form haben.

Gruß

venc 2. Jan 2009 18:00

Re: TPopUpMenu Einträge zur Laufzeit ändern OnClick
 
Dies sind komischer Weise nicht meine ersten Beiträge, aber trozdem danke für die Begrüßung ;)

Da wird der Fehler liegen, sie ist nirgendwo deklariert...

Edit: Du sprichst die spezielle Form an, ich habe leider keinen blassen Schimmer wie diese aussieht... Kannst du mir auf die Sprünge helfen?

MfG

Edit2: Habs.. man musste vor die eigenen procedures noch nen TForm2 hängen thx!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 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