Реферат по предмету "Информатика, программирование"


Алгоритм, написание и отладка программы "Текстовый редактор"

задание на проектирование
Разработать программу формирования текста из исходноготекстового файла по заданным параметрам образца. Перенос строк осуществлять погранице слова. Предусмотреть возможности:
¶ изменения шрифта;
¶ изменение размера шрифта;
¶ типа выравнивания;
¶ цвета текста и фона;
¶ сохранения текста в файл;
¶ открытие текстового файла
¶ поиска и замены текстового фрагмента.
Введение
Данное задание возможно реализовать на любом из известных языковпрограммирования, и для закрепления и усовершенствования своих практическихнавыков разработки алгоритмов, написания и отладки программ на языке программированияС++ я использовал среду разработки 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++ пока несколько более мощный, чем ObjectPascal. К тому же в C++ наработаны более обширные библиотекифункций. Так что некоторые, сравнительно сложные задачи проще решать с помощью C++Builder.
Из прекрасного средствасоздания приложений для Windows C++Builderпревращается в инструмент создания приложений для многозвенных распределенныхкросс-платформенных корпоративных информационных систем.
/>/>2.  ФИЗИЧЕСКАЯСТРУКТУРА ПРОГРАММЫ
Проект C++Builder состоит из форм, модулей с ихзаголовочными файлами и файлами реализации, установок параметров проекта,ресурсов и т.д. Вся эта информация размещается в файлах. Многие из этих файловавтоматически создаются C++Builder, когда мы строим наше приложение. Ресурсы,такие, как битовые матрицы, пиктограммы и т.д., находятся в файлах, которые мыполучаем из других источников или создаем при помощи многочисленныхинструментов и редакторов ресурсов, имеющихся в нашем распоряжении (см. табл.1).
Таблица 1 – Физическая структура программыНаименование Назначение
Головной файл
проекта (.cpp)
TeRAn.cpp С++Builder создает файл .cpp для головной функции WinMain, инициирующей приложение и запускающей его на выполнение.
Файл опций
проекта (.bpr)
TeRAn.bpr Этот текстовый файл содержит установки опций проекта и указания на то, какие файлы должны компилироваться и компоноваться в проект. Файл сохраняется в формате XML.
Файл реализации модуля (.cpp)
TeR.cpp
Каждой создаваемой вами форме соответствует текстовый файл реализации модуля, используемый для хранения кода. Иногда вы можете сами создавать модули, не связанные с формами.
Текстовый файл реализации главного окна программы Unit1.cpp Текстовый файл реализации модуля «О программе» Unit2.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) времени выполнения. В последнем случае размер выполняемого файласущественно сокращается, но зато вы должны поставлять пользователю не тольковыполняемый модуль, но и файлы поддерживающих его пакетов. Во всяком случае, вовремя отладки, имеет смысл включать поддержку пакетов времени выполнения.
Это существенно сократит размеры выполняемых файлов исбережет вам немало дискового пространства.
/>/>3. МЕТОДИКА РЕШЕНИЯ ЗАДАЧИ
Разобьем поставленную перед нами задачу на отдельные подзадачи:
1. Создание меню программы.
2. Вывод на экран справки, содержащей руководство по управлению и информациюоб авторе.
/>/>4. Описание работы программы
Программа содержит в своем составе все необходимыепакеты для работы независимо от C++Buildera. Запуск производится по открытиюфайла TeRAn.exe Сразу после этого без промедления открываетсяглавное окно программы (см. рисунок 1)
/>
Рисунок 1 — Главное окно приложения
/> 
В этом окне расположены основные средства управленияпрограммой.
/>Непосредственнов работе с текстом участвует форма «Справка», представленная на рисунке 2. Текст справки считывается из файла hlp, который всегда должен находится водной папке вместе с исполняемым файлом TeRAn.exe
/>
Рисунок 2 – Вспомогательная форма «Справка»
/>
Рисунок 3 – Вспомогательная форма «О программе»
Из рисунка 1 видно, что на нашей главной формеприложения можно непосредственно редактировать текст документа, оформляя его посвоему желанию необходимым образом. В верхней части программы находятся двепанели: панель инструментов Panel1 и панель редактирования Panel2, на которыхрасполагаются кнопки типа SpeedButton, с функциями, соответствующими техническому заданию.

