Einzelnen Beitrag anzeigen

Nuclear-Ping
(Gast)

n/a Beiträge
 
#2

Re: OnIrgendwas Handler lokal zuweisen --> Typfehler...

  Alt 17. Okt 2007, 12:29
Deine "Irgendwaspassiert" ist, wie dein Delphi-Compiler schon meckert, eine reguläre Prozedur, die du keinem Ereignis als Behandlungsroutine zuweisen kannst.

Die "Irgendwaspassiert" muss ein "Methodenzeiger" sein. Kurz gesagt heisst das, dass er eine Methode einer Klasse sein muss, was bei dir aber nicht gegeben ist.

Delphi-Quellcode:
type
  TIrgendwaspassiert = procedure (Sender: TObject; Param1: String; Param2: String) of object;

  TIrgendeineKlasse = class (...)
  private
    FIrgendwaspassiert: TIrgendwaspassiert;
  public
    procedure MacheIrgendwas;
  published
    property OnIrgendwaspassiert: TIrgendwaspassiert read FIrgendwaspassiert write FIrgendwaspassiert;
  end;

  TForm1 = class (TForm)
  private
    FIrgendeineKlasse: TIrgendeineKlasse;

    procedure MyIrgendwaspassiert (Sender: TObject; Param1: String; Param2: String);
  public
    ...
  end;

implementation

procedure TIrgendeineKlasse.MacheIrgendwas;
begin

  MacheVieleSachen;

  if Assigned (FIrgendwaspassiert) then
    FIrgendwaspassiert (Self, DeinParam1, DeinParam2);

  MacheAndereSachen;
end;

// ****

procedure TForm1.Create (Sender: TObject);
begin
  FIrgendwaspassiert := TIrgendwaspassiert.Create;
  FIrgendwaspassiert.OnIrgendwaspassiert := MyIrgendwaspassiert;
end;

procedure TForm1.Button1Click (Sender: TObject);
begin
  FIrgendwaspassiert.MacheIrgendwas;
end;

procedure TForm1.Destroy;
begin
  FreeAndNil (FIrgendwaspassiert);
  inherited;
end;

end.
Das sollte klappen.
  Mit Zitat antworten Zitat