Создание дочерних окон в Delphi


Двойной щелчок по любой из форм в менеджере проектов загрузит форму в ди­зайнер для редактирования. В принципе, новая форма уже открыта, и нам не надо дважды щелкать мышью. Хотя можете попробовать, и Delphi моментально откроет форму для редактирования. В дальнейшем при редактировании вам это пригодится, чтобы открывать дочерние окна с целью их изменения.

 

Давайте сразу сохраним новую форму. Для этого при выделенной новой форме нажмите комбинацию клавиш <Ctrl>+<S>. Перед вами появится стандартное окно для ввода имени формы. Ранее указывалось, что имена нужно задавать осмыслен­ные. В книге иногда происходит отступление от этого правила, чтобы вам легче было читать, но в реальных проектах вы должны делать все осмысленно, иначе по­том будет тяжело работать.

 

Данное окно у нас будет показывать информацию о программе, поэто­му назовем его AboutUnit.pas. Модуль главной формы переименуем в MainUnit.pas.

Этот метод закрывает форму, а если мы закрываем главную форму, то закроется все приложение.

 

Напоследок необходимо узнать, как меню подключается к форме. Когда вы по­местили новый компонент MainMenu на форму, то он автоматически появился в свойстве формы Menu. Если вы удалите название компонента из этого свойства, то меню исчезнет. Если вы укажете другой компонент меню, то в качестве меню для формы будет использоваться указанный компонент.

СОВЕТ. Нельзя просто так переименовывать имена модулей. Для этого желательно использовать меню File | Save As (Файл | Сохранить как).

Сразу измените и имя формы с Form2 на AboutForm. После этого изменим заго­ловок формы на О программе. Можете еще приукрасить как-нибудь эту форму. Установим несколько компонентов TLabel, чтобы сделать надписи. Но это уже не­важно. Для нас главное — научиться работать с этими формами (пример формы показан на рис.)

 

Теперь нужно показать это окно. Давайте создадим обработчик события onclick для пункта меню О программе нашей главной формы. Когда вы создаете обработ­чик, Delphi даст процедуре непонятное название типа N4ciick. Если бы заголовок меню был бы написан на английском, то имя обработчика было бы хоть немного понятным, потому что Delphi использовало бы имя меню и слово Click. Но у нас все написано на родном языке, а его в коде программы использовать нельзя, поэто­му среда разработки изменяет его на букву N с номером. Число у вас может отли­чаться. Мы договорились, что все будем называть понятными именами, поэтому переименуйте ее в объектном инспекторе в Aboutciick. Для переименования дос­таточно напечатать в объектном инспекторе новое имя напротив события onclick и нажать клавишу <Enter>.

Теперь в получившемся обработчике напишем следующее:

procedure TForm1.AboutClick (Sender: TObject);

begin

AboutForm. ShowModa 1 ;

end;

В этом коде мы вызываем метод showModai окна AboutForm. Этот метод пока­зывает форму в режиме Modal (Модальный). В этом режиме окно получает полное управление, и пока оно не закроется, главная форма не будет работать.

 

Если вы попробуете сейчас отком­пилировать код, то получите ошибку. В Delphi 5 это будет просто ошибка, озна­чающая, что AboutForm не найдена. Это потому, что данная форма описана в на­шем модуле Aboutunit, а мы используем ее В MainUnit. Чтобы MainUnit СМОГ уви- деть форму, описанную В AboutUnit, нужно ее подключить. Для этого перейди­те в модуль MainUnit и из меню File (Файл) выберите пункт Use Unit (Исполь­зовать модуль). Перед вами откроется ок­но, как показано на рис. 9.10. В этом окне нужно выбрать модуль, который требу­ется подключить, и нажать кнопку ОК. Что после этого изменится? Посмотрим на следующий фрагмент нашего модуля MainUnit:

Создание дочерних окон в Delphi

Form1: TForm1;

implementation

uses AboutUnit;

{$R *. dfm}

Как видите, здесь появилась новая строка uses. Точно такая же есть и в начале модуля, но там мы подключали стандартные заголовочные модули, необходимые при описании. Здесь же мы подключаем модули, которые необходимы только при реализации, и самостоятельно написанные модули чаще всего относятся именно к таким (не обязательно, но в основном они нужны только при реализации).

СОВЕТ. В принципе, можно подключить модуль AboutUnit и в самом начале, но это делать не желательно.

Строку uses можно написать и вручную в указанном выше месте и не выпол­нять никаких действий. Так что выбирайте, какой способ вам удобнее, — прописы­вать вручную или делать это автоматически с помощью меню File | Use Unit.

Создание дочерних окон в Delphi

Теперь перейдем К форме MainUnit. Мы ПОДКЛЮЧИЛИ наш МОДУЛЬ AboutUnit и можем смело использовать его содержимое.

Обладатели Delphi 6-й и более поздней версии находятся в более удобном по­ложении. Если вы забыли подключить модуль и попытались откомпилировать код, то, помимо ошибок, вы увидите окно с сообщением, как это показано на рис. 9.11. Здесь написано, что вы из главного модуля ссылаетесь на форму AboutForm, кото­рая объявлена в модуле AboutUnit. Вам также предлагается подключить этот мо­дуль. Если вы нажмете Yes (Да), то Delphi моментально сделает все действия для подключения 

Вот теперь можно компилировать код еще раз, и программа будет собрана без ошибок. Запустите приложение и попробуйте выбрать пункт меню О программе. Если вы все сделали правильно, то увидите вторую созданную нами форму.

������� ������ ��� dle ������� ��������� ������

Помоги проекту! Расскажи друзьям об этом сайте: