Apostila de Delphi 7.0 _______________________________________________________________________ Profa. Gilene B. Gomes ______ 7. CAIXAS DE DIÁLOGO PREDEFINIDAS O Delphi oferece vários comandos para a exibição de caixas de diálogo comuns, como caixas de mensagem (Message Boxes) e caixas de entrada (Input Boxes). Esses comandos permitem que aplicativos com recursos simples de entrada e saída sejam criados rapidamente. 7.1. MESSAGE BOXES (CAIXAS DE MENSAGEM) As caixas de mensagem são usadas para exibir resultados, erros, ou avisos para o usuário. Elas são caixas modais (bloqueiam a execução do programa quando são exibidas). Há funções para mostrar caixas de mensagem no Delphi. A mais simples é ShowMessage, que mostra apenas uma mensagem e um botão OK. Já a função MessageDlg oferece mais opções, como símbolos e títulos diferentes. A função MessageBox permite criar um quadro de mensagem com vários botões em português e que retorne uma resposta do usuário, indicando qual botão foi escolhido. Para a entrada de informações simples, você pode usar a função InputBox. 7.2. USANDO O COMANDO SHOWMESSAGE Use o comando ShowMessage para mostrar uma mensagem simples para o usuário. A mensagem é exibida em uma pequena caixa, com um botão OK. A caixa é fechada quando o botão OK é clicado. No exemplo abaixo, uma caixa de mensagem é exibida quando o botão Button1 recebe um clique: ShowMessage('Este comando não pode ser usado no momento.'); A caixa de mensagem exibida é a seguinte: Como padrão, é exibido o nome do projeto na barra de título da caixa de mensagem. __ www.gomeshp.com _________________________________________________________________________ 28 Apostila de Delphi 7.0 _______________________________________________________________________ Profa. Gilene B. Gomes ______ 7.3. USANDO O COMANDO MESSAGEDLG O comando MessageDlg mostra uma caixa de mensagem que pode conter símbolos especiais, botões adicionais e outros elementos. O comando tem vários parâmetros que devem ser especificados. Veja a sintaxe do comando MessageDlg: MessageDlg(<Mensagem>,<Tipo da Caixa>,<Botões>,<Número de ajuda>); <Mensagem> é um trecho de texto entre aspas simples, como para o comando ShowMessage. <Tipo da Caixa> determina o símbolo que será exibido na parte esquerda da caixa. Os cinco tipos disponíveis são ilustrados a seguir, além do comando usado para exibir cada tipo de caixa. mtInformation MessageDlg ('Mensagem de informação’, mtInformation, mbOKCancel, 0); mtWarning MessageDlg ('Mensagem de aviso’, mtWarning, mbOKCancel, 0); mtError MessageDlg ('Mensagem de erro', mtError, mbOKCancel, 0); mtConfirmation MessageDlg ('Mensagem de confirmação', mtConfirmation, mbOKCancel, 0); mtCustom MessageDlg ('Outra mensagem', mtCustom, mbOKCancel, 0); __ www.gomeshp.com _________________________________________________________________________ 29 Apostila de Delphi 7.0 _______________________________________________________________________ Profa. Gilene B. Gomes ______ Note que os títulos das caixas de mensagem são sempre o nome do tipo da caixa, com exceção da opção mtCustom que exibe o nome do projeto como título (e não mostra símbolo especial). Infelizmente, os títulos são sempre em inglês. Não há como especificar outros títulos para as caixas usando o comando MessageDlg. <Botões> é usado para definir o conjunto de botões que será exibido na parte de baixo da caixa de mensagem. Há alguns conjuntos de botões predefinidos. Um deles foi usado nos exemplos anteriores: mbOKCancel, que mostra os botões OK e Cancel. Os conjuntos predefinidos são resumidos a seguir: mbYesNoCancel mbAbortRetryIgnore mbAbortIgnore mbOKCancel Mostra os botões Yes, No e Cancel. Mostra os botões Abort, Retry e Ignore. Mostra os botões Abort e Ignore. Mostra os botões OK e Cancel. Pode-se também adicionar botões específicos, listando o nome dos botões entre colchetes. Os botões disponíveis são: mbYes, mbNo, mbOK, mbCancel, mbHelp, mbAbort, mbRetry, mbIgnore, mbAll, mbYesToAll, mbNoToAll Por exemplo, para mostrar uma caixa de mensagem de aviso com os botões, Yes, No, Ignore e Help, use um comando como o seguinte (a caixa é mostrada logo depois): MessageDlg(‘Houve um erro de leitura no disco. Deseja interromper a execução do aplicativo?’, mtWarning, [mbYes, mbNo, mbIgnore, mbHelp],0); MessageDlg retorna um valor do botão selecionado pelo usuário. Estes são os possíveis valores de retorno: mrOk mrCancel 7.4. USANDO mrRetry mrIgnore A FUNÇÃO mrYes mrNo mrNone mrAbort mrNoToAll mrYesToAll mrAll MESSAGEBOX Esta função pertence à biblioteca do Windows (API), sendo que os títulos dos botões aparecem em Português. O Delphi a relaciona ao objeto do tipo TApplication. Application.MessageBox (<Mensagem>, <Titulo>, <Tipo>); __ www.gomeshp.com _________________________________________________________________________ 30 Apostila de Delphi 7.0 _______________________________________________________________________ Profa. Gilene B. Gomes ______ Onde: <Mensagem> - expressão mostrada dentro da caixa de diálogo. <Titulo> - barra de títulos da caixa de diálogo. <Tipo> - somatória de números, conforme o que se quer exibir na caixa de diálogo, seguindo a tabela abaixo: Argumento Tipo para a função MessageBox: Valor 0 1 2 3 4 5 16 32 48 64 0 256 512 Significado Somente o botão de OK Botões de OK e Cancelar Botões Anular, Repetir e Ignorar Botões Sim, Não, Cancelar Botões Sim, Não Botões Repetir e Cancelar Sinal de Stop Sinal de Pesquisa Sinal de Aviso Ícone de Informação Primeiro botão com foco Segundo botão com foco Terceiro botão com foco Valores possíveis de retorno em relação a resposta do usuário: Valor 1 2 3 4 5 6 7 Botão pressionado Botão OK Botão Cancelar Botão Anular Botão Repetir Botão Ignorar Botão Sim Botão Não Um exemplo: resp:= Application.MessageBox ('Este é um exemplo, você entendeu?', 'Função MessageBox', 36); resp – é uma variável do tipo integer (inteiro), que recebe o valor do botão pressionado. 36 = 32 (Sinal de Pesquisa) e 4 (Botões Sim, Não). __ www.gomeshp.com _________________________________________________________________________ 31 Apostila de Delphi 7.0 _______________________________________________________________________ Profa. Gilene B. Gomes ______ 7.5. USANDO A FUNÇÃO INPUTBOX Essa função mostra uma caixa simples com um campo para a entrada (um componente Edit) de dados e os botões OK e Cancel. InputBox retorna uma String com o texto digitado pelo usuário. A função InputBox recebe três parâmetros: InputBox (<Título da Caixa>, <Texto do prompt>, <Texto padrão>); <Título da Caixa> define o texto que é exibido na barra de título da caixa. <Texto do prompt> é o texto exibido na parte interna da caixa. <Texto Padrão> é o texto padrão exibido dentro do campo de entrada. Este texto aparece inicialmente selecionado. Para não mostrar um texto padrão use uma string vazia (‘’). Veja um exemplo a seguir: InputBox ('Escolha de país', 'Digite o nome do país:', 'Brasil'); Para recuperar o que foi digitado na InputBox, use uma variável para armazenar o valor. No exemplo a seguir, é usada uma variável ‘NomeDoPais’, do tipo String: procedure TForm1.Button1Click(Sender: TObject); var NomeDoPais: String; begin NomeDoPais := InputBox ('Escolha de país', 'Digite o nome do país:', 'Brasil'); ShowMessage ('Nome do país escolhido: ' + NomeDoPais); end; O exemplo lê um nome de país, usando a função InputBox, e exibe esse nome em uma caixa de mensagem. __ www.gomeshp.com _________________________________________________________________________ 32 Apostila de Delphi 7.0 _______________________________________________________________________ Profa. Gilene B. Gomes ______ 7.6. EXERCÍCIOS 1. Crie a linha de comando para cada uma das caixas de diálogo apresentadas abaixo e teste-as no Delphi: __ www.gomeshp.com _________________________________________________________________________ 33