Passar procedure como parâmetro
Tenho uma classe que cria formulários e passa para eles um evento TNotifyEvent a partir da função:
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]
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
Curtidas 0
Respostas
Rudá
01/04/2009
Amigo,
Veja se pode adaptar para o que vc quer.
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
01/04/2009
Amigo Rudá era isso mesmo. Acho que eu estava ´viajando na maionese´ quando fiz o código do post.
GOSTEI 0