- •Организационная часть - 5 мин
- •Добавление новой формы
- •1. Диалоговое окно не должно позволять менять свои размеры. Для этого в свойстве BorderStyle (Стиль границы) надо выбрать любое значение, не допускающее изменения размера.
- •Компонент Флажок (tCheckBox)
- •Компонент Переключатель (tRadioButton)
- •Компонент Группа переключателей (tRadioGroup)
- •Панели и декоративные элементы
Добавление новой формы
Продолжать изучение компонентов и возможностей системы Delphi7, размещая объекты на одной форме, неудобно. Если форма перенасыщена элементами управления, то надо либо создать новый проект (его лучше включить в текущую группу ProjectGroup1, чтобы сохранить целостность примеров), либо добавить к текущему проекту Project1 новую форму. Пока остановимся на последнем варианте.
Новая форма добавляется к текущему проекту одним щелчком мыши на командной кнопке New Form (Создать форму) или командой File – New – Form (Файл – Создать – Форма). При этом в Проектировщике сразу появится новая пустая форма. Называться она будет Form2, а соответствующий ей файл с исходными текстами добавится в редактор на новую панель Unit2. Теперь проект надо сохранить, при этом система Delphi7 поинтересуется названием нового модуля (пока что его лучше оставить без изменений - Unit2).
Замечание: Переключаться между имеющимися в проекте формами можно с помощью командной кнопки View Form (Отобразить форму) или комбинаций клавиш SHIFT+F12.
У программы может быть только одна главная форма – это форма, которая показывается при запуске программы, - и неограниченное число подчиненных форм, вспомогательных окон, которые исходно на экране не появляются, а вызываются по команде из программы с помощью специальных методов.
Замечание: Исходно подчиненные формы не показываются по одной простой причине – значение их свойства Visible (Видимость) первоначально установлено в False. Свойство Visible имеют все без исключения компоненты Delphi7, представляющие собой элементы управления. Изменяя значения свойства Visible во время работы программы, можно мгновенно делать любые объекты видимыми или невидимыми.
Добавим, например, к главной форме еще одну кнопку и назовем ее Окно. При щелчке на ней должна отображаться форма Form2. Сделать это можно несколькими способами.
Показ формы как обычного окна
Чтобы форма отображалась как обычное окно, проще всего записать в свойство Visible формы Form2 значение True.
procedure TMyForm.Button3Click(Sender:TObject);
begin
Form2.Visible:=true;
end;
Если теперь выполнить компиляцию проекта, то система Delphi7 сообщит об ошибке: идентификатор Form2 в модуле Unit1 неизвестен. Одновременно система предложит включить в список подключаемых модулей новый модуль Unit2, где, по предположению системы, находится описание соответствующей переменной.
В данном случае это действие оправдано, поэтому ответить надо Yes (Да) и выполнить компиляцию повторно – ошибок уже не будет. Однако лучше всего не забывать указывать ссылки на новые подключаемые к проекту модули самостоятельно.
Теперь, после запуска программы и щелчка на кнопке Окно на экране возникает новое пустое окно (форма Form2). Она связана с родительским окном (главной формой MyForm): между ними можно свободно переключаться, а при закрытии главного окна автоматически закроются и все вспомогательные формы (но не наоборот!).
Если закрыть форму Form2, реально произойдет изменение значения ее свойства Visible с True на False, поэтому при щелчке на кнопке Окно форма появится опять. Если щелкнуть на кнопке Окно, когда форма Form2 видима, ничего не изменится.
Вместо оператора присваивания для показа формы лучше применять ее метод Show.
procedure TMyForm.Button3Click(Sender:TObject);
begin
Form2.Show;
end;
Он хорош тем, что показывает форму, перемещает ее на передний план экрана и делает активной.
Показ формы как модального окна
Между появившейся на экране формой Form2 и главным окном (MyForm), а также между другими подчиненными формами проекта, если бы они тоже были созданы и показаны, можно переключаться произвольным способом. Такой подход не всегда удобен, потому что не дает пользователю сосредоточиться на конкретном действии и позволяет, не закончив работу в одном окне, выполнять новые действия в другом окне. Подобный многооконный принцип при создании программ себя не оправдывает, так как требует от разработчика больших усилий по непрерывной координации состояний множества окон и только усложняет общение с человеком. Сегодня он применяется в основном в сложных системах, наподобие систем разработки типа Delphi7, где одним окном не обойтись. А вспомогательные формы в обычных прикладных программах используются, как правило, для создания диалоговых окон, с которых невозможно переключиться на другие окна приложения, пока они не будут закрыты (такой режим работы окна еще называется модальным). Модальные окна хорошо подходят, в частности, для задания всевозможных настроек, выполнения ввода промежуточных значений, отображения результатов и других операций.
Чтобы вызвать форму в модальном режиме, надо использовать метод ShowModal.
procedure TMyForm.Button3Click(Sender:TObject);
begin
Form2.ShowModal;
end;
Теперь, когда после щелчка на кнопке Окно на передний план появится форма Form2, переключиться с нее на главное окно не удастся, пока она не будет закрыта. Переключаться на любые другие приложения Windows, конечно, можно без ограничений.
К оформлению модальных окон предъявляется набор негласных, но практически не имеющих исключений требований.
