Скачать презентацию Приложение с двумя окнами Цель урока Скачать презентацию Приложение с двумя окнами Цель урока

Приложение с двумя окнамиt переделка.ppt

  • Количество слайдов: 40

Приложение с двумя окнами Приложение с двумя окнами

Цель урока • Научиться создавать эффективные приложения с двумя окнами Цель урока • Научиться создавать эффективные приложения с двумя окнами

Задачи урока • Усвоить необходимый теоретический материал • Научиться создавать приложения с динамическим подключением Задачи урока • Усвоить необходимый теоретический материал • Научиться создавать приложения с динамическим подключением окон во время работы приложения

Если приложение содержит несколько окон • Первое окно будет главным, остальные – вспомогательные • Если приложение содержит несколько окон • Первое окно будет главным, остальные – вспомогательные • Вспомогательные окна могут быть • Модальными и • Немодальными

Окна модальные и немодальные • Если окно модальное, – то в главное окно можно Окна модальные и немодальные • Если окно модальное, – то в главное окно можно вернуться, только после его закрытия • Если окно немодальное, – то такого ограничения нет

Пример модального окна • ПоследняяМодал не динам Пример модального окна • ПоследняяМодал не динам

Пример немодального окна • ПоследняяНе модал не динам Пример немодального окна • ПоследняяНе модал не динам

Пример модального окна • Модальное окноProject 2. exe Пример модального окна • Модальное окноProject 2. exe

Пример немодального окна • Немодальное окноProject 2. exe Пример немодального окна • Немодальное окноProject 2. exe

КАК СОЗДАВАТЬ ПРИЛОЖЕНИЯ С ДВУМЯ ОКНАМИ? Переход между формами приложения КАК СОЗДАВАТЬ ПРИЛОЖЕНИЯ С ДВУМЯ ОКНАМИ? Переход между формами приложения

СТРУКТУРА МОДУЛЯ Unit <имя>; interface <интерфейсная часть> Uses <список подключаемых модулей> implementation <исполняемая часть> СТРУКТУРА МОДУЛЯ Unit <имя>; interface <интерфейсная часть> Uses <список подключаемых модулей> implementation <исполняемая часть> Uses <список подключаемых модулей> initialization < инициирующая часть> finalization <завершающая часть> end.

При создании приложения первая форма создается автоматически командой File-New-Application для нее в главном файле При создании приложения первая форма создается автоматически командой File-New-Application для нее в главном файле приложения формируется строка кода для создания формы. Например: Application. Create. Form(TForm 1, Form 1);

Для добавления в проект еще одной формы Надо выполнить команду меню File | New Для добавления в проект еще одной формы Надо выполнить команду меню File | New Form для нее в главном файле приложения также автоматически формируется строка кода для создания формы. Например: Application. Create. Form(TForm 2, Form 2);

 • Здесь картинка проекта • Здесь картинка проекта

Если формы должны передавать другу параметры, то их модули надо подцепить • Для модуля Если формы должны передавать другу параметры, то их модули надо подцепить • Для модуля Unit 1 выполнить команду File – Use Unit – Unit 2 • Для модуля Unit 2 выполнить команду File – Use Unit – Unit 1

Вывести вспомогательное окно В модуле главной формы отобразить новую форму, используя метод – Show Вывести вспомогательное окно В модуле главной формы отобразить новую форму, используя метод – Show для немодальных форм – Show. Modal для модальных форм. Например: Form 2. Show. Modal;

Чаще всего требуется новые окна создавать не сразу, а во время выполнения (динамически) Чаще всего требуется новые окна создавать не сразу, а во время выполнения (динамически)

Динамически создать форму во время выполнения 1. Ее следует исключить из списка автоматически создаваемых Динамически создать форму во время выполнения 1. Ее следует исключить из списка автоматически создаваемых форм командой меню Project Options | Forms Это вызовет удаление из главного файла приложения строки Application. Create. Form для исключенной формы

 • Вставить картинку • Вставить картинку

Динамически создать форму во время выполнения 2. Перейти в модуль главной формы и добавить Динамически создать форму во время выполнения 2. Перейти в модуль главной формы и добавить модуль определения новой формы в секцию Uses раздела Interface Вставить картинку

Динамически создать форму во время выполнения 3. В модуле главной формы вызвать для создания Динамически создать форму во время выполнения 3. В модуле главной формы вызвать для создания второй формы метод Create. Например: Form 2: =TForm 2. Create (self);

Динамически создать форму во время выполнения 4. В модуле главной формы Отобразить новую форму, Динамически создать форму во время выполнения 4. В модуле главной формы Отобразить новую форму, используя метод – Show для немодальных форм – Show. Modal для модальных форм. Например: Form 2. Show. Modal; ПоследняяПосл Дин Модал

Динамически создать форму во время выполнения 5. После выполнения в форме требуемых действий ее Динамически создать форму во время выполнения 5. После выполнения в форме требуемых действий ее следует закрыть, вызвав метод Close. 6. Освободить память из-под закрытой формы вызовом метода Free. Например: Form 2. Free;

 • Если форма отображается как немодальная, то следует позаботиться, чтобы она не создавалась • Если форма отображается как немодальная, то следует позаботиться, чтобы она не создавалась повторно • ПоследняяПосл дин немодал • Последняяпосл дин немод с удалением

