Com o Delphi aberto, vá no menu File e clique em Close All, depois no menu File clique em New Application, de um clique sobre o form que foi criado, caso ele não esteja aparecendo pressione F12. Altere as seguintes propriedades do form: Caption = Editor de Texto WordZip
FormStyle = fsMDIForm
Name = frmPrincipal
WindowState = wsMaximized
E no Evento On Close do form coloque:
Action:= caFree // Libera o form da memória
Vá no menu File e clique em Save All, selecione o diretório que deseja salvar seu editor de texto, e na caixa (Nome do Arquivo) coloque Principal_Form, e clique em Salvar, logo em seguida aparecerá a janela para você salvar o projeto, na caixa (Nome do Arquivo) coloque WordZip, e clique em Salvar.
Traga para o seu form um component MainMenu da palheta Standard, de um duplo clique sobre o componente e monte ele igual à figura abaixo:

Traga para o seu form os componentes: OpenDialog, SaveDialog, FontDialog, PrintDialog ambos da palheta Dialog.
Selecione o componente OpenDialog, na sua propriedade DefaultExt coloque WZP, na propriedade Filter clique sobre os três pontinhos e coloque:

Depois clique em OK.
Selecione o componente SaveDialog, na sua propriedade DefaultExt coloque WZP, na propriedade Filter clique sobre os três pontinhos e coloque:

