Характеристики формы. Свойства
Как и любой другой визуальный компонент, форма имеет свойства, методы и события. Форма имеет свойства, общие для всех визуальных компонентов, определяющие размер, заголовок, стиль, активность, цвет и т. д,. Кроме того форма имеет и специфические, определяемые ее особым значением, свойства. Часть их характеризует форму как главный объект приложения, например, свойство BorderIcons определяетналичие кнопок в заголовке окна, BorlerStyle определяет стиль рамки окна. Canvas - канва для прорисовки фона окна. Icon содержит пиктограмму окна, KeyPreview – форма получает событие от клавиатуры, если имеет значение true. При добавлении новой формы в проект Delphi по умолчанию автоматически создает один экземпляр класса (Forml, Form2 и т. д.), внося соответствующие изменения в файл проекта, Из всех созданных форм Delphi при выполнении приложения автоматически устанавливает видимой главную форму, для этого свойству Visible этой формы устанавливается значение True. Для остальных форм значение этого свойства по умолчанию равно False, и после запуска приложения другие формы первоначально на экране не отображаются. Программист после создания форм по мере необходимости сам должен обеспечивать их отображение и скрытие в процессе работы приложения, управляя свойством Visible. Даже если форма невидима, ее компонентами можно управлять, из других форм. Управлять процессом автоматического создания форм можно, непосредственно редактируя файл проекта. Характеристики формы. Методы. Другим способом управления видимостью форм на экране являются соответственно методы show и Hide. Процедура Show отображает форму в немодальном режиме, процедура ShowModal. - в модальном режиме, при этом свойству Visible устанавливается значение True, а сама форма переводится на передний план. Процедура Hide скрывает форму, устанавливая ее свойству V isible значение False. Если окно уже видимо, то вызов метода Show переводит форму на передний план и передает ей фокус управления.
Пример. Отображение и скрытие форм. procedure TForml.btnShowFormsClick(Sender:TObject); begin Form2.Visible:= true; Form3.Show; End; procedure TForml.btnHideFormsClick(Sender:TObject); begin Form2.Visible:= false; Form3.Hide; end;
Для создания экземпляров форм служит метод Create. Конструктор Create создает экземпляр класса формы, сам класс формы обычно предварительно описывается при конструировании приложения, и соответственно для формы существуют файлы формы (DFM) и программного модуля (PAS). Пример. Создание экземпляра формы. procedure TForml.ButtonlClick(Sender: TObject); begin // Форма создается, однако на экране не отображается Form2:= TForm2.Create(Application); Form2.Caption:= 'Новая форма'; end; Форма Form2 принадлежит объекту приложения и имеет заголовок “Новая Форма”. Для закрытия формы используется метод Close, который удаляет форму с экрана. Процедура Close делает форму невидимой, не уничтожает созданный ее экземпляр, и форма может быть снова вызвана на экран, В случае закрытия главной формы прекращается работа всего приложения. Пример. Закрытие формы. procedure TForm2.btnCloseClick(Sender: TObject); begin Form2.Close; end; Уничтожение формы можно выполнить с помощью метода Free, после чего работа с этой формой невозможна, и любая попытка обратиться к ней или ее компонентам вызовет исключительную ситуацию (ошибку). Необходимость уничтожения формы может возникнуть при оформлении заставок или при разработке больших приложений, требующих экономии оперативной памяти. Пример. Удаление экземпляра формы. procedure TForm3.btnDestroyClick(Sender: TObject); begin Form3. Free; end; Кнопка btnDestroy уничтожает форму Form3. Для этой кнопки полезно задать соответствующий заголовок, например, “Удалить”.
Характеристики формы. События
При создании и использовании формы происходят следующие события типа TNotifyEvent, указанные в порядке их возникновения: • OnCreate; • OnActivate; • OnShow; • OnPaint. • OnResize; • onKeyPress(реакция на нажатие клавиш). Событие OnCreate при создании формы возникает один раз, остальные события происходят каждый раз при отображении формы, при ее активизации и прорисовке соответственно. В обработчик события OnCreate обычно включается код, устанавливающий начальные значения свойств формы, а также ее управляющих элементов, то есть выполняющий начальную инициализацию формы в дополнение к установленным на этапе разработки приложения параметрам. Кроме того, в обработчик включаются дополнительные операции, которые должны происходить однократно при создании формы, например, чтение фамилий сотрудников и загрузка их в список. Пример. Процедура Обработки события OnCreate формы Form2. procedure TForm2.FormCreate(Sender:TObject); begin Form2.Caption:= 'Пример формы'; ComboBox2.Items.LoadFromFile('list.txt'); Button3.Enabled:= false; end; При создании форма получает новый заголовок пример формы, в комбинированный список comboBox2 загружаются данные из файла list.txt, а кнопка Button3 блокируется. В момент отображения формы на экране возникает событие OnShow. Соответственно при скрытии формы, возникает событие OnHide. Каждый раз при получении фокуса ввода формой, например, при нажатии кнопки мыши в области формы, происходит ее активизация и возникает событие OnActivate. При потере фокуса формой возникает событие OnDeActivate. Событие OnPaint возникает при необходимости перерисовки формы, например, при активизации формы, если до этого часть ее была закрыта другими окнами. При закрытии и уничтожении формы происходят следующие события, указанные в порядке их возникновения: • OnCloseQuery; • OnClose; • OnDeActivate; • OnHide; • OnDestroy. Событие OnCloseQuery типа TCioseQueryEvent возникает в ответ на попытку закрытия формы. Обработчик события получает логическую переменную - признак CanClose, определяющую, может ли быть закрыта данная форма. По умолчанию эта переменная имеет значение True, и форму можо закрыть. Если установить параметру CanClose значение False, то форма остается открытой.
Взаимодействие форм. При попытке компилирования программы, содержащей вызов второй формы, Delphi выдаст такой запрос:
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|