Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C++Builder. Учебный курс

.pdf
Скачиваний:
14
Добавлен:
15.11.2022
Размер:
9.54 Mб
Скачать

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

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

Рассмотрим два примера создания программ в C++Builder. Пример 1.1. Упражнение с кнопкой Ниже рассматривается первый пример создания приложения

в C++Builder с использованием кнопки T B u tto n . - Создайте новый проект.

-Поместите кнопку T B u tto n (страница S ta n d a rd ) в ниж­

нюю часть формы.

 

 

Свойству Name кнопки по умолчанию

присваивается имя

B u t t o n l . После

этого определение класса

в модуле U n i t l . h

примет следующий вид:

 

class TForml

public TForm

 

{

 

 

__published:

/ / IDE-managed Components

T B u tto n * B u t t o n l ;

 

private:

/ /

U s e r

d e c l a r a t i o n s

public:

/ /

U s e r

d e c l a r a t i o n s

__fastcall

TForm l(TC om ponent* O w n e r);

};

 

 

 

B u tt on 1 - это имя кнопки, a T B u tto n —это имя класса. Об­ ратите внимание, что компоненты объявляются в классе как указа­ тели.

Классами в C++Builder называются специальные типы, кото­ рые содержат поля, методы и свойства. Как и любой другой тип, класс служит лишь образцом для создания конкретных экземпля­ ров реализации, которые называются объектами. Классы в C++ подобны структурам ( s t r u c t ) , но кроме полей могут включать

методы (функции) и свойства.

-Теперь измените имя кнопки (свойство Name) на T e rm i­

n a te .

Заметьте, что заголовок (C a p tio n ) поменялся в тот же мо­ мент. Такое двойное изменение наблюдается только если ранее не

изменялось свойство C a p tio n .

Текст, который вы видите на поверхности кнопки - это со­

держимое свойства C a p tio n . Свойство Name служит для внут­ ренних ссылок, Вы будете использовать его при написании кода программы. Объявление класса T F orm l в файле U n i t l . h изме­ нится и будет выглядеть следующим образом:

class TForm l public TForm

{

__published:

/ /

ID E -m anaged C om ponents

T B u tto n

^ T e r m in a te ;

private:

/ /

U s e r

d e c l a r a t i o n s

public:

/ /

U s e r

d e c l a r a t i o n s

__fastcall TForm l(TC om ponent* O w n e r);

} ;

В этом фрагменте кнопка T B u tto n называется T e rm in a te ,

так как вы присвоили это название свойству Name.

- Измените свойство C a p tio n кнопки на C lo se .

-Сохраните проект. Файлу модуля и файлу проекта присвой­ те имена по умолчанию.

-Запустите приложение.

-Нажмите на кнопку C lo se .

Обратите внимание, что нажатие на кнопку не приводит к закрытию приложения.

- Закройте приложение.

-П ерейдите на форму и дважды щелкните

левой кнопкой

мыши по объекту T B u tto n .

 

Вы сразу попадете в окно редактора (файл

U n itl.c p p ) , в

котором увидите фрагмент кода:

 

void __fastcall T F o rm l: : T e r m in a te C lic k ( T O b je c t ♦ S e n d e r )

{

}

Данный код был создан автоматически и будет выполняться всякий раз, когда во время работы программы пользователь на­ жмет кнопку C lo s e . Кроме того, вы можете видеть, что определе­ ние класса T F orm l теперь включает объявление метода T e rm i­

n a te C li c k :

class TForml public TForm

{

__published: / /

IDE-managed Components

T B u tto n

* T e r m in a te ;

void __fastcall T e r m in a te C lic k ( T O b je c t * S e n d e r ) ;

private: / /

U s e r

d e c l a r a t i o n s

public: / /

U s e r

d e c l a r a t i o n s

__fastcall TForml(TComponent* O w ner);

} ;

-Теперь дополните метод T e rm in a te C lic k строчкой

C lo s e ()

void __fastcall T F o r m l: : T e r m i n a t e C l i c k ( T O b j e c t

♦ S e n d e r )

{

C l o s e ( ) ;

}

Когда этот код исполняется, то главная форма (значит, и все приложение) закрывается.

-Для проверки кода запустите программу и нажмите кнопку C lo se .

