Einzelnen Beitrag anzeigen

s-off
(Gast)

n/a Beiträge
 
#2

Re: Überschreiben einer Prozedur

  Alt 28. Sep 2007, 09:20
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
  Mit Zitat antworten Zitat