Содержание

Задание на курсовую работу

Введение

1  Разработка компоненты

2  Задание начальных условий

3  Задание свойств

4  Переопределённые методы базового класса

5  Переопределение метода CreateWnd()

6  Переопределение метода Paint()

7  Переопределение метода WndProc(TMessage& Message)

8  Переопределение метода CanResize(int &NewWidth, int &NewHeight)

9  Создание событий

10  Тестирование компоненты

11  Регистрация компоненты

12  Инсталляция компоненты

13  Проверка готовой компоненты

Список используемой литературы

 


Задание на курсовую работу

 

Разработать компоненту, состоящую из двух окружностей, одна из которых движется по периметру другой. Создать установочный пакет и тестовое приложение с использованием разработанного компонента.

 

 


Введение

C++ Builder представляет собой приложение, главное окно которого содержит настраиваемую инструментальную панель и палитру компонентов. Помимо этого, по умолчанию при запуске C++ Builder появляются окно инспектора объектов и форма нового приложения. Под окном формы приложения находится окно редактора кода.

Формы являются основой приложений C++ Builder. Создание пользовательского интерфейса приложения заключается в добавлении в окно формы элементов объектов C++ Builder, называемых компонентами. Компоненты C++ Builder располагаются на палитре компонентов, выполненной в виде многостраничного блокнота. Важная особенность C++ Builder состоит в том, что он позволяет создавать собственные компоненты и настраивать палитру компонентов, а также создавать различные версии палитры компонентов для разных проектов.

Компоненты разделяются на видимые (визуальные) и невидимые (невизуальные). Визуальные компоненты появляются во время выполнения точно так же, как и во время проектирования. Примерами являются кнопки и редактируемые поля. Невизуальные компоненты появляются во время проектирования как пиктограммы на форме. Они никогда не видны во время выполнения, но обладают определенной функциональностью (например, обеспечивают доступ к данным, вызывают стандартные диалоги Windows и др.)

Для добавления компонента в форму можно выбрать мышью нужный компонент в палитре и щелкнуть левой клавишей мыши в нужном месте проектируемой формы. Компонент появится на форме, и далее его можно перемещать, менять размеры и другие характеристики.

Каждый компонент C++ Builder имеет три разновидности характеристик: свойства, события и методы.

Если выбрать компонент из палитры и добавить его к форме, инспектор объектов автоматически покажет свойства и события, которые могут быть использованы с этим компонентом. В верхней части инспектора объектов имеется выпадающий список, позволяющий выбирать нужный объект из имеющихся на форме.

 


1 Разработка компоненты

 

Процесс разработки компоненты TOsnova проходит через выполнение следующих этапов:

1. Создание модуля для новой компоненты.

2. Наследование производного класса от существующего базового компонентного класса.

3. Добавление нужных свойств, событий и методов.

4. Регистрация компоненты в C++Builder.

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

Мне видится, что наиболее правильным решением будет выбор в качестве базового класс TCustomControl. TCustomControl был выбран потому, что для полноценной работы нашей компоненте необходимы свойства Handle (дескриптор окна для получения сообщений таймера) и Canvas (холст для вывода текста). TCustomControl имеет оба свойства, за счет чего он, по сути, является идеальным выбором базового класса.

Также нам понадобится создать класс TMarshrut для рисования маршрута движения шарика и класс ТShar, рисующий сам шарик. Оба этих класса должны лишь уметь рисовать себя, поэтому в качестве базового класса выбираем TCustomGraphic.

Теперь можно приступать к созданию компоненты. Открываем вкладку Component и выбираем New Component. В появившемся окне выбираем базовый класс (Ancestor type) - TCustomControl, вводим имя своего класса (Class Name) - TOsnova, выбираем вкладку палитры компонентов, на которую компонента будет установлена (Palette page) -Samples, и путь, где будут хранится файлы компоненты. После щелчка на кнопке ОК C++ Builder создаст для нашей компоненты новый модуль и сохранит его в указанном месте.

Аналогичным образом создаём два класса TMarshrut и ТShar. Для совместной работы трёх классов необходимо подключить h-файлы с помощью директивы #include.

Теперь рассмотрим созданные нами классы. TMarshrut и ТShar должны уметь рисовать себя, поэтому в них достаточно переопределить виртуальный метод базового класса Paint():

virtual void __fastcall Paint();

Переопределенный метод Paint() этих классов должен включать в себя код их рисования. Ниже показан исходный код метода Paint() класса ТShar:

void __fastcall TShar::Paint()

{

Canvas->Brush->Color=clGreen;

Shar->Width=(D-d)/2;

Shar->Height=(D-d)/2;

Canvas->Ellipse(0,0,Shar->Width,Shar->Height);

}

Исходный код метода Paint() класса TMarshrut

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

// рисуем две окружности заданного цвета

void __fastcall TMarshrut::Paint()

{

Canvas->Brush->Color=clRed;

Marshrut->Ris_Marshrut(D/2);

Canvas->Brush->Color=clBtnFace;

Marshrut->Ris_Marshrut(d/2);

}

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

Реализация функции Ris_Marshrut(int R) (прототип находится в секции protected класса ТMarshrut):

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

//рисуем окружность заданного радиуса

void __fastcall TMarshrut::Ris_Marshrut(int R)

{

Marshrut->Canvas->Ellipse(Marshrut->Width/2-R,Marshrut->Height/2-R,

Marshrut->Width/2+R,Marshrut->Height/2+R);

}

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

Так как никаких действий (перемещение, изменение размеров и т.д.) не планируется, маршрут движения рисуется методом Paint() при помощи функции Ris_Marshrut (int R). В противном случае лучше создать два экземпляра класса

ТMarshrut.


Информация о работе «Построение компоненты в Builder C++»
Раздел: Информатика, программирование
Количество знаков с пробелами: 18584
Количество таблиц: 0
Количество изображений: 10

Похожие работы

Скачать
5563
0
0

... Timer (Таймер) с изображением циферблата часов со стрелками, а затем по самой форме в любой ее рабочей части. Этот компонент во время работы приложения является невидимым. А вот во время построения проекта приложения таймер виден на форме, и поэтому программисту удобно в любое время быстро обратиться к его свойствам или к функции обработки Timer1Timer события OnTimer (Таймер включен). На форме ...

Скачать
133555
12
12

... регламентирует информационные связи и предопределяет состав и содержание всей системы информационного отображения. Применительно к системы «ОБМЕННЫЙ ПУНКТ», входящего в состав автоматизированной банковской системы, первоочередной задачей при его разработке является организация внутримашинной информационной базы (ВИБ), которая представляет собой совокупность специальным образом организованных ...

Скачать
200759
5
11

... доступа с записью равной байту. Такие файлы называются двоичными. Файлы прямого доступа незаменимы при написании программ, которые должны работать с большими объемами информации, хранящимися на внешних устройствах. В основе обработке СУБД лежат файлы прямого доступа.  Кратко изложим основные положения работы с файлами прямого доступа. 1). Каждая запись в файле прямого доступа имеет свой номер ...

Скачать
19597
2
0

... , которая необходима для работы с ним. Все внутренние механизмы, о которых пользователю не нужно знать, скрыты от взгляда. Все это входит в концепцию объектно-ориентированного программирования. Программы C++Builder являются объектно-ориентированными по причине интенсивного использования объектов. После того, как объект (ваш собственный или встроенный в C++Builder) создан, он может использоваться в ...

0 комментариев


Наверх