Atribuindo Eventos dinamicamente? Quem sabe?
Galera, tô com um problema.
Preciso atribuir um evento dinamicamente, mas dá sempre uma msg de erro na compilação.
Dêem uma olhada:
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
procedure cabec(Sender: TObject);
var
Form1: TForm1;
implementation
{$R *.dfm}
//O evento OnPrintHeader recebe o mesmo parâmetro
procedure cabec(Sender: TObject);
Begin
//apenas um teste
(Sender as Tbasereport).printxy(0,0,´teste´);
end;
procedure TForm1.Button1Click(Sender: TObject);
Var
Rvsys1:TrvSystem;
begin
Rvsys1:=TrvSystem.Create(self);
Rvsys1.OnPrintHeader:=cabec;
Rvsys1.execute;
end;
Qd mando compilar, dá este erro:
Incompatible types: Method pointer and Regular procedure.
Não entendi nada.
Como posso resolver este problema?
Alguem q usa o Rave programado, sabe como fazer para executar o relatório dentro de uma função? Pois é isto q estou tentando fazer.
Obrigado
Preciso atribuir um evento dinamicamente, mas dá sempre uma msg de erro na compilação.
Dêem uma olhada:
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
procedure cabec(Sender: TObject);
var
Form1: TForm1;
implementation
{$R *.dfm}
//O evento OnPrintHeader recebe o mesmo parâmetro
procedure cabec(Sender: TObject);
Begin
//apenas um teste
(Sender as Tbasereport).printxy(0,0,´teste´);
end;
procedure TForm1.Button1Click(Sender: TObject);
Var
Rvsys1:TrvSystem;
begin
Rvsys1:=TrvSystem.Create(self);
Rvsys1.OnPrintHeader:=cabec;
Rvsys1.execute;
end;
Qd mando compilar, dá este erro:
Incompatible types: Method pointer and Regular procedure.
Não entendi nada.
Como posso resolver este problema?
Alguem q usa o Rave programado, sabe como fazer para executar o relatório dentro de uma função? Pois é isto q estou tentando fazer.
Obrigado
Aledeol
Curtidas 0
Respostas
Beppe
24/11/2003
Então o que falta?
GOSTEI 0
Beppe
24/11/2003
Então o que falta?
Respondi na questão errada! :oops:
Um evento só pode receber um método, que é uma rotina dentro de uma classe, então você coloca sua procedure dentro de uma classe.
Então é só puxar cabec pra dentro do form. Ex: TForm1.cabec(...)
GOSTEI 0
Aledeol
24/11/2003
Valeu, funcionou.
Mas mesmo assim, isto não me soa bem.
Deve haver uma outra forma de colocar reports programados do Rave em uma função.
Obrigado
Mas mesmo assim, isto não me soa bem.
Deve haver uma outra forma de colocar reports programados do Rave em uma função.
Obrigado
GOSTEI 0