3.19M
Category: programmingprogramming

Компоненты C++ Builder для разработки интерфейса. Справочник

1.

Комитет по образованию Правительства Санкт-Петербурга
Государственное бюджетное образовательное учреждение
дополнительного профессионального образования
центр повышения квалификации специалистов Санкт-Петербурга
«Региональный центр оценки качества образования
и информационных технологий»
ГБОУ СПО Санкт-Петербуржский Колледж
Информационных Технологий
МАТЫСИК И.А.
СПРАВОЧНИК
«Компоненты C++ Builder
для разработки интерфейса
К практическим работам по дисциплине
«Технология разработки программных продуктов»
Санкт-Петербург
2012

2.

УДК _________
М _______
Матысик И.А. Справочник «Компоненты
C
++ Builder
для разработки интерфейса. – СПб.: ГОУ ДПО ЦПКС СПб «Региональный центр оценки качества образования и информационных технологий», 2012. – 67 с.
Данное методическое пособие является кратким вспомогательным материалом
в помощь студентам и преподавателям для проведения практических и лабораторных занятий по таким дисциплинам как: «Программирование», «Прикладное программирование», «Технология разработки программных продуктов». Пособие содержит методические и справочные материалы по основным компонентам среды
C
++ Builder
для построения визуального интерфейса к приложениям. Пособие рассчитано на пользователей, имеющих базовый уровень знаний языка программирования С++. Каждый раздел методического пособия освещает отдельный компонент
интегрированной среды C
++
Builder
с подробным описанием его назначения и способами применения в конкретных задачах. Материал сопровождается графическими иллюстрациями, текстовыми выделениями и фрагментами программного кода с
подробными комментариями к ним.
ISBN
© ГБОУ ДПО ЦПКС СПб
«РЦОКОиИТ», 2012.
© ГБОУ СПб КИТ, 2012.
© Матысик И.А., 2012.

3.

