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

Метода(c++)

.pdf
Скачиваний:
30
Добавлен:
04.06.2022
Размер:
1.77 Mб
Скачать

поле ввода представляет собой стандартный выпадающий список, в третьем – в поле ввода находится кнопка «…», щелчок по которой приводит к открытию диалогового окна

IX. Важнейшие общие свойства визуальных компонентов приведены в табл. 4.

Таблица 4

Название

 

Смысл

 

 

свойства

 

 

 

 

 

 

 

 

 

 

 

 

Caption

Отображаемый в компоненте текст

 

 

 

 

 

 

 

Color

Цвет фона компонента

 

 

 

 

 

 

Cursor

Вид указателя мыши при установке ее на компонент

 

 

 

 

Enabled

Регулирует доступность/недоступность компонента

 

 

 

 

 

 

Font

Регулирует

тип шрифта,

эффекты,

размер, эффекты

 

шрифта

 

 

 

 

 

 

Top

Определяет местоположение левого верхнего угла

 

компонента (в пикселях)

 

 

 

Left

 

 

 

 

 

 

 

 

 

Width

Определяет ширину и высоту компонента (в пикселях)

 

 

 

Height

 

 

 

 

 

 

 

 

Visible

Регулирует видимость/невидимость объекта в окне

 

приложения

 

 

 

 

 

 

Name

Имя компонента, которое используется в дальнейшем в

 

программе. Задается только

в процессе проектирования

 

и не должно изменяться во время выполнения.

 

 

 

 

 

 

 

Hint

Всплывающая

подсказка,

которая

появляется

при

 

наведении указателя мыши на

компонент

 

 

 

ShowHint

Будет ли отображаться всплывающая подсказка для

 

компонента

 

 

 

 

 

 

 

 

 

 

Х. Специфические свойства некоторых элементов интерфейса: Компонент Label (Надпись)

служит для получения коротких надписей на форме. Свойства компонента представлены в табл. 5.

 

 

 

 

 

 

 

Таблица 5

 

 

 

 

 

 

 

 

 

 

 

Название

 

 

Смысл

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

2

 

 

 

 

 

 

 

 

 

 

AutoSize

Определяет, можно/нельзя автоматически менять

 

 

 

размеры

компонента

так,

ч

тобы

полностью

 

 

 

отобразить текст Caption с учётом установленного

 

 

 

шрифта.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Alignment

Определяет

принцип

горизонтального

выравнивания

 

 

 

 

 

 

 

 

 

 

40

 

 

 

текста внутри компонента. Возможные значения

 

 

 

 

 

 

 

 

taLeftJustify

 

прижать

текст

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

влево;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

taCenter

 

 

выровнять

по

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

центру;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

taRightJustify

 

прижать

текст

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вправо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 5 (продолжение)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Layout

 

управляет положением текста по вертикали

 

 

 

 

 

 

 

Возможные значения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tlTop

 

прижать вверх

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tlCenter

 

выровнять по середине;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tlBottom

 

прижать вниз

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Transparent

 

Определяет прозрачность метки:

 

 

 

 

 

 

 

 

 

Возможные значения:

 

 

 

 

 

 

 

 

 

 

 

 

False

 

пространство

 

метки

 

закрашивается

 

 

 

 

 

 

 

 

 

 

 

 

 

собственным цветом (свойство Color)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

True

 

Цвет, установленный в

свойстве

Color не

 

 

 

 

 

 

учитывается и сквозь метку будут видны

 

 

 

 

 

 

расположенные на ней компоненты (так,

 

 

 

 

 

 

например, можно наложить текст на графику)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

WordWrap

 

Разрешение/запрет

переноса

слов

из

 

свойства

 

 

 

 

Caption на следующую строку в случае, если длина

 

 

 

 

выводимого текста превышает ширину компонента.

 

 

 

 

Имеет смысл использовать только при AutoSize=False

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Компонент Edit

Однострочный текстовый редактор, окно которого применяется для ввода данных. Свойства компонента приведены в табл. 6.

 

 

 

 

 

 

