Hallo,
lese mir das jetzt net alles durch (benutze Formatierungen, also hier Delphi-Tags für Deinen Code), aber auf Basis des Titels und des Schlusssatzes kann ich Dir folgendes sagen:
Du kannst Methoden, die als 'virtual' deklariert sind in einer Ableitung mit 'override' überschreiben.
Vielleicht passt das ja zu Deinem Problem.
=======================
Edit:
Ok, habe es mir jetzt mal angeschaut:
Das Problem fängt bereits damit an, dass Deine Implementierung der Prozedur 'Click' anders ist, als sie deklariert wurde (AItem gibt es da nicht!).
Greife auf das Item mit 'Self' zu.
Hier ein Beispiel:
Delphi-Quellcode:
Unit Unit1;
Interface
Uses
Windows,
Messages,
SysUtils,
Variants,
Classes,
Graphics,
Controls,
Forms,
Dialogs,
Menus,
StdCtrls;
Type
TMyMenuItem =
Class(TMenuItem)
Procedure Click;
override;
End;
TForm1 =
Class(TForm)
Button1: TButton;
PopupMenu1: TPopupMenu;
Edit1: TEdit;
Procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
End;
Var
Form1: TForm1;
Implementation
{$R *.dfm}
Procedure TForm1.Button1Click(Sender: TObject);
Var
MI: TMyMenuItem;
Begin
MI := TMyMenuItem.Create(self);
MI.Tag := 99;
MI.Caption := '
Testcaption';
PopupMenu1.Items.Add(MI);
End;
{ TMyMenuItem }
Procedure TMyMenuItem.Click;
Begin
Inherited;
Form1.Edit1.Text := IntToStr(Self.Tag);
End;
End.
Und denke nächstes Mal bitte an die Delphi-Tags