Алгоритм написання та налагодження програми Текстовий редактор

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

завдання на проектування

Розробити програму формування тексту з вихідного текстового файлу за заданими параметрами зразка. Перенесення рядків здійснювати за межі слова. Передбачити можливості:

  • зміни шрифту;

  • зміна розміру шрифту;

  • типу вирівнювання;

  • кольори тексту і фону;

  • збереження тексту у файл;

  • відкриття текстового файлу

  • пошуку і заміни текстового фрагмента.

Введення

Дане завдання можливо реалізувати на будь-якому з відомих мов програмування, і для закріплення та удосконалення своїх практичних навичок розробки алгоритмів, написання і налагодження програм на мові програмування С + + я використав середовище розробки C + + Builder 6

Поставлене переді мною завдання присвячена редагування тексту. Редагування тексту є дуже важливою частиною оформлення документів.

Розробляється програма - «Текстовий редактор» не є якоюсь наднової програмою і на сьогодні має величезну кількість подібних додатків, розроблених як окремими людьми, так і цілими корпораціями.

У цій роботі стоїть завдання, навіть не повторити їх, а всього лише пропрацювати деякі функції роботи з текстом. У результаті роботи повинна вийти програма, якою, в принципі, можна користуватися в повсякденному житті в якості заміни вбудованого редактора «WordPad».

  1. ВИБІР І ОБГРУНТУВАННЯ МОВИ ПРОГРАМУВАННЯ

В якості мови програмування для реалізації автоматизованої робочої програми зав обраний С + + і, заснована на ньому середовище розробки C + + Builder 6. Це потужна система візуального об'єктно-орієнтованого програмування, що дозволяє вирішувати безліч завдань, зокрема:

  • Створювати закінчені додатки для Windows самої різної спрямованості, від суто обчислювальних і логічних, до графічних і мультимедіа.

  • Швидко створювати (навіть починаючим програмістам) професійно виглядає віконний інтерфейс для будь-яких додатків, написаних на будь-якій мові. Зокрема, за допомогою C + + Builder можна об'єднати в єдину систему з зручним сучасним інтерфейсом наявні на підприємстві прикладні програми DOS, Windows і ін Інтерфейс задовольняє всім вимогам Windows і автоматично налаштовується на ту систему, яка встановлена ​​на комп'ютері користувача, оскільки використовує багато функції, процедури, бібліотеки Windows.

  • Створювати потужні системи роботи з локальними і віддаленими базами даних будь-яких типів. При цьому є засоби автономного налагодження додатків з подальшим виходом в мережу.

  • Створювати багатоланкові розподілені додатки, засновані на різних технологіях.

  • Створювати додатки, які управляють іншими додатками, зокрема, такими програмами Microsoft Office, як Word, Excel і ін

  • Створювати крос-платформні додатки, які можна компілювати і експлуатувати як в Windows, так і в системі Linux.

  • Створювати додатки різних класів для роботи в.

  • Створювати професійні програми установки для додатків Windows, враховують всю специфіку і всі вимоги Windows.

  • І багато, багато іншого, включаючи створення звітів, довідкових систем, бібліотек DLL, компонентів ActiveX і т.п.

C + + Builder - надзвичайно швидко розвивається, тому що її творці постійно відстежують всі тенденції інформаційних технологій. Нові версії випускаються щорічно.

Для більшості застосувань можливості еквівалентних версій С + + У uilder і Delphi приблизно однакові. Це не дивно, оскільки мова Object Pascal в даний час дуже близький (звичайно, якщо не враховувати синтаксис) до C + +. Так що для більшості завдань вибір C + + або Object Pascal, і, відповідно, C + + Builder або Delphi - справа смаку і звички програміста. Але все-таки мова C + + поки трохи більш потужний, ніж Object Pascal. До того ж в C + + напрацьовані більш великі бібліотеки функцій. Так що деякі, порівняно складні завдання простіше вирішувати за допомогою C + + Builder.

З прекрасного засоби створення додатків для Windows C + + Builder перетворюється на інструмент створення додатків для багатоланкових розподілених крос-платформних корпоративних інформаційних систем.

  1. ФІЗИЧНА СТРУКТУРА ПРОГРАМИ

Проект C + + Builder складається з форм, модулів з їх заголовками і файлами реалізації, установок параметрів проекту, ресурсів і т.д. Вся ця інформація розміщується у файлах. Багато хто з цих файлів автоматично створюються C + + Builder, коли ми будуємо наш додаток. Ресурси, такі, як бітові матриці, піктограми і т.д., знаходяться у файлах, які ми отримуємо з інших джерел або створюємо за допомогою численних інструментів та редакторів ресурсів, наявних в нашому розпорядженні (див. табл. 1).

Таблиця 1 - Фізична структура програми

Найменування

Призначення

Головний файл

проекту (. cpp)

TeRAn.cpp

С + + Builder створює файл. Cpp для головної функції WinMain, що ініціює програми та запускає його на виконання.

Файл опцій

проекту (. bpr)

TeRAn.bpr

Цей текстовий файл містить установки опцій проекту і вказівки на те, які файли повинні компілюватися і компонуватися в проект. Файл зберігається у форматі XML.

Файл реалізації модуля (. Cpp)

TeR. Cpp

Кожній створюваній вами формі відповідає текстовий файл реалізації модуля, який використовується для зберігання коду. Іноді ви можете самі створювати модулі, не пов'язані з формами.

Текстовий файл реалізації головного вікна програми

Unit 1. Cpp

Текстовий файл реалізації модуля «Про програму»

Unit 2. Cpp

Текстовий файл реалізації модуля «Довідка»

Заголовний файл модуля (. H)

Кожній створюваній вами формі відповідає не тільки файл реалізації модуля, але і його заголовний файл з описом класу форми. Ви можете й самі створювати необхідні заголовні файли.

Файл форми (. Dfm)


Це двійковий або текстовий файл, який С + + Builder створює для зберігання інформації про ваші формах. Ви можете дивитися цей файл у текстовому вигляді або у вигляді форми. Кожному файлу форми відповідає файл модуля (. Cpp).

Виконуваний файл (. Exe)

TeRAn. Exe

Це виконуваний файл вашого додатку. Він є автономним виконуваним файлом, для якого більше нічого не потрібно, якщо тільки ви не використовуєте бібліотеки, що містяться в пакетах, DLL, OCX і т.д.

Об'єктний файл модуля (. Obj)

Це відкомпільований файл модуля (. Cpp), який компонується в остаточний виконуваний файл.

Файл ресурсів проекту (. Res)

Двійковий файл, що містить ресурси проекту: піктограми, курсори і т.п. за замовчуванням містить тільки піктограму проекту. Може доповняться за допомогою Редактора Зображень (Image Editor)

Файл таблиці символів (. Tds)

Двійковий файл, використовуваний відладчиком в процесі відладки програми.

Файли резервних копій (. ~ Cpp,. ~ H,. ~ Bp,. ~ Df)

Це відповідно файли резервних копій для файлів реалізації модуля, заголовного, проекту та форми. Якщо ви щось безнадійно зіпсували у своєму проекті, можете відповідно змінити розширення цих файлів і таким чином повернутися до попереднього не зіпсоване варіанту.

З усіх перерахованих файлів найважливішими є файли. Cpp,. H,. Dfm,. Bpr,. Res. Це ті файли, які ви, наприклад, повинні перенести на інший комп'ютер, якщо захочете продовжити на ньому роботу над своїм проектом. Всі інші файли C + + Builder створить автоматично в процесі компіляції проекту та його налагодження.

Інформація про форми C + + Builder зберігається в трьох файлах:. Cpp,. H,. Dfm. У двійковому або текстовому файлі з розширенням. Dfm зберігається інформація про зовнішній вигляд форми, її розміри, місце розташування на екрані і т.д.

