Fórum Como rodar o timer na condicao x #381834

20/07/2010

0

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

Responder

Posts

21/07/2010

Wesley Yamazack

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
Responder

Gostei + 0

21/07/2010

Carlos Faria

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
Responder

Gostei + 0

21/07/2010

Wesley Yamazack

Carlos,

  Seus forms trabalham com herança visual ?

Um abraço

Wesley Y
Responder

Gostei + 0

21/07/2010

Carlos Faria

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

Gostei + 0

22/07/2010

Wesley Yamazack

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
Responder

Gostei + 0

24/07/2010

Wesley Yamazack

Fala ae Carlos, e ai meu camarada, funcionou ?

Att,

Wesley Y
Responder

Gostei + 0

24/07/2010

Carlos Faria

Voce poderia ser mais claro ?   Somenteaberto seria funcçao do tipo boolean ou representa algum envento do form ?
Responder

Gostei + 0

24/07/2010

Wesley Yamazack

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
Responder

Gostei + 0

24/07/2010

Carlos Faria

Vou experimentar
Responder

Gostei + 0

24/07/2010

Wesley Yamazack

Blz..

Um abraço

Wesley Y
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar