Artigo Clube Delphi Edição 11 - Crie um Editor de Texto
Crie um Editor de Texto
Aprenda a programar na melhor ferramenta do mercado através de exemplos práticos
O objetivo deste nova coluna, voltada para iniciantes na ferramenta, é demonstrar o uso dos objetos básicos do Delphi, a criação de menus e a funcionalidade das DialogBoxes, que podem ser encontradas na palheta Dialogs.
Um exemplo bem prático, que reúne todos estes conceitos, é a construção de um editor de textos - como o WordPad do Windows.
Para criarmos nosso novo Word, não precisaremos de mais do que um formulário - que será nosso próprio editor, contendo um menu com todas as opções .
Para iniciar, insira um objeto MainMenu (palheta standard) no formulário. Este objeto é chamados de não-visual, pois não é exibido quando o programa é executado.
O próximo passo é montar nossa estrutura de menus. Dê um duplo clique sobre o objeto MainMenu1, para abrir o criador de menus do Delphi.
A primeira opção de menu, em branco, já aparece selecionada. Modifique sua propriedade Name para identificá-lo futuramente. Você também deve alterar a propriedade Caption, digitando o texto que será exibido para o usuário. Preencha de acordo com a tabela abaixo:
Name = MnuArquivo (Mnu é uma abreviatura para menu)
Caption = &Arquivo
O caracter &, utilizado antes do caption 'Arquivo', server para sublinhar a letra 'A' no item de menu. Este recurso cria uma tecla de atalho, acionada através de ALT + letra sublinhada. Neste exemplo, se o usuário pressionar ALT+A, o menu Arquivo será aberto.
Após configurar as propriedades, já é possível visualizar o menu com a opção 'Arquivo' dentro de nosso formulário.
Na figura acima, você pode visualizar como é criado um menu de opções no Delphi. Para criar um menu filho de 'Arquivo', clique no menu dentro do Montador de menus do Delphi. Um submenu será automaticamente aberto.
Siga a lista abaixo e crie sete submenus para o menu 'Arquivo':
A sigla ITM, que vem na frente do nome do menu, é apenas uma abreviatura para Item de Menu (ITM). O quarto item será utilizado como um traço de divisão dentro das opções de Menu. Este serve como divisão e organização dos menus.
A estrutura completa de Menus do nosso editor deverá ser criada de acordo com a lista abaixo:
Em seguida, insira um objeto TrichEdit (palheta Win95), no formulário, e configure suas propriedades:
Name : AreaTexto
Font : Times New Roman , 12, <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />Normal , Cor Preta
Align : alClient
Lines : (clique duas vezes e elimine o conteúdo desta propriedade)
A propriedade align, setada para alClient, fará com que o objeto RichEdit se estenda por toda a área do Formulário, independente do seu tamanho. Por exemplo, se o formulário for maximizado, o objeto RichEdit será automaticamente redimensionado.
Quando o usuário clicar com o botão inverso do mouse sobre o objeto Richedit, um menu flutuante será exibido, com algumas opções. Para criar este menu, insira um objeto TpopMenu (palheta standard) no form. Em seguida, configure a propriedade PopMenu, do objeto RichEdit1, setando como valor 'PopMenu1'.
A criação do PopMenu (Menu de Atalho), é idêntica à criação do Menu principal. Clique duas vezes sobre o objeto PopMenu, e configure-o da seguinte forma:
Na figura acima, você pode visualizar como ficará o PopMenu já configurado (em tempo de edição) .
Já que progredimos bastante no projeto, salve o seu aplicativo o mais rápido possível.
Depois de salvo, o seu projeto irá receber as primeiras linhas de código. Ao clicar sobre a opção 'Novo' do menu 'Arquivo', automaticamente será exibida a tela de código referente ao evento OnClick, que será executado quando o usuário clicar no menu.
O Item Novo criará um documento em branco. Para isto, escreva a linha de código abaixo:
procedure TForm1.ItmNovoClick(Sender: TObject);
AreaTexto.Clear;
Lembre-se que configuramos a propriedade Name do objeto RichEdit para AreaTexto. Isto significa que o objeto de nome AreaTexto executará o método Clear (Apagar). Caso prefira, você pode colocar um comentário ao lado da linha de código, para, no futuro, lembrar o seu significado.
AreaTexto.clear ;
// Apagará todo o conteúdo da area de texto do editor.
Para iniciar a construção dos menus 'Abrir' e 'Salvar', insira um objeto TopenDialog e um TsaveDialog, ambos da palheta Dialogs. Configure suas propriedades de acordo com a tabela abaixo:
Name: OpenDialog1
Filter: *.RTF|*.RTF|*.TXT|*.TXT
Name: saveDialog1
No item de menu 'Abrir', digite a seguinte instrução:
procedure TForm1.ItmAbrirClick(Sender: TObject);
// se objeto OpenDiaolog for executado então
Areatexto.Lines.loadFromFile (Opendialog1.filename);
// Objeto AreaTexto na propriedade Lines através do método loadfromfile
// (carregar do arquivo) irá receber como parâmetro o documento escolhido pelo usuário
Este código utiliza o comando IF para verificar se o objeto OpenDialog1 foi executado e se usuário confirmou a janela. Caso positivo, o documento escolhido será aberto na área de texto do editor.
Para o menu Salvar, temos o código abaixo:
procedure TForm1.itmSalvarClick(Sender: TObject);
// Se o objeto Save Dialog1 for executado então
AreaTexto.Lines.SaveToFile (SaveDialog1.filename);
// Objeto AreaTexto na propriedade Lines através do método SaveToFile
// (SalvaArquivo) irá receber como parâmetro um nome de documento escolhido pelo usuário.
Menu Editar - Recortar:
procedure TForm1.itmCutClick(Sender: TObject);
AreaTexto.CutToClipBoard;
// recorta o texto selecionado para a área de transferência
Menu Editar - Copiar:
procedure TForm1.itmCopyClick(Sender: TObject);
AreaTexto.CopyToClipBoard;
// copia o texto selecionado para a área de transferência
Menu Editar - Colar:
procedure TForm1.itmPasteClick(Sender: TObject);
AreaTexto.PasteFromClipBoard;
// Cola o texto selecionado para a área de transferência
Menu Sair:
procedure TForm1.itmSairClick(Sender: TObject);
close; // fechar aplicação
Como exercício, implemente o código das opções do menu flutuante (popmenu). No site do ClubeDelphi (, na seção Primeiros Passos, é possível acessar a segunda parte desta matéria, onde alguns recursos mais rebuscados são inseridos. Lá também é possível baixar o aplicativo completo.