Содержание
Список использованных источников. 5
Приложение А. Руководство пользователя. 6
Приложение Б. Руководство программиста. 7
Приложение В. Листинг программы.. 8
Разработать простейший текстовый редактор. Редактор должен иметь системное меню, состоящее из следующих пунктов: Файл, Настройки, Информация.
Пункт «Файл» содержит подпункты: Новый, Открыть, Сохранить, Сохранить как, Выход.
Пункт «Настройки» содержит подпункты: Шрифт, Цвет: текста, фона; Панель горячих клавиш.
Пункт «Информация» содержит подпункты: О программе.
Редактор должен обладать горячими клавишами, осуществляющими дублирование основных функций редактора. При их реализации использовать ранее написанный программный код. При сохранении информации также сохраняются пользовательские настройки. При открытии ранее сохраненного файла пользовательские настройки восстанавливаются. Редактор должен иметь функцию ввода структурированного текста, которые вводятся в отдельное поле. Также имеется возможность выбрать необходимую информацию из предлагаемого списка. Если информация пользователя введена и выбрано что-то из списка, то данная информация переносится в конец текста при нажатии на кнопку «перенос». Если указан один из параметров, то перенос осуществляется в то место где стоит курсор. Редактор должен обладать системой логического контроля за действиями пользователя. При необходимости выдавать необходимую информацию на экран. Предусмотреть все логические ветви.
2. Этапы реализации
2. Поместили на форму компоненты Memo, MainMenu, Panel.
3. Создали главное меню и пункты в нем. В каждом пункте меню описали событие OnClick.
4. В панели горячих клавиш Panelсоздали кнопки Speedbutton.
Приложение А
Рисунок 1 – Текстовый редактор
Приложение Б
Руководство программиста
Использованные компоненты в unit1 form1:
- Memo. Главным компонентом в данной программе является компонент Memo типа TMemo. Он используется для ввода и отображения многострочных текстов. Компонент визуальный.
- MainMenu. Позволяет конструировать и создавать полосу главного меню формы и выпадающие меню. Компонент невизуальный.
- Panel. Используется для размещения компонентов на панели. Компонент визуальный.
- Speedbutton. Инструментальная панель для быстрого доступа к часто используемым функциям приложения. Компонент визуальный. Speedbuttonиспользуются для реализации на панели горячих клавиш.
- OpenDialog, SaveDialog, FontDialog, ColorDialog из вкладки Dialogsпредназначены для окна диалога открытия, сохранения, шрифта и цвета.
Использованные компоненты в unit2 form2:
- MaskEdit - Этот специальный редактор, из вкладки Additional допускает лишь
ввод текста, соответствующего заданному программистом шаблону.
- Button – Кнопка.
Приложение В
Листинг программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, Buttons, ComCtrls,IniFiles, ToolWin, ActnMan,
ActnCtrls, ExtCtrls, ImgList, Mask;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
Memo1: TMemo;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
FontDialog1: TFontDialog;
ColorDialog1: TColorDialog;
N13: TMenuItem;
ImageList1: TImageList;
N25: TMenuItem;
N26: TMenuItem;
Panel1: TPanel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
N14: TMenuItem;
SpeedButton5: TSpeedButton;
procedure N3Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure N21Click(Sender: TObject);
procedure N22Click(Sender: TObject);
procedure N23Click(Sender: TObject);
procedure N24Click(Sender: TObject);
procedure ToolButton6Click(Sender: TObject);
procedure ToolButton7Click(Sender: TObject);
procedure ToolButton8Click(Sender: TObject);
procedure ToolButton9Click(Sender: TObject);
procedure ToolButton10Click(Sender: TObject);
procedure N20Click(Sender: TObject);
procedure ToolButton12Click(Sender: TObject);
procedure ToolButton13Click(Sender: TObject);
procedure ToolButton14Click(Sender: TObject);
procedure ToolButton16Click(Sender: TObject);
procedure ToolButton17Click(Sender: TObject);
procedure ToolButton11Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N26Click(Sender: TObject);
procedure N27Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure N14Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
IniFile:TIniFile;
implementation
uses Unit2, Unit3;
{$R *.dfm}
procedure TForm1.N3Click(Sender: TObject);
var a,i:integer;
s,s2:string;
begin
if OpenDialog1.FilterIndex=1 then begin
OpenDialog1.DefaultExt:='txt';
end
else if OpenDialog1.FilterIndex=2 then begin
OpenDialog1.DefaultExt:='doc';
end;
if form1.Memo1.Modified=true then
begin
a:=Application.MessageBox('Сохранить изменения в документе','',3);
if a=6 then
N4Click(Sender) else
if a=7 then
If OpenDialog1.Execute then
begin
form1.Memo1.Lines.Clear;
Form1.Memo1.Lines.LoadFromFile(Form1.OpenDialog1.FileName);
Form1.Caption:= ExtractFileName(Form1.OpenDialog1.FileName);
form1.Memo1.Modified:=false;
IniFile:=TInifile.Create(ExtractFilePath(OpenDialog1.FileName)+ExtractFileName(Form1.OpenDialog1.FileName));
if Inifile.SectionExists('Main') then
begin
Form1.Memo1.Font.Color:=Inifile.ReadInteger('Main','TxtColor',0);
Form1.Memo1.Font.Height:=Inifile.ReadInteger('Main','Height',Height);
Form1.Memo1.Font.Name:=Inifile.ReadString('Main','Name',Name);
Form1.Memo1.Font.Size:=Inifile.ReadInteger('Main','Size',1);
Form1.Memo1.color:=IniFile.ReadInteger('Main','FonColor',0);
for i:=0 to 5 do
Memo1.Lines.Delete(Memo1.Lines.Count-1);
end
end
end
else
If OpenDialog1.Execute then
begin
form1.Memo1.Lines.Clear;
Form1.Memo1.Lines.LoadFromFile(Form1.OpenDialog1.FileName);
Form1.Caption:= ExtractFileName(Form1.OpenDialog1.FileName);
form1.Memo1.Modified:=false;
IniFile:=TInifile.Create(ExtractFilePath(OpenDialog1.FileName)+ExtractFileName(Form1.OpenDialog1.FileName));
if Inifile.SectionExists('Main') then
begin
Form1.Memo1.Font.Color:=Inifile.ReadInteger('Main','Txtcolor',0);
Form1.Memo1.Font.Height:=Inifile.ReadInteger('Main','Height',Height);
Form1.Memo1.Font.Name:=Inifile.ReadString('Main','Name',Name);
Form1.Memo1.Font.Size:=Inifile.ReadInteger('Main','Size',1);
Form1.Memo1.color:=Inifile.ReadInteger('Main','FonColor',0);
for i:=0 to 5 do
Memo1.Lines.Delete(Memo1.Lines.Count-1);
end;
Memo1.Modified := false;
end;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
if SaveDialog1.FilterIndex=1 then begin
SaveDialog1.DefaultExt:='txt';
end
else if SaveDialog1.FilterIndex=2 then begin
SaveDialog1.DefaultExt:='doc';
end;
If SaveDialog1.Execute then
begin
form1.Memo1.Modified:=false;
form1.Memo1.Lines.SaveToFile(Form1.SaveDialog1.Filename );
Form1.Caption:=ExtractFileName(Form1.SaveDialog1.FileName);
IniFile:=TInifile.Create(ExtractFilePath(SaveDialog1.FileName)+ExtractFileName(Form1.SaveDialog1.FileName));
with IniFile do begin
WriteInteger('Main','TxtColor',Form1.Memo1.Font.Color);
WriteInteger('Main','Height',Form1.Memo1.Font.Height);
WriteString('Main','Name',Form1.Memo1.Font.Name);
WriteInteger('Main','Size',Form1.Memo1.Font.Size);
end;
with IniFile do
WriteInteger('Main','FonColor',Form1.Memo1.Color);
end;
end;
procedure TForm1.N4Click(Sender: TObject);
begin
If form1.SaveDialog1.FileName <> '' then
begin
form1.Memo1.Lines.SaveToFile(Form1.SaveDialog1.FileName);
Form1.Caption:=ExtractFileName(Form1.SaveDialog1.FileName);
form1.Memo1.Modified:=false;
if Form1.SaveDialog1.FileName<>'' then
IniFile:=TInifile.Create(ExtractFilePath(SaveDialog1.FileName)+ExtractFileName(Form1.SaveDialog1.FileName))
else IniFile:=TInifile.Create(ExtractFilePath(OpenDialog1.FileName)+ExtractFileName(Form1.OpenDialog1.FileName));
with IniFile, Form1.Memo1.Font do begin
WriteInteger('Main','TxtColor',Form1.Memo1.Font.Color);
WriteInteger('Main','Height',Height);
WriteString('Main','Name',Name);
WriteInteger('Main','Size',Size);
end;
with IniFile do
WriteInteger('Main','FonColor',Form1.Memo1.Color);
end
else
if form1.OpenDialog1.FileName<>'' then
begin
form1.Memo1.Lines.SaveToFile(Form1.OpenDialog1.FileName);
Form1.Caption:=ExtractFileName(Form1.OpenDialog1.FileName);
form1.Memo1.Modified:=false;
IniFile:=TInifile.Create(ExtractFilePath(OpenDialog1.FileName)+ExtractFileName(Form1.OpenDialog1.FileName));
with IniFile, Form1.Memo1.Font do begin
WriteInteger('Main','TxtColor',Form1.Memo1.Font.Color);
WriteInteger('Main','Height',Height);
WriteString('Main','Name',Name);
WriteInteger('Main','Size',Size);
end;
with IniFile do
WriteInteger('Main','FonColor',Form1.Memo1.Color);
end
else
N5Click(Sender);
end;
procedure TForm1.N2Click(Sender: TObject);
var a:integer;
begin
if form1.Memo1.Modified=true then
begin
a:=Application.MessageBox('Сохранить изменения в документе','',3);
if a=6 then
begin
N4Click(Sender);
Form1.Memo1.Lines.Clear;
Form1.SaveDialog1.FileName:='';
Form1.OpenDialog1.FileName:='';
Form1.Caption:='Безымянный';
end
else
if a=7 then
begin
Form1.Memo1.Lines.Clear;
Form1.SaveDialog1.FileName:='';
Form1.OpenDialog1.FileName:='';
Form1.Caption:='Безымянный';
end
end
else
begin
Form1.Memo1.Lines.Clear;
Form1.SaveDialog1.FileName:='';
Form1.OpenDialog1.FileName:='';
Form1.Caption:='Безымянный';
end
end;
procedure TForm1.N6Click(Sender: TObject);
var a:integer;
begin
if Form1.Memo1.Modified=true then
begin
a:=Application.MessageBox('Сохранить изменения в документе','',3);
if a=6 then
N4Click(Sender)
else if a=7 then
Form1.Close;
end
else Form1.Close;
end;
procedure TForm1.N8Click(Sender: TObject);
begin
if Form1.FontDialog1.Execute then
Form1.Memo1.Font:=Form1.FontDialog1.Font;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
N2Click(sender);
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
N3Click(Sender);
end;
procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
N4Click(Sender);
end;
procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
N5Click(Sender);