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];


 

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

78497. Сенсорное развитие детей подготовительной к школе группы в продуктивных видах деятельности (рисовании) 61.93 KB
  Предмет исследования: определение уровней сформированности восприятия цвета детьми подготовительной к школе группы в рисовании. Цель объект предмет позволили определить задачи исследования: Изучить психолого-педагогическую методическую литературу по проблеме сенсорного развития детей; Описать особенности восприятия цвета детьми дошкольного возраста; Определить уровни сформированности восприятия цвета детьми подготовительной к школе группы МДОУ № 93 г. Гипотеза исследования предполагает что целенаправленная систематическая работа по...
78498. Развитие креативности у детей младшего школьного возраста 81.32 KB
  Развитие креативности у детей младшего школьного возраста Актуальность темы исследования обусловлена современным общественным развитием стремлением психолого-педагогической науки преодолеть негативные последствия как социального так и образовательного экспериментирования. Таким образом проблема развития креативности детей младшего школьного возраста занимает большое место в современной психологии и является актуальной. Цель: исследование специфики креативности детей младшего школьного возраста. Предмет исследования: процесс развития...
78499. Развитие креативности младших школьников в условиях игровой деятельности 123.53 KB
  Развитие креативности младших школьников в условиях игровой деятельности Актуальность исследования проблемы креативности детей младшего школьного возраста обусловлена необходимостью развития творческих качеств личности созданием условий для формирования основных компонентов творческого мышления. Задача развития креативности общей способности к творчеству стоит и перед первой образовательной ступенью начальной школой. Развитие креативности имеет свои особенности в каждом возрастном периоде причем различные факторы влияющие на...
78500. Арт-техники в практике индивидуальной работы психолога с подростками 1.03 MB
  Рисунок который был сделан на первой встрече называется Мое настроение рисунок. Кате сначала было сложно включиться в работу но когда она сосредоточилась то быстро изобразила рисунок на предложенную тему. Она работала старательно и помощи ей не потребовалось в течение всего занятия она ясно поняла что и как надо сделать. Рисунок полученный в результате был очень темным и скудным по своей экспрессии и имел диагностический характер.
78501. Влияние научно – исследовательской деятельности старшеклассников на развитие креативности 43.82 KB
  Влияние научно – исследовательской деятельности старшеклассников на развитие креативности Креативность является сравнительно новой психологической характеристикой появившейся в психологии в начале 50х гг. Исследования креативности за рубежом начались раньше чем в России. Активно разрабатываются и адаптируются западные диагностические методики измерения креативности на российских выборках. Исследование креативности и организации школьных научных обществ с различных точек зрения больше носит теоретико-эмпирический характер и имеет...
78502. Развитие креативности в старшем школьном возрасте 67.58 KB
  Развитие креативности в старшем школьном возрасте На современном этапе в российском обществе в социально-экономической сфере науке технике происходят глобальные изменения. Научный интерес вызывают концепции креативности Дж. Цель исследования: изучение специфики и особенностей развития креативности в старшем школьном возрасте. Предмет исследования процесс развития креативности в старшем школьном возрасте.
78503. Развитие художественного интереса учащихся старших классов на материале музееведения 382.5 KB
  Вся идеология работы с подрастающим поколением должна строиться на культуре, традициях, эстетическом воспитании и художественном развитии. Очень важно, чтобы подрастающее поколение совершенствовалось и развивалось не только в музыкальном, литературно-художественном плане
78505. Психологические факторы готовности студентов к развитию интеллектуальной сферы школьников 53.43 KB
  В современных условиях интеллектуальному развитию школьников придаётся особое значение наряду с другими развивающими целями и задачами обучения. Развитие интеллектуальной сферы школьников рассматривается многими исследователями как условие пронизывающее весь учебный процесс. В этой связи своевременным становится вопрос о специальной подготовке будущих учителей к работе по развитию интеллектуальной сферы школьников.