Рисунок 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. Фаронов В.В., Программирование в BuilderC++: Учебный курс. – СГб.: Питер, 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;