Новый проект создается автоматически при запуске C++
Builder. Также можно выбрать
команду File->New Application или открыть т.н.
«Хранилище новых объектов» командой File->New.
Итак, каким-то из способов мы сделали начальную программу. Теперь сделаем
что-то, преследующее банальную, но подходящую цель – решение квадратного
уравнения.
Перетащите на форму компоненты TLabel , TEdit
и TButton и разместите, как показано
на рисунке (чтобы разместить сразу несколько компонентов, нажмите на его кнопку
при нажатой клавише Shift). Чтобы модифицировать размеры
компонентов, нужно ввести соответствующие значения в
свойства Top, Left, Width, Height
Инспектора или мышью навести на угол компонента и перетащить его. Короче,
визуально.
Для изменения имени выбранного компонента используйте
свойство Name.
Чтобы модифицировать надписи этих компонентов, нужно изменить
свойство Caption в Инспекторе объектов. Для определения
обработчика события OnClick(), которое возникает при
нажатии на объект кнопкой мыши, можно пойти двумя путями: ввести имя или выбрать
его из списка доступных в правой вкладке Инспектора, или просто два раза
щелкнуть по кнопке. После этого в Редакторе откроется место для ввода кода:
Это, собственно, и есть процедура обработки события. Сюда нужно ввести
следующие строчки:
Здесь, по-моему, все понятно
- Edit1, Edit2
и Edit3 – соответствующие области ввода,
а Label6 – надпись, здесь невидимая, поскольку с нулевым
текстом, а в программе выводящая результат. Свойство Text
объектов класса TEdit содержит введенную строку. Программа
выводит полученные корни или говорит, что их нет.
Честно говоря, пример далек от совершенства – программа не контролирует,
вводятся числовые или символьные данные и при ошибке просто «вылетает». Но для
общего ознакомления подходит (наверное).
В этом примере использованы три класса компонентных объектов. Ниже приведены
наиболее необходимые и специфичные свойства объектов этих классов. Одинаковые
свойства, для экономии места, я не буду приводить по два раза. Про общие
свойства и иерархию VCL будет рассказано в следующих
шагах.
Компонент TLabel
Caption – Определяет надпись, выводимую объектом
Align – Выравнивание метки
AutoSize – Автоматическое масштабирование метки по длине
введенного текста
Enabled – Разрешена ли метка
Color – Цвет метки
Font – Стандартное свойство
типа TFont. Содержит вложенные свойства, которые
означают именно то, как они называются. Можно выбрать тип шрифта из
открывающегося по двойному щелчку диалога.
ParentFont – Определяет, нужно ли использовать шрифт
родителя по умолчанию.
Transparent – Прозрачность фона метки.
ShowAccelChar – Можно ли использовать «быструю клавишу»,
которая определяется символом после символа «&» и переводит фокус ввода на
компонент, определенный в свойствеFocusControl.
WordWrap – Автоматический перенос слов, если они не
умещаются на строке.
Компонент TEdit
Anchors – Свойство типа множество, которое определяет,
как будет изменяться длина компонента при изменении размеров формы.
PasswordChar – Отображение одного и того же символа
(например, звездочки) вместо вводимого текста. Ну, вы сами знаете, зачем это
нужно.
Text – Содержит введенную строку
типа AnsiString. Вообще, этот тип является стандартным
для VCL и будет подробно рассмотрен в дальнейшем.
Компонент TButton
OnClick – Событие, возникающее при нажатии на кнопку
клавишей мыши.
Cancel – Говорит о том, что при нажатии
клавиши ESC или закрытии дилогового окна используется
обработчик события OnClick() данной кнопки.
Default – Кнопка выбирается по умолчанию и обводится
рамкой.
Caption – Подпись на кнопке.
ModalResult – В модальных диалоговых окнах значение этого
свойства, не равное mrNone, при нажатии на кнопку
закроет окно и запишет свое значение в
свойство ModalResultформы.
PopupMenu – Контекстное меню, выходящее при нажатии на
компонент правой кнопкой мыши.
Знаете ли Вы, что абстрактный класс - это класс, содержащий хотя бы один виртуальный метод. Абстрактные классы не бывают изолированными, т.е. всегда абстрактный класс должен быть наследуемым. Поскольку у чисто виртуального метода нет тела, то создать объект абстрактного класса невозможно. Абстрактным классом можно назвать класс, специально определенный для обеспечения наследования характеристик порожденными классами.