Способность форм ссылаться друг на друга
Вы наверное обратили внимание на то, что мы добавляем оператор Uses в части implementaion модуля. Почему мы поступили именно так, почему не добавить модуль в части interface модуля? Можно добавить описание и в части interface модуля, но только в том случае, когда формы не ссылаются друг на друга.
Формы могут ссылаться одна на другую, т.е., например, из формы 1 вызывается форма 2, а форма 2, в свою очередь, ссылается на объекты формы 1. В этом случае, для того, чтобы не возникла ошибка circular referances во время компиляции, необходимо сделать одно из следующих действий:
· разместите операторы Uses с описаниями модулей в части implementation соответствующих модулей (это означает разрешение формам ссылаться друг на друга).
· разместите один оператор Uses в части interface одного модуля, а другой – в части implementation другого модуля.
Например, Form1 имеет связанный с ней модуль Unit1 и ссылается на форму Form2, имеющую модуль Unit2. Form2, в свою очередь, хочет получить доступ к объекту Label1, находящемуся в форме Form1. Соответствующие Unit-файлы будут выглядеть следующим образом:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Form2.Show; end; end. | unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm2 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation uses Unit1; {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); begin Form1.Label1.Caption:='Hello'; end; end. |
Задание для самостоятельной работы
1. Создайте новое приложение
2. Добавьте к нему новую форму
3. В главную форму приложения поместите объект Label и вызовите по кнопке новую форму.
4. Из второй формы измените объект Label1 первой формы по кнопке.
Просмотр форм и ассоциированных с ними модулей
Для быстрого переключения между формами и модулями можно использовать:
· меню View | Forms для форм, меню View | Units для модулей;
· с помощью быстрых кнопок кнопочной панели View Form и View Unit.
| |||
|
Основные свойства, методы и события формы
В ниже следующих таблицах описаны основные свойства, методы и события формы.
Таблица
Свойства формы
Свойство | Описание |
ActiveControl | Определяет, какой именно элемент находится в фокусе во время открытия формы. |
AutoScroll=True | Автоматически отображает линейку прокрутки, если будет отрезан какой-то компонент. |
BorderIcons | Имеет набор вложенных свойств: SystemMenu = False – отключить меню управления окном; Minimize = False – убрать кнопку минимизации окна; Maximize = False – убрать кнопку максимизации окна. |
BorderStyle | Стиль окантовки, может принимать следующие значения: Dialog – окно открывается как диалоговое; None – без границы; Sizeable – граница изменяемая; Single – граница одинарная. |
Caption | Заголовок окна. |
ClientHeight и ClientWidth | Свойства задают размер полезной площади в пикселах, используются для работы с большими широкими формами, когда форма не помещается на экране. |
Ctl3d | Для придания трехмерного облика компонентам формы. |
Cursor | Определяет форму курсора. |
Enabled | Позволяет включать и отключать форму, в отключенном состоянии форма не реагирует на нажатия клавиш, мыши, таймер, т.е. чтобы пользователь не имел возможности взаимодействовать с некоторым окном. |
Font | Открывает диалог установки шрифта по умолчанию. |
FormStyle | Задание стиля формы может принимать следующие значения: MDI – Multi-Document Interface (окна, содержащие дочерние, вложенные окна). MDIForm- родительское окно, MDIChild – дочернее окно. StayOnTop – форма – всегда окно переднего плана; fsNormal – обычное, не MDI-окно |
Icon | Иконка для формы. |
KeyPreview = True | Некоторые события, связанные с нажатием клавиш, сначала посылаются в форму, а затем активному компоненту. |
Left,Top | Свойства задают положение формы в момент открытия. |
Menu | Задает имя главного меню для формы. |
Name | Имя объекта, позволяющее ссылаться на него, не может быть пустым. |
PopupMenu | Задает имя контекстного меню для формы. |
Position | Позволяет задавать положение формы на экране в момент открытия. |
ShowHint | Показывать подсказку. |
Hint | Здесь содержится текст подсказки. |
Методы формы
Метод | Описание |
Show | Открыть окно формы. |
ShowModal | Открыть форму как модальное окно. |
Close | Закрыть окно формы; равносильно закрытию окна через системное меню управления окном. |
Hide | Скрыть окно формы, форма становится невидимой, но ее свойства доступны для изменения. |
Печать формы. |
События формы
Событие | Когда возникает |
OnActivate | Каждый раз при получении формой фокуса ввода. |
OnClick | При щелчке мышью в области окна формы. |
OnClose | При закрытии окна. |
OnCreate | Один раз при создании формы. |
OnDestroy | При удалении формы из памяти одним из следующих методов: Free, Destroy, Release или при завершении работы приложения. |
OnDeactivate | При потере формой фокуса ввода. |
Задания для самостоятельной работы
1. Создать форму, которая в момент выполнения открывается строго по центру экрана, независимо от того, где она располагалась в момент проектирования приложения.
2. Для формы создать всплывающую подсказку
3. Исследовать в какой последовательности выполняются события формы: OnCreate, OnActivate, OnDeactivate, OnClose, OnDestroy, OnClick. Для этого в обработчике каждого из этих событий выполнить процедуру ShowMessage с названием соответствующего события в качестве аргумента. Например: ShowMessage (‘OnCreate’).
Менеджер проектов
Для просмотра структуры проекта, обеспечения быстрого доступа к нужной форме используется менеджер проектов (Project Manager), доступ к которому выполняется через меню View | Project Manager. Окно Менеджера проектов изображено на рис. Работа в Менеджере проектов выполняется по правой кнопке мыши. Менеджер проектов позволяет:
· просматривать формы и ассоциированные с ними модули (Open);
· быстро переключаться между модулями и формами приложения;
· удалить форму из проекта, при этом форма не удаляется физически, в любой момент она снова может быть включена в проект (Remove From Project);
· создать новый проект (Add New Project) или добавить существующий проект (Add Existing Project) к группе проектов (ProjectGroup). Группа проектов может содержать несколько приложений, между которыми можно быстро переключаться.
Рис. Окно Менеджера проектов
Опции пpоекта
Доступ к диалогу установки опций проекта осуществляется через меню Project | Options. Диалог является многостраничным. Окно диалога опций проекта изображено на рис. Познакомимся с наиболее важными опциями проекта.
Рис. Страница Forms диалога опций проекта
На странице Forms можно:
· задать главную форму приложения;
· задать список автоматически загружаемых (Auto-create forms) с помощью метода CreateForm объекта Application форм и список форм, которые будут загружаться по мере необходимости программным путем (Available forms).
Рис. Страница Application диалога опций проекта
Hа стpанице Application можно задать:
· значок для приложения (Icon);
· подпись значка приложения (Title), когда приложение сворачивается (минимизируется);
· расширение для выполнимого файла (Target file extension);
· задать имя файла помощи для вашего приложения (Help File);
· сделать установленные опции опциями по умолчанию для новых проектов (default).
На странице Compiler задаются опции компиляции, соответствующие директивам компиляции, которые вставляются прямо в программный код.
На странице Linker задаются опции редактирования (линковки).
Страница Packages используется для задания пакетов, требуемых во время разработки и выполнения проекта.
Страница VersionInfo позволяет задавать информацию о версии продукта вашего приложения.
Страница Directories\Conditional позволяет задать местоположение файлов, из которых состоит ваш проект.
Рис. Страница Directories\Conditionals диалога опций проекта
Некоторые опции данной страницы описаны ниже.
Output Directory задает папку, в которую компилятор поместит откомпилированные модули и выполнимый файл, по умолчанию выполнимый файл сохраняется в той же папке, где располагается исходный код приложения.
Unit Output Directory – задает отдельную папку для файлов .dcu.
Search Path задает пути поиска, т.е. пути, где располагаются исходные файлы вашего приложения.
Упpавление пpоектами
Управление проектами осуществляется через меню File. Ниже кратко описан состав функций меню File.
New – создать новый объект. Например новое приложение (application), Form – добавить новую форму к проекту, Data Module – добавить новый модуль данных к вашему приложению. Модуль данных является контейнером (хранилищем) компонентов доступа к базам данных для вашего приложения. Во время проектирования модуль данных выглядит как обычная форма, содержащая не визуальные компоненты доступа к базам данных. Во время выполнения модуль данных невидим.
Open – открыть файл проекта.
Opеn Project – открыть существующий проект.
Reopen – открыть проект из тех, что недавно открывались.
Save – сохранить активный файл проекта.
Save as... – сохранить активный файл проекта с другим именем.
Save project as... – используется для сохранения файла проекта (.dpr) с другим именем.
Save all – сохраняются все открытые файлы, включая текущий проект и модули.
Close – закрыть активный файл.
Close all – закрыть все открытые файлы, включая текущий проект и все модули.
Use Unit – имя выбранного модуля включается в программный код текущего модуля. Это дает возможность текущему модулю видеть общедоступные (public) объекты, методы, процедуры и функции выбранного модуля.
Print – используется для печати активного модуля или активной формы.
Exit – выход из среды разработки Delphi.
Компиляция и сборка проекта
Компиляция и сборка проекта выполняется с помощью функций меню Project, которые кратко описаны ниже.
Add To Project – добавить к проекту существующую форму.
Remove From Project – удалить форму из проекта.
Import Type Library – импортирование внешней библиотеки в ваше приложение.
Add To Repository – добавить ваши собственные проекты и формы в репозиторий объектов. Репозиторий объектов содержит формы, проекты и другие виды объектов. Вы можете использовать объекты репозитория, прямо копируя их в свое приложение, либо производя наследников существующих объектов, основываясь на их типах.
View Source – просмотр файла проекта (dpr).
Add New Project – добавить новый проект в группу проектов.
Add Existing Project – добавить существующий файл к группе проектов.
Compile – компилируются только измененные формы, создается выполнимый файл.
Build All – компилируются все формы вашего приложения; независимо от того, были ли внесены в них изменения, создается выполнимый файл.
Syntax check – осуществляется только компиляция с выдачей возможных ошибок без линковки, выполнимый файл не создается.
Information – выдается информация о компиляции.
Options – доступ к опциям проекта.