Fórum Mensagem de "Aguarde piscando na tela" #398811

07/04/2011

0

Pessoal estou tentando colocar uma mensagem de "Aguarde" na tela e fiz da seguinte forma:
- Criei um frm e nele coloco um Ontimer.
   No interval do Ontimer := 1850
   No evento OnTimer coloquei o código:
begin
  Label1.Font.Size := 28;
  Label1.Font.Color := clRed;
  if (Label1.Visible = True) then
      Begin
        Label1.Caption := 'AGUARDE...';
        TempoTimer.Interval := TempoTimer.Interval * 10;
        Label1.Visible := False;
        Application.ProcessMessages;
      end
    else
      Begin
        Label1.Caption := '';
        TempoTimer.Interval := TempoTimer.Interval div 10;
        Label1.Visible:= True;
        Application.ProcessMessages;
      end;
end;

   Nesse mesmo frm coloco no Oncreate: Label1.Visible := True;
   No onShow
procedure TfrmMsgProcesso.FormShow(Sender: TObject);
begin
  Top  := 9;  // Para ficar no alto da tela
  Left := Trunc((Screen.Width/2) - (Width/2));  // Para ficar no centro da tela
end;

 
 

- Criei uma unit para colocar todas as funções:
   Nela criei duas procedures, 1 para chamar o frm da mensagem e outra para fecha-la, estão assim:
procedure MostraTelaMsgProcesso();
begin
   Application.CreateForm(TfrmMsgProcesso, frmMsgProcesso);
   frmMsgProcesso.Show;
   frmMsgProcesso.BringToFront;
end;

procedure FechaTelaMsgProcesso();
begin
   frmMsgProcesso.Close;
   frmMsgProcesso.Destroy;
end;


No frm onde faço a chamada :
 begin  // 0
   MostraTelaMsgProcesso();
   código
   .......
  FechaTelaMsgProcesso();


O problema é que a mensagem ñ aparece, me parece que o sistema ñ está lendo os códigos que estão o evento Ontimer.
Mas mesmo assim, se eu colocar alguma coisa no frm da mensagem e deixa-la estática (retirar as funções que fazem piscar) a mensagem ainda assim não aparece, o frm da mensagem aparece, mas fica vázio.
Alguém poderia me dizer o que está saído de errado ?
Marcos Barbosa

Marcos Barbosa

Responder

Posts

07/04/2011

Wilson Junior

Em que momento do seu código você habilita o Timer (Timer.Enabled := True)?
Responder

Gostei + 0

07/04/2011

Marcos Barbosa

No proprio form, na propriedade Enebled.
Responder

Gostei + 0

07/04/2011

Marcos Barbosa

Oh, vamos esquecer a palavra piscando...
Fiz o mesmo processo, deixei um form com o CAPTION = 'AGUARDE'
Na frm da função
procedure MostraTelaMsgProcesso();
begin
   Application.CreateForm(TfrmMsgProcesso, frmMsgProcesso);
end;

procedure FechaTelaMsgProcesso();
begin
   frmMsgProcesso.Close;
   frmMsgProcesso.Destroy;
end;


Ou seja, um form simples q é chamado, mas nada q é colocado dentro dele aparece e todas as pripriedades estão com visible := true.

Bem acho que pelo menos assim deveria aparecer algo né ?
Responder

Gostei + 0

07/04/2011

Dirceu Morais


Será que um refresh no form não resolve?

procedure MostraTelaMsgProcesso();
begin
   Application.CreateForm(TfrmMsgProcesso, frmMsgProcesso);
   frmMsgProcesso.refresh;
end;

Responder

Gostei + 0

07/04/2011

Emerson Nascimento

altere o procedimento do timer para:

begin
  Label1.Visible := not Label1.Visible;
  if Label1.Visible
    TempoTimer.Interval := 1000;
  else
    TempoTimer.Interval := 500;
  Update;
end;

eu tenho um form com essa finalidade. se quiser posso te mandar por e-mail.

Responder

Gostei + 0

07/04/2011

Marcos Barbosa

Dirceu, colocando o refresh como vc falou a palavra 'A G U A R D E'  começou a aparecer, isso é um grande passo, agora falta ela piscar... rsrsrs

Emerson, coloquei da forma q vc indicou, mas ñ está funcionando. Deixa quebrar a cabeça mais um pouco, depois de for necessário eu te peco o código. Se puder deixe seu contato.
Responder

Gostei + 0

07/04/2011

Emerson Nascimento

da forma que eu coloquei você já deve ter o caption do seu label com o conteúdo 'AGUARDE. . .'

se você deixar vazio obviamente não vai aparecer a mensagem....
Responder

Gostei + 0

08/04/2011

Marcos Barbosa

Emerson, valeu pela ajuda, realmente eu testei assim e funcionou... brigadão mesmo, e desculpe pela demora em retornar a resposta.
Responder

Gostei + 0

16/04/2013

José

Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
Responder

Gostei + 0

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

Aceitar