Если все сделано правильно, программа закроется, и вы вер­ нетесь в режим разработки приложения.

-Перейдите в инспектор объектов и измените значение свой­ ства Name для кнопки на любое другое, например ОК. Нажмите E n te r для внесения изменений.

Посмотрите в редактор, вы увидите, что код, написанный ва­ ми, изменился:

void __fastcall T F o rm l: : O k C lic k (T O b je c t * S en d er)

{

C l o s e ( ) ;

}

Заметьте, что аналогичные изменения произошли и в опреде­ лении класса TForm l:

class TForml public TForm

{

__published:

/ /

ID E -m anaged

C om ponents

T B u tto n

*Ok;

 

 

 

void __fastcall

O k C lic k (T O b je c t * S e n d e r ) ;

private:

/ /

U s e r

d e c l a r a t i o n s

 

public:

/ /

U s e r

d e c l a r a t i o n s

 

__fastcall TForm l(TC om ponent*

O w n e r);

};

Пример 1.2. Изменение цвета формы в диалоговом режиме В этом примере создается приложение для изменения цвета

формы в диалоговом режиме.

-Создайте новый проект.

-Сохраните проект.

-Поместите на форму компонент TButton.

-Свойству Name кнопки присвойте значение b tn C o lo r, а

свойству C a p tio n - Цвет.

- Поместите на форму компонент T Shape (страница A ddi - t i o n a l ) .

- Для свойства S h ap e компонента выберите из списка s tE l - l i p s e .

-Поместите на форму компонент T C o lo rD ia lo g (страница

D ia lo g s ) .

-Дважды щелкнув по кнопке, создайте обработчик события

O n C lic k .

void __fastcall T F o rm l: :b t n C o l o r C l i c k ( T O b je c t ♦ S e n d e r )

{

if ( C o l o r D i a l o g l - > E x e c u t e () )

S h a p e l - > B r u s h - > C o lo r = C o lo r D ia lo g l - > C o lo r ;

}

Для вывода диалогового окна используется метод E x e c u te . Если пользователь в диалоговом окне выбора цвета нажимает кнопку ОК, метод возвращает значение t r u e , если кнопку Отме­ на, то - f a l s e . После выполнения диалога имя выбранного цвета сохраняется в свойстве C o lo r компонента C o lo r D ia lo g l.

У компонента T S hape есть свойства B ru sh и Реп, с помо­ щью которых можно соответственно изменить цвет заливки и ли­ нии контура.

-Запустите приложение и измените цвет формы.

-Поместите на форму еще одну кнопку, с помощью которой можно было бы изменить цвет линии контура.

Упражнения

Упражнение 1.1

1.Запустить C++Builder.

2.Сохранить проект под новым именем. Проекту присвоить

имя F i r s t , модулю - имя F i r s t U n i t .

3.Запустить приложение F i r s t .

4.Закрыть приложение.

5.Поместить в форму компонент T L a b e l.

6.Изменить имя компонента на L a b e l (свойство Name).

7.Изменить заголовок (свойство C a p tio n ) формы и компо­ нента L a b e l.

8.Изменить цвет фона формы и компонента L a b e l.

9.Изменить цвет фона формы или компонента L a b e l с по­ мощью редактора свойств C o lo r (редактор свойств запускается двойным щелчком мыши по полю значения свойства C o lo r).

10.Изменить шрифт компонента L a b e l .

11. Изменить шрифт компонента L a b e l

с помощью редакто­

ра свойств F o n t.

 

12. Изменить свойство V i s i b l e компонента L a b e l на

f a l s e и запустите приложение.

 

13. Разобраться с назначением свойства

A u to S iz e компо­

нента L a b e l.

 

Упражнение 1.2

1.Создать новый проект.

2.Поместить в форму компонент T B u tto n .

3.Изменить размер и положение кнопки с помощью мыши.

4.Изменить размер и положение кнопки с помощью клавиш

S h i f t и C t r l .

5. Изменить размер и положение кнопки с помощью свойств

L e f t , T op, H e ig h t и W id th .

6.Изменить размер формы.

7.Изменить заголовок кнопки на C lo s e .

8.Запустить приложение и проверить, будет ли оно закры­ ваться при нажатии на кнопку C lose. Закрыть приложение.