Основний файл, з яким ви працюєте - файл реалізації модуля. Cpp, в якому зберігається код, що відповідає даній формі. У текстовому заголовному файлі з розширенням. H зберігається оголошення класу вашої форми. Весь основний текст цього файлу C + + Builder формує автоматично в міру проектування вами форми.

Якщо ви по черзі працюєте над багатьма проектами, той простір на диску може неефективно забиватися непотрібними файлами. У цьому випадку корисно видаляти допоміжні файли тих проектів, над якими ви тимчасово не працюєте. Перш за все, це відноситься до файлів. Obj,. Res,. Tds,. ~ *. Особливо зверніть увагу на файли. Tds, обсяг яких може бути дуже великим (кілька мегабайт).

Тепер кілька слів про виконуваному файлі. Exe і про файли пакетів. У C + + Builder можна розробляти прикладні програми двох видів - автономні виконувані файли. Exe і програми з підтримкою пакетів (packages) часу виконання. У останньому випадку розмір виконуваного файлу істотно скорочується, але зате ви повинні постачати користувачеві не тільки виконуваний модуль, але і файли підтримують його пакетів. У всякому разі, під час налагодження, має сенс включати підтримку пакетів часу виконання.

Це істотно скоротить розміри виконуваних файлів і збереже вам чимало дискового простору.

  1. МЕТОДИКА РОЗВ'ЯЗУВАННЯ ЗАДАЧІ

Розіб'ємо поставлене перед нами завдання на окремі підзадачі:

  1. Створення меню програми.

  2. Висновок на екран довідки, що містить керівництво з управління та інформацію про автора.

  1. Опис роботи програми

Програма містить у своєму складі всі необхідні пакети для роботи незалежно від C + + Buildera. Запуск проводиться з відкриття файлу T eRAn.exe Відразу після цього без зволікання відкривається головне вікно програми (див. малюнок 1)

Малюнок 1 - Головне вікно програми



У цьому вікні розташовані основні засоби управління програмою.

Безпосередньо в роботі з текстом бере участь форма «Довідка», представлена ​​на малюнку 2. Текст довідки зчитується з файлу hlp, який завжди повинен знаходиться в одній папці разом з виконуваним файлом T eRAn.exe



Рисунок 2 - Допоміжна форма «Довідка»

Рисунок 3 - Допоміжна форма «Про програму»



З малюнка 1 видно, що на нашій головній формі програми можна безпосередньо редагувати текст документа, оформлюючи його за своїм бажанням необхідним чином. У верхній частині програми знаходяться дві панелі: панель інструментів Panel 1 і панель редагування Panel 2, на яких розташовуються кнопки типу SpeedButton, з функціями, відповідними технічному завданню.

  1. Керівництво користувача

Апаратно-системні вимоги

Мінімальні системні вимоги:

  • IBM PC: MS Windows 98 і вище;

  • процесор Pentium 2 - 400МГц;

  • 64 Мб ОЗУ;

  • SVGA - карта (800х600, 65536 кольорів);

  • Клавіатура;

  • Миша

Склад пакету

До складу користувальницького пакету входить всього 2 файли:

T eRAn.exe - виконуваний файл.

hlp - файл довідки, який при необхідності, можна зробити вбудованим.

Всі файли повинні лежати в одній папці і запускатися звідти.

Керівництво користувача

Дана програма являє собою текстовий редактор, призначений для набору, редагування та форматування тексту. Спочатку необхідно скопіювати всі файли, що входять у програмний пакет на жорсткий диск (усі файли повинні знаходитися в одній папці). Для початку роботи з програмою слід запустити файл T eRAn.exe, після чого з'явиться відразу головна форма з полем для редагування. Потім вибирайте потрібні для вас дії, слідуючи підказкам спливаючим, і підказкам з'являтимуться у рядку стану.

Текст можна вводити як з клавіатури, так і з файлу.

Для того, щоб прочитати керівництво користувача виберіть пункт меню «? | Довідка ».

Для виходу з програми виберіть пункт меню "Файл | Вихід.

