русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Hierarchy


Дата добавления: 2013-12-23; просмотров: 1047; Нарушение авторских прав


Класс TForm

Итак, ключевую часть в программном модуле, описывающем то или иное окно приложения, является класс, описывающий это самое окно. Для форм в VCL, подобно другим компонентам, определен специальный класс – TForm. Однако следует учитывать, что на самом деле, класс TForm никогда напрямую не используется в приложениях: вместо него мы всегда будем работать с классами, порожденными на его основе.

TObject

TPersistent

TComponent

TControl

TWidgetControl

TFrameControl

TScrollingWidgetControl

TCustomForm

TForm

 

Форма (в примере) описывается как класс TForm1, а кнопка (Button1) является свойством этого класса. Если добавить к кнопке обработчик события (например, для OnClick), то этот обработчик автоматически получит имя Button1Click и будет определен как метод класса TForm1.

 

unit pro2;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

 

type

TForm1 = class(TForm)

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.Button1Click(Sender: TObject);

begin

end;

end.

 

Создаваемый класс, описывающий форму, унаследует все свойства и методы от базового класса TForm, который происходит от класса TCustomForm, добавляя к нему лишь методы, связанные с многооконным интерфейсом (MDI). Класс TCustomForm, в свою очередь, происходит от класса TScrollingWinControl, являющегося прямым потомком уже упоминавшегося ранее класса TWinControl, опять-таки, имеющего по отношению к своему родителю лишь одно глобальное отличие – возможность прокрутки содержимого



Обычно сколько-нибудь сложное приложение содержит несколько форм. Первая из введенных в приложение форм считается главной. Главная форма отличается от прочих рядом свойств. Во-первых, именно этой форме передается управление в начале выполнения приложения. Во-вторых, закрытие пользователем главной формы означает завершение выполнения приложения.

Для каждой автоматически создаваемой формы Delphi добавляет в файл программы соответствующий оператор ее создания методом CreateForm. Это можно увидеть, если выполнить команду Project | View Source и просмотреть появившийся файл проекта .dpr. Он может, например, содержать следующие выполняемые операторы:

Application.CreateForm(TForml, Forml);

Application.CreateForm(TAboutBox, AboutBox);

Application.Run;

Первый и второй из них создают соответствующие формы, а третий начинает выполнение приложения.

В нужный момент форму можно сделать видимой методами Show или Show-

Modal.Последний метод открывает форму как модальную. Это означает, что

управление передается этой форме и пользователь не может передать фокус другой форме данного приложения до тех пор, пока он не закроет модальную форму. Методы Show и ShowModalможно применять только к невидимой в данный момент форме. Если нет уверенности, что форма в данный момент видима, то прежде, чем применять эти методы, следует проверить свойство Visibleформы. Например:

if (not Form2.Visible) then Form2.ShowModal;

Методом Hideформу в любой момент можно сделать невидимой.

Необходимо помнить, что для выполнения методов CreateForm, Show, ShowModal, Hideи вообще для обмена любой информацией между формами модули соответствующих форм должны использовать друг друга. Например, если форма (Б) модуле "Unitlдолжна управлять формой (В) модуле Unit2, то в оператор usesмодуля Unitl должно быть включено имя второго модуля Unit2. А если к тому же форма в модуле Unit2 должна пользоваться какой-то информацией, содержащейся в модуле Unitl,то в оператор uses модуля Unit2 должно быть включено имя первого модуля Unitl. В этом случае, если операторы usesв обоих модулях расположены в разделах Interface,возникнут проблемы с недопустимыми круговыми ссылками (circuior unit reference) и компилятор выдаст соответствующую ошибку.

От недопустимых круговых ссылок можно избавиться; если разомкнуть их, поместив один или оба оператора usesв раздел implementation.Впрочем, проще не включать имена модулей приложения в операторы usesвручную, а использовать команду File Use Unit, которая автоматизирует этот процесс и гарантирует отсутствие круговых ссылок.

Закрыть форму можно методом Close.

Модальные формы (353)

Открытие форм как модальных используется в большинстве диалоговых окон. Модальная форма приостанавливает выполнение вызвавшей ее процедуры до тех пор, пока пользователь не закроет эту форму. Модальная форма не позволяет также пользователю переключить фокус курсором мыши на другие формы данного приложения, пока форма не будет закрыта. Т.е. пользователь должен выполнить предложенные ему действия прежде, чем продолжить работу. Модальной может быть сделана любая форма, если она делается видимой методом ShowModal.Если та же самая форма делается видимой методом Show, то она не будет модальной.

Поведение модальной формы определяется ее основным свойством ModalResult.Это свойство доступно только во время выполнения приложения. При открытии формы методом ShowModalсначала свойство ModalResultравно нулю. Как только при обработке каких-то событий на форме свойству ModalResultбудет присвоено положительное значение, модальная форма закроется. А значение ее свойства ModalResultможно будет прочитать как результат, возвращаемый методом ShowModal. Таким образом, программа, вызвавшая модальную форму, может узнать, что сделал пользователь, работая с этой формой, например, на какой кнопке он щелкнул.

В Delphi предопределены некоторые константы, облегчающие трактовку ре-

зультатов, полученных при закрытии модальной формы:

Все приведенные выше пояснения значений ModalResult (кроме значений О

и 2) носят чисто условный характер. В своем приложении можно трактовать ту или иную величину ModalResult и соответствующие константы как угодно. Требуемые значения ModalResultможно задавать в обработчиках соответствующих событий в компонентах модальной формы.

 

Пример приложения с модальными формами заставки и запроса пароля:

1. Создаем новое приложение. 2 формы - главная форма Form1 и форма для ввода пароля Form2.

2. В форме Form2 разместим окно редактирования Edit1, в котором пользователь будет вводить свой пароль. Задать в свойстве PasswordChar компонента Edit символ *.

В обработчике события OnKeyDown этого компонента запишите:

if Edit1.Text='password'

then ModalResult:=6

else Close

3. В главной форме напишем обработчик события формы OnShow:

 

if (Form2.ShowModal <>6)

then Close

else

begin

ShowMessage('Ваш пароль:'+Form2.Edit1.Text);

end;

 

 



<== предыдущая лекция | следующая лекция ==>
Элементы управления | ОБЗОР КОМПОНЕНТОВ БИБЛИОТЕКИ VCL DELPHI


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.