СОДЕРЖАНИЕ
Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1. Компоненты C++ Builder. Общие понятия . . . . . . . . . . . . . 6
1.1. Размещение компонентов на форме . . . . . . . . . . . . . . . . 7
1.2. Задание свойств компонентам . . . . . . . . . . . . . . . . . . . 7
1.3. Программирование событий для компонент . . . . . . . . . . . 8
2. Форма (Form) – окно приложения . . . . . . . . . . . . . . . . . . 10
2.1. Основные свойства формы . . . . . . . . . . . . . . . . . . . . 11
2.2. Основные методы формы . . . . . . . . . . . . . . . . . . . . . 12
2.3. Основные события формы . . . . . . . . . . . . . . . . . . . . 13
3. Командная кнопка (Button) . . . . . . . . . . . . . . . . . . . . . . 14
4. Кнопка с картинкой (BitBtn) . . . . . . . . . . . . . . . . . . . . . 15
5. Таймер (Timer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6. Панель (Panel) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
7. Надпись (Label) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
8. Команды диалога . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
8.1. Окно сообщения (ShowMessage) . . . . . . . . . . . . . . . . . 19
8.2. Окно с сообщением и выбором действия (MessageDlg) . . . . 19
8.3. Окна ввода (InputBox и InputQuery) . . . . . . . . . . . . . . . 20
9. Редактор строки (Edit) . . . . . . . . . . . . . . . . . . . . . . . . . 21
10. Счетчик (CSpinEdit) . . . . . . . . . . . . . . . . . . . . . . . . . 24
11. Индикатор процесса (CGauge) . . . . . . . . . . . . . . . . . . . . 25
12. Флажок (СhесkBох) . . . . . . . . . . . . . . . . . . . . . . . . . . 25
13. Радиокнопка (RadioButton) . . . . . . . . . . . . . . . . . . . . . 27
14. Контейнер радиокнопок (RadioGroup) . . . . . . . . . . . . . . . 27
15. Диалоги выбора цвета и шрифта . . . . . . . . . . . . . . . . . . . 29
15.1. Диалог выбора цвета (ColorDialog) . . . . . . . . . . . . . . . 29
15.2. Диалог выбора параметров шрифта (FontDialog) . . . . . . . 30

4.

16. Стандартные списки . . . . . . . . . . . . . . . . . . . . . . . . . 30
16.1. Простой список (ListBox) . . . . . . . . . . . . . . . . . . . . 31
16.2. Комбинированный список (ComboBox) . . . . . . . . . . . . 32
17. Многострочные окна редактирования . . . . . . . . . . . . . . . 34
17.1. Простой редактор (Memo) . . . . . . . . . . . . . . . . . . . . 34
17.2. Расширенный редактор (RichEdit) . . . . . . . . . . . . . . . 36
18. Диалоги сохранения файла (SaveDialog) и открытия файла
(OpenDialog) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
19. Специализированные списки . . . . . . . . . . . . . . . . . . . . 40
19.1. Список дисководов (DriveComboBox) . . . . . . . . . . . . . 40
19.2. Список папок (DirectoryListBox) . . . . . . . . . . . . . . . . 40
20. Таблица (StringGrid) . . . . . . . . . . . . . . . . . . . . . . . . . 41
21. Организация меню . . . . . . . . . . . . . . . . . . . . . . . . . . 44
21.1. Главное меню (MainMenu) . . . . . . . . . . . . . . . . . . . . 44
21.2. Всплывающее меню (PopupMenu) . . . . . . . . . . . . . . . 45
22. Индикатор процесса ProgressBar . . . . . . . . . . . . . . . . . . 46
23. Шкала (TrackBar) . . . . . . . . . . . . . . . . . . . . . . . . . . 46
24. Готовое изображение (Image) . . . . . . . . . . . . . . . . . . . . 47
25. Многостраничный блокнот (PageControl) . . . . . . . . . . . . 49
26. Получение даты и времени (DateTimePicker) . . . . . . . . . . . 52
27. Кнопка быстрого доступа (SpeedButton) . . . . . . . . . . . . . . 53
Приложение № 1. Основные методы класса String . . . . . . . . . . 55
Приложение № 2. Основные свойства компонентов . . . . . . . . . 56
Приложение № 3. Основные события компонентов . . . . . . . . . 57
Приложение № 4. Виртуальные коды основных клавиш . . . . . . . 59
Приложение №5. Функции преобразования . . . . . . . . . . . . . . 61
Приложение №6. Функции даты и времени . . . . . . . . . . . . . . 62
Приложение №7. Свойства и методы класса TStrings . . . . . . . . 64
Список литературы . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4

5.

ВВЕДЕНИЕ
Среда программирования
C
++ Builder
– одна из самых мощных систем, позволяющая на современном уровне создавать как отдельные
прикладные программы Windows, так и разветвленные комплексы,
предназначенные для работы в корпоративных сетях и в Интернете. В
данной среде есть все необходимые средства для проектирования, тестирования и запуска приложений, и где все нацелено на облегчение
процесса создания программ.
C++ Builder – эта среда программирования на языке высокого уровня
C
++, в которой осуществляется визуальное программирование на основе объектно-ориентированного подхода, благодаря которому создана
технология быстрой разработки приложений (RAD – Rapid Application
Development). Программа строиться из готовых и отлаженных блоков,
что приводит к упрощению и ускорению написания работоспособных
программ.
Создаваемые приложения во время исполнения взаимодействуют с
пользователем благодаря многооконному графическому интерфейсу.
Графический интерфейс пользователя – это тип экранного представления, при котором пользователь может выбирать команды, запускать задачи и просматривать списки файлов, используя визуальные
обозначения (пиктограммы), пункты меню или элементы управления
(кнопки, переключатели) с помощью мыши или клавиатуры.
Визуальное программирование позволило свести проектирование
пользовательского интерфейса к простым и наглядным действиям, которые позволяют разработать любой сложности надежный интерфейс
программы за минуты или часы, на что ранее уходили месяцы работы
программиста. Все это стало возможным благодаря разработанной библиотеке визуальных компонентов VCL
, которая содержит около ста используемых компонент, которые реализуют все элементы пользовательского интерфейса операционной системы Windows. Кроме этого программисты могут создавать свои собственные элементы интерфейса,
если стандартные компоненты не удовлетворяют все возрастающим потребностям в оформлении интерфейса.
В данном методическом пособии кратко, но в достаточном объеме
описаны компоненты библиотеки
VCL
для применения их при разработке современного интерфейса приложений Windows.
5

6.

1. КОМПОНЕНТЫ C++ BUILDER. ОБЩИЕ ПОНЯТИЯ
Основное назначение библиотеки визуальных компонент VCL – это
скрыть от программиста трудоемкую работу напрямую с низкоуровневыми WinAPI-функциями. Для разработки интерфейса программисты
пользуются готовыми отлаженными классами компонент данной библиотеки как кирпичиками, что ускоряет разработку приложений.
Компонент – это функционально законченный участок двоичного
кода, выполняющий предопределенную задачу, связанную с интерфейсом пользователя или внутренними системными действиями.
Компоненты бывают визуальные и невизуальные. Визуальные компоненты отображаются во время выполнения приложения точно так же,
как и во время проектирования. Примерами визуальных компонент являются кнопки, редактируемые поля. Именно визуальные компоненты
используются для построения интерфейса пользователя. С их помощью
пользователь управляет работой приложения, поэтому они называются еще элементами управления. Невизуальные компоненты отображаются только во время проектирования приложения как пиктограммы на
форме, но не видны во время его выполнения. Они выполняют вспомогательные и системные функции. Примерами таких компонент являются системный таймер, доступ к базам данных, стандартные диалоги
Windows и другие.
Для работы с любым
компонентом надо выполнить три действия:
ƒƒ разместить
нужный
компонент на форме;
ƒƒ задать
необходимые
свойства компонента;
ƒƒ создать программный
код событий, на которые
должен реагировать компонент.
Рис. 1. Пример визуальных и невидимых
компонент
6

7.

1.1. Размещение компонентов на форме
Форма является контейнером для визуальных и невизуальных компонентов. Все компоненты собраны в палитре компонентов среды программирования C++ Builder. В Палитре компоненты сгруппированы по
закладкам в соответствии с их назначением.
Рис. 2. Палитра компонентов Builder
Для разработки интерфейса достаточно перетащить необходимый
компонент с закладки Палитры в нужную позицию формы.
1.2. Задание свойств компонентам
После размещения компонента на форме, можно настроить его
свойства.
Свойство – это расширенное понятие членов-данных класса.
Есть свойства, которые имеются у всех компонентов, например:
Name, Tag и другие. Их список и описание находится в Приложении №2
данного пособия. Однако, каждый компонент имеет свойства, типичных только для него. Целью данного пособия является их описание и
назначение для каждого компонента.
Любое свойство имеет имя, тип и значение. Если значение свойства
заранее известно, то его задают с помощью окна Инспектора объектов.
Для этого требуется выполнить следующие действия:
1. сделать компонент ак← Селектор объектов
тивным;
← Страницы свойств и
2. перейти на вкладку
событий
Properties окна Инспектора
← Редактируемое
объектов;
свойство
3. слева выбрать из списка
нужное свойство;
4. справа от него задать
нужное значение.
Если значение свойства
заранее неизвестно (например, введенная пользователем строка) или будет меРис. 3. Окно Инспектора объектов
с открытой вкладкой Properties
7

8.

няться во время выполнения программы (компонент движется), тогда
значение свойства задают программным способом.
Для каждого размещенного на форме компонента автоматически в
программном коде формируется строка вида:
класс *компонент;
//Указатель на компонент
Компоненты как в контейнере располагаются на форму, следовательно, они принадлежат форме, т.е. являются членами класса формы.
Доступ к ним как членам происходит через операцию ->. В общем виде:
форма→компонент
//Доступ к компоненту на форме
Например, чтобы обратиться к компоненту Button1 (командная
кнопка), находящемуся на форме Form1, следует записать в программе строку:
Form1→Button1
Для доступа к нужному свойству компонента требуется написать
строку программного кода в общем виде:
форма→компонент→свойство=значение; //Задание свойства
Например:
Form1->Caption=”Форма для ввода”;
//Заголовок формы
Form1->Button1->Caption=”Выход”; //Заголовок кнопки
Form1->Edit2->Color=clRed;
//Задание цвета строки ввода
1.3. Программирование событий для компонент
Приложения Windows реагируют на поступающие к ним события:
щелчок мыши на кнопке, выбор пункта меню, достижения таймером заданного времени.
Событие – это действие со стороны пользователя или системы относительно запущенного на выполнение приложения.
С помощью событий происходит взаимодействие пользователя и системы с запущенным приложением. Все события делятся на две категории:
– пользовательские – возникают при участии пользователя, когда он
выполнил некоторое действие с компонентом. К пользовательским событиям относят: события от мыши (щелчок, перетаскивание и другие), от
клавиатуры (нажата и отпущена клавиша), запуск и закрытие приложения;
– системные – возникают от системы без участия пользователя. К
системным событиям относят: события от таймера, события связи с базами данных и другие.
8

9.

Структура программ Windows представляет собой набор функций,
каждая из которых отвечает за обработку какого-либо события. Такая
функция называется обработчиком события.
Обработчик события  – это программный код на языке С++,
оформленный как член-функция класса формы и который выполняется при наступлении того события, с которым этот обработчик связан.
Метод создания программ на основе возникающих событий, называется событийно-ориентированным.
Если не создавать код обработчиков событий для компонент, то компоненты будут являться только украшением формы, «мертвыми» элементами интерфейса. Каждый компонент имеет определенное количество событий, на которые он может реагировать. Однако, в программе не всегда
требуется, чтобы компонент реагировал на все имеющиеся у него события. Список событий, на которые должен реагировать компонент, определяет программист. Компонент будет реагировать только на те события,
для которых создан программный код обработчика этого события.
Для создания обработчика события надо знать само событие (щелчок, перетаскивание и т.д.) и компонент, для которого оно будет происходить (форма, кнопка, таймер и т.д.). Так как программист, работающий в среде Builder, в основном пишет программный код обработчиков событий, то среда помогает ему в этом – она создает в программном
коде заготовку для обработчика события. Программисту остается только вписать программные строчки тех действий, которые должны происходить при возникновении данного события.
Для создания заготовки обработчика события используется окно
Инспектора объектов. Требуется выполнить следующие действия:
1. выбрать компонент на форме, для которого создается обработчик
события;
2. в окне Инспектора объектов перейти на вкладку Events (События),
где расположен список всех событий, на которые может реагировать
выбранный компонент;
3. найти в списке название нужного события;
4. выполнить двойной щелчок в пустой строке справа от события.
Из окна Инспектора объектов среда переключится в окно Редактора
программного кода, в котором будет прописана заготовка обработчик
события и установлен курсор в позицию ввода нужных команд события.
На рис. 4 отображен момент создания заготовки обработчика события щелчка по форме.
9

10.

Рис. 4. Окно Инспектора объектов и Редактора программного кода
с заготовкой обработчика события
Есть события, которые имеются у большинства визуальных компонент, например, щелчок мыши, нажатие клавиши, получение фокуса и
другие. Их список представлен в Приложении №3 данного методического пособия. Однако, есть события, типичные только для конкретного
компонента, например, пройден отрезок времени для компонента таймер, запущено приложение и другие. Целью данного пособия является
описание таких событий для каждого компонента.
2. ФОРМА (FORM) – ОКНО ПРИЛОЖЕНИЯ
Визуально форма – это специальное окно, которое составляет основу приложения С++
Builder
, и является контейнером для других компонентов. Типичная форма представляет собой прямоугольное окно и может содержать:
– рамку;
– заголовок со значком и названием приложения;
– системные кнопки;
– меню под заголовком;
–  строку состояния в нижней
части;
– вертикальную и горизонтальную полосы прокрутки.
Остальная часть пространства
формы называется клиентской областью. В ней размещаются различные элементы управления, выводиться текст и графика.
Программно форма  – это объРис. 5. Вид формы с основными ект стандартного класса TForm,
элементами
10

11.

следовательно, она имеет свои свойства, которые можно задавать как
на этапе проектирования приложения с помощью окна Инспектора объектов, так и на этапе выполнения приложения из текста программы.
Рассмотрим некоторые из этих свойств.
2.1. Основные свойства формы
bool AlphaBlend – разрешает прозрачность формы. Если свойство
равно true, то форма может быть прозрачна.
int AlphaBlendValue – задает степень прозрачности формы значением от 0 до 255. Значение 0 свойства означает полную прозрачность; 255
– полную непрозрачность; полупрозрачная – промежуточное значение.
bool AutoScroll – определяет, будут ли автоматически появляться полосы прокрутки, если при заданном размере окна не все компоненты
помещаются на нем. Если true (по умолчанию), то будут.
bool AutoSize – определяет, могут ли компоненты на форме изменять свои размеры. Если имеет значение true, то могут (по умолчанию).
BorderIcons – множественное свойство – задает набор кнопок в правом углу заголовка. Может принимать значения:
– biSystemMenu – форма имеет кнопку системного меню, расположенную слева в строке заголовка;
– biMinimize – форма имеет кнопку сворачивания окна;
– biMaxmize – форма имеет кнопку развертывания окна;
– biHelp – форма имеет кнопку со знаком вопроса.
Значения этого свойства зависят друг от друга. Возможность появления кнопок зависит от стиля формы (свойство BorderStyle).
BorderStyle – перечисляемое свойство – определяет внешний вид и
поведение рамки окна формы. Может принимать значения:
– bsSizeable – по умолчанию; обычная форма, которая может изменять свои размеры; имеет строку заголовка и любой набор системных
кнопок в заголовке;
– bsDialog – окно стандартного диалога; нельзя изменять размер; может содержать только в заголовке кнопки закрытия и справки;
– bsNone – форма без рамки и строки заголовка; не может изменять
свои размеры; используется для заставок;
– bsSingle – обычное окно, как bsSizeable, но нельзя менять размер;
– bsSizeToolWin – окно с тонкой рамкой; можно изменять размер;
– bsToolWindow – аналог bsSizeToolWin, но нельзя менять размер.
Если для формы указано, что она не может менять размер, то это
означает, что на этапе выполнения пользовать не может мышью изме11

12.

нять размер формы. Однако это можно сделать программной строчкой,
например:
Form1->Width=Form1->Width+100;
int BorderWidth – ширина рамки.
String Caption – заголовок окна.
int ClientHeight, int ClientWidth – высота и ширина в пикселях клиентской области формы.
Icon – сложное свойство – определяет пиктограмму, отображаемую в заголовке окна формы. На этапе проектирования пиктограмма задается двойным щелчком мышью в окне Инспектора объектов, чтобы вызвать окно загрузки иконки. В программе можно аналогично выполнить команду:
Form1->Icon->LoadFromFile(“Icon1.ico”);
Тогда новая иконка появиться на этапе выполнения приложения.
int Left, int Top – определяют в пикселях координаты левого угла
формы относительно экрана монитора.
WindowState – перечислимое – определяет состояние формы после
запуска. Возможные значения для свойства:
– wsNormal – в нормальном состоянии (по умолчанию);
– wsMaximized –развернуто;
– wsMinimized – свернуто.
2.2. Основные методы формы
void Close() – закрывает форму, удаляя ее с экрана, но не из памяти.
При закрытии главной формы прекращается работа всего приложения.
void Hide() – скрывает форму, изменяя свойство Visible.
void Show() – делает форму видимой, автоматически устанавливая
свойство Visible в значение true.
void Repaint(), void Invalidate() – вызывают перерисовку формы.
Используется, когда компоненты формы изменились или при выполнении добавились новые, а так же когда одна форма была перекрыта другой формой.
void Print() – выводит на принтер содержимое рабочей части формы.
void SetFocus() – активизирует форму и перемещает ее поверх других окон.
void SelectFirst() – устанавливает фокус на первый компонент формы по табулированному порядку.
void SelectNext (TWinControl comp, bool dir, bool stop) – передает
фокус следующему компоненту на форме по табулированному поряд12

13.

ку. Первый параметр задает тот компонент, от которого передается фокус; второй параметр задает направление передачи фокуса: если он имеет значение t
rue, то фокус получает следующий компонент,
f
alse – предыдущий; третий параметр проверяет, надо ли учитывать значение свойства TabStop следующего компонента: если true, то компонент получит
фокус, если false, то не получит.
TRect GetClientRect() – определяет координаты рабочей обрасти
формы, которые помещается в структурированный тип TRect.
TPoint CalcCursorPos() – определяет координаты курсора мыши в
пределах клиентской части формы.
bool FindComponent (String name) – проверяет, имеется ли на форме компонент с указанным в параметре именем.
2.3. Основные события формы
Большинство событий для компонентов, приведенных в Приложении
№3, имеется и для формы. Однако, форма, как основное окно интерфейса и контейнер других компонентов, имеет и набор событий, типичных
только для нее.
События создания и уничтожения формы
– OnCreate – является главным событием формы. Событие активизируется один раз при создании формы – выделение ей памяти. В тело
события помещают команды, устанавливающие начальные значения
свойств формы и ее компонентов, дополнительно к тем, что были установлены на этапе проектирования через окно Инспектора объектов. Так
же в него включают действия, которые должны происходить однократно при создании формы.
– OnDestroy – возникает при уничтожении формы. В тело события
можно поместить действия, связанные с сохранением нужной информации и освобождением ресурсов. События имею один параметр Sender.
События фокуса формы
События имеют смысл для приложений с несколькими формами.
– OnActivate – форма получает фокус, т.е. становится активной.
– OnDeactivate – форма теряет фокус.
События имею один параметр Sender.
События отображения и скрытия формы
– OnShow – возникает при отображении формы, например, при присвоении свойству Visible значения true.
13

14.

– OnPaint – возникает при прорисовке испорченного изображения
формы или при временном перекрытии окон.
– OnHide – возникает при скрытии формы, например, при присвоении свойству Visible значения false.
События имеют один параметр Sender.
События закрытия формы
События возникают при закрытии формы щелчком на кнопке выхода
системного меню или вызовом метода Close для формы.
– OnCloseQuery – первое событие при закрытии формы. Прототип
события:
void __fastcall TForm1::FormCloseQuery(TObject *Sender,bool
&CanClose)
Параметр CanClose разрешает закрытие формы. Если после некоторых проверок (разрешений, подтверждений) следует закрыть форму, то
параметру присваивают значении true, иначе false и форма не закроется.
– OnClose – второе событие при закрытии формы
void __fastcall TForm1::FormClose(TObject *Sender,TCloseAction
&Action)
Параметр Action может принимать значения:
– caNone – не закрывать форму;
– caHide – сделать форму невидимой с сохранением информации на
форме; ее можно опять сделать видимой;
–  caMinimize – свернуть до пиктограммы с сохранением информации;
– caFree – уничтожить форму с освобождением памяти.
Последовательность вызова начальных событий формы: OnCreate,
OnShow, OnActivate, OnPaint.
Последовательность вызова событий при завершении работы с формой: OnCloseQuery, OnClose, OnDestroy.
3. КОМАНДНАЯ КНОПКА (BUTTON)
Рис. 6.
Командная
кнопка
14
Основное назначение данного компонента – управлять работой приложения путем щелчка по нему мышью. Является
основным элементом интерфейса любого приложения.
Компонент находиться на вкладке Standard Палитры компонентов. Отменим особенности командной кнопки.

15.

bool Cancel – определяет, будет ли выполняться обработчик события
OnClick при нажатии на клавишу [Esc]. Если имеет значение true, то будет.
bool Default – свойство определяет, будет ли выполняться обработчик
события OnClick при нажатии на клавишу [Enter]. Если true, то будет.
void Click() – программный метод вызова события OnClick.
void SetFocus() – передача компоненту фокуса, активизируя его.
OnClick – главное событие кнопки.
4. КНОПКА С КАРТИНКОЙ (BITBTN)
Данный компонент – потомок командной кнопки Button.
Добавил возможность отображать не только заголовок, но и
растровую картинку на своей поверхности, следовательно, к
свойствам кнопки Button добавились свойства, отвечающие
Рис. 7.
Графическая за картинку на кнопке. Располагается на вкладке Additional.
кнопка
Отменим дополнительные свойства графической кнопки.
TBitMap Glyph – битовая матрица растрового рисунка (глиф) на
кнопке (по умолчанию None – отсутствие рисунка). Подготовить файл
рисунка формата bmp можно в графическом редакторе. Свойство Glyph
вызывает окно, в котором выбирается путь к файлу картинки. Задание
этого свойства можно выполнить и программно строчкой:
Form1->BitBtn1->Glyph->LoadFromFile (“имя файла .bmp”);
TBitBtnKind Kind – определяет вид
кнопки со стандартной картинкой размера 16х16 пикселей. Может принимать
значения следующих констант: bkCustom
– на кнопке имеется выбранное изображение; для значений bkAbort, bkAll,
bkCancel, bkClose, bkHelp, bkIgnore,
bkNo, bkOk, bkRetry, bkYes вид кнопки
отображается на Рис. 8. По умолчанию
свойство имеет значение bkCustom. Если
свойство имеет значение bkClose, то при
щелчке по такой кнопке происходит выход из приложения без написания про- Рис. 8. Значения свойства
Kind
граммного кода
TButtonLayout Layout – задает положение рисунка относительно поясняющего его текста на поверхности кнопки. Может принимать
значения:
15

16.

– blGlyphLeft – слева от заголовка;
– blGlyphRight – справа от заголовка;
– blGlyphTop – над заголовком;
– blGlyphBottom – под заголовком.
int Margin – расстояние в пикселях между краем кнопки и рисунком.
Край кнопки задается свойством Layout. При значении -1 этого свойства, происходит центрирование картинки и заголовка на кнопке.
int Spacing – расстояние в пикселях между картинкой и заголовком.
По умолчанию равно 4. При значении 0, заголовок и картинка будут раполагаться вплотную друг к другу. Если значение свойства равно –1, то
заголовок центрируется между картинкой и краем кнопки.
5. ТАЙМЕР (TIMER)
Компонент Timer относится к невизуальным компонентам, т.е. он при выполнении приложения на форме не отображается. Располагается данный компонент на вкладке System.
Основное
назначение компонента – это управление прилоРис. 9.
Компонент жением в реальном режиме времени.
Timer
Компонент отслеживает изменения в системном таймере и через нужный интервал времени выполняет запрограммированные
для него действия.
Свойства компонента
bool Enabled – задает состояние таймера. Если имеет значение true,
то таймер включен; если false, то выключен.
int Interval – задает интервал в миллисекундах, через которое возникает основное событие таймера – OnTimer. Значение 1000 соответствует
одной секунде. При задании 0 этого свойства вызывает отключение таймера. По умолчанию значение свойства равно 1000.
Чтобы таймер работал, необходимо присвоить значение true
свойству Enabled и свойство Interval задать положительным значением.
Отключить таймер можно присвоением свойству Enabled значения
false, или записать 0 в свойство Interval.
Событие таймера
OnTimer – единственное событие компонента. Является примером системного события, т.е. возникающего без участия пользователя.
Событие возникает для включенного таймера через каждое количество
миллисекунд, указанное в свойстве Interval. Например:
16

17.

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Form1→Caption=TimeToStr (Time()); //Отображение текущего времени
}
6. ПАНЕЛЬ (PANEL)
Рис. 10.
Компонент
Panel
Компонент используется как декоративный элемент формы – рамка, в которой можно как в контейнере размещать
(группировать) другие компоненты интерфейса. Компонент
имеет рамку и бордюр. Компонент расположен на вкладке
Standart.
Основные свойства
Align – определяет выравнивание панели относительно формы.
Значения:
– alNone – как была установлена на этапе проектирования (по умолчанию);
– аlТор – панель по всей верхней границы формы, оставаясь той же
высотой;
– alBottom – панель растягивается по нижней границе формы;
– alLeft – панель на всю ширину формы по ее левой границе;
– alRight – аналогично alLeft, но по правой границе формы;
– alClient – панель растягивается на всю клиентскую часть формы;
– alCustom – положение выбирается пользователем.
String Caption – строка текста внутри панели. Если строка не нужна, то это свойство задают пустой строкой.
Alignment – выравнивание текста строки внутри панели. Может
принимать:
– taLeftJustify – по левой границы панели;
–  taRightJustify – по правой границы панели;
–  taCenter – центрируется относительно панели.
Bevellnner – вид внутренней рамки. Свойство может принимать значения:
– bvNone – нет рамки;
Рис. 11. Панель с заданными
– bvLowered – «вдавленная» рамка;
свойствами BevelLnner и
– bvRaised – «выпуклая» рамка;
BevelOuter
17

18.

– bvSpace – «плоская» рамка.
BevelOuter – вид внешней рамки. Значения аналогичные свойству
BevelInner.
int BevelWidth – ширина рамки в
пикселях. По умолчанию равно 1.
int BorderWidth – ширина бордюра – линии, разделяющей внутреннюю
и внешнюю рамки. По умолчанию
свойство равно 0 (рамки нет).
Color – цвет плоскости панели и ее
бордюра.
Font – сложное свойство – установРис. 12. Панель с различными ка параметров шрифта компонентов,
настроенными свойствами расположенных на панели.
Style – множественное свойство- установка стиля надписей компонентов, расположенных на панели.
7. НАДПИСЬ (LABEL)
Рис. 13.
Компонент
надпись
Надпись  – статический текст, который нельзя редактировать во время выполнения программы. Используется для
вывода информации на форму и для заголовков управляющих элементов, у которых отсутствует свойство Caption.
Компонент Label находится на вкладке Stаndагt.
Основные свойства компонента:
String Caption – текст надписи.
Aligment – задает способ выравнивания надписи в Label по горизонтали.
Layout – задает способ выравнивания надписи в Label по вертикали.
bool Autosize  – указывает, будет ли размер компонента подстраиваться под размер выводимой надписи.
bool Transparent – отвечает за прозрачность фона компонента. Если
свойство равно true, то надпись прозрачна (надписи поверх рисунков,
например, на географической карте). Если равно false, то в свойстве
Color устанавливается цвет фона надписи. Все атрибуты надписи задаются в свойстве Font.
bool WordWrap – разрешение на разбивку текста на несколько
строк. Перенос возможен, если свойства Word Wrap и АutоSizе установить в true.
18

19.

String s=»Hello»;
s=s+(char)10+(char)13;
s=s+»Friend»;
Form1→Label1→Caption=s;
//Переход на новую строку
//Надпись из нескольких строк
8. КОМАНДЫ ДИАЛОГА
Команды диалога создают типовые окна интерактивного вводавывода. Используются для отображения пользователю необходимых сообщений и получения от него ответа. Данные подпрограммы не входят
в палитру компонентов Builder
, они не являются объектами, следовательно, не имеют свойств, методов и событий. На этапе проектирования
их не видно, они появляются при выполнении приложения.
8.1. Окно сообщения (ShowMessage)
Рис. 14. Окно
ShowMessage
Используется для привлечения внимания пользователя, например, чтобы проинформировать его
об ошибке, подтвердить запрос и т.д. Для отображения окна требуется вызов функции ShowMessage
(«Сообщение»). Как параметр ей передается выводимое в окне сообщение.
ShоwМеssаgе («Программа завершена»);
//Появление окна на рис. 14
Команда выводит окно в центре экрана со строкой сообщения (тип
String) и кнопкой O
K
. Заголовок окна совпадает с именем файла проекта. Окно диалога будет находиться на экране до тех пор, пока пользователь его не закроет. Текст сообщения может быть разбит на несколько
строк, если его оформить как было рассмотрено для компонента Label.
8.2. Окно с сообщением и выбором действия (MessageDlg)
Команда MessageDlg является более универсальной по сравнению с
командой ShowMessage, т.к. не только выводит сообщение, но получает
реакцию пользователя на это сообщение. Прототип команды:
Выбор=МеssаgеDlg («Сообщение», Тип_окна, Кнопки, Справка);
Параметр Тип_окна задает тип сообщения. Может принимать значения:
–  mtWarning  – окно внимание с символом «!» и заголовком окна
«Warning»;
19

20.

– mtError – окно ошибка с символом «Х» и заголовком окна «Error»;
– mtInformation – окно информация «I», заголовок окна «Information»;
– mtСоnfirmаtiоn – подтверждение «?» и заголовок окна «Соnfirmation»;
– mtCustom – обычное окно, без рисунка; заголовок окна – имя проекта.
Параметр Кнопки задает набор кнопок окна и может принимать значения:
– mbYesNoCancel – содержит набор кнопок mbYes, mbNo, mbOk;
– mbOkCancel – содержит набор кнопок mbOk, mbCancel;
–  mbAbortRetryIgnore – содержит набор кнопок mbAbort, mbRetry,
mbIgnore.
Параметр Справка определяет раздел справочной системы, появляющийся при нажатии на клавишу F1. Обычно он равен 0.
При нажатии любой кнопки, диалоговое окно закрывается, и функция MessageDlg возвращает результат – выбранную кнопку из списка
кнопок, находящихся в окне. Результат имеет тип
int
и может принимать одно из следующих значений: mrCancel, mrNo, mrAbort, mrRetry,
mrlgnore, mrYes и соответствует нажатой кнопке в окне. Пример:
Рис. 15. Окно MessageDlg
r=MessageDlg («Завершить приложение?»,
mtInformation, mbOkCancel, 0);
if (r==mrYes)
{ ShowMessage(«Приложение завершается»);
Form1->Close();
}
8.3. Окна ввода (InputBox и InputQuery)
Данные окна используются для получения от пользователя необходимых входных данных, например пароля, своего имени и другой короткой информации.
Результат=IпрutВох(“Заголовок”,
“Подсказка”,
“По_умолчанию”);
Появляется окно диалога с заголовком, двумя кнопками OK и
Cancel, строкой ввода и подсказкой над ней. Параметр Заголовок содержит заголовок окна диалога. Параметр Подсказка содержит строку
над строкой ввода, поясняющая пользователю его действия. Параметр
По_умолчанию задает строку, которая загружается в строку ввода при
появлении окна диалога. Функции возвращают в Результат введенную
строку (тип String). При нажатии клавиши Esc, функция возвращает в
Результат строку По_умолчанию.
20

21.

Рис. 16. Окно InputBox
String s;
do
{s=InputBox («Код доступа»,
«Введите пароль», «000»);
if (s==»PassWord»)
ShowMessage(«Вход разрешен»);
} while (s!=»PassWord»);
Проверка=InputQuery («Заголовок», «Подсказка», Строка_Результат);
Команда InputQuery
возвращает true
, если пользователь нажал кнопку Ok (или клавишу Enter), или false, если нажал кнопку Cancel (или
клавишу
Esc
). Результат ввода записывается в третий строковый параметр Строка_Результат.
Похожие действия происходят при вызове окна InputQuery.
do
{ if ( InputQuery (“Код доступа”, “Введите пароль”, s) )
if (s==»PassWord»)
ShowMessage(«Вход разрешен»);
} while (s!=”PassWord”);
9. РЕДАКТОР СТРОКИ (EDIT)
Рис. 17. Редактор
строки
Редактор строки – это поле, в котором можно вводить с клавиатуры и редактировать строку. Для компонента действуют клавиши управления курсором: Delete
и Backspace. Можно выделять части текста и работать
с буфером обмена. Компонент располагается на вкладке Standart.
Основные свойства компонента:
String Text  – содержит введенную пользователем строку (вместо
Caption). Невозможно выполнять выравнивание и перенос текста. Если
текст превышает размер компонента Edit, то можно прокрутить тест в
строке ввода.
int MaxLength  – определяет максимальное количество символов,
которое пользователь может ввести в поле редактирования. По умолчанию стоит 0, что означает отсутствие ограничения.
bool АutоSelect – определяет, будет ли автоматически выделяться
вся строка в компоненте при получении фокуса. Обычно имеет значение
true
, что при получении фокуса дает пользователю возможность изменять текущий текст.
21

22.

bool HideSelection – если значение свойства равно
t
rue (по умолчанию), то при потери фокуса компонентом выделение текста будет сниматься. При значении false выделение текста остается.
bool AutoSize – определяет, будет ли высота компонента автоматически изменяться в соответствий с размером шрифта вводимой строки.
BorderStyle – перечислимое – задает стиль бордюра. Может принимать значения:
– bsSingle – иметь бордюр;
– bsNone – без бордюра.
CharCase – определяет регистр отображения текста. Может быть:
–  ecLowerCase – преобразование символов текста в строчные символы;
– ecNormal – нет преобразования регистра;
– ecUpperCase – преобразование символов текста в прописные символы.
bool СtlЗD – будет ли компонент иметь объемное изображение.
char PasswordChar  – символ, который появляется в строке ввода вместо реально введенных символов (используется для ввода пароля). Действительно введенный текст будет содержаться в свойстве Text.
Если значение свойства равно #0 (по умолчанию), то режим пароля не
установлен и отображаются реально введенные символы.
bool ReadOnly – может ли пользователь изменять текст в компоненте Edit.
Color – цвет фона компонента.
Font  – шрифт текста в компоненте.
int SelLength, int SelStart, String SelText – определяют количество
выделенных символов, номер (начинал с 0) первого выделенного символа и сам выделенный текст. Если выделенного символа нет, то свойство SelStart
указывает позицию курсора ввода. Для того чтобы программно выделить фрагмент текста, достаточно указать его начало
(SelStart) и длину (SelLength). Для замещения выделенного фрагмента
текста или ввода нового текста в место, указываемое курсором ввода,
следует присвоить свойству SelText новое значение соответственно замещаемого или вводимого текста.
//Фрагмент перемещает курсор к началу строки
Form1->Edit1->SelStart=0;
Form1->Edit1->SelLength=0;
//Фрагмент перемещает курсор к концу строки
Form1->Edit1->SelStart=Form1->Edit1->Text.Length();
22

23.

Form1->Edit1->SelLength=0;
//Фрагмент выделяет всю строку
Form1->Edit1->SelStart=0;
Form1->Edit1->SelLength=Form1->Edit1->Text.Length();
Основные методы компонента:
void Clear() – очищает строку в компоненте.
void ClearSelection() – удаляет выделенный фрагмент в строке.
void CopyToClipboard() – копирует выделенный фрагмент в буфер.
void CutToClipboard() – переносит выделенный фрагмент в буфер
обмена.
void PasteFromClipboard() – замещает выделенный фрагмент текста или вставляет в место, указываемое курсором ввода, содержимое
буфера обмена.
void SelectAll() – выделяет всю строку в компоненте.
Программное переключение клавиатуры на нужную раскладку.
Для этого можно воспользоваться функцией LoadKeyboardLayout()
из файла winuser.h. Имеет два параметра:
LoadKeyboardLayout(“код_раскладки”, флаг);
Первый параметр – это строка кода раскладки клавиатуры. Для английской раскладки она равна “00000409” для русской – “00000419”.
Второй параметр задается флагом KLF_ACTIVATE, активизирующий
указанную клавиатуру.
LoadKeyboardLayout(“00000419”, KLF_ACTIVATE); //Русская раскладка
LoadKeyboardLayout(“00000409”, KLF_ACTIVATE); //Английская раскладка
Основные события компонента:
OnChange (TObject Sender)  – является главным событием компонента Edit. Возникает при изменении текст в поле компонента, т.е. при
изменении свойства Text. Обычно в этом событии производят проверку
или сохранение новой введенной информации.
OnkeyPress (TObject Sender, char Key) – возникает при нажатии
печатной клавиши в поле ввода компонента. В обработчике можно анализировать введенный символ и при необходимости изменить его или
запретить ввод. Часто в обработчике события OnKeyPress() проводят
контроль правильности ввода информации, и в случае неверного ввода либо сообщают об этом пользователю, либо подавляют неверно введенный символ.
Пример: В качестве примера рассматривается создание обработчика события OnKeyPress
для компонента Edit, в котором ведется провер23

24.

ка правильности ввода символов вещественного числа: разрешен знак
«–« в начале числа; ведется проверка ввода разделителя целой и дробной частей; разрешен ввод только символов цифр; обрабатывается клавиша Enter
для завершения ввода; клавиша Esc
используется для очистки поля ввода; клавишей Backspace удаляется предыдущий введенный
символ. Другие клавиши должны игнорироваться при вводе, путем присвоения параметру Key значение 0.
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if (!isdigit(Key) && Key!=8)
//Не цифра и не клавиша Backspace
switch (Key)
//Анализ введенного символа
{
case 13: Form1→SelectNext(Edit1,true,true); //Enter – перемещение фокуса
break;
case 27: Form1->Edit1->Clear();
//Esc – очистка поля ввода
break;
case ‘.’: case ‘,’:
//Точка или запятая
Key=DecimalSeparator;
//Заменить на разделитель
if (Form1->Edit1->Text.Pos(Key)!=0)//Разделитель уже был
Key=0;
break;
case '-': if (!Form1->Edit1->Text.IsEmpty()) Key=0; break; //Минус
default: Key=0;
//Игнорировать остальные символы
Beep();
//Подать звуковой сигнал – ошибка
}
}
10. СЧЕТЧИК (CSPINEDIT)
Компонент используется для увеличения или уменьшения некоторой целочисленной величины – счетчика. Представляет собой пару треугольных кнопок и полем редактора, в котором выводиться и
редактируется текущее значение счетчика. Компонент расположен на вкладке Samples.
Рис. 18.
Компонент
счетчик
Основные свойства компонента:
int Increment – шаг изменения счетчика (по умолчанию
равно 1).
int MaxValue, MinValue – допустимые границы для индекса. По
умолчанию равно 0, что означает отсутствие ограничений.
int Value – текущее значение счетчика. Оно выводится в поле редактора.
24

25.