Для збереження і успішної роботи програми не рекомендується вносити будь-які зміни у файли програмного пакету, а також слід зберігати ці файли і запускати програму з однієї папки.

  1. Недоліки та переваги програми

У програми можна знайти наступні переваги: ​​низькі системні й апаратні вимоги, має простий алгоритм, за розміром значно мала, пристойна швидкість роботи. Програма не представляє складності для користувача і має практично всі можливості редагування тексту.

Недоліком програми є відсутність налаштувань параметрів сторінки. Ні попереднього перегляду для відправки на друк.

Також недоліком можна вважати відсутність вибору кодування і відсутність синтаксичної підсвічування.

Таким чином, у розробленої програми є кілька способів подальшого удосконалення, після якого програма б позбулася від вищеописаних недоліків.

Висновок

В результаті виконання курсового проекту була розроблена програма, що демонструє приклад текстового редактора. У програмі були використані основні типи даних, структури даних, а також програма будувалася за модульним принципом.

У результаті виконаної роботи був повторений і використаний при розробці програми пройдений матеріал по програмуванню в середовищі розробки C + + Builder 6.

Також була проведена важлива робота з написання пояснювальної записки, досвід якої, безумовно, стати в нагоді в майбутньому при написанні всілякої документації.

Досить цікаво було працювати над самою поставленим завданням. Під час роботи був прочитаний матеріал, пов'язаний безпосередньо з мовою програмування С + +.

Бібліографічний список



  1. Фаронов В.В., Програмування в Builder C + +: Навчальний курс. - СГБ.: Пітер, 2004.

  2. Архангельський А.Я., Тагін М.А. Прийоми програмування в C + + Builder 6 і 2006: Обчислювальні завдання, робота з документами. - М: ЗАТ «Видавництво БІНОМ», 2007

  3. Архангельський А.Я. Довідковий посібник по C + + Builder 6 і 2006. Компоненти. - М: ЗАТ «Видавництво БІНОМ», 2006

Додаток



TeRAn.cpp

# Include <vcl.h>

# Pragma hdrstop

//------------------------------------------------ ---------------------------

USEFORM ("TeR.cpp", Form1);

USEFORM ("Unit1.cpp", AboutBox);

USEFORM ("Unit2.cpp", Form2);

//------------------------------------------------ ---------------------------

WINAPI WinMain (HINSTANCE, HINSTANCE, LPSTR, int)

{

try

{

Application-> Initialize ();

Application-> CreateForm (__classid (TForm1), & Form1);

Application-> CreateForm (__classid (TForm2), & Form2);

Application-> Run ();

}

catch (Exception & exception)

{

Application-> ShowException (& exception);

}

catch (...)

{

try

{

throw Exception ("");

}

catch (Exception & exception)

{

Application-> ShowException (& exception);

}

}

return 0;

}

//------------------------------------------------ ---------------------------

TeR.cpp

# Include <vcl.h>

# Pragma hdrstop

# Include "TeR.h"

# Include "Unit1.h"

# Include "Unit2.h"

//------------------------------------------------ ---------------------------

# Pragma package (smart_init)

# Pragma link "CSPIN"

# Pragma resource "*. dfm"

TForm1 * Form1;

//------------------------------------------------ ---------------------------

__fastcall TForm1:: TForm1 (TComponent * Owner)

: TForm (Owner)

