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.
Exemplo:
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.
Ícones da janela
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('Tem certeza que deseja sair do sistema', 'Aviso', mb_iconquestion + mb_yesno) = idYes then
begin
Application.Terminate;
end;
Botões da janela
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 da janela
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 da janela
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 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 do sistema?', 'Aviso', mb_yesno + mb_defbutton2) = idYes then
begin
Application.Terminate;
end;
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.
Gostou? Deixe seu comentário... Convido você a seguir meu blog, sua presença é bem vinda!【ツ】
muito bom mesmo amigo o seu trabalho parabem!
ResponderExcluir