Основное событие
OnChange – возникает при изменении значения счетчика, т.е. при
щелчках на кнопках со стрелками или программно при изменении
свойства Value. В событии можно получить значение свойства Value.
11. ИНДИКАТОР ПРОЦЕССА (CGAUGE)
Компонент может использоваться для отображения хода
длительного процесса. Основные свойства компонента:
int Progress – значение величины, отображаемой индикаРис. 19.
тором
(счетчик выполненных действий).
Компонент
int MaxValue, MinValue – диапазон изменение отображаиндикатор
емой величины. По умолчанию свойства имеют значения 100
и 0 соответственно.
Color, BackColor, ForeColor – задает цвет панели компонента, цвет
фона графика, цвет указателя текущего значения величины.
bool ShowText – разрешает отображение текста на панели.
Kind – определяет тип индикатора. Возможные значения для свойства и вид индикатора отображены на Рис. 20.
Компонент событий не имеет.
Рис. 20. Возможные значения свойства Kind
компонента индикатора процесса
12. ФЛАЖОК (СHЕСKBОХ)
Рис. 21.
Компонент
CheckBox
Флажок изображается квадратом, внутри которого может
стоять галочка (флажок включен) или нет (флажок выключен). Компонент находится на вкладке Standart. Компонент
чаще всего используется для включения или выключения
каких-либо опций. С помощью флажка в программе задают25

26.

ся различные проверки состояний параметров, т.е. организуются алгоритмы с ветвлением. Чаще всего флажок обрабатывается в команде if.
Пользователь может переключать состояние флажка повторным по
нему щелчком мышью. На форме может находиться как один флажок,
так и несколько. Одиночный флажок часто используется, например, для
включения или выключения какого-либо режима. Если на форме несколько флажков, то все они независимы друг от друга и любой из них
может находиться в состоянии «включен» или «выключен» не зависимо
от состояния других флажков.
Основные свойства компонент:
String Caption – надпись, поясняющая флажок.
Alignment – перечислимое – размещение надписи по отношению к
флажку. Может принимать значения: taLeftJustify (слева от флажка) и
taRightJustify (справа от флажка).
bool Checked – состояние флажка. Имеет значение
true
при включенном флажке и значение false при выключенном. Значение этого свойства
можно менять щелчком по флажку, либо программно:
Form1→CheckBox1→Checked =tгuе;
//Установить флажок программно
bool Enabled – блокировка флажка. После перехода флажка в заблокированный режим, он сохраняет то состояние, в котором находился до
выполнения блокировки.
bool AllowGrayed – разрешение трех состояний флажка: включен, выключен и частичное включение (серая галочка на сером фоне).
Третье состояние используется для отображения какой-то характеристики объекта.
State – перечислимое – определяет одно из трех возможных состояний флажка: cbChecked – включен (свойство Checked равно true), cbGrayed – частичное включение (свойство Checked равно false), cbUnchecked – выключен (свойство Checked равно false).
Основным событием флажка является событие OnClick, в котором
обычно располагаются команды, выполняющие нужные действия в зависимости от состояния флажка.
Например: щелчок по флажку отображает его текущее состояние
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
if (Form1→CheckBox1→Checked) Form1→CheckBox1→Caption=«Активен»;
else
Form1→CheckBox1→Caption=«Не активен»;
}
26

27.

13. РАДИОКНОПКА (RADIOBUTTON)
Радиокнопка используется в программах для проверки различных условий, заданных в операторе ветвления if.
Радиокнопка является зависимым переключателем: из группы радиокнопок только одна является выбранной. Обычно
Рис. 22.
Компонент одиночный переключатель используется очень редко.
RadioButton Компонент располагается на вкладке Standart.
Кнопка может находиться в выбранном (с точкой внутри) или невыбранном состоянии (без точки внутри). Переключение радиокнопки в
противоположное состояние осуществляется только при выборе другого переключателя из этой же группы. В начале работы программы обычно в событии OnCreate для формы следует один переключатель сделать
выбранным.
Основные свойства компонента:
String Caption – поясняющая надпись около кнопки.
Alignment – перечислимое свойство – определяет позицию заголовка кнопки.
– taLeftJustify – слева от кнопки;
– taRightJustify – справа от кнопки.
bool Checked – определяет состояние радиокнопки. Если свойство
имеет значение t
rue, то кнопка включена, если значение
f
alse, то выключена. Свойство можно изменить только, щелкнув по другой радиокнопке или программно.
14. КОНТЕЙНЕР РАДИОКНОПОК (RADIOGROUP)
Из нескольких радиокнопок на форме только одна может
быть выбрана. Если требуется включить несколько радиокнопок (например: пол и семейное положение), то их следует разделить на группы, разместив которую группу кнопок в
Рис. 23.
Компонент своем контейнере. В разных контейнерах может быть вклюRadioGroup чено по одной радиокнопки.
Контейнер располагается на вкладке Standart.
Контейнер RadioGroup объединяет в группу только радиокнопки. Кнопки в контейнер нельзя поместить обычным перетаскиванием
их из Палитры компонентов. Радиокнопки помещаются в контейнер
RadioGroup только через свойство контейнера Items типа TStrings. При
выборе этого свойства появляется окно редактора, в котором каждой
27

28.

строке соответствует отдельная радиокнопка в контейнере. Контейнер
представляет собой динамический массив радиокнопок. Кнопки можно добавлять и удалять во время работы приложения методами класса
TStrings
, описанными в Приложении №7 данного пособия. Имен у кнопок внутри контейнера нет, доступ к ним происходит как в массиве – по
их индексу (начиная с 0). Наиболее часто используемая конструкция в
программе для контейнера
RadioGroup
 – это команда
switch
, переключателем в которой выступает номер выбранной кнопки в контейнере.
Основные свойства контейнера RadioGroup:
String Caption – заголовок контейнера, выводится в верхней части
рамки.
TStrings Items – определяет количество и заголовки всех радиокнопок в контейнере. Свойство можно задать как на этапе проектирования, так и на этапе выполнения программным кодом, используя методы класса TStrings.
Form1→RadioGroup1→Items→Clear();
//очистить контейнер от кнопок
Form1→RadioGroup1→Items->Add (“По условию”); //добавить кнопку
Form1→RadioGroup1→Items→Delete (0);
//удалить первую кнопку
int Itemlndex – определяет индекс (начиная с 0) радиокнопки, которая выделена в контейнере. Если первоначально не выделена ни одна
кнопка, то значение свойства равно -1. Обычно в событии OnCreate
формы первую кнопку в контейнере делают активной.
Form1→RadioGroup1→ItemIndex=0;
//Выделена первая радиокнопка
Примеры использования контейнера:
Form1→RadioGroupl→Itemlndex=1;
//активна вторая кнопка
if (RаdiоGгоuр2→ItеmIndех==3) … //проверка активности 4-ой кнопки
//сменить заголовок 3-ей кнопки
Form1→RadioGroup1→Itеms→Strings[2]="Оптовая цена”;
//изменить заголовок выделенной кнопки
Form1→RadioGroup1→Items→Strings[RadioGroup1→ItemIndex]="Изменена";
int ComponentCount – количество радиокнопок в контейнере.
int Columns – количество столбцов в контейнере (не более 17). По
умолчанию свойство равно 1 , т.е. все кнопки расположены в один
столбец.
28

29.

15. ДИАЛОГИ ВЫБОРА ЦВЕТА И ШРИФТА
На вкладке Dialogs располагаются компоненты стандартных диалоговых окон Windows. Среди них есть диалог выбора цвета ColorDialog
и выбора параметров шрифта для текста FontDialog. Сами диалоги ничего не устанавливают, а только получают от пользователя нужные значения цвета и параметров шрифта.
Рис. 24. Закладка Dialogs с компонентами
Диалоги являются невизуальными компонентами. Для вызова любого стандартного диалога при работе приложения используется методфункция Execute(). При ее выполнении появляется окно, в котором
можно выбрать необходимые параметры цвета или шрифта. Метод возвращает true, если при закрытии диалога пользователь нажал кнопку
Ok (либо клавишу Enter) или возвращает
f
alse, если при закрытии диалога пользователь нажал кнопку Cancel (или клавишу Esc). Данный метод часто вызывают в теле события щелчка по кнопке или пункту меню.
15.1. Диалог выбора цвета (ColorDialog)
Компонент ColorDialog обеспечивает выбор цвета для
любого визуального компонента, имеющего свойство Color.
Диалог ColorDialog имеет основное свойство Color типа
ТСоlог – активный цвет. При открытии диалога в окне активРис. 25.
Компонент ный цвет обведен пунктирной рамкой.
ColorDialog
При нажатии на
кнопку «Определить цвет», появляется дополнительная область для создания своей цветовой палитры. При закрытии окна кнопкой Ok (метод
Execute() возвращает значение true), свойство Color компонента ColorDialog содержит
выбранный цвет. Например:
Рис. 26. Компонент
Выбирается цвет для формы из
ColorDialog в работе
диалога цвета:
if
(ColorDialog1→Execute())
Form1→Color=ColorDialog1→Color;
29

30.

15.2. Диалог выбора параметров шрифта (FontDialog)
Рис. 27.
Компонент
FontDialog
Компонент FontDialog обеспечивает выбор параметров
шрифта (название шрифта, размер, цвет, начертания и другие характеристики) для любого визуального компонента, имеющего свойство Font. Основное свойство диалога – Font – сложное свойство, которое определяет параметры шрифта.
Например: Настроить шрифт текста на метке можно следующей программной строчкой:
if (FontDialog1→Execute())
Label1→Font=FontDialog1→Font;
Рис. 28. Компонент
FontDialog в работе
16. СТАНДАРТНЫЕ СПИСКИ
Список представляют собой прямоугольную область, содержащую
совокупность взаимосвязанных текстовых строк. Списки бывают стандартные и специализированные. Стандартные списки используются
для хранения произвольной информации, например: названия шрифтов, профессий, комплектующих ПК и другой строковой информации.
Специализированные списки используются для хранения и обработки специально предназначенной информации: список файлов, каталогов, дисков, цветов и другой информации. Компоненты Стандартные
списки располагаются на вкладке Standart. Эти компоненты обеспечивают безошибочное получение информации от пользователя в случаях, когда он должен выбрать один ответ из конечного множества вариантов. Для этого пользователю достаточно щелкнуть по нужной строке списка. Выбранная строка выделяется цветом и может быть проанализирована программой. К наиболее часто используемым стандартным
спискам относят:
– простой список – компонент ListBox;
– комбинированный список – компонент ComboBox.
30

31.

16.1. Простой список (ListBox)
Простой список позволяет пользователю:
– выбирать нужную строку текста;
– выполнять разбиение строк на колонки;
– выполнять сортировку строк;
Рис. 29.
– выделять несколько строк в списке.
Компонент
ListBox
Компонент не допускает пользователю редактировать строки списка, однако это можно осуществить программными средствами.
Свойства компонента ListBox:
int Count – количество строк в списке. Если строк больше, чем вмещает видимая области списка, то справа появляется полоса прокрутки.
int Columns – количество столбцов в окне списка. По умолчанию –
0. Если Columns>=1, то возникает горизонтальная полоса прокрутки.
TStrings Items – свойство содержит строки окна списка. Задать строки списка можно как на этапе проектирования через окно Инспектора
объектов, так и при выполнении приложения через методы класса
TStrings (Приложение №7).
Например: Из Edit строка помещается в конец имеющихся строк
списка.
Form1→ListBox1→Items→Add (Form1→Edit1→Text);
int ItemIndex – определяет номер выделенного элемента списка, начиная с 0. Если выделенных элементов нет, то значение свойства равно -1.
//Если строка в списке выделена, то перенести ее переменную s
if (Form1→ListBox1→ItemIndex!=-1)
s=Form1→ListBox1→Items→Strings[Form1→ListBox1→ItemIndex];
bool Sorted – определяет, будут ли элементы в окне списка отсортированы в алфавитном порядке.
bool MultiSelect – при значении true этого свойства разрешено одновременно выделять более одного элемента списка (разрешение мультивыделения). Если свойство имеет значение false
, то разрешается выделять только одну строку в списке и в свойство
ItemIndex
помещается ее номер.
bool ExtendedSelect – определяет способ мультивыделения, имеет
смысл при значении свойства MultiSelect равному true. Если свойство
ExtendedSelect равно true, то пользователь может выделить интервал
строк (удерживая Shift) или не прилегающие строки (удерживая Ctrl)
при выборе элементов списка. Если
false
, то пользователь не может выполнять указанные действия, а только щелчком по нужным строкам.
31

32.

int SelCount – указывает количество одновременно выделенных
элементов списка. Если мультивыделение не разрешено, то -1. Доступ
только для чтения.
bool Selected[int Index] – определяет, выделен ли элемент списка
под номером Index (начиная с 0).
for (i=0; i<Form1→ListBox1→Count; i++)
//Перебор всех строк списка
if (Form1→ListBox1→Selected[i])
//Проверка на выделение
ShowMessage(“Выделена строка “+Form1→ListBox1→Items→Strings[i]);
Методы компонента ListBox:
void Clear() – удаляет все элементы списка.
int ItemAtPos (TPoint Pos, bool End) – возвращает номер элемента, указанного координатами типа TPoint
. Получить значение координат при нажатии клавиши мыши можно, например, в обработчике события OnMouseUp.
TRect ItemRect (int Item) – возвращает координаты прямоугольной
области, в которой расположен указанный параметром Item элемент
списка.
void SelectAll () – выделяет все строки списка.
void ClearSelection () – отменяет выделение строк в списке.
void DeleteSelection () – удаляет из списка выделенные строки.
void CopySelection (список) – копирует выделенные строки в другой в список. Например: копирование выделенных строк из списка
ListBox1 в ListBox2.
Form1→ListBox1→CopySelection (Form1→ListBox2);
void MoveSelection (список) – переносит выделенные строки из
одного списка в другой.
16.2. Комбинированный список (ComboBox)
Комбинированный список объединяет поле редактирования (Edit) и простой список (ListBox), поэтому имеет общие
с ними свойства. Комбинированный список разрешает пользователю:
Рис. 30.
– просматривать и выбирать строки текста;
Компонент
– редактировать строки на этапе выполнения;
ComboBox
– сворачивать или разворачивать строки списка.
Комбинированный список не разрешает пользователю:
– выполнять разбиение строк на колонки;
– осуществлять пользователем множественный выбор.
32

33.

