Текстовый редактор – аналог программы WordPad
Особенности редактора WordPad, их реализация в проекте программы-аналога. Схема функциональной структуры программы и ее характеристика. Модуль главного окна программы, панель инструментов. Реализация текстового поля, работа с форматированным текстом.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 04.05.2014 |
Размер файла | 53,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
- 1. Общие положения
- 1.1 Наименование проектируемой АС
- 1.2 Цели и назначение АС
- 2. Описание постановки задачи (комплекса задач)
- 3. Схема функциональной структуры и ее характеристика
- 4. Практическая часть
- 4.1 Форма приложения
- 4.2 Текст программы
- 4.3 Тестирование и отладка программы
- Заключение
- Список использованной литературы
1. Общие положения
1.1 Наименование проектируемой АС
Полное наименование разработанной программы: "Текстовый редактор - аналог программы WordPad".
1.2 Цели и назначение АС
Программа предназначена для создания электронной текстовой документации. Область применения программы очень широка и обусловлена её предназначением - созданием текстовых записей, с возможностью форматирования, сохранения и открытием для чтения.
текстовый редактор программа аналог
2. Описание постановки задачи (комплекса задач)
Задача в виде создания аналога, не требует создание полной копии прототипа, поэтому следует выделить главные особенности редактора WordPad, которые будут реализованы в проекте:
- интерфейс Windows приложения;
- главное меню, и дублирующее его панель инструментов;
- возможность работы с файлами *. RTF и *. TXT;
- возможность форматирования текста, с использованием различных шрифтов, начертаний и выравниванием;
- возможность применения к тексту команд "вырезать", "копировать", "вставить";
- возможность отмены последнего действия;
- возможность печати текста.
Программа обеспечивает следующую выходную информацию:
а) просмотр открытых текстовых файлов;
б) печать текстовых файлов;
в) сохранение текстового файла.
Входной информацией для программы являются:
а) набранный текст пользователем;
б) открываемые файлы пользователем.
3. Схема функциональной структуры и ее характеристика
Схема функциональной структуры программы:
Размещено на http://www.allbest.ru/
Рисунок 1. Схема функциональной структуры
Функциональная структура программы представляет собой набор функций, сгруппированных по типу воздействия на текст в отдельности или файл целиком.
Все функции доступны из главного меню программы или панели инструментов.
Функции по работе с файлами:
- создать;
- открыть;
- сохранить;
- печать.
Функции по работе с буфером обмена:
- вырезать;
- копировать;
- вставить;
- отмена последнего действия.
Функции по работе со шрифтом и начертанием:
- тип шрифта;
- размер шрифта;
- начертание ("Жирный", "Курсив", "Подчеркнутый").
Функции форматирования текста:
- выравнивание (по левому краю, по центру, по правому краю);
- установка маркеров.
4. Практическая часть
4.1 Форма приложения
Модуль MyMainForm является модулем главного окна программы. Он содержит практически все компоненты и процедуры, которые были использованы в программе:
Так как программой подразумевается выполнение основных команд несколькими способами, были созданы два компонента ActionList, которые объединили команды по работе с файлами (они представлены в меню "Файл" главного меню) и по работе над редактированием текста (команды представленные в меню "Правка").
Процедуры, прописанные в компонентах ActionList были присвоены соответствующим элементам главного меню и панели инструментов.
Панель инструментов имеет ряд элементов для которых не были прописаны действия в компонентах ActionList. Для обработки событий от этих элементов были написаны соответствующие процедуры.
На форме были использованы 4 компонента диалогов:
- открытие документа;
- сохранение документа;
- настройка принтера (печать);
- диалог выбора шрифта и начертания текста.
Для реализации текстового поля использовался компонент RichEdit, который в отличии от других текстовых компонентов, способен работать с форматированным текстом.
Также были использованы компоненты панелей: инструментальная панель (ToolBar) и панель состояния (StatusBar).
Для отображения иконок в подпунктах главного меню и на кнопках панели инструментов был использован элемент ImageList, в который были занесены соответствующие иконки.
На рисунке 2 представлено главное окно программы
Рисунок 2. Главное окно программы
4.2 Текст программы
unit MyMainForm;
interface
uses
SysUtils, Windows, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, Menus, ComCtrls, ClipBrd,
ToolWin, ActnList, ImgList;
type
TMainForm = class (TForm)
MainMenu: TMainMenu;
FileNewItem: TMenuItem;
FileOpenItem: TMenuItem;
FileSaveItem: TMenuItem;
FileSaveAsItem: TMenuItem;
FilePrintItem: TMenuItem;
FileExitItem: TMenuItem;
EditUndoItem: TMenuItem;
EditCutItem: TMenuItem;
EditCopyItem: TMenuItem;
EditPasteItem: TMenuItem;
HelpAboutItem: TMenuItem;
OpenDialog: TOpenDialog;
SaveDialog: TSaveDialog;
PrintDialog: TPrintDialog;
FontDialog1: TFontDialog;
N5: TMenuItem;
miEditFont: TMenuItem;
RichEdit: TRichEdit;
StatusBar: TStatusBar;
StandardToolBar: TToolBar;
OpenButton: TToolButton;
SaveButton: TToolButton;
PrintButton: TToolButton;
ToolButton5: TToolButton;
UndoButton: TToolButton;
CutButton: TToolButton;
CopyButton: TToolButton;
PasteButton: TToolButton;
ToolButton10: TToolButton;
FontName: TComboBox;
FontSize: TEdit;
ToolButton11: TToolButton;
UpDown1: TUpDown;
BoldButton: TToolButton;
ItalicButton: TToolButton;
UnderlineButton: TToolButton;
ToolButton16: TToolButton;
LeftAlign: TToolButton;
CenterAlign: TToolButton;
RightAlign: TToolButton;
ToolButton20: TToolButton;
BulletsButton: TToolButton;
ToolbarImages: TImageList;
ActionList1: TActionList;
FileNewCmd: TAction;
FileOpenCmd: TAction;
FileSaveCmd: TAction;
FilePrintCmd: TAction;
FileExitCmd: TAction;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
EditCutCmd: TAction;
EditCopyCmd: TAction;
EditPasteCmd: TAction;
EditUndoCmd: TAction;
EditFontCmd: TAction;
FileSaveAsCmd: TAction;
procedure SelectionChange (Sender: TObject);
procedure FormCreate (Sender: TObject);
procedure ShowHint (Sender: TObject);
procedure FileNew (Sender: TObject);
procedure FileOpen (Sender: TObject);
procedure FileSave (Sender: TObject);
procedure FileSaveAs (Sender: TObject);
procedure FilePrint (Sender: TObject);
procedure FileExit (Sender: TObject);
procedure EditUndo (Sender: TObject);
procedure EditCut (Sender: TObject);
procedure EditCopy (Sender: TObject);
procedure EditPaste (Sender: TObject);
procedure HelpAbout (Sender: TObject);
procedure SelectFont (Sender: TObject);
procedure FormResize (Sender: TObject);
procedure FormPaint (Sender: TObject);
procedure BoldButtonClick (Sender: TObject);
procedure ItalicButtonClick (Sender: TObject);
procedure FontSizeChange (Sender: TObject);
procedure AlignButtonClick (Sender: TObject);
procedure FontNameChange (Sender: TObject);
procedure UnderlineButtonClick (Sender: TObject);
procedure BulletsButtonClick (Sender: TObject);
procedure FormCloseQuery (Sender: TObject; var CanClose: Boolean);
procedure FormShow (Sender: TObject);
procedure RichEditChange (Sender: TObject);
procedure ActionList2Update (Action: TBasicAction;
var Handled: Boolean);
private
FFileName: string;
FUpdating: Boolean;
function CurrText: TTextAttributes;
procedure GetFontNames;
procedure SetFileName (const FileName: String);
procedure CheckFileSave;
procedure SetEditRect;
procedure WMDropFiles (var Msg: TWMDropFiles); message WM_DROPFILES;
procedure PerformFileOpen (const AFileName: string);
procedure SetModified (Value: Boolean);
end;
var
MainForm: TMainForm;
implementation
uses AboutMyEdit, RichEdit, ShellAPI;
resourcestring
sSaveChanges = 'Сохранить изменения в файле "%s"? ';
sOverWrite = 'Заменить файл "%s"';
sUntitled = 'Документ';
sModified = 'Изменен';
const
GutterWid = 6;
{$R *. dfm}
procedure TMainForm. SelectionChange (Sender: TObject);
begin
with RichEdit. Paragraph do
try
FUpdating: = True;
BoldButton. Down: = fsBold in RichEdit. SelAttributes. Style;
ItalicButton. Down: = fsItalic in RichEdit. SelAttributes. Style;
UnderlineButton. Down: = fsUnderline in RichEdit. SelAttributes. Style;
BulletsButton. Down: = Boolean (Numbering);
FontSize. Text: = IntToStr (RichEdit. SelAttributes. Size);
FontName. Text: = RichEdit. SelAttributes. Name;
case Ord (Alignment) of
0: LeftAlign. Down: = True;
1: RightAlign. Down: = True;
2: CenterAlign. Down: = True;
end;
finally
FUpdating: = False;
end;
end;
function TMainForm. CurrText: TTextAttributes;
begin
if RichEdit. SelLength > 0 then Result: = RichEdit. SelAttributes
else Result: = RichEdit. DefAttributes;
end;
function EnumFontsProc (var LogFont: TLogFont; var TextMetric: TTextMetric;
FontType: Integer; Data: Pointer): Integer; stdcall;
begin
TStrings (Data). Add (LogFont. lfFaceName);
Result: = 1;
end;
procedure TMainForm. GetFontNames;
var
DC: HDC;
begin
DC: = GetDC (0);
EnumFonts (DC, nil, @EnumFontsProc, Pointer (FontName. Items));
ReleaseDC (0, DC);
FontName. Sorted: = True;
end;
procedure TMainForm. SetFileName (const FileName: String);
begin
FFileName: = FileName;
Caption: = Format ('%s - %s', [ExtractFileName (FileName), Application. Title]);
end;
procedure TMainForm. CheckFileSave;
var
SaveResp: Integer;
begin
if not RichEdit. Modified then Exit;
SaveResp: = MessageDlg (Format (sSaveChanges, [FFileName]),
mtConfirmation, mbYesNoCancel, 0);
case SaveResp of
idYes: FileSave (Self);
idNo:;
idCancel: Abort;
end;
end;
procedure TMainForm. SetEditRect;
var
R: TRect;
begin
with RichEdit do
begin
R: = Rect (GutterWid, 0, ClientWidth-GutterWid, ClientHeight);
SendMessage (Handle, EM_SETRECT, 0, Longint (@R));
end;
end;
procedure TMainForm. FormCreate (Sender: TObject);
begin
Application. OnHint: = ShowHint;
OpenDialog. InitialDir: = ExtractFilePath (ParamStr (0));
SaveDialog. InitialDir: = OpenDialog. InitialDir;
SetFileName (sUntitled);
GetFontNames;
SelectionChange (Self);
CurrText. Name: = DefFontData. Name;
CurrText. Size: = - MulDiv (DefFontData. Height, 72, Screen. PixelsPerInch);
end;
procedure TMainForm. ShowHint (Sender: TObject);
begin
if Length (Application. Hint) > 0 then
begin
StatusBar. SimplePanel: = True;
StatusBar. SimpleText: = Application. Hint;
end
else StatusBar. SimplePanel: = False;
end;
procedure TMainForm. FileNew (Sender: TObject);
begin
SetFileName (sUntitled);
RichEdit. Lines. Clear;
RichEdit. Modified: = False;
SetModified (False);
end;
procedure TMainForm. PerformFileOpen (const AFileName: string);
begin
RichEdit. Lines. LoadFromFile (AFileName);
SetFileName (AFileName);
RichEdit. SetFocus;
RichEdit. Modified: = False;
SetModified (False);
end;
procedure TMainForm. FileOpen (Sender: TObject);
begin
CheckFileSave;
if OpenDialog. Execute then
begin
PerformFileOpen (OpenDialog. FileName);
RichEdit. ReadOnly: = ofReadOnly in OpenDialog. Options;
end;
end;
procedure TMainForm. FileSave (Sender: TObject);
begin
if FFileName = sUntitled then
FileSaveAs (Sender)
else
begin
RichEdit. Lines. SaveToFile (FFileName);
RichEdit. Modified: = False;
SetModified (False);
end;
end;
procedure TMainForm. FileSaveAs (Sender: TObject);
begin
if SaveDialog. Execute then
begin
if FileExists (SaveDialog. FileName) then
if MessageDlg (Format (sOverWrite, [SaveDialog. FileName]),
mtConfirmation, mbYesNoCancel, 0) <> idYes then Exit;
RichEdit. Lines. SaveToFile (SaveDialog. FileName);
SetFileName (SaveDialog. FileName);
RichEdit. Modified: = False;
SetModified (False);
end;
end;
procedure TMainForm. FilePrint (Sender: TObject);
begin
if PrintDialog. Execute then
RichEdit. Print (FFileName);
end;
procedure TMainForm. FileExit (Sender: TObject);
begin
Close;
end;
procedure TMainForm. EditUndo (Sender: TObject);
begin
with RichEdit do
if HandleAllocated then SendMessage (Handle, EM_UNDO, 0, 0);
end;
procedure TMainForm. EditCut (Sender: TObject);
begin
RichEdit. CutToClipboard;
end;
procedure TMainForm. EditCopy (Sender: TObject);
begin
RichEdit. CopyToClipboard;
end;
procedure TMainForm. EditPaste (Sender: TObject);
begin
RichEdit. PasteFromClipboard;
end;
procedure TMainForm. HelpAbout (Sender: TObject);
begin
with TAbout. Create (Self) do
try
ShowModal;
finally
Free;
end;
end;
procedure TMainForm. SelectFont (Sender: TObject);
begin
FontDialog1. Font. Assign (RichEdit. SelAttributes);
if FontDialog1. Execute then
CurrText. Assign (FontDialog1. Font);
SelectionChange (Self);
RichEdit. SetFocus;
end;
procedure TMainForm. FormResize (Sender: TObject);
begin
SetEditRect;
SelectionChange (Sender);
end;
procedure TMainForm. FormPaint (Sender: TObject);
begin
SetEditRect;
end;
procedure TMainForm. BoldButtonClick (Sender: TObject);
begin
if FUpdating then Exit;
if BoldButton. Down then
CurrText. Style: = CurrText. Style + [fsBold]
else
CurrText. Style: = CurrText. Style - [fsBold];
end;
procedure TMainForm. ItalicButtonClick (Sender: TObject);
begin
if FUpdating then Exit;
if ItalicButton. Down then
CurrText. Style: = CurrText. Style + [fsItalic]
else
CurrText. Style: = CurrText. Style - [fsItalic];
end;
procedure TMainForm. FontSizeChange (Sender: TObject);
begin
if FUpdating then Exit;
CurrText. Size: = StrToInt (FontSize. Text);
end;
procedure TMainForm. AlignButtonClick (Sender: TObject);
begin
if FUpdating then Exit;
RichEdit. Paragraph. Alignment: = TAlignment (TControl (Sender). Tag);
end;
procedure TMainForm. FontNameChange (Sender: TObject);
begin
if FUpdating then Exit;
CurrText. Name: = FontName. Items [FontName. ItemIndex];
end;
procedure TMainForm. UnderlineButtonClick (Sender: TObject);
begin
if FUpdating then Exit;
if UnderlineButton. Down then
CurrText. Style: = CurrText. Style + [fsUnderline]
else
CurrText. Style: = CurrText. Style - [fsUnderline];
end;
procedure TMainForm. BulletsButtonClick (Sender: TObject);
begin
if FUpdating then Exit;
RichEdit. Paragraph. Numbering: = TNumberingStyle (BulletsButton. Down);
end;
procedure TMainForm. FormCloseQuery (Sender: TObject; var CanClose: Boolean);
begin
try
CheckFileSave;
except
CanClose: = False;
end;
end;
procedure TMainForm. FormShow (Sender: TObject);
begin
DragAcceptFiles (Handle, True);
RichEditChange (nil);
RichEdit. SetFocus;
if (ParamCount > 0) and FileExists (ParamStr (1)) then
PerformFileOpen (ParamStr (1));
end;
procedure TMainForm. WMDropFiles (var Msg: TWMDropFiles);
var
CFileName: array [0. MAX_PATH] of Char;
begin
try
if DragQueryFile (Msg. Drop, 0, CFileName, MAX_PATH) > 0 then
begin
CheckFileSave;
PerformFileOpen (CFileName);
Msg. Result: = 0;
end;
finally
DragFinish (Msg. Drop);
end;
end;
procedure TMainForm. RichEditChange (Sender: TObject);
begin
SetModified (RichEdit. Modified);
end;
procedure TMainForm. SetModified (Value: Boolean);
begin
if Value then StatusBar. Panels [0]. Text: = sModified
else StatusBar. Panels [0]. Text: = '';
end;
procedure TMainForm. ActionList2Update (Action: TBasicAction;
var Handled: Boolean);
begin
EditCutCmd. Enabled: = RichEdit. SelLength > 0;
EditCopyCmd. Enabled: = EditCutCmd. Enabled;
if RichEdit. HandleAllocated then
begin
EditUndoCmd. Enabled: = RichEdit. Perform (EM_CANUNDO, 0, 0) <> 0;
EditPasteCmd. Enabled: = RichEdit. Perform (EM_CANPASTE, 0, 0) <> 0;
end;
end;
end.
4.3 Тестирование и отладка программы
Программа не требует инсталляции. Для её открытия необходимо запустить файл MyEdit. exe.
Программа работает на персональных компьютерах под управлением операционной системы "Windows XP".
Технические требования к ПК основаны как на характеристиках самой программы MyEdit, так и на требованиях ОС, так как ресурсы, которые необходимы для работы операционной системы превосходят необходимые ресурсы для работы тестового редактора "MyEdit".
Заключение
В курсовой работе была разработана программа-аналог текстового редактора WordPad, предназначенная для создания электронной текстовой документации. Область применения программы очень широка и обусловлена её предназначением - созданием текстовых записей, с возможностью форматирования, сохранения и открытием для чтения и печати.
Список использованной литературы
1. Кадлец М.Н. "Delphi. Книга рецептов. Практические примеры, трюки и секреты" 2006г.
2. Митчелл К. Керман "Программирование и отладка в Delphi. Учебный курс" 2004г.
3. Фленов М.Е. "Библия Delphi" 2005 г.
4. http://www.delphikingdom.com/ - клуб программистов (статьи, ответы на часто задаваемые вопросы).
5. http://www.delphimaster.ru - Мастера DELPHI (документация, исходники).
Размещено на Allbest.ru
Подобные документы
Редактирование текста как очень важная часть оформления документов. Разработка программы по работе с текстом "Текстовый редактор" в среде разработки C++Builder 6 как приложения, использующегося в качестве замены встроенного редактора "WordPad".
курсовая работа [256,7 K], добавлен 08.12.2010Программа WordPad. Технология работы. Типы файлов, используемые редактором WordPad. WordPad представляет собой текстовый редактор для работы с небольшими документами. Он допускает несложное форматирования абзацев, а также использование различных шрифтов.
реферат [11,1 K], добавлен 10.04.2005Необходимые компоненты и порядок составления текстового редактора. Текст программы решения задачи на языке программирования C++. Контрольный пример работы текстового редактора. Создание и произведение операции форматирования простого документа.
курсовая работа [1,6 M], добавлен 03.09.2011Функции графического редактора Paint, создание рисунка (задание размера, изменение цвета). Возможности программы "Калькулятор". Работа с блокнотом, ввод текста с помощью клавиатуры. Текстовый процессор WordPad: простейшие приемы форматирования документов.
контрольная работа [434,3 K], добавлен 17.11.2011Разработка текстового редактора для работы с текстовыми приложениями. Описание работы программы, использование языка С++ для ее создания. Описание работы программы, ее простота и надежность, как для начинающих программистов, так и для профессионалов.
курсовая работа [872,8 K], добавлен 25.11.2010Изучение компьютерной программы – графического редактора Paint, ее возможности и основные приемы работы. Панель инструментов, редактирование рисунка. Составление и реализация школьных уроков в начальной школе по изучению графического редактора Paint.
курсовая работа [865,0 K], добавлен 28.04.2014Функции текстового редактора как программы для работы с текстом. Использование редактора MS Word в научной деятельности исследователя-ономаста. Технология распознавания текста и организация работы с программой FineReader. Системы распознавания речи.
реферат [979,3 K], добавлен 16.10.2013Ознакомление с историей изобретение языка программирования C. Рассмотрение компонентов программы Блокнот. Проектирование основных кнопок окна, строки заголовка, меню верхнего уровня, панели инструментов для меню второго уровня и статусной панели.
курсовая работа [198,0 K], добавлен 19.07.2014Типы, основные функции, элементы и принцип работы текстового редактора (компьютерной программы). Методы вставки внешних объектов в текст. Особенности текстового процессора Microsoft Word, его специальные возможности. Типовая структура интерфейса.
реферат [15,8 K], добавлен 07.12.2010Разработка алгоритма и программы, которая позволяет создавать программное обеспечение для языка программирования Паскаль. Функциональная спецификация программы. Выбор и обоснование комплекса технических средств. Пользовательское меню и интерфейс.
курсовая работа [1,3 M], добавлен 02.02.2014