7077

Проектирование программ на языках высокого уровня С++

Лабораторная работа

Информатика, кибернетика и программирование

Реализовать процедуру поиска страниц, свойство Caption или компонент типа TMemo которых содержит задаваемое слово.

Русский

2014-10-10

172 KB

3 чел.

1. Цель работы

Знакомство с методами проектирования программ на языках высокого уровня С++.

2. Задание на работу

В программе необходимо реализовать:

Пункт главного меню «Справка», состоящий из двух подпунктов «Информация об авторе» и «Информация о программе»;

Смену пиктограмм на кнопках главной экранной формы при наведении на них курсора манипулятора «мышь».

Реализовать процедуру поиска страниц, свойство Caption или компонент типа TMemo которых содержит задаваемое слово.

3. Листинг программы:

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

#include <vcl.h>

#pragma hdrstop

#include "Main_F.h"

#include "Unit2.h"

#include "Unit3.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

TMemo *Memo[1001]; // Массив элементов Memo для каждой карточки

TTabSheet *pPage; // Элемент страницы

int n_Memo = 0;

int Flag1 = 0;//флаг, говорящий о том, что поиск следует начать с начала

int NumberOfPageFinded=0; //номер страницы на которой нашли последний текст

int SELSTART;//начало выделение для повторного поиска

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

__fastcall TForm1::TForm1(TComponent* Owner)

       : TForm(Owner){

}

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

// Добавление карточки

void __fastcall TForm1::Add_Click(TObject *Sender){

 pPage = new TTabSheet(this); // Конструктор страницы

pPage -> PageControl = PageControl_; // "Привязать" страницу к PageControl_

 PageControl_ -> ActivePage = pPage; // Сделать новую страницу активной

 pPage -> Caption = "Page" + AnsiString(n_Memo + 1);

PageControl_ -> Hint = (AnsiString)"Количество карточек: "

                       + AnsiString(PageControl_ -> PageCount);

PageControl_ -> ShowHint = true;

 Memo[n_Memo++] = new TMemo(this);  // Конструктор Memo на странице

 Memo[n_Memo - 1] -> Parent = pPage; // "Привязать" Memo к pPage

Memo[n_Memo - 1] -> Height = 313;

Memo[n_Memo - 1] -> Width = 415;

Memo[n_Memo - 1] -> Left = 2;

Memo[n_Memo - 1] -> WantTabs = true;

Memo[n_Memo - 1] -> Top = 2;

Memo[n_Memo - 1] -> Enabled = true;

Memo[n_Memo - 1] -> Visible = true;

Memo[n_Memo - 1] -> SetFocus(); // Установить фокус на компоненте Memo страницы

for (int r=0;r<1000;r++) {Char R=random(25)+200;Memo [n_Memo - 1]-> Text=Memo [n_Memo - 1]->Text+R;};

//Формирование страницы

}

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

// Завершить приложение

void __fastcall TForm1::Exit_Click(TObject *Sender){

Close();

}

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

// Удаление активной карточки

void __fastcall TForm1::Del_Click(TObject *Sender){

int i, j;

pPage = PageControl_ -> ActivePage;

if((PageControl_ -> PageCount > 0) &&

  (MessageDlg((AnsiString)"Удалить карточку " + (AnsiString)"\"" + pPage ->

  Caption + (AnsiString)"\"?", mtConfirmation, TMsgDlgButtons()

  << mbYes << mbNo, 0) == mrYes)){

  delete pPage;

  PageControl_ -> Hint = (AnsiString)"Количество карточек: " +

                         AnsiString(PageControl_ -> PageCount);

  PageControl_ -> ShowHint = true;

}

}

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

void __fastcall TForm1::FindClick(TObject *Sender)

{

FindDialog1->Execute();   //старт диалога поиска

}

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

void __fastcall TForm1::FindDialog1Find(TObject *Sender)

