Mensagem de Aguarde piscando na tela
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:
Nesse mesmo frm coloco no Oncreate: Label1.Visible := True;
No onShow
- 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:
No frm onde faço a chamada :
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 ?
- 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
Curtidas 0
Respostas
Wilson Junior
07/04/2011
Em que momento do seu código você habilita o Timer (Timer.Enabled := True)?
GOSTEI 0
Marcos Barbosa
07/04/2011
No proprio form, na propriedade Enebled.
GOSTEI 0
Marcos Barbosa
07/04/2011
Oh, vamos esquecer a palavra piscando...
Fiz o mesmo processo, deixei um form com o CAPTION = 'AGUARDE'
Na frm da função
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é ?
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é ?
GOSTEI 0
Dirceu Morais
07/04/2011
Será que um refresh no form não resolve?
procedure MostraTelaMsgProcesso(); begin Application.CreateForm(TfrmMsgProcesso, frmMsgProcesso); frmMsgProcesso.refresh; end;
GOSTEI 0
Emerson Nascimento
07/04/2011
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.
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.
GOSTEI 0
Marcos Barbosa
07/04/2011
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.
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.
GOSTEI 0
Emerson Nascimento
07/04/2011
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....
se você deixar vazio obviamente não vai aparecer a mensagem....
GOSTEI 0
Marcos Barbosa
07/04/2011
Emerson, valeu pela ajuda, realmente eu testei assim e funcionou... brigadão mesmo, e desculpe pela demora em retornar a resposta.
GOSTEI 0
José
07/04/2011
Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
GOSTEI 0