Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Procedure an Objekt übergeben


Tana´Ri - Mi 14.05.03 12:43
Titel: Procedure an Objekt übergeben
hi

Ich versuche einer, in meinem Objekt deklarierten Prozedurenvariable, eine Procedure aus dem Form zu zuweisen. Damit möchte ich mein Printer-Objekt hinsichtlich der PrintOp variable lassen, je nach dem könnten dann verschiedene Druckverfahren zugewiesen werden. In der Delphi Hilfe bin ich bei der Suche nach @ darauf gestoßen. Funzt aber leider net, ich bekomme die Meldung: 'Funktion/Prozedure wurde der Prozedurenvariable zugewiesen' -> doch compiliert er nicht mehr :(


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.btntestClick(Sender: TObject);

    procedure doit;
     begin
      Form1.Color:=random(high(integer));
    end;

begin
 with myObj do 
  begin
   PrintOp := doit; // PrintOp = Prozedurenvariable
   PrintOp;
 end;
end;


AndyB - Mi 14.05.03 12:55

Prozeduren in Prozeduren werden ganz anders behandelt als normale Prozeduren. Du muss Doit aus btntestClick herausnehmen.


Tana´Ri - Mi 14.05.03 13:05

thx a lot Andy :))

es funzt wenn ich die procedure doit global mache, sobald ich sie innerhalb meines forms deklariere funktioniert es nicht, gibt es dazu auch noch ne möglichkeit.


AndyB - Mi 14.05.03 13:28

Ja, eine Möglichkeit gibt es schon. Nur ist die nicht gerade elegant und vor allem muss man mit Self und den lokalen Variablen der übergeordneten Prozedur aufpassen.


Tana´Ri - Mi 14.05.03 13:28

hat sich erledigt, mach es dem timer gleich

in meinem Obj

bsp:

Quelltext
1:
2:
3:
4:
5:
[...]
fprint : TNotifyEvent // TNotifyEvent = Procedure (sender : tobject) of object;
published
  PROPERTY OnPrint : TNotifyEvent read fprint write fprint
[...]

somit kann man OnPrint dann auch Procedure zuweisen die im Form z.b. sind.

mfg

Tana_Ri

Moderiert von user profile iconTino: Code-Tags hinzugefügt.