Fórum Mensagem de "Aguarde piscando na tela" #398811
07/04/2011
0
- 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
Curtir tópico
+ 0Posts
07/04/2011
Wilson Junior
Gostei + 0
07/04/2011
Marcos Barbosa
Gostei + 0
07/04/2011
Marcos Barbosa
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
07/04/2011
Dirceu Morais
Será que um refresh no form não resolve?
procedure MostraTelaMsgProcesso(); begin Application.CreateForm(TfrmMsgProcesso, frmMsgProcesso); frmMsgProcesso.refresh; end;
Gostei + 0
07/04/2011
Emerson Nascimento
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
07/04/2011
Marcos Barbosa
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
07/04/2011
Emerson Nascimento
se você deixar vazio obviamente não vai aparecer a mensagem....
Gostei + 0
08/04/2011
Marcos Barbosa
Gostei + 0
16/04/2013
José
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)