Danke für den Beispielcode.
Ich habe diesen noch etwas verändert und vereinfacht, um mir die eigentliche Aufgabe noch etwas mehr zu verdeutlichen und zu überprüfen, ob ich das richtig verstanden habe:
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TBeispiel=procedure()
of object;
//Typdefinition eigener Typ "TBeispiel"
TBeispielKlasse=Class(TForm)
Private
FMethode:TBeispiel;
//Deklaration Feld "FMethode" vom eigenen Typ "TBeispiel"
Public
constructor Create(Methode:TBeispiel);
//Deklaration Konstruktor mit Methode als Übergabeparameter vom eigenen Typ "TBeispiel"
end;
TForm1 =
class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
procedure Prozedur_1();
procedure Prozedur_2();
end;
var
Form1: TForm1;
BeispielObjekt_1: TBeispielKlasse;
BeispielObjekt_2: TBeispielKlasse;
implementation
{$R *.DFM}
constructor TBeispielKlasse.Create(Methode:TBeispiel);
begin
FMethode:=Methode;
end;
procedure TForm1.Prozedur_1();
begin
ShowMessage('
Prozedur_1');
end;
procedure TForm1.Prozedur_2();
begin
ShowMessage('
Prozedur_2');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
BeispielObjekt_1:=TBeispielKlasse.Create(Prozedur_1);
BeispielObjekt_1.FMethode;
BeispielObjekt_2:=TBeispielKlasse.Create(Prozedur_2);
BeispielObjekt_2.FMethode;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
BeispielObjekt_1.Free;
BeispielObjekt_2.Free;
end;
end.
1.) Zuerst wird ein eigener Datentyp definiert:
TBeispiel=procedure() of object;
. Mit diesem kann man nun Variablen deklarieren, die eine Methode darstellen.
2.) Als nächstes wird dann eine Variable/ein Feld von diesem Typ (
FMethode:TBeispiel;
) deklariert.
3.) Dann erfolgt die Deklaration des Konstruktors, dem ein Parameter von ebenfalls diesem Typen (
FMethode:TBeispiel;
) übergeben werden muss. Innerhalb des Konstruktors wird zur Programmlaufzeit der Klassenmethode
FMethode
, die als Parameter übergebene Methode, der Klasse übergeben.
4.) Anschließend ist diese dann Teil der Klasse und und steht innerhalb der Klasse zur Verfügung.
Gut zu sehen ist das, wenn das Formluar erzeugt wird.
Hier werden die beiden Objekte erzeugt und diesen jeweils eine eigene Methode zugewiesen.
Ich hoffe, dass ich das so richtig verstanden und wiedergegeben habe.
Ansonsten können die Profis ja nochmal etwas dazu sagen.