Passar procedure como parâmetro

Delphi

01/04/2009

Tenho uma classe que cria formulários e passa para eles um evento TNotifyEvent a partir da função:
Unit2.pas
type
  TMeuForm = class(TCustomForm)
    FOnMeuClick: TNotifyEvent;
    FFormFilho: TCustomForm;
    ...
  public
    procedure NovoForm(Nome: String; EventoClick: TNotifyEvent);
    ...
  end;

procedure NovoForm(Nome: String; EventoClick: TNotifyEvent);
begin
  FFormFilho := TForm.CreateNew(Self, 0);
  FFormFilho.Name := Nome;
  FFormFilho.OnClick := EventoClick;
end;

Unit1.pas
var
  FormTeste: TMeuForm;

procedure MeuClick(Sender: TObject);
begin
  ShowMessage(´Clicou aqui!´);
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  FormTeste.NovoForm(´FormComClick´, MeuClick);
end;

Como eu faço para passar uma procedure para esta minha função de forma que ela possa ser executada pela classe?
[quote:faeecd40ee=´Delphi 7´][Error] Unit1.pas(41): Incompatible types: ´method pointer and regular procedure´[/quote:faeecd40ee]


Marcosrocha

Marcosrocha

Curtidas 0

Respostas

Rudá

Rudá

01/04/2009

Amigo,

Veja se pode adaptar para o que vc quer.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    procedure Evento(Event: TNotifyEvent);
    procedure EventoTeste(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Evento(EventoTeste);
end;

procedure TForm1.Evento(Event: TNotifyEvent);
begin
  Self.OnClick:= Event;
end;

procedure TForm1.EventoTeste(Sender: TObject);
begin
  ShowMessage(´oi´);
end;

end.



GOSTEI 0
Marcosrocha

Marcosrocha

01/04/2009

Amigo Rudá era isso mesmo. Acho que eu estava ´viajando na maionese´ quando fiz o código do post.


GOSTEI 0
POSTAR