Codigos Fontes

Bloco de Notas



O nosso próximo projeto será um editor de texto simples do tipo caractere, com ele poderemos alterar o tipo e tamanho da fonte utilizada em todo o texto, recortar, colar e copiar partes selecionadas, salvar e abrir nosso texto utilizando as caixas de diálogo padrão fornecidas pelo Delphi.

Defina a propriedade Align do componente Memo como alCliente. Esta propriedade faz com que o Memo ocupe toda a área do cliente do formulário, mesmo que ele seja redimensionado.

O Delphi possui componentes visíveis e não visíveis. Os componentes visíveis são aqueles que durante a execução do programa são vistos pelo usuário.  Até aqui todos os componentes que trabalhamos são visíveis, como TEdit, TButton, TForm e outros.

Os componentes não visíveis, não aparecem na janela do usuário em tempo de execução. São eles, Timer, Menus, Caixas de diálogo comuns e controle de acesso a dados.

O nosso exemplo de Bloco de Notas, usará um menu e quatro caixas de diálogo.

Para começar a editar o menu, dê um duplo clique no controle MainMenu que está dentro do formulário, para que a janela Menu Designer apareça.


É nesta janela que iremos construir o menu do nosso exemplo. Observe que o primeiro título já está selecionado.
Vá até a janela Object Inspector e mude a propriedade Caption para &Arquivo e pressione Enter - para acesso via teclado, usamos o “&” comercial antes da letra que queremos que seja o atalho.  Este procedimento, cria o menu Arquivo e move a barra de destaque para o lado, dê um clique logo abaixo da opção Arquivo inserindo um item deste menu.  Repare que o Delphi coloca um nome para este menu baseado na propriedade Caption, neste caso Name:=Arquivo.
 
Monte as demais opções do nosso menu seguindo a janela Menu Designer mostrada abaixo. Para criar um separador no menu, digite apenas um sinal de menos ( - ) na propriedade Caption do item abaixo de Salvar.

Terminado o menu Arquivo, inicie o menu Editar, como segue abaixo.  Defina as teclas de atalho na propriedade ShortCut dos itens de menu.

Quando chegarmos ao item Formatar Fonte..., escolha a opção Create Submenu do PopupMenu, para criar um submenu deste item.


O sub-menu de Formatar Fonte..., deverá estar igual a figura mostrada abaixo.  Como o Delphi não reconhece caracteres brasileiros, o nome que ele dará para o item Itálico será Itlico, suprimindo do Name o caractere á ( Name:= Itlico)
 

Feche a Menu Designer, voltando ao formulário principal. Insira nele as caixas de diálogo que irão formatar a fonte exibida no componente Memo, e as caixas que irão operar com o disco (HD).  Os componentes destas caixas estão na paleta Dialogs do Delphi.

Acabamos de desenhar o nosso formulário, colocando todos os componentes a ele pertencentes.  Os visíveis e os não visíveis. Mesmo os componentes não visíveis estando em cima do Memo, não atrapalharão a apresentação do texto.

Salve seu trabalho para darmos início à construção do código.

As caixas de diálogo são mostradas através do método Execute. Este método responde True se o usuário selecionou Ok, indicando que o programa deverá responder às alterações da caixa de diálogo exibida.  Se o usuário não quiser efetuar as mudanças, será retornado False.

Dê um clique no item Novo do menu, para chamar o procedimento associado.  Este procedimento irá limpar a caixa Memo1 e desabilitar as opções de edição do texto.  Estas opções estarão desabilitadas até que se tenha um texto para Recortar, Copiar ou Colar.  Siga o código mostrado a seguir:


procedure TPrincipal.Novo1Click(Sender: TObject);
begin
     Memo1.Clear;
     Recortar1.Enabled:=False;
     Copiar1.Enabled:=False;
     Colar1.Enabled:=False;
end;

A opção Abrir trabalhará com a caixa de diálogo OpenDialog, verificando o valor retornado por  Execute e carregando o conteúdo do arquivo selecionado, na propriedade Lines do objeto Memo.

procedure TPrincipal.Abrir1Click(Sender: TObject);
begin
     if OpenDialog1.Execute then
        Memo1.Lines.LoadFromFile(OpenDialog1.Filename);
end;

Digite o código para as outras caixas de diálogo. Elas trabalham alterando as propriedades do Memo após as mudanças realizadas pelo usuário.