{

int i;

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

if (Flag1==0)

       {for(i=0;i < PageControl_->PageCount;i++)                 {

               int FoundAt=-10+Memo[i]->Text.SubString(0, Memo[i]->Text.Length()).Pos(FindDialog1->FindText);

              if (FoundAt==-10&&(i==PageControl_->PageCount-1))

                       {

                       ShowMessage("Текст '" + FindDialog1->FindText + "' не найден");

                       Flag1=0;                        };

               if (FoundAt!=-10)

                               {

                               PageControl_->ActivePageIndex=i;

                               Memo[i]->SetFocus();

                               Memo[i]->SelStart = FoundAt+10-1;

                               Memo[i]->SelLength = FindDialog1->FindText.Length();

                       SELSTART=FoundAt+10-1+FindDialog1->FindText.Length();

                               Flag1=Flag1+1;

                       NumberOfPageFinded=i;

                               return;

                               }

               };

       }

else

       {

       int j;

               {for(j=NumberOfPageFinded;j<PageControl_->PageCount;j++)

                       {

                       int FoundAt=-10+SELSTART+Memo[j]->Text.SubString(SELSTART, Memo[j]->Text.Length()).Pos(FindDialog1->FindText);

                       if (FoundAt==-10+SELSTART&&(j+1)==(PageControl_->PageCount))

                               {ShowMessage("Поиск окончен, найдено " + IntToStr(Flag1) + " совпадений");

                               Flag1=0;

                               }

                       else

                       {

                       if (FoundAt!=(-10+SELSTART))

                               {PageControl_->ActivePageIndex=j;

                               Memo[j]->SetFocus ();

                               Memo[j]->SelStart = FoundAt+10-2;

                               Memo[j]->SelLength = FindDialog1->FindText.Length();

                               Flag1=Flag1+1 ;

                               NumberOfPageFinded=j;

                               SELSTART=FoundAt+10+FindDialog1->FindText.Length();

                               return;

                               }

                       else {SELSTART=1;};                         }

             }

          }

          }

}

void __fastcall TForm1::Add_MouseMove(TObject *Sender, TShiftState Shift,

     int X, int Y)

{

 Add_->Layout = blGlyphRight;

 Del_->Layout = blGlyphLeft;

 Exit_->Layout = blGlyphLeft;

}

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

void __fastcall TForm1::Panel_ButtMouseMove(TObject *Sender,

     TShiftState Shift, int X, int Y)

{

  Add_->Layout = blGlyphLeft;

  Del_->Layout = blGlyphLeft;

  Exit_->Layout = blGlyphLeft;

}

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

void __fastcall TForm1::Del_MouseMove(TObject *Sender, TShiftState Shift,

     int X, int Y)

{

   Add_->Layout = blGlyphLeft;

 Del_->Layout = blGlyphRight;

 Exit_->Layout = blGlyphLeft;

}

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

void __fastcall TForm1::Exit_MouseMove(TObject *Sender, TShiftState Shift,

     int X, int Y)

{

 Add_->Layout = blGlyphLeft;

 Del_->Layout = blGlyphLeft;

 Exit_->Layout = blGlyphRight;        

}

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

void __fastcall TForm1::FindMouseMove(TObject *Sender, TShiftState Shift,

     int X, int Y)

{

Find->Font->Size=X*Y/200+10;

}

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

void __fastcall TForm1::N2Click(TObject *Sender)

{

Form2->ShowModal();

}

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

void __fastcall TForm1::N3Click(TObject *Sender)

{

Form3->ShowModal();

}

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

Отладка прошла успешно.

  1.  Результаты функционирования разработанного ПО.

Рисунок 1. Внешний вид приложения

Рисунок 2. Смену пиктограмм на кнопках главной экранной формы при наведении на них курсора манипулятора «мышь».

Рисунок 3. Внешний вид экранной формы при наличие текста на страницах

Рисунок 4. Внешний вид диалогового окна поиск

Рисунок 5. Выделение в тексте найденного текста

Рисунок 6. Сообщения о результатах поиска.

Вывод

Ознакомились с некоторыми методами проектирования программ на С++.

Ответы на контрольные вопросы:

1. Какие операторы программного кода в интегрированной среде C++ Bulder необходимы, чтобы на экранной форме динамически появилась новая страница (на основе компонета типа TPageControl)?

а) TTabSheet pPage = new TTabSheet(this);

8. С помощью какого программного кода можно реализовать метод перехода к следующей странице (тип компонента PageControl_ TPageControl) в интегрированной среде Delphi?

б) i = PageControl_->ActivePage->PageIndex; PageControl_->ActivePage = PageControl_->Pages[i+1];


 

А также другие работы, которые могут Вас заинтересовать

