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 <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();
}
... сообщение об ошибке, которое выводится на русском языке. Место ошибки в программе указывается после перехода в текстовый экран и нажатием клавиши <Enter>. 2.2. Запись основных алгоритмических конструкций в среде Лого Миры и их использование для решения вычислительных задач Понятие алгоритма Понятие алгоритма такое же основополагающее для информатики, как и понятие информации. Именно ...
... быть выведены на печать. На экране рисунки могут быть статическими (неподвижными) или динамическими (движущимися). В последнее время машинная графика выделилась в самостоятельный раздел информатики с многочисленными приложениями. Средствами машинной графики создается не только печатная продукция, но и рекламные ролики на телевидении, мультфильмы. Объясним, как кодируется изображение в памяти ...
... выбрать имя в ListBox’e и нажать кнопку «OK», после чего выбранное имя автоматически отобразиться в окне получателя сообщения. Рис. 1.10. Выбор адресата получателя Поиск компьютеров в локальной сети Приведём пример кода программы, реализующую поиск компьютеров в локальной сети Microsoft. procedure TForm4. Button1Click (Sender: TObject); var Q, BufferSize: DWord; R: THandle; Buf: ^ ...
... AVR Studio запомнит расположение окон и использует эти установки при следующем запуске проекта. 3.2. Анализ методики реализации разработки программного обеспечения 3.2.1. Классификация вариантов заданий Цель заданий – практическое освоение методики программирования на ассемблере микроконтроллеров ATMEL семейства AVR, отладка программы на симуляторе AVR Studio и программирование кристалла с помощью ...
0 комментариев