/>5. Руководство пользователя/>
Аппаратно-системныетребования
Минимальные системные требования:
+ IBM PC: MS Windows 98 и выше;
+ процессор Pentium 2 –400МГц;
+ 64 Мб ОЗУ;
+ SVGA – карта (800х600, 65536 цветов);
+ Клавиатура;
+ Мышь/>/>
Составпакета
В состав пользовательского пакета входит всего 2файла:
TeRAn.exe – исполняемый файл.
hlp – файл справки,который при необходимости, можно сделать встроенным.
Все файлы должны лежать в одной папке и запускатьсяоттуда.
/>Руководство пользователя
Данная программа представляет собой текстовыйредактор, предназначенный для набора, редактирования и форматирования текста.Сначала необходимо скопировать все файлы, входящие в программный пакет нажесткий диск (все файлы должны находиться в одной папке). Для начала работы спрограммой следует запустить файл TeRAn.exe, после чего появится сразу главная форма с полем дляредактирования. Затем выбирайте нужные для вас действия, следуя всплывающимподсказкам, и подсказкам появляющимся в строке состояния.
Текст можно вводить как с клавиатуры, так и из файла.
Для того, чтобы прочитать руководство пользователявыберите пункт меню «? | Справка».
Для выхода из программы выберите пункт меню «Файл |Выход.
Для сохранности и успешной работы программы нерекомендуется вносить какие-либо изменения в файлы программного пакета, а такжеследует хранить эти файлы и запускать программу из одной папки.
6.  Недостатки и достоинства программы
У программы можно найти следующие достоинства: низкиесистемные и аппаратные требования, имеет простой алгоритм, по размерузначительно мала, приличная скорость работы. Программа не представляетсложности для пользователя и имеет практически все возможности редактированиятекста.
Недостатком программы является отсутствие настроекпараметров страницы. Нет предварительного просмотра для отправки на печать.
Также недостатком можно считать отсутствие выборакодировки и отсутствие синтаксической подсветки.
Таким образом, у разработанной программы естьнесколько способов дальнейшего усовершенствования, после которого программа быизбавилась от вышеописанных недостатков.
Заключение
В результате выполнения курсового проекта быларазработана программа, демонстрирующая пример текстового редактора. В программебыли использованы основные типы данных, структуры данных, а также программастроилась по модульному принципу.
В результате проделанной работы былповторен и использован при разработке программы пройденный материал попрограммированию в среде разработки C++Builder 6.
Также была проделана немаловажная работа по написанию пояснительнойзаписки, опыт которой, безусловно, пригодиться в будущем при написаниивсевозможной документации.
Достаточно интересно было работать над самойпоставленной задачей. Во время работы был прочитан материал, связанныйнепосредственно с языком программирования С++.
Библиографический список
1. Фаронов В.В., Программирование в Builder C++: Учебный курс. – СГб.: Питер, 2004.
2. Архангельский А.Я., Тагин М.А.Приемы программирования в C++Builder 6 и 2006: Вычислительные задачи, работа сдокументами. – М: ЗАО «Издательство БИНОМ», 2007
3. Архангельский А.Я. Справочное пособие по C++Builder 6 и 2006. Компоненты. — М: ЗАО «Издательство БИНОМ», 2006
Приложение
TeRAn.cpp
#include
#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
#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 __fastcallTForm1::SpeedButton4Click(TObject *Sender)
{
if (OpenDialog1->Execute())
RichEdit1->Lines->LoadFromFile(OpenDialog1->FileName);
StatusBar1->Panels->Items[0]->Text=(OpenDialog1->FileName);
SpeedButton4->Down=false;
}
//---------------------------------------------------------------------------
void __fastcallTForm1::SpeedButton14Click(TObject *Sender)
{
if (ColorDialog1->Execute())
RichEdit1->SelAttributes->Color =ColorDialog1->Color;
}
//---------------------------------------------------------------------------
void __fastcallTForm1::CSpinEdit1Change(TObject *Sender)
{
if ( CSpinEdit1->Text != "" )
{
RichEdit1->SelAttributes->Size =CSpinEdit1->Value;
}
}
//---------------------------------------------------------------------------
void __fastcallTForm1::ComboBox1Change(TObject *Sender)
{
//Выбор шрифта
RichEdit1->SelAttributes->Name=ComboBox1->Items->Strings[ComboBox1->ItemIndex];
}
//---------------------------------------------------------------------------
void __fastcallTForm1::SpeedButton13Click(TObject *Sender)
{
//Полужирный
if (SpeedButton13->Down==true)
{
RichEdit1->SelAttributes->Style=TFontStyles()
}
if (SpeedButton13->Down==false)
{
RichEdit1->SelAttributes->Style=TFontStyles();
}
if((SpeedButton13->Down==true)&&(SpeedButton12->Down==true))
{
RichEdit1->SelAttributes->Style=TFontStyles()
}
if((SpeedButton13->Down==false)&&(SpeedButton12->Down==true))
{
RichEdit1->SelAttributes->Style=TFontStyles()
}
if((SpeedButton13->Down)&&(SpeedButton11->Down))
{
RichEdit1->SelAttributes->Style=TFontStyles()
}
if ((SpeedButton13->Down==false)&&(SpeedButton11->Down==true))
{
RichEdit1->SelAttributes->Style=TFontStyles()
}
if((SpeedButton13->Down==true)&&(SpeedButton12->Down==true)&&(SpeedButton11->Down==true))
{
RichEdit1->SelAttributes->Style=TFontStyles()
}
if((SpeedButton13->Down==false)&&(SpeedButton12->Down==true)&&(SpeedButton11->Down==true))
{
RichEdit1->SelAttributes->Style=TFontStyles()
}
}
//---------------------------------------------------------------------------
void __fastcallTForm1::SpeedButton12Click(TObject *Sender)
{
//курсив
if (SpeedButton12->Down==true)
{
RichEdit1->SelAttributes->Style=TFontStyles()
}
if (SpeedButton12->Down==false)
{
RichEdit1->SelAttributes->Style=TFontStyles();
}
if((SpeedButton12->Down==true)&&(SpeedButton13->Down==true))
{
RichEdit1->SelAttributes->Style=TFontStyles()
}
if((SpeedButton12->Down==false)&&(SpeedButton13->Down==true))
{
RichEdit1->SelAttributes->Style=TFontStyles()
}
if((SpeedButton12->Down)&&(SpeedButton11->Down))
{
RichEdit1->SelAttributes->Style=TFontStyles()
}
if((SpeedButton12->Down==false)&&(SpeedButton11->Down==true))
{
RichEdit1->SelAttributes->Style=TFontStyles()
}
if((SpeedButton13->Down==true)&&(SpeedButton12->Down==true)&&(SpeedButton11->Down==true))
{
RichEdit1->SelAttributes->Style=TFontStyles()
}
if((SpeedButton13->Down==true)&&(SpeedButton12->Down==false)&&(SpeedButton11->Down==true))
{
RichEdit1->SelAttributes->Style=TFontStyles()
}
}
//---------------------------------------------------------------------------
void __fastcallTForm1::SpeedButton11Click(TObject *Sender)
{
if (SpeedButton11->Down==true)
{
RichEdit1->SelAttributes->Style=TFontStyles()
}
if (SpeedButton11->Down==false)
{
RichEdit1->SelAttributes->Style=TFontStyles();
}
if ((SpeedButton11->Down==true)&&(SpeedButton13->Down==true))
{
RichEdit1->SelAttributes->Style=TFontStyles()
}
if((SpeedButton11->Down==false)&&(SpeedButton13->Down==true))
{
RichEdit1->SelAttributes->Style=TFontStyles()
}
if((SpeedButton11->Down==true)&&(SpeedButton12->Down==true))
{
RichEdit1->SelAttributes->Style=TFontStyles()
}
if((SpeedButton11->Down==false)&&(SpeedButton12->Down==true))
{
RichEdit1->SelAttributes->Style=TFontStyles()
}
if((SpeedButton13->Down==true)&&(SpeedButton12->Down==true)&&(SpeedButton11->Down==true))
{
RichEdit1->SelAttributes->Style=TFontStyles()
}
if((SpeedButton11->Down==false)&&(SpeedButton12->Down==true)&&(SpeedButton13->Down==true))
{
RichEdit1->SelAttributes->Style=TFontStyles()
}
}
//---------------------------------------------------------------------------
void __fastcallTForm1::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 __fastcallTForm1::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 __fastcallTForm1::SpeedButton7Click(TObject *Sender)
{
FindDialog1->Position =Point(RichEdit1->Left + RichEdit1->Width, RichEdit1->Top);
//FindDialog1->FindText=RichEdit1->SelText;
FindDialog1->Execute();
}
//---------------------------------------------------------------------------
void __fastcallTForm1::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()
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 __fastcallTForm1::SpeedButton2Click(TObject *Sender)
{
RichEdit1->CutToClipboard();
}
//---------------------------------------------------------------------------
void __fastcallTForm1::SpeedButton5Click(TObject *Sender)
{
RichEdit1->CopyToClipboard();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton9Click(TObject*Sender)
{
RichEdit1->PasteFromClipboard();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N20Click(TObject*Sender)
{
ReplaceDialog1->Execute();
}
//---------------------------------------------------------------------------
void __fastcallTForm1::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 __fastcallTForm1::SpeedButton16Click(TObject *Sender)
{
if(ColorDialog1->Execute())
{RichEdit1->Color=ColorDialog1->Color;}
}
//---------------------------------------------------------------------------
void __fastcallTForm1::SpeedButton17Click(TObject *Sender)
{
RichEdit1->Paragraph->Alignment=taLeftJustify;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton18Click(TObject*Sender)
{
RichEdit1->Paragraph->Alignment=taCenter;
}
//---------------------------------------------------------------------------
void __fastcallTForm1::SpeedButton19Click(TObject *Sender)
{
if(SpeedButton11->Down==true)
{
RichEdit1->Paragraph->Numbering=nsBullet;
}
else
{
RichEdit1->Paragraph->Numbering=nsNone;
}
}
//---------------------------------------------------------------------------
void __fastcallTForm1::SpeedButton15Click(TObject *Sender)
{
RichEdit1->Paragraph->Alignment=taRightJustify;
}
//---------------------------------------------------------------------------
void __fastcallTForm1::CSpinEdit1KeyPress(TObject *Sender, char &Key)
{
if((Key!=VK_BACK)&&(Key!='9')&&(Key!='8')&&(Key!='7')&&(Key!='6'))
{
Set Dig;
Dig
if (! Dig.Contains(Key)) { Key = 0; Beep() ;}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject*Sender)
{
int i;
for (i=0; iFonts->Count;i++)
{
ComboBox1->Items->Add(Screen->Fonts->Strings[i] ) ;
}
CSpinEdit1->Value=RichEdit1->SelAttributes->Size;
}
//---------------------------------------------------------------------------
void __fastcallTForm1::RichEdit1MouseUp(TObject *Sender,
TMouseButton Button, TShiftState Shift, intX, 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
{SpeedButton13->Down=true;}
else{SpeedButton13->Down=false;}
if(RichEdit1->SelAttributes->Style==RichEdit1->SelAttributes->Style
{SpeedButton11->Down=true;}
else{SpeedButton11->Down=false;}
if(RichEdit1->SelAttributes->Style==RichEdit1->SelAttributes->Style
{SpeedButton12->Down=true;}
else{SpeedButton12->Down=false;}
CSpinEdit1->Value=RichEdit1->SelAttributes->Size;
ComboBox1->ItemIndex =ComboBox1->Items->IndexOf(RichEdit1->SelAttributes->Name) ;
}
//---------------------------------------------------------------------------
void __fastcallTForm1::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
{SpeedButton13->Down=true;}
else{SpeedButton13->Down=false;}
if(RichEdit1->SelAttributes->Style==RichEdit1->SelAttributes->Style
{SpeedButton11->Down=true;}
else{SpeedButton11->Down=false;}
if(RichEdit1->SelAttributes->Style==RichEdit1->SelAttributes->Style
{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 __fastcallTForm1::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();
}


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.