Como rodar o timer na condicao x

20/07/2010

Ola Wesley Tenho um timer com algumas rotinas dentro   Select * from tabela where campo is null ...   Como eu faço para essas rotinas que estao dentro do time somente executarem quando o frmMain estiver aberto como form principal.   O problema que ando tendo ao trabalhar com esse timer e que se abro o form de caixa o timer do frmMain dispara , ow seja la em qualquer outro form do projeto ele sempre dispara.Gostaria de disparar o timer somente quando o frmMain estiver aberto e na condiçao que nao exista outros forms abertos no projeto ?  
Carlos Faria

Carlos Faria

Curtidas 0

Respostas

Wesley Yamazack

Wesley Yamazack

20/07/2010

Olá Carlos


O que esta ocorrendo é que você esta deixando seu Form que possui o Timer criado, não faça isso, crie o mesmo quando for utilizar.

Na hora que o Form for chamado coloque o seguinte Timer1.Active := True;,

Close do Form Timer1.Active := False;

EM modo de designer deixe seu timer com active = FAlse;

Ele só será ativado quando for chamado, sacou a idéia ?

Att,

Wesley Y
GOSTEI 0
Carlos Faria

Carlos Faria

20/07/2010

Quanto a isso eu ja sabia o problema e que uso o timer no form principal ,esse form chama todos os forms do projeto e seria muito trabalhoso desactivar o timer em mais de 50 forms   Seria possivel fazer uma rotina onde esse timer so rode quando o frmPrincipal estiver somente ele aberto ?   se chamar outro form e desativa
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

20/07/2010

Carlos,

  Seus forms trabalham com herança visual ?

Um abraço

Wesley Y
GOSTEI 0
Carlos Faria

Carlos Faria

20/07/2010

Alguns sim outros nao ,   acho que isso resolveria   If formPrincipal.somenteeleaberto then timer1.enable = true else timer1.eneble := false ;
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

20/07/2010

Carlos,


If formPrincipal.somenteeleaberto then timer1.enable = true else timer1.eneble := false ;

Fica mais elegante assim

Timer1.Enabled := formPrincipal.somenteeleaberto

Mas realmente não tenho como saber se isso irá lhe atender, pois já que você trabalha com vários forms diferentes, fica complicado de lhe ver uma solução. Mas tenta isso qualquer coisa estamos aqui.

Um abraço

Wesley Y
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

20/07/2010

Fala ae Carlos, e ai meu camarada, funcionou ?

Att,

Wesley Y
GOSTEI 0
Carlos Faria

Carlos Faria

20/07/2010

Voce poderia ser mais claro ?   Somenteaberto seria funcçao do tipo boolean ou representa algum envento do form ?
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

20/07/2010

Carlos,

você que deu a idéia, achei que tivesse funcionado.

Realmente você vai ter que fazer isso em cada form. Pois já que você não tem herança visual, fica complicado de fazer isso.

De repente criar uma função em uma unit, para desativar o timer de todos os teus forms Tipo

procedure desativar;
begin

   form1.timer1.enabled := false;
   form2.timer1.enabled := false;
   form3.timer1.enabled := false;
   form4.timer1.enabled := false;

end;

Acho que isso irá ajudar na desativação.

Att,

Wesley Y
GOSTEI 0
Carlos Faria

Carlos Faria

20/07/2010

Vou experimentar
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

20/07/2010

Blz..

Um abraço

Wesley Y
GOSTEI 0
POSTAR