48164. ЕКОНОМІЧНА СИСТЕМА СУЧАСНОГО КАПІТАЛІЗМУ 114.5 KB
  Сутність і ознаки змішаної економіки 2. Механізм функціонування сучасної капіталістичної змішаної економіки 3. Монополії та олігополії в умовах капіталістичної змішаної економіки 4. Сутність і ознаки змішаної економіки Розрізняють три основних варіанти змішаної економіки: 1 консервативний 2 ліберальний 3 соціалреформістський.
48165. СОЦІАЛІСТИЧНА ЕКОНОМІЧНА СИСТЕМА ТА ЇЇ ЕВОЛЮЦІЯ 57.5 KB
  Економічна система соціалізму: теорія і практика 2. Об'єктивні і суб'єктивні умови формування моделі державного соціалізму 3. Механізм функціонування державного соціалізму 4. Історичні перспективи соціалізму Список використаних джерел: Основи економічної теорії: Підручник За ред.
48166. АКОНОМІРНОСІ ТА ОСОБЛИВОСТІ РОЗВИТКУ ПЕРЕХІДНИХ ЕКОНОМІК 61.5 KB
  Зміст чинники і типи перехідної економіки 2. Соціальноекономічні перетворення у постсоціалістичних країнах на шляху до соціально орієнтованої змішаної економіки 4. Зміст чинники і типи перехідної економіки Сутність перехідної економіки. Риси перехідної економіки.
48167. СВІТОВЕ ГОСПОДАРСТВО 150.5 KB
  Воно являє собою глобальний економічний організм в якому склалися і зростають взаємозв'язок і взаємозалежність усіх країн і народів світу. Нині жодна країна світу не може самостійно використати всі досягнення сучасної науки і техніки тому вони повинні об'єднувати свої зусилля в цій сфері. Почетверте необхідністю об'єднання зусиль країн для вирішення глобальних проблем екологічних сировинних продовольчих освоєння багатств світового океану і космосу та ін. Три держави СІЛА Японія Німеччина з 9 населення акумулюють 1 2 світового...
48168. ФОРМИ МІЖНАРОДНИХ ЕКОНОМІЧНИХ ВІДНОСИН 73 KB
  Інші форми міжнародних економічних відносин Список використаних джерел: Основи економічної теорії: Підручник За ред. Сучасний рівень міждержавних економічних зв'язків характеризується: трансформацією двосторонніх міжнародних економічних відносин у багатосторонні значним поглибленням міжнародного поділу праці у світовому господарстві; зростанням масштабів і якісними змінами характеру традиційної міжнародної торгівлі із суто комерційної вона перетворюється в інструмент обслуговування національних виробничих процесів; інтенсифікацією і...
48169. ЕКОНОМІЧНІ АСПЕКТИ ГЛОБАЛЬНИХ ПРОБЛЕМ 76.5 KB
  Причини виникнення сутність і класифікація глобальних проблем 2. Глобальні проблеми: і шляхи їх розв'язання людством 3. Міжнародне співробітництво в розв'язанні глобальних проблем та розвитку світогосподарства Список використаних джерел: Основи економічної теорії: Підручник За ред.
48170. Політологія як наука 552 KB
  Політологія ж займається переважно інституційним аспектом політики устроєм і діяльністю держави усього механізму політичної влади а також процесів які характеризують боротьбу за цю владу. Термін політика politics означає швидше процес повязаний із реалізацією і завоюванням державної влади в окремому суспільстві. Емпіричні науки про організацію влади прийняття рішень роботи апарату. Політика як відповідна форма що забезпечує отримання використання та реалізацію влади.
48171. ПОЛІТОЛОГІЯ ЯК НАУКА І НАВЧАЛЬНА ДИСЦИПЛІНА 1.08 MB
  Витоки політичної думки сягають своїм корінням у найдавніші часи у IV III тис. Періодизація визрівання і розвитку світової політичної думки включає в себе чотири основних етапи. Грецькі філософи започаткували вивчення політичної мови й термінології досліджували такі політичні соціальні моральні цінності як свобода справедливість добро та ін. Початок звільнення політичної думки від релігійноетичної форми повязаний з поглядами видатного італійського мислителя епохи Відродження Нікколо Макіавеллі 1469 1527 котрі були...