Depois clique em OK.
Agora vamos criar o form que será responsável por exibir o conteúdo dos arquivos, vá no menu File e clique em New Form. Altera as seguintes propriedades do form:
FormStyle = fsMDIChild
Name = frmTexto
WindowState = wsMaximized
E no Evento On Close do form coloque:
Action:= caFree // Libera o form da memória
Vá no menu File e clique em Save As... , na caixa (Nome do Arquivo) coloque
Texto_Form e clique em Salvar.
Traga para o form um componente RichEdit da palheta Win32. Selecione o componente RichEdit e altera as seguintes propriedades:
Align = alClient
Lines = clique nos pontinhos e apague tudo que estiver na janela que será exibida, logo em
seguida clique em Ok.
ScrollBars = ssVertical
Pressione Shift+F12 e selecione frmPrincipal e clique em Ok.
Vá no menu File e Clique em Use Unit... , selecione a unit Texto_Form e clique em OK.
Agora vamos começar a montar as procedures do nosso Editor de Texto:
Clique em Arquivo e depois em Novo, e coloque o seguinte código:
frmTexto := TfrmTexto.Create(self);
frmTexto.Caption := 'Novo Documento';
frmTexto.Show;
Clique em Janelas e depois em Cascata, e coloque o seguinte código:
Cascade;
Clique em Janelas e depois em Lado a lado -> Horizontal e coloque o código:
TileMode := tbHorizontal;
Tile;
Clique em Janelas e depois em Lado a lado -> Vertical e coloque o código:
TileMode := tbVertical;
Tile;
Clique em Arquivo e depois em Salvar Como... e coloque o código:
if MDIChildCount = 0 then Exit;
With TfrmTexto(ActiveMDIChild) do
begin
SaveDialog1.FileName := Caption;
if SaveDialog1.Execute then
RichEdit1.Lines.SaveToFile(SaveDialog1.FileName);
Caption := SaveDialog1.FileName;
{A linha abaixo será usado mais tarde, mas mesmo assim coloque-a}
// i:=0;
end;
Clique em Arquivo e depois em Salvar, e coloque o código:
With TfrmTexto(ActiveMDIChild) do
begin
if Caption = 'Novo Documento' then
begin
SalvarComo1Click(Sender);
Exit;
end;
RichEdit1.Lines.SaveToFile(Caption);
{A linha abaixo será usado mais tarde, mas mesmo assim coloque-a}
// i:= 0;
end;
Clique em Arquivo e depois em Abrir... , e coloque o código:
if OpenDialog1.Execute then
With TfrmTexto.Create(self) do
begin
RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName);
Caption := OpenDialog1.FileName;
end;
Clique em Arquivo depois em Fechar, e coloque o código:
if MDIChildCount = 0 then Exit;
ActiveMDIChild.Close;
Clique em Arquivo e depois em Fechar Todas, e coloque o código:
var i: Integer;
for i:= MDIChildCount-1 downto 0 do
MDIChildren[i].Close;
Clique em Arquivo e depois em Sair, e coloque o código:
Close;
Clique em Editar e depois em Recortar, e coloque o código:
if MDIChildCount = 0 then Exit;
With TfrmTexto(ActiveMDIChild) do
begin
RichEdit1.CutToClipboard;
end;
Clique em Editar e depois em Copiar, e coloque o código:
if MDIChildCount = 0 then Exit;
With TfrmTexto(ActiveMDIChild) do
begin
RichEdit1.CopyToClipboard;
end;
Clique em Editar e depois em Colar, e coloque o código:
if MDIChildCount = 0 then Exit;
With TfrmTexto(ActiveMDIChild) do
begin
RichEdit1.PasteFromClipboard;
end;
Clique em Editar e depois em Selecionar Tudo, e coloque o código:
if MDIChildCount = 0 then Exit;
With TfrmTexto(ActiveMDIChild) do
begin
RichEdit1.SelectAll;
end;
Clique em Formatar e depois em Fonte, e coloque o código:
if MDIChildCount = 0 then Exit;
With TfrmTexto(ActiveMDIChild) do
begin
FontDialog1.Font.Assign(RichEdit1.SelAttributes);
if (FontDialog1.Execute) then
RichEdit1.SelAttributes.Assign(FontDialog1.Font);
end;
Clique em Formatar e depois em Alinhamento -> Esquerda e coloque o código:
if MDIChildCount = 0 then Exit;
With TfrmTexto(ActiveMdiChild) do
begin
RichEdit1.Paragraph.Alignment := taLeftJustify;
end;
Clique em Formatar e depois em Alinhamento -> Direita e coloque o código:
if MDIChildCount = 0 then Exit;
With TfrmTexto(ActiveMdiChild) do
begin
RichEdit1.Paragraph.Alignment := taRightJustify;
end;
Clique em Formatar e depois em Alinhamento -> Centro e coloque o código:
if MDIChildCount = 0 then Exit;
With TfrmTexto(ActiveMdiChild) do
begin
RichEdit1.Paragraph.Alignment := taCenter;
end;
Clique em Formatar e depois em Estilos ->Negrito e coloque o código:
if MDIChildCount = 0 then Exit;
With TfrmTexto(ActiveMDIChild) do
begin
if (fsBold in RichEdit1.SelAttributes.Style) then
RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style - [fsBold]
else
RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style + [fsBold];
end;
Clique em Formatar e depois em Estilos ->Itálico e coloque o código:
if MDIChildCount = 0 then Exit;
With TfrmTexto(ActiveMDIChild) do
begin
if (fsItalic in RichEdit1.SelAttributes.Style) then
RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style - [fsItalic]
else
RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style + [fsItalic];
end;
Clique em Formatar e depois em Estilos ->Sublinhado e coloque o código:
if MDIChildCount = 0 then Exit;
With TfrmTexto(ActiveMDIChild) do
begin
if (fsUnderline in RichEdit1.SelAttributes.Style) then
RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style - [fsUnderline]
else
RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style + [fsUnderline];
end;
Clique em Arquivo e depois em Imprimir, e coloque o código:
if MDIChildCount = 0 then Exit;
With TfrmTexto(ActiveMDIChild) do
begin
if (PrintDialog1.Execute) then
RichEdit1.Print(Text);
end;
Pressione Shift+F12 e selecione frmTexto e clique em Ok.
Caso na sua tela esteja sendo exibido o form pressione a tecla F12 para visualizar a unit, acima da palavra implementation você deve ter algo parecido com isto:
var
frmTexto: TfrmTexto;
{Coloque a linha abaixo}
i: Integer;
Agora pressione F12 novamente para voltarmos ao form, clique sobre o componente RichEdit e pressione a tecla ESC, agora no Object Inspector, clique na palheta Events, de um duplo clique no evento OnCreate, e digite o código:
i := 0;
Clique novamente sobre o componente RichEdit, e no seu evento OnKeyPress digite o código:
i := i + 1;
Vá no menu File e clique em Use Unit.. e selecione a unit Principal_Form e clique em Ok.
Agora pressione F12 novamente para voltarmos ao form, clique sobre o
componente RichEdit e pressione a tecla ESC, agora no Object Inspector, clique na palheta Events, de um duplo clique no evento OnCloseQuery, e digite o código:
var sArquivo:String;
sFrase:Pchar;
sArquivo:='Deseja salvar as alterações feitas em: '+Caption;
sFrase:= PChar(sArquivo);
if i<>0 then
Case MessageBox(Handle, sFrase,
'Atenção!!!', MB_YESNOCANCEL + MB_ICONQUESTION+
MB_DEFBUTTON2) of IDYES:
if Caption = 'Novo Documento' then
begin
frmPrincipal.SalvarComo1Click(Sender);
end
else
RichEdit1.Lines.SaveToFile(Caption);
IDNO: Canclose:= True;
IDCANCEL: Canclose:= False;
end;
Agora só será necessário fazermos três alterações, para que nosso editor de texto esteja funcionando perfeitamente:
Vá nas procedures do frmPrinipal, Salvar e SalvarComo, e elimine as duas barras na frente da letra i, para que quando você salvar um arquivo, ele coloque o valor 0(zero), na variável que controla se o documento sofreu ou não alterações, podendo assim perguntar se o usuário deseja salvar as alterações feitas.
Estando no form principal altere a propriedade WindowMenu para Janela1, isto significa que no menu janela será exibido uma lista contendo todas as janelas abertas no momento.
Agora crie um novo form e associe-o a opção do menu Ajuda, essa parte você faz sozinho.
autor :
Fernando Gonçalves - colaborador
|