9.Написать обработчик события O nC lick. Для этого в ди­

зайнере формы дважды щелкните мышкой по кнопке C lose.

В редакторе кода вызовите функцию C lose.

10. Запустить приложение и закрыть его нажатием на кнопку

C lo s e .

 

11. Изменить свойство E n ab led кнопки C lose

на f a ls e .

Запустить приложение.

 

12. Исследовать назначение свойства C u rso r

компонента

T B u tto n .

 

13. Удалить компонент B u tto n l.

14. Поместить в форму компонент T B itB tn (страница Ad­

d i t i o n a l ) .

 

 

 

15. Изменить свойство K ind

компонента

B itB tn l

на

b k C lo se . Запустить приложение и

закрыть его

нажатием

на

кнопку C lo se .

Сформулируем основные положения, изложенные в данной главе.

1. Процесс создания С++Вш1с1ег-программы разбивается на

2этапа:

-этап конструирования формы

-этап написания кода программы.

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

3. Чтобы придать компоненту нужные свойства, используется

страница P r o p e r t i e s инспектора объектов.

4.Чтобы компонент мог откликаться на то или иное собы­ тие, необходимо создать обработчик события.

5.Обработчик события оформляется в виде функции, имею­ щей составное имя. Первая часть имени представляет собой имя

класса для формы, вторая часть отделяется от первой символами ": :" и может быть произвольной. Если C++Builder автоматически формирует заготовку для обработчика, то вторая часть имени представляет собой объединение имени компонента и имени со­ бытия без предлога On.

6. Свойства компонента могут изменяться на этапе выполн ния программы.

Вопросы для самоконтроля

1.Основные элементы интегрированной среды.

2.Как переключиться между редактором кода программы и формой?

3.Назначение инспектора объектов.

4.Как выбрать компонент в инспекторе объектов?

5.Что такое проект?

6.Состав проекта. Перечислите основные файлы проекта.

7.Как открыть в Редакторе кода проектный файл?

8.Как открыть в Редакторе кода заголовочный файл?

9.Как создать новый проект?

10.Как открыть существующий проект?

11. Чем

отличаются

команды меню F i l e - >Ореп

и

F ile - > O p e n

P r o j e c t

. . . ?

 

12.Для чего используется команда F i l e - >R eopen?

13.Как сохранить проект? Перечислите файлы, которые соз­ даются при сохранении проекта?

14.Какие файлы появляются после запуска приложения?

15.Как сохранить файл модуля?

 

16. Чем отличаются команды меню F ile - > S a v e P r o j e c t

As

. ,F i l e - > S a v e A l l и F ile - > S a v e ?

17.Открыть новый проект и сохранить проект. Проекту при­ своить имя C a lc , модулю - имя M ainForm .

18.Действия при зависании программы, запущенной на вы­ полнение из C++Builder.

19. Размещение компонентов на форме. Как разместить на форме несколько одинаковых компонентов?

20.Чем отличаются свойства Name и C a p tio n компонентов?

21.Какие свойства компонента можно изменить при помощи

мыши?

22.Как можно изменить размеры и положение компонента? Указать несколько способов.

23.Какие изменения происходят в коде программы при раз­ мещении нового компонента на форме?

24.Какие изменения происходят в коде программы при ука­ зании нового имени компонента (свойство Name)?

25.Какие изменения происходят в коде программы при изме­ нении свойства C a p tio n компонента T L ab el?

26.Какие изменения происходят в программе при создании обработчика какого-нибудь события?

27.Как формируется имя обработчика события?

28. Как создать обработчик события O n C lick компонента

T B u tto n ?

29.Как создать обработчик события O n C reate формы?

30.Назначение метода E x ec u te диалоговых компонентов.

31. Назначение свойства A u to S iz e компонента T L abel.

32.Основное отличие компонентов T B u tto n и T B itB tn .

33.Какие изменения произойдут в головном файле проекта при добавлении к проекту новой формы?

34.Что такое дескриптор? Для чего он нужен?

35.Что такое объект?

36.Назовите основные операторы функции WinMain. Каково их назначение?

37.Из каких файлов состоит модуль? Что содержится в каж­ дом из этих файлов?

38.Для чего нужен раздел ^ p u b lis h e d в определении класса?

39.Для чего нужны директивы условной компиляции?