logo
методическое пособие для самостоятельных работ

4.2.3. Разработка диалогового окна

В предыдущем параграфе было рассмотрено использование стандартного диалогового окна. В этом пункте рассмотрим создание собственного диалогового окна. Используем там два новых элемента управления: кнопки выбора (CheckBox) и радиокнопки (RadioButton). Оба они предназначены для определения, прежде всего, режимов работы программы. Отличие заключается в следующем. Радиокнопки предназначены для выбора из взаимоисключающих возможностей, для кнопок выбора такого ограничения нет. Другими словами, если имеем n (n>1) кнопок, то в случае радиокнопок должна быть нажата одна и только одна кнопка. В случае кнопок выбора можно выбрать от 0 до n кнопок. Название “радиокнопка”, говорят, связано с тем, что на многих радиоприемниках выбор диапазона волн осуществляется нажатием одной-единственной кнопки. Радиокнопки обычно объединяют в группу (RadioGroup), если таких групп несколько, то из каждой группы выбирают одну кнопку.

Для создания диалогового окна используем стандартное окно из галереи. Вспомним, как мы включили в свое приложение окно About! Поступим точно так же, выберем из меню Delphi последовательно Tools, Repository, Dialogs, Standard Dialog. Имеется два варианта окна Standard Dialog. Они отличаются только расположением кнопок ОК и Cancel (внизу или справа), поэтому можно выбрать любой. Окно Standard Dialog – это класс типа TOKRightDlg. Свойство FormStyle диалогового окна должно иметь значение fsMDIChild, что означает дочернее окно. На диалоговое окно занесем следующие компоненты:

В диалоговом окне уже имеются две кнопки нажатия ОК и Cancel.

Рассмотрим это подробнее. Начнем с кнопок выбора. Дадим им названия (свойство Caption) “Случай 1” и “Случай 2”. Их именами (свойство Name) по умолчанию являются CheckBox1 и 2. Не будем их менять, по этим именам можно ссылаться на них в программах. Обратим внимание на свойство “Checked”: если оно имеет значение True, то эта кнопка считается нажатой при запуске программы. Проверяя в программе значение этого свойства, можно определить, какие кнопки выбраны.

Группе радиокнопок дадим название “Выбор варианта”; именем оставим RadioGroup1. Названия и количество самих радиокнопок определяется свойством Items. Это свойство имеет три точки и для выбора значений откроем диалоговое окно, в котором набираем названия кнопок, каждое в отдельную строку. В нашем случае “Вариант 1” и “Вариант 2” (2 строки). Свойство Columns задает количество столбцов радиокнопок внутри группы, по умолчанию оно имеет значение 1, что нас устраивает. При большом количестве кнопок в группе можно предусмотреть их расположение в нескольких столбцах. Свойство ItemIndex задает номер кнопки, выбранной при запуске программы, нумерация кнопок начинается с нуля. Значение -1 означает, что ни одна кнопка не отмечена. Выберем значение 1, что означает “точку” в нижней кнопке. Проверяя в программе значение этого свойства, можно определить, какая кнопка выбрана.

Метка и строка редактирования ничем не отличаются от рассмотренных в первой главе.

На этом оформление диалогового окна завершено, приступим к реализации работы с ним. Необходимо решить следующие задачи:

В Delphi все окна могут создаваться

По умолчанию все окна создаются автоматически. Часто это нецелесообразно, потому что созданные окна, даже если они невидимы, расходуют ресурсы ЭВМ, при сложных окнах они могут быть значительными. Поэтому рекомендуют создать автоматически при запуске программы главное окно.

Для вывода формы из числа автоматически создаваемых войдем в меню Delphi, выберем пункт Project, затем Options и активизируем там окно Forms (обычно оно уже активизировано). Окно Forms показано на рис. 4.3.(а). В левой колонке приведен перечень автоматически создаваемых форм (Auto-create forms). В правой колонке перечень форм, создаваемых в ходе выполнения программы по запросу пользователя (Available forms). Выделяем мышью форму OKRightDlg и нажмем на символ >. В результате эта форма переходит в правую колонку.рис.4.3.(б).

Приступим к программированию создания диалогового окна. Создаем в пункте меню File новый подпункт New Dialog (Как его создать – см. выше!). Его реализация:

procedure TForm1.NewDialog1Click(Sender: TObject);