Способность форм ссылаться друг на друга

Вы наверное обратили внимание на то, что мы добавляем оператор 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.

способность форм ссылаться друг на друга - student2.ru способность форм ссылаться друг на друга - student2.ru способность форм ссылаться друг на друга - student2.ru

       
   
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 Скрыть окно формы, форма становится невидимой, но ее свойства доступны для изменения.
Print Печать формы.

События формы

Событие Когда возникает
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). Группа проектов может содержать несколько приложений, между которыми можно быстро переключаться.

способность форм ссылаться друг на друга - student2.ru

Рис. Окно Менеджера проектов

Опции пpоекта

Доступ к диалогу установки опций проекта осуществляется через меню Project | Options. Диалог является многостраничным. Окно диалога опций проекта изображено на рис. Познакомимся с наиболее важными опциями проекта.

способность форм ссылаться друг на друга - student2.ru

Рис. Страница Forms диалога опций проекта

На странице Forms можно:

· задать главную форму приложения;

· задать список автоматически загружаемых (Auto-create forms) с помощью метода CreateForm объекта Application форм и список форм, которые будут загружаться по мере необходимости программным путем (Available forms).

способность форм ссылаться друг на друга - student2.ru

Рис. Страница Application диалога опций проекта

Hа стpанице Application можно задать:

· значок для приложения (Icon);

· подпись значка приложения (Title), когда приложение сворачивается (минимизируется);

· расширение для выполнимого файла (Target file extension);

· задать имя файла помощи для вашего приложения (Help File);

· сделать установленные опции опциями по умолчанию для новых проектов (default).

На странице Compiler задаются опции компиляции, соответствующие директивам компиляции, которые вставляются прямо в программный код.

На странице Linker задаются опции редактирования (линковки).

Страница Packages используется для задания пакетов, требуемых во время разработки и выполнения проекта.

Страница VersionInfo позволяет задавать информацию о версии продукта вашего приложения.

Страница Directories\Conditional позволяет задать местоположение файлов, из которых состоит ваш проект.

способность форм ссылаться друг на друга - student2.ru

Рис. Страница 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 – доступ к опциям проекта.

Наши рекомендации