Компоненты и события • 3 Label • 4 Button • 1 Edit • On. Компоненты и события • 3 Label • 4 Button • 1 Edit • On. Click для всех кнопок • On. Create для двух форм Оформим второе окно как модальное

 • Первая форма (Form 1) создается автоматически командой File-New. Application • Вторая форма • Первая форма (Form 1) создается автоматически командой File-New. Application • Вторая форма (Form 2) создается вручную командой File-New-Form • При этом будет создан второй модуль исходного кода Unit 2

Модули Unit 1 и Unit 2 надо подправить Unit 1 Надо добавить в секцию Модули Unit 1 и Unit 2 надо подправить Unit 1 Надо добавить в секцию Uses имя модуля Unit 2 После implementation дописать: Uses Unit 1;

Вторая форма должна быть создана не автоматически, а по нажатию кнопки Для этого • Вторая форма должна быть создана не автоматически, а по нажатию кнопки Для этого • Вызвать диалоговое окно Project. Options • Перейти на вкладку Forms • Переместите Form 2 из списка Auto-Create Forms в список Available Forms

Обработчик нажатия кнопки вызова второй формы Procedure TForm 1. Button 1 Click(Sender: TObject); Var Обработчик нажатия кнопки вызова второй формы Procedure TForm 1. Button 1 Click(Sender: TObject); Var Form 2: TForm 2; Begin Form 2: =TForm 2. Create(Self); {создаем форму} Try {перехват ошибок} If Form 2. Show. Modal = mr. Ok then {нажата ли кнопка? } Label 2. Caption: =Form 2. Edit 1. Text; {текст из второй формы } Finally Form 2. Free; {уничтожаем форму, освобождаем память} End;

Обработчики событий компонентов второй формы unit Unit 2; -------Procedure TForm 2. Form. Create(Sender: TObject); Обработчики событий компонентов второй формы unit Unit 2; -------Procedure TForm 2. Form. Create(Sender: TObject); Begin {помещаем в поле ввода текст надписи в главном окне} Edit 1. Text: =Form 1. Label 2. Caption; End;

Для закрытия модального окна требуется нажатие любой из кнопок Procedure TForm 2. Button 1 Для закрытия модального окна требуется нажатие любой из кнопок Procedure TForm 2. Button 1 Click(Sender: TObject); Begin {чтобы закрыть модальное окно, устанавливаем значение Modal. Result} Modal. Result: =mr. OK; End; Procedure TForm 2. Button 2 Click(Sender: TObject); Begin {чтобы закрыть окно, устанавливаем значение Modal. Result} Modal. Result: =mr. Cancel; End;

 • Открытое модальное окно закрывается, когда свойство Modal. Result получает значение. • Это • Открытое модальное окно закрывается, когда свойство Modal. Result получает значение. • Это значение возвращается в функцию, открывавшую модальное окно (в нашем случае – в обработчик Form 1. Button 1. Click), где его можно проверить и выяснить, нажатием какой кнопки было закрыто модальное окно

Немодальное окно • Из него можно переключиться в другое окно того же приложения (без Немодальное окно • Из него можно переключиться в другое окно того же приложения (без закрытия) • Поэтому всегда надо проверять, не существует ли уже экземпляр второго окна • Если существует, то не создавать его, а только открыть • Для проверки переменная, ссылающаяся на экземпляр окна, должна быть глобальной

Компоненты и события • • 2 Form 3 Label 4 Button 1 Edit • Компоненты и события • • 2 Form 3 Label 4 Button 1 Edit • Form 1: On. Create • Form 2: On. Create, On. Destroy • On. Click для всех кнопок Оформим второе окно как немодальное

procedure TForm 1. Button 1 Click(Sender: TObject); begin // Создаем форму , только если procedure TForm 1. Button 1 Click(Sender: TObject); begin // Создаем форму , только если ее не существует if Form 2=nil then Form 2: =TForm 2. Create(Self); // Отображаем форму в немодальном режиме Form 2. Show; end;

В модуле Unit 2 реализуется • Закрытие вспомогательного окна и • передача введенного значения В модуле Unit 2 реализуется • Закрытие вспомогательного окна и • передача введенного значения обратно в вызывающую функцию

В модуле Unit 2 добавляем implementation Uses Unit 1; --------procedure TForm 2. Form. Create(Sender: В модуле Unit 2 добавляем implementation Uses Unit 1; --------procedure TForm 2. Form. Create(Sender: TObject); begin Edit 1. Text: =Form 1. Label 2. Caption; end;

procedure TForm 2. Button 1 Click(Sender: TObject); begin Form 1. Label 2. Caption: =Edit procedure TForm 2. Button 1 Click(Sender: TObject); begin Form 1. Label 2. Caption: =Edit 1. Text; Close; end; procedure TForm 2. Button 2 Click(Sender: TObject); begin Close; end;

procedure TForm 2. Form. Destroy(Sender: TObject); begin Form 2: =nil; end; procedure TForm 2. Form. Destroy(Sender: TObject); begin Form 2: =nil; end;