Свойства компонента ComboBox:
Большая часть свойств комбинированного списка повторяется для
компонентов ListBox и Edit. Отметим отличительные черты данного
компонента.
Style – перечислимое – задает стиль списка. Некоторые значения:
– csDropDown – раскрывающийся список с полем редактирования;
– csSimple – поле редактирования с постоянно раскрытым списком;
– csDropDownList – раскрывающийся список; в поле редактирования
нельзя изменять выбранную строку.
int DropDownCount – определяет максимальное количество элементов в выпадающем списке. Если элементов в списке больше, чем указано в свойстве, то появляется вертикальная полоса прокрутки.
String Text – содержит текст в поле редактирования. Обычно в начале работы в него помещают первый элемент из списка программной
строчкой:
Form1→ComboBox1→Text=Form1→ComboBox1→Items→Strings[0];
int MaxLength – максимальное число символов в поле редактирования. По умолчанию 0, что указывает на отсутствие ограничений.
int ItemIndex – индекс выбранной пользователем строки списка.
Если в окне проводилось редактирование данных, то свойство равно -1.
CharCase – перечислимое – определяет, будет ли текст преобразовываться в строчные или прописные. Может принимать значения:
– ecNormal – остаются без изменения;
– ecUpperCase – преобразование к прописным;
– ecLowerCase – преобразование к строчным.
bool AutoComplete – если свойство имеет значение
true
, то пользователь быстро по первым буквам находит нужную строку в списке.
События компонента ComboBox:
OnDropDown – возникает при открытии списка.
OnCloseUp – возникает при закрытии списка, но не наступает при
редактировании текста.
OnSelect – возникает при выборе элемента из выпадающего списка.
OnChange – возникает при любом изменении текста в списке:
при редактировании (при вводе каждого символа) или при выборе
строки из списка. Сам вводимый символ в событии получить нельзя. Для анализа вводимого символа лучше воспользоваться событием
OnKeyDown.
Пример: добавить новую строку в список из строки редактирования.
33

34.

void __fastcall TForm1::ComboBox1KeyPress(TObject *Sender, char &Key)
{
if (Key==VK_RETURN)
//Нажата клавиша Enter
Form1→ComboBox1→Items→Add (Form1→ComboBox1→Text);
}
17. МНОГОСТРОЧНЫЕ ОКНА РЕДАКТИРОВАНИЯ
Компоненты Memo и RichEdit являются окнами редактирования
многострочного текста, обладающие функциями упрощенных текстовых редакторов. В них применяются типичные комбинации «горячих»
клавиш при работе с буфером, при отмене последней команды редактирования и другие. Текст в компонентах можно просматривать и редактировать как на этапе проектирования приложения, так и при выполнении приложения программными строчками. Отличаются компоненты
возможностью форматирования теста.
17.1. Простой редактор (Memo)
Компонент находится на вкладке Standart. Формат всего текста в Memo одинаков и определяется свойством Font.
if (FontDialog1→Execute ()) Memo1→Font=FontDialog1→Font;
Рис. 31.
Компонент
Memo
При сохранении текста из Memo, файл будет содержать
только символы без элементов форматирования. При переносе текста в Memo
формат определяется текущим значением свойства Font.
Свойства компонента Memo:
TStrings Lines   – содержит строки текста компонента. Для этого
свойства действуют все свойства и методы класса TStrings, изложенные
в Приложении №7.
Memo1→Lines→LoadFromFile (“Exampl.txt”);
Memo1→Lines→Strings[0]="Пример1";
Memo1→Lines→Add (“Пример3”);
//Загрузить текстовый файл
//Задать первую строку текста
//Добавить новую строку
Задать текст можно заранее при проектировании с помощью строкового редактора, вызываемого из окна Инспектора объектов двойным
щелчком в области значения свойства Lines.
int Count – число строк в тексте. Значение доступно только для
чтения.
String Text – свойство хранит все строки текста компонента в виде
одной целой строки, разделенной символами \r\n, вставляемые при
34

35.

нажатии клавиши [
Enter
]. Поэтому видимых пользователю символов в строке будет меньше, чем их реально содержится в строке Text.
Свойства SelLength, SelStart, SelText – определяют длину, позицию начала и сам выделенный текст. Если выделенного текста нет, то свойство
SelStart определяет текущее положение курсора.
bool ReadOnly – если значение свойства равно true, то текст в Memo
нельзя редактировать. По умолчанию false, т.е. можно изменять.
bool Modified – если значение свойства равно true
, то в текст компонента Memo
вносились изменения, что можно использовать для проверки сохранения информации на диск. Вначале значение свойства надо задать равным false.
Aligment – определяет выравнивание текста внутри компонента.
Может принимать значения:
– taLeftJustify – выравнивание по левой границе;
– taCenter – выравнивание по центру;
– taRightJustify – выравнивание по правой границе.
TPoint CaretPos – указывает позицию курсора (номер строки и номер символа в строке, нумерация с 0) внутри клиентской области компонента. Тип TPoint соответствует структуре с полями: x – положение
курсора по горизонтали (символ в строке) и y – положение курсора по
вертикали (номер строки).
Form1→Panel1→Caption=IntToStr (Memo1→CaretPos.y+1) + «:» +
IntToStr (Memo1→CaretPos.x+1);
Свойство доступно как для чтения, так и для записи, что вызывает
изменение положения курсора программным способом. Однако, изменять по отдельности поля
x
и y
нельзя; разрешается присваивать целиком запись. Например:
Memo1→CaretPos=Point (1, 1);
//Во 2-ю позицию 2-ой строки
Memo1→CaretPos=Point (0, Memo1→CaretPos.y); //В начало текущей строки
Font – определяет атрибуты шрифта всего текста компонента.
Color – задает цвет фона компонента.
ScrollBars – определяет наличие полос прокрутки текста в окне.
Может принимать значения:
– ssNone – нет линеек прокрутки;
– ssHorizontal – есть горизонтальная линейка прокрутки;
– ssVertical – есть вертикальная линейка прокрутки;
–  ssBoth – есть обе линейки прокрутки: горизонтальная и вертикальная.
35

36.

bool WantTabs  – определяют реакцию на клавишу [Tab]. Если
свойство равно true, то разрешено вводить в текст символ табуляции.
Если свойство равно false, то нажатие пользователем клавиши [Tab]
переведет фокус на очередной компонент, символ табуляции в текст
не добавится.
bool WantReturn– определяют реакцию на клавишу [
Enter
] – перевод на новую строку или щелчок по кнопке с фокусом.
bool WordWrap – указывает на перенос длинных строк при достижении правой границы компонента. При значении false перенос строки
происходит в месте нажатия [Enter].
Методы компонента Memo
void Clear () – очистка поля Memo;
Методы для выделения строк текста в Memo:
void SelectAll () – выделение содержимого поля Memo;
void ClearSelection () – удаление выделенных строк;
Методы работы с буфером обмена:
void CopyToClipboard () – копирование выделенного фрагмента в
буфер;
void CutToClipboard () – вырезание фрагмента с сохранением в
буфере;
void PasteFromClipboard () – вставка содержимого буфера обмена.
Методы работы со списком действий:
void ClearUndo () – очищает буфер отмены команд редактирования,
так что никакие изменения в тексте после этого не могут быть отменены;
void Undo () – отменяет все изменения, хранившиеся в буфере отмены результатов редактирования с момента последнего вызова
ClearUndo().
Основное событие OnChange – изменение текста в компоненте.
17.2. Расширенный редактор (RichEdit)
Рис. 32.
Компонент
RichEdit
36
Компонент находится на вкладке Win32. Компонент работает с текстом формата RTF. Имеет все свойства компонента Memo
и добавляет свои свойства, связанные с формати
рованием отдельных фрагментов текста. Используется, когда надо оформить текст различными шрифтовыми настройками. Дополнительные свойства, связанные с форматированием, доступны только программными строчками.

37.

Свойства компонента RichEdit:
SelAttributes – сложное свойство – задает атрибуты выделенного или
вновь вводимого фрагмента текста. Имеет подсвойства: Color (цвет),
Name (имя шрифта), Size (размер), Style (стиль) и ряд других. Методом
Assign () можно задать это свойство с помощью компонента FontDialog
if (FontDialog1→Execute())
//Вызвать диалог
RichEdit1→SelAttributes→Assign (FontDialog1→Font);
RichEdit1→SetFocus ();
DefAttributes – сложное свойство – атрибуты текста по умолчанию.
Эти атрибуты действуют до изменения свойства SelAttributes
. Но значения атрибутов в DefAttributes сохраняются и в любой момент методом
Assign
() могут быть присвоены свойству SelAttributes
, чтобы вернуться к прежнему стилю.
Paragraph – сложное свойство – определяет атрибуты текущего абзаца, т.е. абзаца, где находится курсор. Имеет подсвойства:
–  Alignment – выравнивание текста (taLeftJustify, taCenter,
taRightJustify);
– FirstIndent – число пикселей отступа красной строки;
– Numbering – маркер в начале абзаца (
nsNone
– отсутствие, nsBul
let – есть);
– LeftIndent – отступ в пикселях от левого поля;
– RightIndent – отступ в пикселях от правого поля;
– TabCount – количество позиций табуляции (при WantTabs=true);
– Tab – значение позиций табуляции в пикселях (при WantTabs=true).
if (CheckBox1→Checked==true)
//Флажок включен
RichEdit1→Paragraph→Numbering=nsBullet; //Маркер
else RichEdit1→Paragraph→Numbering=nsNone; //Нет маркера
Пример: Форматирование анкеты сотрудника
RichEdit1→Clear();
RichEdit1→Paragraph→Alignment=taCenter;
//Выравнивание по центу
//Установка жирного шрифта
RichEdit1→SelAttributes→Style=RichEdit1→SelAttributes→Style<<fsBold;
RichEdit1→Lines→Add ("Сотрудник"+Edit1→Text);
//Восстановление атрибутов по умолчанию
RichEdit1→SelAttributes→Assign (Form1→RichEdit1→DefAttributes);
RichEdit1→Paragraph→Alignment=taLeftJustify; //Выравнивание слева
RichEdit1→SetFocus ();
37

38.

18. ДИАЛОГИ СОХРАНЕНИЯ ФАЙЛА (SAVEDIALOG) И
ОТКРЫТИЯ ФАЙЛА (OPENDIALOG)
Рис. 33. Компоненты
OpenDialog и SaveDialog
Компоненты являются невизуальными и находятся на вкладке Dialogs. Метод Execute() отображает стандартные диалоги Windows открытия
и сохранения файлов. При успешном закрытии
диалога, Execute() возвращает true и в свойство
FileName записывается имя выбранного файла.
Основные свойства компонентов OpenDialog и SaveDialog:
String FileName – указывает имя и полный путь файла, выбранного
в диалоге. Является результатом работы диалога. Часто используется в
командах открытия файла или в методах класса TStrings: SaveToFile() и
LoadFromFile().
Рис. 34. Компоненты SaveDialog с заданным свойством FileName
String s;
Form1->SaveDialog1->FileName=”File1.txt”; //Имя файла по умолчанию
if (Form1->SaveDialog1->Execute())
//Активизировать диалог
{
s=Form1->SaveDialog1->FileName;
//Получить полное имя файла
Form1->Memo1->Lines->LoadFromFile(s); //Загрузить текст файла
}
String Title – заголовок окна.
String InitialDir – имя папки, содержимое которой отображается при
загрузке диалога. Если свойство не задано, то отображается содержимое текущей папки.
String DefaultExt  – расширение имени файла, добавляемое к введенному имени файла по умолчанию. Если свойство не задано, поль38

39.

зователь должен сам вводить расширение вместе с именем файла. Если
свойство задано, то расширение имени файла указывать не желательно.
String Filter – маска имен файлов, отображаемых в списке Тип файла. Фильтр есть строка, разделенная на значения символом «|». Каждое
значение состоит из фильтра и маски, которое между собой так же разделены «|». Фильтр – это обычный текст (можно на русском языке), который поясняет пользователю данную маску. Маска – шаблон отображения
файлов и состоит из имени (или *) и расширения. Если для одного фильтра используется несколько масок, то они разделяются символом «;».
Например: отобразить текстовые файлы (расширения txt и doc) и
все файлы.
Form1→SaveDialog1→Filter="Текстовые|*.txt;*.doc;*.rtf|Все|*.*";
Фильтр обычно создается при
проектировании
приложения
с помощью Редактора фильтра
(Filter Editor), который вызывается в окне Инспектора объектов
щелчком напротив свойства Filter.
Окно Редактора фильтра состоит из двух столбцов с заголовками: Filter Name и Filter. Значения
фильтра вводятся построчно,
при этом в левом столбце (Filter
Name) указывается фильтр, в пра- Рис. 35. Окно Редактора фильтров
вом столбце (Filter) – маска.
int FilterIndex – номер текущей маски из списка значений в свойстве Filter. По умолчанию FilterIndex=1, что означает выбрать из свойства Filter первую маску.
Options – свойство используется для настройки более 20 параметров, задающих внешний вид и функциональные возможности диалога.
Параметры представляются флажками. Перечислим некоторые из них:
– ofAllowMultiSelect – позволяет пользователю выбирать несколько
файлов;
– ofCreatePrompt – при вводе несуществующего файла выдается запрос на его создание;
– ofOverwritePrompt – запрашивает подтверждение при сохранении
существующего файла;
– ofShowHidden – делает невидимые файлы видимыми в диалоге;
39

40.