Таблица 6

 

 

 

 

 

 

 

Название

 

 

 

Смысл

 

 

 

 

 

 

 

 

 

1

 

 

2

 

 

 

 

 

 

 

 

 

Text

Содержит набор

 

символов, который

пользователь

 

указал в окошке компонента

 

 

 

 

 

AutoSelect

Определяет будет ли выделен/не

выделен весь

 

текст в окошке компонента в момент получения

 

компонентом фокуса ввода.

 

 

 

Возможные значения

 

 

 

 

True

 

Текст будет выделен

 

 

 

 

 

 

 

 

 

 

 

False

 

Текст не будет выделен

 

 

 

 

 

 

 

41

HideSelection Определяет, останется ли выделение/будет снято выделение с символов в окошке компонента при потере компонентом фокуса ввода Возможные значения

True Выделение будет снято

False Выделение останется

Таблица 6 (продолжение)

1

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

ReadOnly

Разрешает/запрещает

редактирование

 

текста,

 

отображаемого в окошке компонента

 

 

 

 

Возможные значения

 

 

 

 

 

 

 

 

 

True

 

Редактирование разрешено

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

False

 

Редактирование запрещено

 

 

 

 

 

 

 

 

 

 

 

PasswordChar

Позволяет скрыть вводимый текст,

отображая

 

вместо реально вводимых символов «символ-

 

заглушку»

 

 

 

 

 

 

 

 

Возможные значения

 

 

 

 

 

 

#0

 

Вводимые

символы

отображаются

без

 

 

 

 

 

сокрытия

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Любой

 

Вместо

 

вводимых

символов

выводится

 

символ

 

указанный в свойстве символ

 

 

 

 

 

 

 

 

 

 

BorderStyle

Определяет вид рамки для поля ввода

 

 

 

 

 

MaxLength

Определяет максимальное количество символов,

 

которые можно вводить в окне компонента. Если

 

значение установлено в 0, то количество символов

 

не ограничено

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

Таблица 7

 

 

 

 

 

 

 

 

Название

 

 

Смысл

 

 

 

 

 

 

 

 

1

 

2

 

 

 

 

 

 

 

BevelEdges

задает, какие стороны входят (отображаются) в

 

 

 

рамку;

 

 

 

 

 

 

 

 

BevelInner

Задает вид внутренней фаски

 

 

 

Возможные значения:

 

 

 

bvNone

 

Внутренней фаски нет. Значение по

 

 

 

 

 

 

 

 

 

умолчанию

 

 

 

 

 

 

 

42

 

 

 

bvLowered

фаска выглядит утопленной в элемент

 

 

 

 

 

 

 

управления

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

bvRaised

Фаска

выглядит

приподнятой

над

 

 

 

 

 

 

 

элементом управления

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BevelKind

 

определяет стиль рамки

 

 

 

 

 

 

 

 

Возможные значения:

 

 

 

 

 

 

 

 

 

bkNone

 

рамки нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

bkTile

 

рамка с четкими скосами

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

bkSoft

 

рамка со сглаженными скосами

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

bkFlat

 

плоская рамка (без скосов)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 7 (продолжение)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

2

 

 

 

 

 

BevelOuter Задает вид внешней фаски. Возможные значения –

такие же, как у BevelInner

BevelWidth Задает ширину промежутка между фасками

