RSS

Application.MessageBox

25 nov

 

Em vez de usar a ShowMessage ou MessageDlg, é bom usar a função Application.MessageBox. Ela utiliza a API do Windows, ficando mais próxima das janelas que a maioria dos programas usam, ao mesmo tempo que já passa o handle proprietário adequadamente, por ser da Application.

Chame assim:

Application.MessageBox('Texto da mensagem', 'Título', mb_iconinformation + mb_ok);

Uma vantagem de usar ela é que os botões aparecerão no idioma do Windows, já que é o Windows que cria a janela. Ao usar a MessageDlg o Delphi usa sua VCL, mantendo os botões em inglês.

Ícone da janela de pergunta

Utilize um desses valores para o ícone:

  • MB_ICONINFORMATION – ícone “i”, para informações gerais.
  • MB_ICONERROR – ícone de erro, use para alertas graves ou falhas tratadas.
  • MB_ICONWARNING – ícone de aviso, exclamação geralmente num triângulo amarelo.
  • MB_ICONQUESTION – ícone de pergunta, interrogação.

Exemplo:

if Application.MessageBox('Deseja salvar o texto atual?', 'Salvar', mb_iconquestion + mb_yesno) = idYes then
if SaveDialog1.Execute then
Memo1.Lines.SaveToFile(SaveDialog1.Filename);

Botões

Você pode usar constantes definidas na Unit Windows. Veja:

  • MB_OK – apenas o botão de OK, use para notificações.
  • MB_OKCANCEL – botões OK e Cancelar.
  • MB_YESNO – botões Sim e Não.
  • MB_YESNOCANCEL – botões Sim, Não e Cancelar.
  • MB_RETRYCANCEL – botões Repetir e Cancelar.
  • MB_ABORTRETRYIGNORE – botões Abortar Anular, Repetir e Ignorar.

Retorno

A função MessageBox retornará:

  • IDOK – se o usuário clicar no OK.
  • IDCANCEL – se o usuário clicar no Cancelar.
  • IDYES – se o usuário clicar no Sim.
  • IDNO – se o usuário clicar no Não.
  • IDABORT – se o usuário clicar no Abortar.
  • IDRETRY – se o usuário clicar no Repetir.
  • IDIGNORE – se o usuário clicar no Ignorar.

Botão Padrão

O botão padrão já vem com o foco, e será acionado ao teclar Enter. Dependendo da situação pode ser desejável que outro botão tenha o foco, sem ser o primeiro, para evitar alguma ação catastrófica desastrosa se o usuário teclar enter sem ler a mensagem. Adicione nas flags (com +) MB_DEFBUTTON2 para que o botão padrão seja o segundo. Use MB_DEFBUTTON3 para que seja o terceiro, e MB_DEFBUTTON4 para que seja o quarto.

Exemplo:

if Application.MessageBox('Tem certeza que deseja sair sem gravar as opções?', 'Aviso', mb_yesno + mb_defbutton2) = idYes then
Application.Terminate;

Dessa forma o “Não” fica selecionado, e será ativado se o usuário teclar Enter. O programa só seria fechado se ele clicasse no Sim.

Anúncios
 
Deixe um comentário

Publicado por em 25/11/2009 em Estudos Delphi

 

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

 
%d blogueiros gostam disto: