Evento em um timer
Galera e o seguinte:
ve se voceis podem me ajudar eu tenho certeza q tem como so não descobri como faz
tenho um aquivo de funcoes .pas, criei um variavel ttimer dentro de uma função, passei todas a propriedades normais para esta variavel (interval,etc..) no evento ontimer ele da erro. fiz como esta abaixo:
o q tem de errado?
procedure confbanco(banco:tibquery;transa:TIBTransaction);
var
tempo:ttimer;
i:integer;
begin
banco.Close;
tempo:=ttimer.Create(nil);
transa.Active:=true;
tempo.Enabled:=false;
tempo.Interval:=1000;
tempo.OnTimer :=evento;
tempo.Enabled:=true;
end;
procedure Evento(Sender: TObject);
begin
if (bancoy.Active=true) and (bancoy.State in [dsBrowse]) then
bancoy.Refresh;
end;
Valeu pela ajuda!! q Deus abençoe a Todos!!1
ve se voceis podem me ajudar eu tenho certeza q tem como so não descobri como faz
tenho um aquivo de funcoes .pas, criei um variavel ttimer dentro de uma função, passei todas a propriedades normais para esta variavel (interval,etc..) no evento ontimer ele da erro. fiz como esta abaixo:
o q tem de errado?
procedure confbanco(banco:tibquery;transa:TIBTransaction);
var
tempo:ttimer;
i:integer;
begin
banco.Close;
tempo:=ttimer.Create(nil);
transa.Active:=true;
tempo.Enabled:=false;
tempo.Interval:=1000;
tempo.OnTimer :=evento;
tempo.Enabled:=true;
end;
procedure Evento(Sender: TObject);
begin
if (bancoy.Active=true) and (bancoy.State in [dsBrowse]) then
bancoy.Refresh;
end;
Valeu pela ajuda!! q Deus abençoe a Todos!!1
Jbspio
Curtidas 0
Respostas
Beppe
21/11/2003
A rotina Evento [b:38e4c6ba8d]deveria[/b:38e4c6ba8d] estar dentro de uma classe, mas existe um hack:
@OnTimer := @Evento;
GOSTEI 0
Jbspio
21/11/2003
Obrigado pela resposta
Valeu mas nao deu certo!! continua o mesmo erro!
Valeu mas nao deu certo!! continua o mesmo erro!
GOSTEI 0
Beppe
21/11/2003
Obrigado pela resposta
Valeu mas nao deu certo!! continua o mesmo erro!
É que é @Tempo.OnTimer := @Evento;
GOSTEI 0
Beppe
21/11/2003
Olá. . .
Eu testei o truque que passei usando um evento do form, e não de um componente. Parece que o Delphi só permite isto na classe em que se está!
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.
Você também pode escrever um descendente do timer que faz isso:
{ TMyTimer }
type
TMyTimer = class(TTimer)
protected
procedure Timer; override;
end;
procedure TMyTimer.Timer;
begin
if bancoy.Active and (bancoy.State in [dsBrowse]) then
bancoy.Refresh;
end;
O método Timer é que faz a ´mágica´. O certo seria chamar inherited;, mas o método herdado só chama o evento OnTimer, se tiver. Note que agora não estamos usando um evento, usamos o próprio método que despacha o evento.
Então crie uma instãncia de TMyTimer.
T+
Eu testei o truque que passei usando um evento do form, e não de um componente. Parece que o Delphi só permite isto na classe em que se está!
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.
Você também pode escrever um descendente do timer que faz isso:
{ TMyTimer }
type
TMyTimer = class(TTimer)
protected
procedure Timer; override;
end;
procedure TMyTimer.Timer;
begin
if bancoy.Active and (bancoy.State in [dsBrowse]) then
bancoy.Refresh;
end;
O método Timer é que faz a ´mágica´. O certo seria chamar inherited;, mas o método herdado só chama o evento OnTimer, se tiver. Note que agora não estamos usando um evento, usamos o próprio método que despacha o evento.
Então crie uma instãncia de TMyTimer.
T+
GOSTEI 0