– ofNoLongNames – имена файлов отображаются как короткие.
TStrings Files – содержит список выбранных файлов в диалоге, если разрешен множественный выбор файла (включена опция
ofAllowMultiSelect).
Пример: Отобразить количество и сами выделенные файлы в Memo
if (!(OpenDialog1→Options.Contains(ofAllowMultiSelect))) //Проверка опции
OpenDialog1→Options<<ofAllowMultiSelect;
//Включить опцию
Form1→Memo1→Clear();
if (Form1→OpenDialog1→Execute())
//Вызов диалога
{ Label1→Caption="Количество"+IntToStr (OpenDialog1→Files→Count);
Form1→Memo1→Lines→AddStrings (Form1→OpenDialog1→Files);
}
19. СПЕЦИАЛИЗИРОВАННЫЕ СПИСКИ
Система C++ Builder имеет несколько специализированных списков.
Рассмотрим два из них, которые используются для работы с файловой системой и располагаются на вкладке Win 3.1. Основные события: OnClick
и OnChange, подробно рассмотренные в предыдущих компонентах.
19.1. Список дисководов (DriveComboBox)
Используется для установки нужного текущего диска. Представляет
собой комбинированный список, содержащий все установленные в системе дисковые накопители. Компонент
имеет свойства компонента ComboBox (Items, ItemsIndex,
Text и др.), но имеет и дополнительные к ним:
Рис. 36.
char Drive – выбранный диск. Если диск отсутствует
Компонент
DriveComboBox в системе, то команда присвоения игнорируется.
DirList – используется для связи с компонентом DirectoryListBox,
чтобы при смене диска в компоненте DriveComboBox
происходило обновление содержимого компонента DirectoryListBox.
19.2. Список папок (DirectoryListBox)
Рис. 37.
Компонент
DirectoryListBox
40
Используется для просмотра и перемещения по дереву каталогов. Компонент имеет свойства компонента
ListBox
(
Items
,
ItemsIndex
,
Columns
и др.), но имеет и дополнительные:
String Directory – текущий каталог. Доступно только
при выполнении приложения для чтения и записи.

41.

DirLabel – отображает текущий каталог в компоненте Label
, который необходимо установить на форму и выбрать его в этом свойстве.
Длина строки не более 24 символов. Если название текущего каталога
больше 24 символов, то начальная часть пути заменяется «…».
char Drive – буква текущего диска. Свойство используется для связи с компонентом DriveComboBox. Обычно это свойство изменяют у
DirectoryListBox при возникновении событии OnChange компонента
DriveComboBox
. Если выбрать недоступный диск, то возникает аварийное завершение приложения, т.к. в этом случае невозможно отобразить
в компоненте DirectoryListBox
дерево папок. В этом случае надо использовать конструкцию try.
void __fastcall TForm1::DriveComboBox1Change(TObject *Sender)
{ try
{ Form1->DirectoryListBox1->Drive=Form1->DriveComboBox1->Drive;
catch (...)
{ ShowMessage(“Вы выбрали недоступный диск”); }
}
}
20. ТАБЛИЦА (STRINGGRID)
Рис. 38.
Компонент
StringGrid
Компонент StringGrid находится на вкладке Additional
и предназначен для отображения текстовой и графической
информации в табличной форме. Данные в таблице можно
редактировать во время выполнения приложения. Таблица
может иметь нужное количество фиксированных верхних
строк и левых столбцов – заголовки строк и столбцов. Они
могут выделяться цветом и при прокрутке информации в таблице остаются неподвижными.
Свойства компонента StringGrid:
String Cells[столбец][строка] – доступ к ячейки таблицы для чтение или записи информации. Строки и столбцы нумеруются с 0. Меняя
в цикле номера строк и столбцов, можно обработать всю таблицу.
Обращение к несуществующей ячейки не приводит к ошибке, но операции с ячейкой не происходит. Свойство доступно только при выполнении программы.
int ColCount, RowCount  – количество столбцов и строк таблицы.
Свойство используется для организации циклов по перебору всех строк
и столбцов.
for (i=0; i<Form1→StringGrid1→ColCount; i++)
//Номера всех столбцов
41

42.

При выполнении программы можно менять количество строк и столбцов таблицы (необходимо включить опцию goEditing в свойстве Options).
Form1→StringGrid1→RowCount++;
//Добавить новую строку
int FixedCols, FixedRows – определяет число фиксированных столбцов и строк таблицы (по умолчанию 1). Если таблица не имеет заголовочной информации, то значения этих свойств равно нулю.
int Row, Col – указывает номер строки и столбца выбранной ячейки
таблицы. Свойство доступно как для чтения, так и для записи, что приводит к перемещению фокуса ввода по клеткам таблицы.
TStrings Cols[Index], Rows[Index]  – доступ ко всем элементам
столбца Index и ко всем элементам строки Index, в том числе и фиксированных. Позволяет выполнять действия сразу с целым столбцом или
строкой. Работают методы стандартного класса TStrings (Приложение
№7 пособия).
Например: очистить последний столбец
Form1→StringGrid1→Cols[Form1→StringGrid1→ColCount-1]→Clear();
Пример: Удаление строки с выделенной ячейкой:
//Подъем вверх всех строк таблицы от текущей строки и ниже
for (i=Form1→StringGrid1→Row; i<Form1→StringGrid1→RowCount-1; i++)
Form1→StringGrid1→Rows[i]=Form1→StringGrid1→Rows[i+1];
//Удаление последней строки таблицы
Form1→StringGrid1→RowCount--;
int DefaultColWidth, DefaultRowHeight  – размеры всех ячеек таблицы.
int ColWidths[Index], RowHeights[Index] – размеры в пикселях ширины столбца и высоты строки с номером Index.
Color, FixedColor  – цвет фона нефиксированных и фиксированных
ячеек.
int GridLineWidth – толщина линии сетки в пикселях (по умолчанию 1). При значении 0 сетка не отображается.
int GridWidth, GridHeight  – размер всей таблицы в пикселях.
Вычисляется как размер всех клеток плюс ширина сетки. Свойства
Width и Height задают размер самого компонента StringGrig. Эти значения могут не совпадать. При необходимости появляются полосы прокрутки (свойство bool ScrollBars).
Options – настройка параметров таблицы. Свойство имеет подсвойства, которые могут принимать значения true – свойство установлено и
false – свойство сброшено. Перечислим некоторые из них:
42

43.

– goFixedVertLine, goFixedHorzLine – отображение для фиксированных элементов таблицы вертикальной и горизонтальной линий сетки;
– goVertLine, goHorzLine – наличие сетки для нефиксированных элементов;
–  goRangeSelect  – разрешить пользователю изменять размер ячеек
(при goEditing=false);
– goDrawFocusSelected – выбранная ячейка таблицы выделяется прямоугольной рамкой и цветом;
– goRowSizing, goColSizing – можно изменять высоту строк и ширину столбцов в таблицы;
– goRowMoving, goColMoving – можно перемещать строки и столбцы с данными с помощью мыши;
– goEditing – пользователю можно редактировать данные;
–  goTab  – допускается перемещение между ячейками с помощью
клавиш Tab и Shift+Tab;
– goRowSelect – можно выбрать всю строку (true) или ячейку (false);
– goAlwaysShowEditor – сетка не блокирует режим редактирования;
– goThumbTracking – будут ли данные прорисовываться, пока пользователь перемещает полосу прокрутки, а не только после отпускания
бегунка прокрутки.
StringGrid1→Options<<goEditing; //Включить возможность редактирования
События компонента StringGrid:
Компонент может реагировать на 27 различных событий. Отметим
только специализированные события для компонента StringGrid.
OnSelectCell(TObject *Sender, int ACol, int ARow, bool
&CanSelect)  – возникает при выборе ячейки. Параметры ACol и
ARow содержат номера столбца и строки выбранной ячейки. При
CanSelect=false запрещается выбор (выделение) ячейки таблицы, иначе
можно выбирать ячейки таблицы (по умолчанию).
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect)
{
Form1→Label1→Caption=«Ячейка»+IntToStr(ARow)+«:»+IntToStr(ACol)+
«.Текст: »+Form1→StringGrid1→Cells[ACol][ARow];
}
OnSetEditText(TObject *Sender, int ACol,int ARow, const AnsiString
Value)  – возникает при редактировании пользователем содержимого
ячейки в позиции ACol, ARow. Параметр Value содержит новое значение ячейки.
43

44.

21. ОРГАНИЗАЦИЯ МЕНЮ
Меню есть список объединенных по функциональному признаку
пунктов, каждый из которых обозначает команду или вложенное меню.
Компоненты располагаются на вкладке Standart Палитры компонентов. В приложениях C++ Builder меню бывает двух типов:
главное меню (компонент MainMenu); оно принадлежит форме и
располагается под ее заголовком;
всплывающее (контекстное, локальное) меню (компонент
PopupMenu); оно может быть у всех визуальных компонентов и появляется при нажатии правой кнопки мыши на компоненте.
21.1. Главное меню (MainMenu)
Рис. 39.
Компонент
MainMenu
Форма имеет свойство Menu, в которое автоматически
записывается компонент главного меню MainMenu1 при
размещении его на форме. Если в ходе выполнения приложения форма должна отображать различные меню, то через свойство Menu
можно указать ссылку на нужный компонент:
Form1→Menu=Form1→MainMenu2;
Создание структуры меню
Компонент TMainMenu имеет
встроенный Редактор меню, с помощью которого строиться схема меню.
Вызывается Редактор меню двойным
щелчком на компоненте TMainMenu.
Изначально окно Редактора меню
содержит пустое меню. Ввести имя
первого пункта в редакторе (можно
Рис. 40. Создание структуры использовать свойство Caption
) и наменю
жать Enter.
Под первым пунктом появляется заготовка для ввода имени пункта подменю, справа от первого пункта – заготовка следующего пункта основного меню. Редактор меню имеет всплывающее меню с командами:
– Insert – добавить пункт меню;
– Delete – удалить пункт меню;
– Create SubMenu – создать для пункта подменю;
44

45.

– Select Menu . . . – выбрать пункт меню.
Если пункты меню не умещаются на форме в одну строку, то они переносятся на следующую строку.
Создание свойств и событий пунктам меню
Вся система меню – это взаимосвязанный набор объектов класса
TMenuItem – пунктов меню, где которому пункту можно задавать свои
свойства и события.
Основные свойства пунктов меню:
String Caption – название пункта меню, который видит пользователь;
можно указывать русские названия пунктов меню. Если в качестве значения ввести символ минус, то в меню появится разделитель пунктов.
String Name – имена пунктов в программе. По умолчанию оно совпадает с названием пункта меню (свойство Caption), если название
введено латинскими буквами, и присваивает имена N
номер, если название введено русскими буквами.
String Hint – всплывающая подсказка пункта меню.
bool ShowHint – разрешение на отображение всплывающей подсказки.
bool Enabled  – признак активности пункта меню. Этим свойством
можно разрешить или запретить выполнение команд меню пользователю.
bool Visible – позволяет показать или спрятать пункт меню.
ShortCut – выбор клавиши быстрого доступа к пункту. В Инспекторе
объектов выбирается из выпадающего списка. Появляется в строке раздела меню.
bool AutoChech – разрешает появление флажка у выбранного пункта.
bool Checked – определяет, выбран пункт или нет.
Bitmap – картинка для пункта меню. Выбирается из файла.
Основным событием, связанным с пунктом меню, является событие
OnClick, которое возникает при выборе пункта меню мышью или при
нажатии горячих клавиш.
21.2. Всплывающее меню (PopupMenu)
Рис. 41.
Компонент
PopupMenu
Контекстное (всплывающее) меню появляется при нажатии правой кнопки мыши в области компонента. Поскольку
всплывающее меню отображается только по желанию пользователя, то оно не занимает место на форме. Обычно контекстное меню содержит команды, влияющие только на тот
компонент, для которого вызвано всплывающее меню, поэтому всплывающее меню называют еще локальным.
45

46.

Способ работы с локальным меню аналогичен принципам работе с
главным меню (
MainMenu
). Для того, чтобы локальное меню появлялось при щелчке правой кнопкой мыши на компоненте надо:
1. для компонента PopupMenu свойство AutoPopup задать равным true;
2. свойству PopupMenu компонента, для которого вызывается локальное меню, присвоить в качестве значения имя всплывающего меню.
Например: для формы Form1 есть всплывающее меню PopupMenu1.
Свяжем эти компоненты программными строчками:
Form1→PopupMenu1→AutoPopup=true;
Form1→PopupMenu=Form1→PopupMenu1;
22. ИНДИКАТОР ПРОЦЕССА PROGRESSBAR
Компонент расположен на вкладке Win32 и используется
для отображения хода выполнения продолжительной операции (копирования файлов, форматирования дисков и другие).
Рассмотрим основные свойства компонента.
Рис. 42.
int Min, Max – минимальное и максимальное значение
Компонент
для
диапазона индикатора (по умолчанию 0 и 100).
ProgressBax
int Step – величина шага, на который нарастает значение
свойства Position при наращивании индикатора.
int Position – позиция индикатора (текущий объем выполненных
операций) в процентном соотношении относительно свойств Min и
Max
. Доступно для чтения и записи. Свойство обычно меняют в событие таймера, для которого свойство Interval задано значением свойства
Step компонента ProgressBar.
bool Smooth – если свойство имеет значение true
, то заполнение происходит сплошной полосой, иначе – прямоугольными сегментами.
void StepIt() – метод наращивает позицию индикатора (свойство
Position) на значение свойства Step.
void StepBy (шаг) – метод наращивает позицию индикатора (свойство Position) на значение параметра шаг.
23. ШКАЛА (TRACKBAR)
Рис. 43.
Компонент
TrackBar
46
Компонент используется для выбора значения из некоторого диапазона (регулятор громкости, разрешение экрана и
другие). Свойства Min
, Max
и
Position
аналогичны компоненту ProgressBar. Дополнительные свойства:

47.

int Frequency – частота рисок (свойство
TickStyle
должно быть установлено в значение tsAuto).
bool SliderVisible – видимость движка.
Orientation – направление шкалы: trHorizontal и trVertical.
TrackMarks – позиция рисок на шкале. Может принимать значения:
– tmBoth – с обеих сторон шкалы;
–  tmBottomRight–внизу для горизонтальной или справа для вертикальной;
– tmTopLeft – вверху для горизонтальной или слева для вертикальной шкалы.
TickStyle – стиль рисок на шкале. Может принимать значения:
– tsAuto – автоматически отображать риски для каждого шага диапазона;
– tsManual – программно отображать риски методом SetTick;
– tsNone – не отображать риски.
int ThumLength – толщина движка в пикселях.
void SetTick (значение) – установить риску в любой позиции в пределах диапазона шкалы. Метод работает, если свойство
TickStyle
равно tsManual.
Основное событие – OnChange – генерируется при изменении позиции шкалы мышью, либо программно через свойство Position.
24. ГОТОВОЕ ИЗОБРАЖЕНИЕ (IMAGE)
Рис. 44.
Компонент
Image
Компонент представляет собой контейнер для отображения готового изображения определенного графического формата (типа bmb
, wmf
, ico
, jpg
и другие). Картинку можно разместить как при проектировании приложения, так и при его
выполнении. Компонент находится на вкладке Additional
Палитры компонентов.
Основные свойства компонента:
Picture  – используется для загрузки, показа и сохранения готового изображения в Image из файла. Свойство Picture доступно на этапе
проектирования. Ддвойным щелчком по нему вызывается окно загрузки картинки. Свойство Picture само является объектом, поэтому обладает своими свойствами и методами.
bool AutoSize – если свойство имеет значение
t
rue, то размер компонента Image подгоняется к размеру содержащегося в нем изображе47

