- •Введение
- •Основные концепции объектно-ориентированного программирования
- •Принципы ооп
- •Архитектура программы при ооп
- •Объектно-ориентированные языки програм-мирования
- •Описание класса в Object Pascal
- •События и реакция на них
- •Интегрированная среда разработки
- •Интегрированная среда разработки Delphi 7: 1 – главное окно; 2 - окно Дерева объектов; 3 – окно Инспектора объектов; 4 – окно Проводника кода; 5 – окно Конструктора форм; 6 – окно Редактора кода
- •Характеристика проекта Delphi
- •Компиляция и выполнение проекта
- •Знакомство со средой программирования
- •Компонент Lable
- •Компонент Label
- •Инспектор объектов
- •Компонент Edit
- •Компонент Edit
- •Компоненты Button, BitBtn, SpeedButton
- •Примеры кнопок Button, BitBtn и SpeedButton
- •Пример приложения
- •Форма с размещенными на ней компонентами
- •Компоненты для работы с текстом
- •Строковый редактор
- •Пример работы с компонентом Memo
- •Компонент RichEdit
- •Примеры форматирования текста в компоненте RichEdit
- •Списки строк
- •Компонент ListBox
- •Пример работы со списками строк
- •Компонент ComboBox
- •Переключатели
- •Компонент CheckBox
- •Пример работы с независимыми переключателями
- •Компоненты RadioButton и RadioGroup
- •Пример работы с группой зависимых переключателей
- •Объединение элементов управления. Компонент Panel
- •Примеры различного оформления рамки панелей
- •Компоненты OpenDialog и SaveDialog
- •Диалоговое окно открытия файла
- •Редактор фильтра
- •Работа с меню
- •Компонент MainMenu
- •Конструктор меню
- •Компонент PopupMenu
- •Пример контекстного меню
- •Работа с базами данных
- •Средства для работы с базами данных
- •Создание баз данных с помощью Database Desktop
- •Окно выбора формата таблицы
- •Окно определения структуры таблицы
- •Пример структуры таблицы
- •Пример заполненной таблицы
- •Создание псевдонимов бд в bde Administrator
- •Диалоговое окно создания псевдонима бд
- •Главное окно Администратора bde
- •Компоненты для работы с бд
- •Пример приложения
- •Форма с компонентами Table, DataSource и dbGrid
- •Редактор полей таблицы
- •Пример таблицы с измененными свойствами
- •Работа с графикой
- •Пример работы с графикой
- •Лабораторное задание
- •Указания по оформлению отчета
- •Контрольные вопросы
- •Заключение
- •Библиографический список
- •Оглавление
- •394026 Воронеж, Московский просп., 14
Пример работы с независимыми переключателями
Компоненты RadioButton и RadioGroup
По своей работе компоненты RadioButton очень похожи на CheckBox. У них тоже есть свойство Checked, которое отображает их состояние, однако кнопки RadioButton представляют собой переключатели с зависимой фиксацией. Они обычно располагаются по отдельным группам, визуально выделенным на форме. Выбор переключателя является взаимоисключающим, т. е. при выборе одного переключателя другие становятся невыбранными. Delphi поддерживает автоматическое группирование переключателей. Каждый переключатель, помещенный в контейнер, включается в находящуюся на нем группу. Контейнерами обычно служат такие компоненты, как форма Form, панель Panel и группа GroupBox.
Когда в группе выбран один из зависимых переключателей, то, в отличие от независимого переключателя, его состояние нельзя изменить повторным щелчком. Отмена выбора зависимого переключателя происходит только при выборе другого переключателя из этой же группы.
Заметим, что для компонента RadioButton событие OnClick генерируется только при выборе переключателя. Повторный щелчок на переключателе не приводит к возникновению данного события.
Чтобы не добавлять вручную каждый переключатель, можно использовать компонент RadioGroup , представляющий собой группу переключателей.
Управление числом и названиями переключателей производится с помощью свойства Items типа TStrings, которое позволяет получить доступ к отдельным переключателям в группе. Это свойство содержит строки, отображаемые как заголовки переключателей. Отсчет строк в массиве начинается с нуля: Items[0], Items[1] и т. д. Для манипуляции со строками можно использовать такие методы, как Add и Delete.
Доступ к отдельному переключателю можно получить через свойство ItemIndex, содержащее номер выбранного в данной группе переключателя. По умолчанию свойство ItemIndex имеет значение –1 и ни один из переключателей группы не является выбранным.
Свойство Columns типа integer задает число столбцов, на которое разбиваются переключатели при расположении в группе (по умолчанию 1).
Например, пусть при создании формы в группу RadioGroup1 включается 6 переключателей, расположенных в две колонки; шестой переключатель становится выбранным:
// - - - - Object Pascal - - - -
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
for i := 1 to 6 do
RadioGroup1.Items.Add('Строка №' + IntToStr(i));
RadioGroup1.Columns := 2;
RadioGroup1.ItemIndex := 5;
end;
// - - - - - - - C++ - - - - - - -
void __fastcall TForm1::FormCreate(TObject *Sender)
{
for (int i = 0; i < 6; i++)
RadioGroup1->Items->Add("Строка ¹" + IntToStr(i));
RadioGroup1->Columns = 2;
RadioGroup1->ItemIndex = 5;
}
Результат работы программы приведен на рис. 13.
Пример работы с группой зависимых переключателей
Объединение элементов управления. Компонент Panel
При разработке приложения часто возникает задача объединения, или группирования, различных элементов управления. Группирование может понадобиться, например, при работе с переключателями на форме или при создании панели инструментов.
Объединение элементов выполняется с помощью специальных компонентов – контейнеров. Контейнер представляет собой компонент, который позволяет размещать на своей поверхности другие компоненты, объединяет эти компоненты в группу и становится их владельцем.
В предыдущем разделе уже был рассмотрен специализированный компонент – контейнер RadioGroup, используемый для организации группы зависимых переключателей. Для различных объектов система Delphi предлагает также набор универсальных контейнеров (группа GroupBox, панель Panel, область с прокруткой ScrollBox, фрейм Frame).
Отметим, что форма также является контейнером, с которого обычно и начинается конструирование интерфейсной части приложения. Форма – владелец всех расположенных на ней компонентов.
Компонент Panel представляет собой контейнер, в котором можно размещать другие элементы управления.
Панель имеет край с двойной рамкой внутренней и внешней. Внутренняя рамка обрамляет панель, а внешняя отображается вокруг внутренней.
Ширина каждой рамки в пикселах задается свойством BevelWidth. По умолчанию ширина рамки равна 1.
Свойства BevelInner и BevelOuter определяют вид внутренней и внешней рамки, соответственно. Каждое из этих свойство может принимать следующие значения.
bvNone – фаска отсутствует;
bvLowered – фаска утоплена;
bvRaised – фаска приподнята.
По умолчанию свойство BevelInner имеет значение bvNone, а свойство BevelOuter – значение bvRaised.
Между рамками может быть промежуток, ширина которого в пикселах определяется свойством BorderWidth. По умолчанию ширина промежутка равна нулю – промежуток отсутствует.
Примеры различного оформления рамки с помощью свойство BevelInner, BevelOuter и BevelWidth приведены на рис. 14.