Текстовый редактор – аналог программы 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.