48.

ния, не искажая картинку. Это не всегда бывает удобно, например, если
надо, чтобы рисунок занимал определенное положение на форме и не
смещался при маштабировании.
bool Stretch – если свойство имеет значение
t
rue, картинка подгоняется под реальный размер компонента Image, искажая при этом рисунок. Свойство не работает для изображений пиктограмм-значков (файлы с расширением ico), т.к. они не могут изменять свои размеры. Если
размеры изображения больше, чем размеры компонента Image и свойства AutoSize и Stretch равны false, то часть изображения отсекается.
bool Center – если это свойство равно true и размер компонента
больше размера рисунка, то картинка центрируется на площади Image.
bool Transparent – задает прозрачность изображения. Если принимает значение true, то изображение прозрачно, что можно использовать
для наложения изображений друг на друга. Свойство действует только
на битовые матрицы. Прозрачным считается цвет левого нижнего пикселя битовой матрицы.
bool Proportional – если свойство равно true, то при подгоне размера
рисунка (Stretch==true) сохраняются его пропорции, т.е. увеличиваются
на одинаковый масштабный множитель по высоте и ширине. Может не
занимать полностью Image либо по высоте, либо по ширине.
События компонента Image
Компонент имеет стандартный список событий: OnClick,
OnMouseUp, OnMouseDown, OnChange. Имеется особое событие
OnProgress(), которое наступает для медленных процессов изменения
графического изображения таких, как загрузка, сохранение, трансформация. Это позволяет построить в приложении индикатор хода процесса, обеспечивающий обратную связь с пользователем. Событие можно
вызвать методом Progress().
Свойства и методы свойства Picture:
int Width, Height  – задают размеры загруженного в Picture рисунка. В общем случае значения этих свойств не совпадают со значениями
свойств Width и Height для компонента Image. Они совпадут, если изображение, загруженное в компонент Image с помощью Picture, займет
его полностью.
void LoadFromFile(путь к файлу) – выполняет загрузку картинки
во время выполнения программы. Например:
Form1→Image1→Picture→LoadFromFile("Лес.bmp");
48

49.

Удобно для загрузки нужной картинки использовать стандартный диалог OpenPictureDialog, который работает аналогично диалогу OpenDialog, но отображает только графические файлы. Это
делается, например, так:
if ( Form1->OpenPictureDialog1->Execute() )
Form1->Image1->Picture->
LoadFromFile (Form1->OpenPictureDialog1->FileName);
void SaveToFile (путь к файлу) – выполняет сохранение в файле
картинки, расположенной в компоненте Image. Удобно для загрузки
нужной картинки использовать стандартный диалог SavePictureDialog,
который работает аналогично диалогу
Save
Dialog, но отображает только графические файлы. Например:
if ( Form1->SavePictureDialog1->Execute() )
Form1->Image1->Picture->
SaveToFile (Form1->SavePictureDialog1->FileName);
void Assign (объект_источник->Picture) – копирование картинок.
Можно копировать из другого компонента Image:
Form1→Image2→Picture→Assign (Form1->Image1->Picture);
Можно копировать из буфера обмена (подключить библиотеку
Clipbrd.hpp)
Form1→Image1→Picture→Assign (Clipboard()); //Из буфера в Image
Clipboard()→Assign (Form1→Image1→Picture); //В буфер из Image
25. МНОГОСТРАНИЧНЫЙ БЛОКНОТ (PAGECONTROL)
Данный компонент представляет собой набор страниц,
наложенных одна на другую, что эффективно экономит пространство формы. Расположен компонент на вкладке Win32.
Изначально компонент не имеет страниц. Вся работа со страРис. 45.
ницами компонента ведется через его локальное меню, котоКомпонент рое вызывается на этапе проектирования двойным щелчком
PageControl
по компоненту (Рис. 46).
Пункт меню «New Page» добавляет к компоненту PageControl новую
страницу. После этого на нее можно расставлять необходимые элементы
интерфейса, причем на каждой странице свои произвольные компоненты.
Как сам компонент PageControl, так и его страницы и все компоненты на них считаются принадлежащими форме. Однако положение компонентов на странице определяется относительно той страницы, на которой они располагаются.
49

50.

Свойства, методы и события компонента PageControl
int PageCount – число страниц в компоненте PageControl. Свойство доступно только программно для чтения.
int ActivePageIndex – номер открытой страницы.
int TabHeight, TabWidth – высота и ширина закладки.
TTabSheet ActivePage – доступ к активной
странице. Свойства можно использовать для
программного переключения между страницами.
Form1→PageControl1→ActivePage=TabSheet2;
Form1→PageControl1→ActivePageIndex=1;
Рис. 46. Локальное
меню компонента
для управления
страницами
Pages – массив страниц, индексация с 0.
Используется для доступа к нужной странице
для настройки ее свойств.
Form1→PageControl1→Pages[0]->Caption="Результаты";
bool MultiLine – если свойство имеет значение true, то закладки
страниц разрешено размещать в несколько рядов.
bool RaggedRight – если свойство имеет значение true, то закладки
разрешено сжимать в зависимости от ширины объекта.
bool HotTrack – если свойство имеет значение true, то при наведении
мыши на закладку страницы, заголовок закладки выделяется цветом.
bool ScrollOpposite – имеет смысл для многострочных корешков.
Если свойство имеет значение true, то строка с выбранной закладкой
перемещается в нижний ряд.
Style – определяет стиль объекта. Свойство может принимать значения:
– tsTabs – стандартный вид закладок как у многостраничного блокнота;
– tsButtons – закладки имеют вид кнопок;
– tsFlatButtons – закладки имеют вид плоских кнопок.
TabPosition – определяет расположение закладок. Возможные значения:
– tpTop – в верхней части объекта;
– tpBottom – в нижней части объекта;
50

51.

– tpLeft – в левой части объекта с вертикальным расположением названий;
– tpRight – в правой части объекта.
void SelectNextPage(bool dir) – метод активизирует следующую
(dir=true) или предыдущую (dir=false) страницу в блокноте.
int IndexOfTabAt (int x, int y) – номер закладки, которому принадлежит точка с координатами (x, y) или (-1), если такой закладки нет.
int TabRect(int Index) – пиксельные координаты прямоугольника закладки с номером Index.
OnChange (TObject Sender) – событие происходит при смене страниц компонента PageControl.
OnChanging (TObject Sender, bool AllowChange) – событие происходит перед сменой закладки. Обычно в этом событии предлагается выполнить сохранение информации на предыдущей странице, установить
начальные значения элементов на новой странице или вообще разрешают смену страниц, например, при смене страниц требуется ввод пароля. В этом случае использую параметр AllowChange. Если ему присвоить значение true, то разрешено переход на новую страницу, иначе – нет.
Каждая страница компонента PageControl является объектом класса TTabSheet, имеющего свои свойства, методы и события. Некоторые
из них:
String Caption – заголовок страницы;
int PageIndex – номер страницы в компоненте PageControl. Смена номера влияет на положение корешка страницы в компоненте PageControl.
bool TabVisible – видимость страницы и ее корешка.
bool Visible – видимость компонентов на видимой страницы.
void Show() – отобразить страницу.
void Hide() – скрыть страницу.
Можно создавать динамические страницы.
TTabSheet *p=new TTabSheet (Form1->PageControl1);
p→PageControl=Form1→PageControl1;
p→Caption=IntToStr (Form1→PageControl1→PageCount);
//Память
//Владелец
//Заголовок
Можно удалять страницы
if (Form1→PageControl1→PageCount!=0)
Form1→PageControl1→Pages[0]→Free();
//Имеются страницы
//Удалить первую
51

52.

26. ПОЛУЧЕНИЕ ДАТЫ И ВРЕМЕНИ (DATETIMEPICKER)
Компонент используется для безошибочного ввода
даты и времени по формату в соответствии с локальными
настройками Windows. Располагается на вкладке Win32.
Рис. 47.
Компонент
DateTimePicker
Основные свойства и события компонента:
Kind – определяет режим работы компонента:
– dtkDate – ввод даты;
– dtkTime – ввод времени.
DateMode – способ работы компонента:
– dmComboBox – наличие выпадающего календаря;
– dmUpDown – наличие кнопок уменьшения и увеличения.
DateFormat – формат представления дат. Может принимать значения:
– dfShort – короткий формат, например: 31.12.2000;
– dfLong – длинный формат, например: 31 декабря 2000 г. (могут возникнуть трудности при преобразовании дата в другой тип).
TDateTime Date, Time – дата и время в компоненте. Можно задать
текущими значениями:
Form1→DateTimePicker1→Date=Date();
Form1→DateTimePicker1→Time=Time();
//Текущая дата
//Текущее время
TDateTime MaxDate, MinDate – диапазоны
возможных
дат
. При
попытке пользователем задать дату вне этого диапазона, эта дата не воспринимается.
OnChange – событие возникает при изменении даты или времени
пользователем, а так же при программном изменении свойств Date и
Time.
Класс TDateTime используется для функций работы с датами и временем. Информация представляется вещественным числом, в целой части которого содержится дата, а в дробной – время от начала календаря 00 часов 30 декабря 1899 года. Объекты класса можно увеличивать,
что равносильно переходу к дате, увеличенной на это число дней, можно вычитать две даты, что равносильно количеству дней между датами
и выполнять другие операции. В модуле DateUtils.hpp имеется много
полезных функций работы с датами. Например:
int YearsBetween ( t1, t2), int MonthsBetween (t1, t2), int
DaysBetween(t1, t2) – разность полных лет, месяцев и дней между датами t1 и t2.
52

53.

int CompareDate( t1, t2), int CompareTime (t1, t2), int
CompareDateTime (t1, t2) – сравнение дат, времени, даты и времени.
TDateTime Now(), TDateTime Date(), TDateTime Time(), TDateTime
Today(), TDateTime Yesterday() – возвращает текущую дату и время,
дату, время, дату завтрашнего дня и дату вчерашнего дня.
int DayOf (t), int DayOfWeek (t), MonthOf (t), int YearOf (t) – извлекает из даты день месяца, день недели (1 – воскресенье), месяц, год.
int HourOf (t), int MinuteOf (t), SecondOf (t) – извлекает из времени час, минуты, секунды.
27. КНОПКА БЫСТРОГО ДОСТУПА (SPEEDBUTTON)
Рис. 48.
Быстрая кнопка
SpeedButton
Компонент находится на вкладке Additional и имеет много общего с графической кнопкой BitBtn. Кнопка
SpeedButton может содержать картинку на своей поверхности, которая задается в свойстве Glyph (свойство
Caption
задают пустой строкой). Компонент может использоваться как обычная кнопка, или как кнопка с фиксацией нажатого состояния.
Особенности кнопки SpeedButton:
1. Не может получать фокус ввода, т.е. при щелчке на ней фокус не
остается на этой кнопке, а возвращается к тому элементу, на котором он
был до щелчка на кнопке (отсутствуют свойства, связанные с фокусом
TabOrder и TabStop).
2. Быстрые кнопки могут объединяться в группы по общему назначению.
3. Быстрая кнопка может работать как зависимый переключатель
(RadioButton), т.е. находиться в выбранном и невыбранном состоянии
в группе.
Эти свойства быстрой кнопки позволяют использовать ее для создания панелей инструментов и дублирования пунктов меню. Для этого
используют компонент Panel, для которого в свойство Align записывают значение alTop, чтобы расположить панель в верхней части формы,
а затем на панель устанавливают нужное количество быстрых кнопок.
Для всех кнопок задают одинаковый размер. Основное событие компонента – OnClick.
Основные свойства компонента:
int GroupIndex – позволяет объединить кнопки в группы. Если
кнопка не входит ни в одну группу, это свойство равно 0 (ведет себя
53

54.

как обычная кнопка). Определяя одинаковое значение этого свойства
у разных кнопок, их можно сгруппировать. В группе кнопки работают как одно целое: когда нажата одна из них, другая кнопка отпускается. Примером зависимых кнопок может служить кнопки выравнивания
текста в Word.
bool Down – определяет, в каком состоянии находится кнопка: нажатом (утопленном, выбранном) или не нажатом. Это свойство используется только для кнопок, принадлежащих группе. Если свойство кнопки
GroupIndex равно 0, то свойство Down не устанавливается.
bool AllowAllUp – определяет поведение кнопки в группе. Если
свойство равно t
rue, то все кнопки группы могут быть не нажаты одновременно. В противном случае одна из кнопок должна находиться в нажатом состоянии. Изменение этого свойства у одной кнопки группы, изменяет его у всех остальных кнопок этой группы.
Часто требуется, чтобы быстрая кнопка находилась во включенном
состоянии и работала независимо от других кнопок. Такие кнопки используются, например, при выборе начертания шрифта в Word. Создают
одиночную кнопку в собственной группе и устанавливают ее свойство
AllowAllUp в значение true. При щелчке эта кнопка останется нажатой,
при повторном нажатии кнопка вернется к поднятому состоянию.
54

55.

