Criar um quot;ShowMessagequot; sem botão
15/07/2008
0
Obrigado e aguardo qualquer orientação.
Aprendiz_ce
Posts
15/07/2008
Fabianosales
Você pode criar um formulário comum com o layout que você quer e criar um método de classe pra exibí-lo.
Ponha um botão, um label e um timer no form e então declare, na sessão ´public´:
public { Public declarations } class function ShowDialog(const Msg: string; TimeOut: cardinal; ShowButton:boolean) : TModalResult;
E na implementação do formulário...
procedure TfrmDialog.FormActivate(Sender: TObject); begin tmrTimeOut.Enabled := (tmrTimeOut.Interval > 0) end; class function TfrmDialog.ShowDialog(const Msg: string; TimeOut: cardinal; ShowButton:boolean): TModalResult; var dlg : TfrmDialog; begin dlg := TfrmDialog.Create(Application); try dlg.tmrTimeOut.Interval := TimeOut; dlg.tmrTimeOut.Enabled := False; dlg.lblMsg.Caption := Msg; dlg.btnOk.Visible := ShowButton; Result:= dlg.ShowModal; finally FreeAndNil(dlg); end; end; procedure TfrmDialog.tmrTimeOutTimer(Sender: TObject); begin ModalResult := mrOk; end;
Pronto! Agora basta chamar o método TfrmDialog.ShowDialog, passando como parâmetros o texto, a quantidade de tempo que este será exibido e se deve ou não mostrar o botão ´OK´.
TfrmDialog.ShowDialog(´Mensagem ao usuário...´, 3000, False);
16/07/2008
Aprendiz_ce
public { Public declarations } class function ShowDialog(const Msg: string; TimeOut: cardinal; ShowButton:boolean) : TModalResult;
procedure TfrmDialog.FormActivate(Sender: TObject); begin tmrTimeOut.Enabled := (tmrTimeOut.Interval > 0) end; class function TfrmDialog.ShowDialog(const Msg: string; TimeOut: cardinal; ShowButton:boolean): TModalResult; var dlg : TfrmDialog; begin dlg := TfrmDialog.Create(Application); try dlg.tmrTimeOut.Interval := TimeOut; dlg.tmrTimeOut.Enabled := False; dlg.lblMsg.Caption := Msg; dlg.btnOk.Visible := ShowButton; Result:= dlg.ShowModal; finally FreeAndNil(dlg); end; end; procedure TfrmDialog.tmrTimeOutTimer(Sender: TObject); begin ModalResult := mrOk; end;
TfrmDialog.ShowDialog(´Mensagem ao usuário...´, 3000, False);
Olá fabianosales,
Beleza!!!
Esse seu exemplo será de grande ajuda para mim. Acho que implementa-lo sem o botão. Quero que mostre somente o que está sendo ´feito´ e com o botão acho que fica sem sentido, pois o usuário não necessita interagir com o processo, resta apenas ele acompanha-lo.
Muitíssimo obrigado pela sua atenção.
Um forte abraço.
16/07/2008
Fabianosales
Só um detalhe. Se você exibir o form através de um ´ShowModal´, seu processamento ficara suspenso até que o formulário seja fechado. Troca o ´ShowModal´ por um ´Show´ comum mesmo, blz?
Evoé...
16/07/2008
Aprendiz_ce
Beleza!!!
Mas ele pode ser ´StayOnTop´?
Obrigado pela sua pronta atenção.
Abraço.
17/07/2008
Aprendiz_ce
Beleza!!!
Obrigado e aquele abraço.
17/07/2008
Brunodsr
Daí vc evita essa programação toda veio. A não ser que a idéia tenha partido do usuário e ele realmente necessite que seja feito dessa forma.
Espero ter ajudado.
Um abraço
17/07/2008
Aprendiz_ce
Concordo com você!!!
O problema todo é o seguinte: Não tenho TFORM e muito menos como colocar uma TSTATUSBAR... O projeto em questão é uma DLL que faz um processo com varios arquivos diferentes... Quando a DLL forma carregada... Quero ficar mostrando o que está acontecendo. Entendeu?
Você teria uma outra idéia? Aceito opiniões!!!
Grato pelo seu interesse e atenção para comigo.
Abraço.
20/07/2008
Aprendiz_ce
Beleza!!!
Obrigado e aquele abraço.[/quote:a778d7f9ee]
Olá fabianosales,
fiz tudo conforme conversamos anteriormente e ficou super legal. Só que estou com dúvidas em um única coisa: Crio tudo em ´run time´, exibo o formulário com ´show´... Só que como faço para destrui-lo/libera-lo?, pois como o ´bixim´ é mostrado do ´show´ se coloco formx.show; formx.free... o mesmo é eleminado logo de cara... Como resolvo isso?
Grato e aguardo qualquer orientação.
Abraço.
20/07/2008
Wdrocha
Action := CaFree;
E pronto....
Espero ter ajudado.
Clique aqui para fazer login e interagir na Comunidade :)