Para exemplificarmos a construção de menus vamos criar uma nova aplicação. Nossa aplicação será um editor de textos usando o componente TMemo. Após iniciar a nova aplicação defina a propriedade Name do form como frmEditor, o Caption como Editor e salve tudo atribuindo à unit o nome u_editor e ao projeto o nome Editor.
Selecione um componente Memo na aba Standard e insira-o no form. Defina a propriedade Name como mmEditor. Na propriedade Align selecione alClient, dessa forma o Memo ocupará toda a área do form. Acesse a propriedade Lines e exclua a linha que lá aparece. Na propriedade ScrollBars selecione ssAutoVertical. Assim, quando for digitado um texto maior do que o pode caber no Memo, a barra de rolagem vertical irá aparecer automaticamente.
O Editor de Menus
Vamos criar um menu com a seguinte estrutura:
Arquivo
Sair
Visualizar
Barra de ferramentas
Opções
Cor do texto
Cor do fundo
Alinhamento
Esquerda
Centro
Direita
Ajuda
Sobre
Para utilizar o Editor de Menus do Lazarus precisamos de um componente TMainMenu. Selecione esse componente na aba Standard e o insira no form em qualquer posição. O Lazarus se encarrega de posicionar
o menu no lugar correto, abaixo da barra de título.
Para abrir o editor dê um duplo clique no MainMenu. Na propriedade Caption digite &Arquivo e na propriedade Name digite mnuArquivo. Isso define o primeiro item de menu. Clique com o botão direito no item recém-criado. Em seguida clique em Inserir novo item (depois), digite &Visualizar no Caption e mnuVisualizar em Name. Repita esses passos para os itens &Opções e A&juda. Agora clique com o botão direito no item Arquivo e clique em Criar Submenu. Digite Sai&r no Caption, e mnuSair em Name. Faça o mesmo nos itens seguintes. Quando quiser incluir novo item use a opção Inserir novo item (depois) ou Inserir novo item (antes). Clique com o botão direito em Alinhamento e escolha Criar Submenu. Inclua os itens conforme descrito na estrutura do menu acima. Seu form deve estar com esta aparência:
Uma característica dos itens de menu é que eles podem conter uma letra sublinhada, chamada hotkey. Esta letra é usada para selecionar o menu usando o teclado. Pressionando ALT mais a letra sublinhada seleciona-se o menu. Pressionando outra letra sublinhada envia-se o comando. As letras sublinhadas de cada item dentro de um submenu devem ser diferentes. Observe que durante a criação do nosso menu, definimos as letras sublinhadas inserindo um & antes da letra.
Outra característica padrão dos menus são as teclas de atalho. Quando aparece uma combinação de teclas no lado direito do item de menu, significa que você pode usar essa combinação para executar o comando. Essa característica oferece a maneira mais rápida de executar um comando.
Para associar teclas de atalho a um item de menu é muito fácil. No Editor de Menus simplesmente escolha uma combinação de teclas na propriedade ShortCut do item. Vamos fazer isso para as opções: Esquerda, Centro e Direita do item de menu Alinhamento. Selecione a opção Esquerda e na propriedade ShortCut selecione a combinação CTRL + E. Para a opção Centro selecione CTRL + C e para a opção Direita selecione CTRL + D. Veja a figura abaixo:
Respondendo aos comandos do menu
Vamos inserir o componente TColorDialog da aba Dialogs na nossa aplicação. Esse componente é uma janela onde podemos selecionar um cor. Mude a propriedade Name desse componente para dlgCores. Usaremos esse componente para mudar as cores do texto e do fundo do nosso editor. Dessa forma quando selecionarmos a opção Cor do texto ou Cor do fundo no menu Opções, a caixa de diálogo de cores será aberta e poderemos selecionar uma nova cor. Clique então em Cor do texto. O editor de código será aberto no método do evento OnClick dessa opção e digite o seguinte código:
dlgCores.Color := mmEditor.Font.Color;
if dlgCores.Execute then
mmEditor.Font.Color := dlgCores.Color;
A primeira linha do código define que a cor selecionada no ColorDialog será a mesma do texto do Memo. Na linha seguinte definine-se que, se o usuário clicar OK no ColorDialog, a cor selecionada será atribuída à propriedade Color de Font do Memo. Compile e execute o programa. Digite um texto e mude sua cor usando a opção Cor do texto.
No evento OnClick da opção Cor do fundo digite o seguinte código:
if dlgCores.Execute then
mmEditor.Color := dlgCores.Color;
Este código é semelhante ao código de Cor do texto, mas neste caso mudamos a propriedade Color do Memo, que significa mudar a cor do fundo.
No grupo de Alinhamento, usaremos as opções para alinhar o texto à esquerda, à direita ou centralizar. Além disso queremos que a opção de menu que estiver selecionada fique marcada. Clique então na opção Esquerda. Digite o seguinte código no método que foi aberto:
mmEditor.Alignment := taLeftJustify;
mnuEsquerda.Checked := True;
mnuCentro.Checked := False;
mnuDireita.Checked := False;
mnuEsquerda.Checked := True;
mnuCentro.Checked := False;
mnuDireita.Checked := False;
A primeira linha define o alinhamento do texto no Memo. As três linhas seguintes definem qual opção de menu está selecionada. Vamos definir o código para OnClick de Centro:
mmEditor.Alignment := taCenter;
mnuEsquerda.Checked := False;
mnuCentro.Checked := True;
mnuDireita.Checked := False;
mnuEsquerda.Checked := False;
mnuCentro.Checked := True;
mnuDireita.Checked := False;
E para o evento OnClick de Direita:
mmEditor.Alignment := taRightJustify;
mnuEsquerda.Checked := False;
mnuCentro.Checked := False;
mnuDireita.Checked := True;
mnuEsquerda.Checked := False;
mnuCentro.Checked := False;
mnuDireita.Checked := True;
Chamadas a forms
Com certeza suas aplicações sempre terão muitos forms. Existe um form principal (main) que faz chamadas a outros forms. A maneira de fazer chamadas a outros forms será estudada agora. Vamos criar um novo form na nossa aplicação. Esta nova janela será o nosso Sobre (About). Para incluir um novo form selecione no menu Arquivo -> Novo formulário. Ou utilize o botão correspondente na barra de ferramentas. Neste novo form defina Caption como Sobre. Na propriedade Name informe frmSobre. Salve-o e escolha u_sobre para nome da unit. Você é livre para criar o Sobre da maneira que preferir. Mas no nosso exemplo vamos inserir um rótulo (TLabel) onde definimos o Caption como Programa desenvolvido por Carlos Araújo apenas para fins didáticos. Deixe a propriedade Width como 220 e WordWrap como True. A propriedade WordWrap define se o Caption permite quebra de linha. Inclua mais um rótulo e defina o Caption como Versão 1.0. Inclua um botão do tipo TBitBtn da paleta Additional e defina Name como btnFechar e Kind como bkClose.
Este botão não precisa de código no evento OnClick. A propridade Kind define a função do botão.
Agora que Sobre estrá pronto queremos que nossa aplicação mostre-o quando o usuário selecionar o menu Ajuda -> Sobre. Para efetivarmos isso precisamos primeiramente informar à unit u_editor que ela usará a unit u_sobre. Isto é feito digitando o seguinte código logo abaixo da seção implementation de u_editor:
uses u_sobre;
Agora u_editor tem acesso a tudo que é público em u_sobre. Há duas maneiras de fazer chamadas a forms:
- Modal - o foco fica preso ao form e não é liberado até que este seja fechado. O usuário pode ativar qualquer outra aplicação, mas não pode ativar outra janela da aplicação cuja janela foi aberta como modal. Para ativar esse modo chame o form usando o método ShowModal.
- Não modal - o foco pode ser transferido para outra janela sem que esta precise ser fechada. Para ativar esse modo chame o form usando o método Show.
Agora selecione o evento OnClick do comando Ajuda -> Sobre e digite o seguinte código:
frmSobre.ShowModal;
Selecione o evento OnClick do comando Arquivo -> Sair e digite Close no editor. Execute o programa e clique em Ajuda -> Sobre. Observe que você não pode fazer nada no programa sem que o form Sobre seja fechado. Confirme o funcionamento correto das outras opções do menu. Digite um texto no Memo e teste alterações de cores e alinhamento.
No próximo post mostraremos como criar barras de ferramentas, de status e menus locais (pop-ups).













