Ctrl3D Задает вид компонента (объемный/плоский( Возможные значения

True Компонент объемный

False Компонент плоский

Компонент Button (кнопка)

Обычная кнопка Windows. На первых порах достаточно знать лишь об

одном специфическом

свойстве этого компонента – Default.

Свойство

определяет,

является ли

компонент

«кнопкой по

умолчанию»

(кнопка

«подсвечена»

рамкой,

нажатие

Enter

соответствует щелчку по кнопке). Возможные значения свойства: True Является кнопкой по умолчанию

False Не является кнопкой по умолчанию

Только у одной кнопки на форме свойство должно быть установлено в True.

Упражнение 3. Работа с окном Object Inspector и установкой свойств

визуальных компонент в режиме проектирования формы.

1.Запустить среду C++ Builder и открыть проект MyPr1.

2.Выделить на форме компонент Shape1. Посмотреть список его свойств.

3.Выделить компонент CheckBox1. Посмотреть список его свойств

4.Выделить одновременно компоненты Shape1 и CheckBox1 и просмотреть список их общих свойств

5.Пронаблюдать действие свойств AutoSize и WordWrap (компонент Label):

5.1.Выделить на форме компонент Label1.

5.2.Установить для него размер шрифта 12 пт.

43

5.3.Установить для него свойство AutoSize в значение False, а свойство

WordWrap в значение True.

5.4.Установить ширину и высоту компонента 90 120 пикселей.

5.5.Для свойства Caption выполнить набор символов «Это очень длиннаядлиннаядлинная надпись», наблюдая, в какой момент времени произойдет переход на следующую строку.

5.6.Очистить свойство Caption, а свойство WordWrap установить в False. Вновь набрать фразу «Это очень длинная-длинная-длинная надпись» и посмотреть эффект на форме.

5.7.Установить свойство AutoSize в True и посмотреть результат изменений на форме.

6.Установить для компонентов свойства, указанные в табл. 8.

Таблица 8

Компонент

Свойство

Значение

 

 

 

1

2

3

 

 

 

 

Hint

“Переключатель”

 

 

 

CheckBox1

Caption

“Отображать график”

 

 

 

 

Enabled

False

 

 

 

 

Caption

“Рисуй график”

 

 

 

SpeedButton1

Glyph

Добавить любую картинку, небольшую по размеру

 

 

 

 

Шрифт подписи

Arial, зеленый, полужирный курсив размером 12

 

 

 

 

Shape

stEllipse

 

 

 

Shape1

Brush

Color clBlue

 

 

Style bsDiagCross

 

 

 

Shape1

Pen

Color 0x000080FF

 

 

Style psSolod

 

 

Width 10

 

 

 

 

Width

150

 

 

 

 

Height

150

 

 

 

 

Cursor

crHelp

 

 

 

7.Сохранить форму, запустить проект, проверить правильность установки свойств.

8.Изменить для SpeedButton1 значение свойства Flat на True; для CheckBox значение ShowHint на True; запустить проект и проверить эффект.

44

Краткие теоретические сведения.

XI. События

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

Каждое событие имеет свое имя. Список событий, на которые может реагировать тот или иной компонент приводится на вкладке

Events окна Object Inspector. Вкладка Events содержит две колонки. Первая – название события компонента, вторая – имя функции-обработчика события.

Три наиболее часто используемых события приведены в табл 9. Таблица 9

Имя

 

 

Возникает

 

 

Примечание

 

события

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Change

Когда

 

меняется

состояние

 

 

 

 

флажка, переключателя, екста в

 

 

 

 

окне редактора, изображения и

 

 

 

 

проч.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Click

Когда

 

пользователь

щелкнул

 

 

 

 

левой

кнопкой

мыши

в

тот

 

 

 

 

момент, когда указатель мыши

 

 

 

 

находился на компоненте. Также

 

 

 

 

это

событие

 

возникает

в

 

 

 

 

случаях,

когда

действие,

К одному и тому же

 

аналогичное

 

щелчку

по

компоненту

нельзя

 

компоненту

выполняется

с

написать

обработчики

 

помощью

клавиатуры

(нажатие

событий

Onclick

и

 

<Enter>,

если

компонент,

OnDbiciick, поскольку

 

например кнопка, был в фокусе;

первый из

них всегда

 

выполнение

 

комбинации

перехватит

первый

из

 

«горячих» клавиш и т.д.)

 

щелчков.

 

 

 

 

 

 

 

 

 

 

DblClick

когда

 

пользователь

дважды

 

 

 

 

щелкнул левой кнопкой мыши на

 

 

 

 

компоненте,

причем

отпустил

 

 

 

 

кнопку

 

мыши

после

второго

 

 

 

 

щелчка над компонентом.

 

 

 

 

 

 

 

Для того, чтобы добавить обработчик нужного события для

компонента(ов) нужно:

 

 

 

 

 

 

 

45

1.Выбрать на форме компонент(ы);

2.Открыть вкладку Events окна Object Inspector

3.Дважды щелкнуть в нужной строке по правому полю нужного события.

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

Имя любой функции-обработчика события генерируется по принципу

void __fastcall <ИмяФормы>::<ИмяКомпонента><ИмяОбработчикаСобытия>(<Параметры>)

Например, заголовок

void __fastcall TForm1::Button2Click(TObject *Sender)

означает, что ниже приводится код для случая, когда пользователь нажмет кнопку с именем Button2 на форме с именем Form1.

Если обработчик события уже был ранее добавлен, то двойной щелчок перемещает указатель мыши в текст функции обработчикасобытия.

XII. Для изменения значения свойства на этапе выполнения программы необходимо в соответствующем обработчике события записать строку вида:

<ИмяВизуальногоКомпонента> > <ИмяСвойства> = <НовоеЗначениеСвойства>;

Упражнение 4. Программное изменение свойств визуальных

компонентов

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

2.Добавить на форму кнопки с подписью «Изменить цвет формы на голубой», «Увеличить размер шрифта для надписи», «Изменить надпись», «Переместить надпись в правый нижний угол формы». Кнопки расположить в правом верхнем углу формы, выровняв их по правому краю. Надпись первой кнопки должна быть выполнена жирным красным цветом, надпись второй – жирным синим цветом, надпись третьей – жирным курсивом зеленого цвета. Имена кнопок – MyBtn1, MyBtn2, MyBtn3. Всплывающая подсказка для первой кнопки – «Нажми и форма станет синей», второй – «Нажми и размер шрифта у надписи увеличится на 5 пт», третьей – «нажми, и надпись окажется внизу справа». Всплывающие подсказки должны отображаться при запуске проекта.

3.Имя формы установить в MyForm, подпись (заголовок окна) – в «Программное изменение свойств визуальных компонентов».

46

4.Добавить на форму метку (Label), расположить в верхней части формы левее кнопок. Установить свойство Caption в «Надпись не меняли». Шрифт отрегулировать по своему усмотрению.

5.Добавить на форму однострочный текстовый редактор (Edit), установить его имя в MyEdit, отрегулировать свойства компонента так, чтобы в окошке редактора при запуске программы никаких символов бы не отображалось, а при вводе чего-либо отображались бы символы «@».

6.Рядом с компонентом Edit расположить еще один компонент Label. Свойства компонента Name и Font отрегулировать по своему усмотрению. Свойство Caption очистить.

7.Перейти в обработчик события Click для кнопки МуBtn1 (выделить на форме кнопку, открыть вкладку Events окна Object Inspector и выполнить двойной щелчок по полю, справа от подписи «OnClick»).

8.В позиции курсора набрать следующий код

MyForm > Color = clBlue;

9.Запустить проект, сохранив его с именем Upr2, а форму и модуль – с

именем UnitUpr2.

10.В окне приложения убедиться в правильности установки свойств компонентов.

11.Пощелкать по кнопкам на форме в произвольном порядке. Пронаблюдать эффект.

12.Закрыть проект и перейти к коду обработчика события OnClick кнопки

MyBtn2.

13.В позиции курсора набрать следующий код:

Label1 > Font > Size = MyForm > Label1 > Font > Size + 5; Label1 > Caption = “Размер шрифта изменился…”

14.Запустить проект. Убедиться в работоспособности кнопки MyBtn2.

15.В обработчике события OnClick для кнопки MyBtn3 указать следующий код:

Label1 > Left = Width - Label1 > Width-10;

Label1 > Top = Height - Label1 > Height-10;

16.Применяя программные строки, указанные в п. 15 упражнения, ответить на вопрос: какие координаты будет иметь левый верхний угол метки, если ее

ширина и высота – 150 и 20 пт соответственно, а размер формы - 500х500?

17.Запустить проект, в произвольном порядке нажимать кнопки, наблюдая эффект, причем кнопки MyBtn2 и MyBtn3 – несколько раз.

18.Самостоятельно сделать так, чтобы:

47

при нажатии на кнопку MyBtn1 цвет формы менялся бы на желтый, а ее размеры стали бы 800 800;

при нажатии на кнопку MyBtn2 цвет ее шрифта поменялся бы на черный, а ее всплывающая подсказка стала бы «Лучше много раз не нажимать».

19. Сделать так, чтобы при вводе чего-либо в окошко однострочного текстового редактора (компонент Edit) в рядом находящейся метке (Label) отображался бы суммарный результат ввода. Для этого:

19.1.Перейти в обработчик события OnChange компонента Edit

19.2.Ввести в позиции курсора следующую последовательность

символов:

<ИмяМетки> > Caption = MyEdit > Text;

19.3.Запустить проект, пронаблюдать изменение окошка редактора и рядом стоящей метки при наборе каких-либо символов.

20.Сохранить проект, закрыть его.

Краткие теоретические сведения.

XIII. Компоненты, часто используемые для ввода/вывода данных Если необходимо ввести из формы в программу или вывести на

форму информацию, которая вмещается в одну строку, используют окно однострочного редактора текста, представляемого компонентой Edit. Как уже известно, то, что пользователь указал в окошке редактора, хранится в свойстве Text. Тип свойства Text –

строковый (AnsiString).

Компонента Label используется для вывода надписей, выводимый пользователю текст содержится в свойстве Caption, тип свойства – строковый (AnsiString).

Если в качестве результатов работы программы необходимо вывести не одну строку, а несколько, рекомендуется использовать многострочный редактор текста, представленый компонентой Memo

(вкладка Standart).

XIV. Функции преобразования типов

Особенностью работы языка С++ является типизированность данных. Так, вычисления (сложение, вычитание, умножение, деление, расчет тригонометрических функций и т. д.) могут производится

только

с

числовыми типами данных

(double

для

вещественных

чисел,

int

– для целых чисел и

проч.). В

то

же

время вывод

информации на экран и ввод ее с экрана осуществляется через символьные (строковые) типы данных, с которыми вышеперечисленные

48

операции недопустимы. Поэтому необходимы функции преобразования

типов. Наиболее часто используемые из них

представлены в

табл.

10.

 

 

Пример:

 

 

На форме имеются компоненты Edit1 и

Edit2, причем

в обе

пользователь вводит только целые числа. Необходимо сложить зна-

 

Таблица 10

 

 

Название функции

Назначение

 

 

StrToFloat(Str)

Преобразует строку Str в вещественное число

 

 

StrToInt(Str)

Преобразует строку Str в целое число.

 

 

FloatToStr (W)

Преобразует вещественное число W в строку

 

символов

 

 

IntToStr (W)

Преобразует целое число W в строку символов

 

 

чения, указанные в их окошках и вывести результат на форму. Действия пользователя:

1.Как правило, пользователь создает две новые переменных

(например, х и у) нужного типа (в данном случае – целого (int)) и записывает в них (присваивает им) преобразованные значения свойства Text соответствующего компонента. Код на языке С++ выглядит следующим образом:

int x,y; //объявление переменных

х = StrToInt(Edit1–>Text); //преобразование из строки в целое для Edit1 y = StrToint(Edit2–>Text); //преобразование из строки в целое для Edit2

Внимание! При записи числовых значений в окошках Edit не должно быть пробелов, а разделителем целой и дробной частей обычно является запятая!

2. Для вывода итога вычисления на форму добавляется компонент Label, в свойство Caption которого необходимо записать результат суммирования. Поскольку результат суммирования – целое, а свойство Captiоn имеет строковый тип, следует предварительно выполнить преобразование «из целого в строку». Вышеприведенный код на языке С++ расширяется в этом случае следующей строкой:

Label1 –> Caption = IntToStr(x+y);

Упражнение 5. Простейший калькулятор

49

Соседние файлы в предмете Информатика