procedure TPrincipal.Salvar1Click(Sender: TObject);
begin
   if SaveDialog1.Execute then
      Memo1.Lines.SaveToFile(SaveDialog1.Filename);
end;

procedure TPrincipal.Fonte1Click(Sender: TObject);
begin
     FontDialog1.Font:=Memo1.Font;
     {inicializa a FontDialog com a font de Memo}
     if FontDialog1.Execute then
        Memo1.Font:=FontDialog1.Font;
end;

A linha entre chaves indica um comentário, não sendo tratada pelo compilador do Delphi.

procedure TPrincipal.Cor1Click(Sender: TObject);
begin
     ColorDialog1.Color:=Memo1.Color;
     if ColorDialog1.Execute then
        Memo1.Font.Color:=ColorDialog1.Color;
end;

Quando o programa começa a ser executado, o evento OnCreat ocorre com o Formulário, no procedimento deste evento, iremos apagar o conteúdo do Memo e desabilitar as opções do menu Editar.

procedure TForm1.FormCreate(Sender: TObject);
begin
     Memo1.Clear;
     Recortar1.Enabled:=False;
     Copiar1.Enabled:=False;
     Colar1.Enabled:=False;
end;


As opções Recortar e Copiar do menu Editar, estarão ativas assim que o Memo contiver algum texto.  Cada vez que ocorre uma mudança no Memo, o evento OnChange é gerado.

procedure TPrincipal.Memo1Change(Sender: TObject);
begin
     Recortar1.Enabled:=True;
     Copiar1.Enabled:=True;
end;

Os recursos de Recortar, Colar e Copiar utilizam o objeto TClipBoard.  Com ele nós usamos a área de transferência do Windows e podemos trocar informação entre programas.  O objeto TMemo possui métodos próprios de trabalhar com o Clipboard, eles estão nos procedimentos para os itens do menu Editar mostrados abaixo.

procedure TPrincipal.Recortar1Click(Sender: TObject);
begin
     Memo1.CutToClipboard;
     Colar1.Enabled:=True; {habilita o item Colar}
end;

procedure TPrincipal.Copiar1Click(Sender: TObject);
begin
   Memo1.CopyToClipboard;
   Colar1.Enabled:=True;
end;

procedure TPrincipal.Colar1Click(Sender: TObject);
begin
   Memo1.PasteFromClipboard;
end;

As opções Negrito e Itálico, formatarão o texto e mudarão também a propriedade Checked do item no menu, indicando que elas estão selecionadas. Os procedimentos associados à negrito e itálico, trabalham juntos com o procedimento Fonte que verificará o estado das opções alterando as propriedades da fonte do Memo.

Inicie declarando o procedimento Fonte na seção de definição do tipo TPrincipal - nosso formulário. E depois, implemente-o  na seção Implementation.

    procedure Memo1Change(Sender: TObject);
    procedure Recortar1Click(Sender: TObject);
    procedure Copiar1Click(Sender: TObject);
    procedure Colar1Click(Sender: TObject);
    procedure Fonte;
  private
    { Private declarations }
  public
    { Public declarations }
  end;



implementation

{$R *.DFM}
procedure TPrincipal.Fonte ();
begin
   if (Negrito1.Checked=False) and (Itlico1.Checked=False) then
      Memo1.Font.Style:= [];
   if (Negrito1.Checked=True) and (Itlico1.Checked=False) then
      Memo1.Font.Style:= [fsBold];
   if (Negrito1.Checked=False) and (Itlico1.Checked=True) then
      Memo1.Font.Style:= [fsItalic];
   if (Negrito1.Checked=True) and (Itlico1.Checked=True) then
      Memo1.Font.Style:= [fsBold, fsItalic];
end;         

procedure TPrincipal.Negrito1Click(Sender: TObject);
begin
   Negrito1.Checked:= Not Negrito1.Checked;
   Fonte;
end;

procedure TPrincipal.Itlico1Click(Sender: TObject);
begin
   Itlico1.Checked:= Not Itlico1.Checked;
   Fonte;
end;

Quando o usuário clicar no menu Sair, fechará o formulário, finalizando a execução do programa pois este é o único formulário do nosso aplicativo.  Isto é feito com o uso do método Close.

procedure TForm1.Sair1Click(Sender: TObject);
begin
   Close;
end;

Salve seu trabalho, e teste o programa pressionando F9.

Um comentário:

Digite sua pergunta ou comentário.