Criar um quot;ShowMessagequot; sem botão
Quero exibir um ´ShowMessage´ durante um processo dentro do sistema. A cada fase do processo quero ir informando ao usuário o que já foi feito... Queria algo semelhante a um ´ShowMessage´ sem botão... Ou pode até tem botão, mas só que o mesmo teria que descartar o ´clique´ obrigado do botão de ´OK´. Será que alguem teria exemplo de como fazer isso? O mesmo será colocado dentro de um DLL.
Obrigado e aguardo qualquer orientação.
Obrigado e aguardo qualquer orientação.
Aprendiz_ce
Curtidas 0
Respostas
Fabianosales
15/07/2008
Então, cara... não é difícil fazer isso não.
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´:
E na implementação do formulário...
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´.
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);
GOSTEI 0
Aprendiz_ce
15/07/2008
Então, cara... não é difícil fazer isso não.
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´:
E na implementação do formulário...
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´.
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.
GOSTEI 0
Fabianosales
15/07/2008
Ôpa! Precisando é só falar... :wink:
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é...
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é...
GOSTEI 0
Aprendiz_ce
15/07/2008
Ôpa! Precisando é só falar... :wink:
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é...
Beleza!!!
Mas ele pode ser ´StayOnTop´?
Obrigado pela sua pronta atenção.
Abraço.
GOSTEI 0
Fabianosales
15/07/2008
Pode sim mestre. No problem.
GOSTEI 0
Aprendiz_ce
15/07/2008
Pode sim mestre. No problem.
Beleza!!!
Obrigado e aquele abraço.
GOSTEI 0
Brunodsr
15/07/2008
Brother.. Sem querer ser chato, mas vc nao acha melhor mostar essas informações através de um status bar não? Ele foi criado justamente pra isso.
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
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
GOSTEI 0
Aprendiz_ce
15/07/2008
Brother.. Sem querer ser chato, mas vc nao acha melhor mostar essas informações através de um status bar não? Ele foi criado justamente pra isso.
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
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.
GOSTEI 0
Aprendiz_ce
15/07/2008
[quote:a778d7f9ee=´fabianosales´]Pode sim mestre. No problem.
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.
GOSTEI 0
Wdrocha
15/07/2008
Pra vc liberar o form coloca no OnClose dele o seguinte...
Action := CaFree;
E pronto....
Espero ter ajudado.
Action := CaFree;
E pronto....
Espero ter ajudado.
GOSTEI 0