ПРИЛОЖЕНИЕ № 1
ОСНОВНЫЕ МЕТОДЫ КЛАССА STRING
Метод
Описание метода
StringOfChar()
Формирует как результат строку из нужного символа необходимой длины
c_str()
Возвращает указатель на копию строки в формате С++. Используется для преобразования разных
типов строк
Length()
Возвращает длину строки
IsEmpty()
Возвращает значение true, если строка пустая
Insert()
Вставка подстроки в нужную позицию
Delete()
Удаление из строки ее части
SetLength()
Усечение строки до нужной длины
Pos()
Поиск вхождения подстроки в строку
LowerCase()
Преобразование символов строки к нижнему регистру
UpperCase
Преобразование символов строки к верхнему регистру
Trim()
Удалить начальные и конечные пробелы в строке
TrimLeft()
Удалить начальные пробелы в строке
TrimRight()
Удалить конечные пробелы в строке
SubString()
Выделить из строки подстроку с нужной позиции
и необходимой длины
55

56.

ПРИЛОЖЕНИЕ № 2
ОСНОВНЫЕ СВОЙСТВА КОМПОНЕНТОВ
Свойство
Назначение свойства
Name
Имя компонента для обращения к нему из текста программы
Caption
Строка заголовка компонента
Color
Цвет фона компонента или цвет шрифта в свойстве
Font
Cursor
Вид указателя мыши над компонентом
Font
Тип шрифта текста, выводимого на компоненте
Enabled
Доступность компонента для пользователя
Visible
Видимостью компонента для пользователя
Hint
Текст подсказки при наведении курсора мыши на
компонент
ShowHint
Разрешение отображения подсказки
Align
Способ выравнивания компонента внутри формы
Height
Высота компонента или высота шрифта в свойстве
Font
Width
Ширина компонента или ширина шрифта в свойстве
Font
Left
Координата левого края компонента относительно
формы
Top
Координата верхнего края компонента относительно
формы
TabOrder
Порядок перехода фокуса при нажатии клавиши Tab
TabStop
Возможность передачи фокуса пользователем клавишей Tab
Tag
Вспомогательное свойство, по усмотрению программиста
56

57.

ПРИЛОЖЕНИЕ № 3
ОСНОВНЫЕ СОБЫТИЯ КОМПОНЕНТОВ
Событие
Параметры
Описание
OnClick
Щелчок мышью на компоненте
OnDblClick
Двойной щелчок на компоненте
OnMouseDown
TMouseButton
Button,
TShiftState Shift,
int X, int Y
Нажатие кнопки мыши
Button –
какая
кноп
ка нажата: (mbLeft,
mbRight, mbMiddle)
Shift – нажатие тригерной клавиши на клавиатуре:
(ssShift, ssAlt, ssCtrl,
ssLeft, ssRight, ssMiddle,
ssDouble)
X, Y – координаты мыши
OnMouseUp
TMouseButton
Button,
TShiftState Shift,
int X, int Y
Отпускание кнопки
мыши.
Значение параметров
аналогичны событию
OnMouseDown
OnMouseMove
TMouseButton
Button,
int X, int Y
Перемещение мыши.
Значение параметров
аналогично событию
OnMouseDown
OnMouseWheel
TShiftState Shift,
int WheelDelta,
TPoint
&MousePos, bool
&Handled
Вращение колесика
мыши.
WheelDelta – количество
поворотов колесика
MousePos – позиция
мыши
Handled – разрешение на
автоматическое событие
57

58.

Событие
Параметры
Описание
OnMouseWheelDown TShiftState Shift,
TPoint
&MousePos, bool
&Handled
Вращение вниз колесика.
Значение параметров
аналогично событию
OnMouseWheel
OnMouseWheelUp
TShiftState Shift,
TPoint
&MousePos, bool
&Handled
Вращение вверх колесика.
Значение параметров
аналогично событию
OnMouseWheel
OnKeyPress
char &Key
Нажатие символьной
клавиши на клавиатуре.
Key – символ нажатой
клавиши
OnKeyDown
WORD &Key,
TShiftState Shift
Нажатие произвольной
клавиши на клавиатуре.
Key – код нажатой клавиши
OnKeyUp
WORD &Key,
TShiftState Shift
Отпускание
произволь
ной
клавиши
на
клави
атуре. Параметры как в
событии OnKeyDown
OnEnter
Получение фокуса
OnExit
Потеря фокуса
58

59.

ПРИЛОЖЕНИЕ № 4
ВИРТУАЛЬНЫЕ КОДЫ ОСНОВНЫХ КЛАВИШ
Константа клавиши
Описание клавиши
VK_CANCEL
Control+Break
VK_BACK
Backspace key
VK_TAB
Tab key
VK_RETURN
Enter key
VK_SHIFT
Shift key
VK_CONTROL
Ctrl key
VK_MENU
Alt key
VK_PAUSE
Pause key
VK_CAPITAL
Caps Lock key
VK_ESCAPE
Esc key
VK_SPACE
Space bar
VK_PRIOR
Page Up key
VK_NEXT
Page Down key
VK_END
End key
VK_HOME
Home key
VK_LEFT
Left Arrow key
VK_UP
Up Arrow key
VK_RIGHT
Right Arrow key
VK_DOWN
Down Arrow key
VK_SNAPSHOT
Print Screen key
VK_INSERT
Insert key
VK_DELETE
Delete key
VK_NUMPAD0 ÷
VK_NUMPAD9
0 key (numeric keypad) ÷ 9 key (numeric
keypad)
VK_MULTIPLY
Multiply key (numeric keypad)
VK_ADD
Add key (numeric keypad)
VK_SEPARATOR
Separator key (numeric keypad)
59

60.

Константа клавиши
Описание клавиши
VK_SUBTRACT
Subtract key (numeric keypad)
VK_DECIMAL
Decimal key (numeric keypad)
VK_DIVIDE
Divide key (numeric keypad)
VK_F1÷ VK_F24
F1 key÷ F24 key
VK_NUMLOCK
Num Lock key
VK_SCROLL
Scroll Lock key
VK_LSHIFT
Left Shift key
VK_RSHIFT
Right Shift key
VK_LCONTROL
Left Ctrl key
VK_RCONTROL
Right Ctrl key
VK_LMENU
Left Alt key
VK_RMENU
Right Alt key
60

61.

ПРИЛОЖЕНИЕ №5
ФУНКЦИИ ПРЕОБРАЗОВАНИЯ
Изложенные ниже команды используются для преобразования вводимой и выводимой информации из строкового типа в числовой. В качестве разделителя целой и дробной частей вещественных чисел используется символ, который указывается в стандартной переменной
DecimalSeparator типа char.
Строка=IntToStr (целое) – преобразование целого числа в строку;
Строка=IntToHex (целое, ширина) – преобразование целого числа
в строку в шестнадцатеричном представлении. Параметр ширина задает минимальное количество цифр в строке.
Строка=FloatToStr (вещественное)  – преобразование из вещественного числа в строку;
Строка=FloatToStrF (вещественное, формат, поле, точность)  –
преобразование вещественного числа в строку с указанием формата преобразования. Параметр формат определяет способ изображения
числа в строке. Наиболее часто используемые значения:
– ffGeneral – основной формат;
– ffFixed – фиксированный формат –ddd.ddd…
Параметр поле указывает ширину поля для числа. Параметр точность – количество цифр в дробной части. Дробная часть может разделяться либо точкой, либо запятой. Это зависит от значения глобальных
переменных DecimalSeparator и ThousandSeparator (разделитель тысяч).
Целое=StrToInt (Строка) – преобразование строки в целое число.
Если в строке имеются недопустимые для преобразования символы,
вызывается исключение (аварийное завершение программы).
Целое=StrToIntDef (Строка, Целое_по_умолчанию) – преобразование числа в строку. Если строка содержит недопустимые символы, то
функция возвращает как результат значение параметра Целое_по умолчанию.
Вещественное=StrToFloat (Строка) – преобразование строки в вещественное значение. В строке должны содержаться допустимые символы для вещественного числа, иначе вызывается исключение.
Вещественное=StrToFloat
Def
(Строка, Вещественное_по_умолчанию)  – преобразование строки в вещественное число. При недопустимых символах в строке как результат возвращается значение
Вещественное_по_умолчанию.
61

62.

ПРИЛОЖЕНИЕ №6
ФУНКЦИИ ДАТЫ И ВРЕМЕНИ
Стандартный класс TDateTime используется для работы с текущей
датой и временем. Дата и время представляется вещественным числом,
целая часть которого содержит число дней от начала календаря (00 часов 30 декабря 1899 года), дробная часть – части 24-часового дня, т.е.
содержит только время.
Функции для получения текущей даты и времени:
TDateTime Date() – возвращает текущую дату;
TDateTime Now() – возвращает текущую дату и время;
TDateTime Time() – возвращает текущее время;
void DecodeDate (TDateTime t, Word y, Word m, Word d) – разбивает дату t на отдельные компоненты: год y, месяц m и день d;
void DecodeTime (TDateTime t, Word h, Word m, Word s, Word
ms) – разбивает время t на отдельные компоненты: час h, минуты m, секунды s, миллисекунды ms;
TDateTime EncodeDate (Word y, Word m, Word d) – формирует
дату из отдельных компонент: y – года, m – месяца, d – дня;
TDateTime EncodeTime (Word h, Word m, Word s, Word ms) – формирует время из отдельных компонент: h – часа, m – минут, s – секунд,
ms – миллисекунд;
Word DayOfWeek (TDateTime t) – возвращает номер дня недели
указанной даты t: 1 – воскресенье, 2 – понедельник и т.д. 7- суббота.
bool IsLeapYear (Word y) – определяет, является ли год
y
високосным.
Функции преобразования текущей даты и времени в строку:
String DateToStr (TDateTime t) – преобразует дату t строку;
String TimeToStr (TDateTime t) – преобразует время t в строку;
String DateTimeToStr (TDateTime t) – преобразует дату и время t
в строку.
TDateTime StrToDateTime (String s) – преобразует строку, изображающую дату и время, в тип даты. Строка s должна содержать допустимую дату: месяц, день и год; время: час, минуты и секунды. Дата и время должны разделяться между собой пробелом. Разделяться составляющие даты должны символом, содержащимся в стандартной переменной DateSeparator (по умолчанию точка). Разделяться составляющие
времени должны символом, содержащимся в стандартной переменной
TimeSeparator (по умолчанию двоеточие).
62

63.

TDateTime StrToDate (String s) – преобразует строку s, изображающую дату, в тип даты.
TDateTime StrToTime (String s) – преобразует строку s, изображающую время, в тип времени.
TDateTime StrToDateTimeDef (String s, TDateTime t) –
преобразует строку s
в
тип
даты
.
Если преобразование не удалось, то возвращается дата t.
63

64.

ПРИЛОЖЕНИЕ №7
СВОЙСТВА И МЕТОДЫ КЛАССА TSTRINGS
Стандартный класс TStrings используется в компонентах, в которых
информация поделена на строки, т.е. имеющих текстовую область. К таким компонентам относят многострочные редакторы (Memo, RichEdit),
списки (
ListBox
,
ComboBox
), контейнеры (
RadioGroup
) и другие компоненты.
Свойства класса TStrings
int Count – количество строк в объекте, доступно только для чтения.
Автоматически меняется при срабатывании методов класса TStrings.
String Strings[индекс] – динамический массив строк, хранит набор
строк в компоненте. К любой строке можно обратиться по ее индексу,
начиная с 0. При обращении к несуществующей строке вызывает исключение.
String Text – объединяет все строки в одну, разделяя их символами
«\r\n».
Методы класса TStrings
int Add (строка) – добавляет строку в конец набора данных объекта. Возвращается номер добавленной строки в набор.
void AddStrings (набор строк) – добавляет в конец имеющегося набора строк дополнительные строки из другого набора, указанного в параметре.
void Assign (набор строк) – копирование строк источника (параметр) в другой объект с заменой содержимого. Если размеры объектов
не совпадают, то результирующий набор имеет количество строк копируемого набора.
void Clear () – метод удаляет все строки из объекта.
void Delete (номер) – метод удаляет из объекта строку под указанным номером. При попытке удаления несуществующей строки сообщение об ошибке не выводится, но метод не срабатывает.
bool Equals (набор строк) – метод сравнивает строки собственного набора со строками указанного набора. Возвращает true
при совпадении списков.
void Exchange (номер1, номер2) – метод меняет местами в объекте
строки, указанные своими номерами.
void Move (номер1, номер2) – метод перемещает строку под номером1 на место с номером2. Если номера выходят за пределы набора, то
возникает исключение.
64

65.

int IndexOf (строка) – метод поиска строки в наборе. Если строка
найдена, то возвращается ее индекс (начиная с 0), иначе -1.
void Insert (номер, строка) – метод добавляет в набор новую строку под указанным номером. При этом все строки объекта, находящиеся
под этим номером и ниже, смещаются вниз.
void LoadFromFile (“имя файла”) – метод загружает из текстового
файла строки в набор объекта, замещая его прежнее содержимое. Если
заданный файл отсутствует на диске, то возникает исключение.
void SaveToFile (“имя файла”) – метод сохраняет в текстовом файле строки набора объекта. При отсутствии указанного файла на диске,
он создается.
65

66.

СПИСОК ЛИТЕРАТУРЫ
1. Архангельский А.Я. Программирование в C++ Builder.7-е изд. –
М.: ООО «Бином-Пресс», 2011.
2. Архангельский А.Я. Компоненты C
++
Builder
. Справочное и методическое пособие. – М.: ООО «Бином-Пресс», 2008.
3.
Шамис
В
.
А
. C++ Builder Borland Developer Studio 2006. Для
профессионалов. – СПб: Питер, 2007.
4. Бобровский С.И. Технологии C++ Builder. Разработка приложений
для бизнеса. Учебный курс. – СПб: Питер, 2007.
5. Пахомов Б.И. C/C++ и Borland C++ Builder для начинающих. – СПб:
БХВ-Петербург, 2007.
66

67.

Практическое пособие
И.А. Матысик
СПРАВОЧНИК
«Компоненты C++ Builder
для разработки интерфейса
Компьютерная верстка – М.В. Розова
Подписано в печать ___.___.2012. Формат 60х90 1/16
Гарнитура Times. Усл.печ.л. 4,19. Тираж ____ экз. Зак. ____.
Издано в ГБОУ ДПО ЦПКС “Региональный центр оценки качества
образования и информационных технологий”
190068, Санкт-Петербург, Вознесенский пр., 34, лит. А
English     Русский Rules