{

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: SpeedButton4Click (TObject * Sender)

{

if (OpenDialog1-> Execute ())

RichEdit1-> Lines-> LoadFromFile (OpenDialog1-> FileName);

StatusBar1-> Panels-> Items [0] -> Text = (OpenDialog1-> FileName);

SpeedButton4-> Down = false;

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: SpeedButton14Click (TObject * Sender)

{

if (ColorDialog1-> Execute ())

RichEdit1-> SelAttributes-> Color = ColorDialog1-> Color;

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: CSpinEdit1Change (TObject * Sender)

{

if (CSpinEdit1-> Text! = "")

{

RichEdit1-> SelAttributes-> Size = CSpinEdit1-> Value;

}

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: ComboBox1Change (TObject * Sender)

{

/ / Вибір шрифту

RichEdit1-> SelAttributes-> Name = ComboBox1-> Items-> Strings [ComboBox1 -> ItemIndex];

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: SpeedButton13Click (TObject * Sender)

{

/ / Жирний

if (SpeedButton13-> Down == true)

{

RichEdit1-> SelAttributes-> Style = TFontStyles () <<fsBold;

}

if (SpeedButton13-> Down == false)

{

RichEdit1-> SelAttributes-> Style = TFontStyles ();

}

if ((SpeedButton13-> Down == true) & & (SpeedButton12-> Down == true))

{

RichEdit1-> SelAttributes-> Style = TFontStyles () <<fsBold <<fsItalic;

}

if ((SpeedButton13-> Down == false) & & (SpeedButton12-> Down == true))

{

RichEdit1-> SelAttributes-> Style = TFontStyles () <<fsItalic;

}

if ((SpeedButton13-> Down) & & (SpeedButton11-> Down))

{

RichEdit1-> SelAttributes-> Style = TFontStyles () <<fsBold <<fsUnderline;

}

if ((SpeedButton13-> Down == false) & & (SpeedButton11-> Down == true))

{

RichEdit1-> SelAttributes-> Style = TFontStyles () <<fsUnderline;

}

if ((SpeedButton13-> Down == true) & & (SpeedButton12-> Down == true) & & (SpeedButton11-> Down == true))

{

RichEdit1-> SelAttributes-> Style = TFontStyles () <<fsBold <<fsItalic <<fsUnderline;

}

if ((SpeedButton13-> Down == false) & & (SpeedButton12-> Down == true) & & (SpeedButton11-> Down == true))

{

RichEdit1-> SelAttributes-> Style = TFontStyles () <<fsItalic <<fsUnderline;

}

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: SpeedButton12Click (TObject * Sender)

{

/ / Курсив

if (SpeedButton12-> Down == true)

{

RichEdit1-> SelAttributes-> Style = TFontStyles () <<fsItalic;

}

if (SpeedButton12-> Down == false)

{

RichEdit1-> SelAttributes-> Style = TFontStyles ();

}

if ((SpeedButton12-> Down == true) & & (SpeedButton13-> Down == true))

{

RichEdit1-> SelAttributes-> Style = TFontStyles () <<fsBold <<fsItalic;

}

if ((SpeedButton12-> Down == false) & & (SpeedButton13-> Down == true))

{

RichEdit1-> SelAttributes-> Style = TFontStyles () <<fsBold;

}

if ((SpeedButton12-> Down) & & (SpeedButton11-> Down))

{

RichEdit1-> SelAttributes-> Style = TFontStyles () <<fsItalic <<fsUnderline;

}

if ((SpeedButton12-> Down == false) & & (SpeedButton11-> Down == true))

{

RichEdit1-> SelAttributes-> Style = TFontStyles () <<fsUnderline;

}

if ((SpeedButton13-> Down == true) & & (SpeedButton12-> Down == true) & & (SpeedButton11-> Down == true))

{

RichEdit1-> SelAttributes-> Style = TFontStyles () <<fsBold <<fsItalic <<fsUnderline;

}

if ((SpeedButton13-> Down == true) & & (SpeedButton12-> Down == false) & & (SpeedButton11-> Down == true))

{

RichEdit1-> SelAttributes-> Style = TFontStyles () <<fsBold <<fsUnderline;

}

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: SpeedButton11Click (TObject * Sender)

{

if (SpeedButton11-> Down == true)

{

RichEdit1-> SelAttributes-> Style = TFontStyles () <<fsUnderline;

}

if (SpeedButton11-> Down == false)

{

RichEdit1-> SelAttributes-> Style = TFontStyles ();

}

if ((SpeedButton11-> Down == true) & & (SpeedButton13-> Down == true))

{

RichEdit1-> SelAttributes-> Style = TFontStyles () <<fsBold <<fsUnderline;

}

if ((SpeedButton11-> Down == false) & & (SpeedButton13-> Down == true))

{

RichEdit1-> SelAttributes-> Style = TFontStyles () <<fsBold;

}

if ((SpeedButton11-> Down == true) & & (SpeedButton12-> Down == true))

{

RichEdit1-> SelAttributes-> Style = TFontStyles () <<fsItalic <<fsUnderline;

}

if ((SpeedButton11-> Down == false) & & (SpeedButton12-> Down == true))

{

RichEdit1-> SelAttributes-> Style = TFontStyles () <<fsItalic;

}

if ((SpeedButton13-> Down == true) & & (SpeedButton12-> Down == true) & & (SpeedButton11-> Down == true))

{

RichEdit1-> SelAttributes-> Style = TFontStyles () <<fsBold <<fsItalic <<fsUnderline;

}

if ((SpeedButton11-> Down == false) & & (SpeedButton12-> Down == true) & & (SpeedButton13-> Down == true))

{

RichEdit1-> SelAttributes-> Style = TFontStyles () <<fsBold <<fsItalic;

}

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: SpeedButton3Click (TObject * Sender)

{

if (SaveDialog1-> Execute ()) RichEdit1-> Lines-> SaveToFile (SaveDialog1-> FileName);

StatusBar1-> Panels-> Items [0] -> Text = SaveDialog1-> FileName;

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: N5Click (TObject * Sender)

{

if (SaveDialog1-> Execute ()) RichEdit1-> Lines-> SaveToFile (SaveDialog1-> FileName);

StatusBar1-> Panels-> Items [0] -> Text = SaveDialog1-> FileName;

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: SpeedButton1Click (TObject * Sender)

{

RichEdit1-> CopyToClipboard ();

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: SpeedButton6Click (TObject * Sender)

{

if (PrintDialog1-> Execute ()) RichEdit1-> Print ("");

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: N3Click (TObject * Sender)

{

if (OpenDialog1-> Execute ())

RichEdit1-> Lines-> LoadFromFile (OpenDialog1-> FileName);

StatusBar1-> Panels-> Items [0] -> Text = (OpenDialog1-> FileName);

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: SpeedButton7Click (TObject * Sender)

{

FindDialog1-> Position = Point (RichEdit1-> Left + RichEdit1-> Width, RichEdit1-> Top);

/ / FindDialog1-> FindText = RichEdit1-> SelText;

FindDialog1-> Execute ();

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: FindDialog1Find (TObject * Sender)

{

int FoundAt, StartPos, ToEnd;

if (RichEdit1-> SelLength)

StartPos = RichEdit1-> SelStart + RichEdit1-> SelLength;

else

StartPos = 0;

ToEnd = RichEdit1-> Text.Length () - StartPos;

FoundAt = RichEdit1-> FindText (FindDialog1-> FindText, StartPos, ToEnd, TSearchTypes () <<stMatchCase);

if (FoundAt! = -1)

{

RichEdit1-> SetFocus ();

RichEdit1-> SelStart = FoundAt;

RichEdit1-> SelLength = FindDialog1-> FindText.Length ();

}

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: N9Click (TObject * Sender)

{

if (MessageBox (0, "Зберегти вміст вікна редагування?", "Підтвердіть збереження", MB_YESNO) == IDYES)

if (SaveDialog1-> Execute ()) RichEdit1-> Lines-> SaveToFile (SaveDialog1-> FileName);

Application-> Terminate ();

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: N16Click (TObject * Sender)

{

if (RichEdit1-> Lines-> Count> 0)

{

if (MessageBox (0, "Зберегти вміст вікна редагування? "," Підтвердіть збереження ", MB_YESNO) == IDYES)

{

/ / N9Click (Sender);

}

}

RichEdit1-> Clear ();

StatusBar1-> Panels-> Items [0] -> Text = "Документ";

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: SpeedButton2Click (TObject * Sender)

{

RichEdit1-> CutToClipboard ();

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: SpeedButton5Click (TObject * Sender)

{

RichEdit1-> CopyToClipboard ();

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: SpeedButton9Click (TObject * Sender)

{

RichEdit1-> PasteFromClipboard ();

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: N20Click (TObject * Sender)

{

ReplaceDialog1-> Execute ();

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: ReplaceDialog1Replace (TObject * Sender)

{

TReplaceDialog * dlg = (TReplaceDialog *) Sender;

int SelPos = RichEdit1-> Lines-> Text.Pos (dlg-> FindText);

if (SelPos> 0)

{

RichEdit1-> SelStart = SelPos - 1;

RichEdit1-> SelLength = dlg-> FindText.Length ();

RichEdit1-> SelText = dlg-> ReplaceText;

}

else

MessageBeep (0);

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: N19Click (TObject * Sender)

{

FindDialog1-> Position = Point (RichEdit1-> Left + RichEdit1-> Width, RichEdit1-> Top);

FindDialog1-> Execute ();

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: N30Click (TObject * Sender)

{

if (FontDialog1-> Execute ())

{

RichEdit1-> SelAttributes-> Assign (FontDialog1-> Font);

}

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: N28Click (TObject * Sender)

{

Application-> CreateForm (__classid (TAboutBox), & AboutBox);

AboutBox-> ShowModal ();

AboutBox-> Free ();

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: N7Click (TObject * Sender)

{

if (PrintDialog1-> Execute ()) RichEdit1-> Print ("");

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: N24Click (TObject * Sender)

{

StatusBar1-> Visible =! StatusBar1-> Visible;

N24-> Checked =! N24-> Checked;

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: N22Click (TObject * Sender)

{

Panel1-> Visible =! Panel1-> Visible;

N22-> Checked =! N22-> Checked;

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: N23Click (TObject * Sender)

{

Panel2-> Visible =! Panel2-> Visible;

N23-> Checked =! N23-> Checked;

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: SpeedButton16Click (TObject * Sender)

{

if (ColorDialog1-> Execute ())

{RichEdit1-> Color = ColorDialog1-> Color;}

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: SpeedButton17Click (TObject * Sender)

{

RichEdit1-> Paragraph-> Alignment = taLeftJustify;

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: SpeedButton18Click (TObject * Sender)

{

RichEdit1-> Paragraph-> Alignment = taCenter;

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: SpeedButton19Click (TObject * Sender)

{

if (SpeedButton11-> Down == true)

{

RichEdit1-> Paragraph-> Numbering = nsBullet;

}

else

{

RichEdit1-> Paragraph-> Numbering = nsNone;

}

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: SpeedButton15Click (TObject * Sender)

{

RichEdit1-> Paragraph-> Alignment = taRightJustify;

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: CSpinEdit1KeyPress (TObject * Sender, char & Key)

{

if ((Key! = VK_BACK) & & (Key! = '9')&&( Key! = '8')&&( Key! = '7')&&( Key! = '6 '))

{

Set <char, '0','9'> Dig;

Dig <<0 "<<'1 '<<'2' <<'3 '<<'4' <<'5 '<<' 6 '<<' 7 '<<' 8 '<<' 9 ';

if (! Dig.Contains (Key)) {Key = 0; Beep ();}

}

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: FormShow (TObject * Sender)

{

int i;

for (i = 0; i <Screen-> Fonts-> Count; i + +)

{

ComboBox1-> Items-> Add (Screen-> Fonts-> Strings [i]);

}

CSpinEdit1-> Value = RichEdit1-> SelAttributes-> Size;

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: RichEdit1MouseUp (TObject * Sender,

TMouseButton Button, TShiftState Shift, int X, int Y)

{

if (RichEdit1-> Paragraph-> Numbering == nsNone)

{SpeedButton19-> Down = false;}

if (RichEdit1-> Paragraph-> Numbering == nsBullet)

{SpeedButton19-> Down = true;}

switch (RichEdit1-> Paragraph-> Alignment)

{Case taLeftJustify: SpeedButton17-> Down = true; break;

case taCenter: SpeedButton18-> Down = true; break;

case taRightJustify: SpeedButton15-> Down = true; break;}

if (RichEdit1-> SelAttributes-> Style == RichEdit1-> SelAttributes-> Style <<fsBold)

{SpeedButton13-> Down = true;}

else {SpeedButton13-> Down = false;}

if (RichEdit1-> SelAttributes-> Style == RichEdit1-> SelAttributes-> Style <<fsUnderline)

{SpeedButton11-> Down = true;}

else {SpeedButton11-> Down = false;}

if (RichEdit1-> SelAttributes-> Style == RichEdit1-> SelAttributes-> Style <<fsItalic)

{SpeedButton12-> Down = true;}

else {SpeedButton12-> Down = false;}

CSpinEdit1-> Value = RichEdit1-> SelAttributes-> Size;

ComboBox1-> ItemIndex = ComboBox1-> Items-> IndexOf (RichEdit1-> SelAttributes-> Name);

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: RichEdit1KeyUp (TObject * Sender, WORD & Key,

TShiftState Shift)

{

if (RichEdit1-> Paragraph-> Numbering == nsNone)

{SpeedButton19-> Down = false;}

if (RichEdit1-> Paragraph-> Numbering == nsBullet)

{SpeedButton19-> Down = true;}

switch (RichEdit1-> Paragraph-> Alignment)

{Case taLeftJustify: SpeedButton17-> Down = true; break;

case taCenter: SpeedButton18-> Down = true; break;

case taRightJustify: SpeedButton15-> Down = true; break;}

if (RichEdit1-> SelAttributes-> Style == RichEdit1-> SelAttributes-> Style <<fsBold)

{SpeedButton13-> Down = true;}

else {SpeedButton13-> Down = false;}

if (RichEdit1-> SelAttributes-> Style == RichEdit1-> SelAttributes-> Style <<fsUnderline)

{SpeedButton11-> Down = true;}

else {SpeedButton11-> Down = false;}

if (RichEdit1-> SelAttributes-> Style == RichEdit1-> SelAttributes-> Style <<fsItalic)

{SpeedButton12-> Down = true;}

else {SpeedButton12-> Down = false;}

CSpinEdit1-> Value = RichEdit1-> SelAttributes-> Size;

ComboBox1-> ItemIndex = ComboBox1-> Items-> IndexOf (RichEdit1-> SelAttributes-> Name);

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: FormCreate (TObject * Sender)

{

RichEdit1-> Clear ();

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: FormClose (TObject * Sender, TCloseAction & Action)

{

Action = caFree;

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: FormCloseQuery (TObject * Sender, bool & CanClose)

{

if (RichEdit1-> Modified)

{

int res = Application-> MessageBox ("Текст документа НЕ збережений. \ n \ n "" Зберегти документ у файлі \ n \ n "" (Відміна - продовження роботи) "," Підтвердіть завершення роботи ", MB_YESNOCANCEL + MB_ICONQUESTION);

switch (res)

{

case IDYES: N5Click (Sender); break;

case IDCANCEL: CanClose = false;

}

}

}

//------------------------------------------------ ---------------------------

void __fastcall TForm1:: N26Click (TObject * Sender)

{

Application-> CreateForm (__classid (TForm2), & Form2);

Form2-> Memo1-> Lines-> LoadFromFile ("hlp");

Form2-> ShowModal ();

Form2-> Free ();

}



Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
121.7кб. | скачати


Схожі роботи:
Текстовий редактор MS Word 2
Текстовий редактор MS WORD
Текстовий редактор Microsoft Word XP
Текстовий редактор Microsoft Word 3
Текстовий редактор Microsoft Word
Текстовий редактор Microsoft Word 2
Текстовий редактор Microsoft Word
Текстовий редактор під Windows
Текстовий редактор Word Дії з об єктами WordArt
© Усі права захищені
написати до нас