
- •Часть 2. Сборник рецептов по визуальному программированию Введение в объектно-ориентированное программирование
- •Создание проекта в VisualStudio
- •Файлы проекта
- •Сведения об объекте
- •Общие свойства всех объектов
- •Класс Form
- •Помещение компонента в форму и прочие действия с дизайнером форм
- •Свойства форм
- •События формы
- •Методы формы
- •Компоненты ввода и отображения текстовой информации Компонент Label
- •Некоторые свойства компонента Label
- •Компонент TextBox
- •Методы TextBox
- •Компонент RichTextBox
- •Ввод числовых значений в компонент TextBox
- •Проверка, введены ли значения
- •Компонент ListBox
- •Компонент ComboBox
- •Ввод данных из файла
- •Компонент MaskedTextBox
- •Кнопки, индикаторы и управляющие элементы Компонент Button
- •Компонент Panel
- •Компоненты RadioButtonиCheckBox
- •Компонент GroupBox
- •Пример. Комплектация автомобиля
- •Работа с меню Главное меню
- •Контекстное меню
- •Создание текстового редактора
- •Системные диалоги
- •Компонент OpenFileDialog
- •Компонент SaveFileDialog
- •Диалог выбора шрифта
- •Диалог выбора цвета
- •Компонент PrintDialog
- •Диалоговые окна в текстовом редакторе
- •Расширенные символы Unicode
- •Работа с графикой Использование графических файлов
- •Создание фотоальбома
- •Методы для рисования на форме и прочих компонентах
- •Работа с таймером
- •Работа с датой и временем
- •Добавление новых форм к проекту
- •Многостраничные панели
- •Способы задания страниц
- •Методы TabControl
Добавление новых форм к проекту
Алгоритмы решения многих задач требуют, чтобы обеспечивающие их решение алгоритмы размещались в разных формах. Необходимо, чтобы формы вызывались в процессе выполнения проекта в определенном порядке.
Как уже говорилось выше, форма – основной элемент любого приложения, контейнер, в котором размещаются другие визуальные и невизуальные компоненты.
Для добавления к проекту новой формы надо открыть контекстное меню проекта SolutionExplorer, щелкнув по строкеHeaderFiles, и выбрать пунктAdd/NewItem(добавить новый элемент). То же самое можно сделать и ищ опцииProjectглавного меню.
В открывшемся диалоговом окне выбрать позицию WindowsForm(рис.), задать имя новой формы и нажать кнопкуAdd.
В результате будет выведена информация о добавлении новой формы в окне SolutionExplorer. Теперь надо выбрать, какую из форм назначить главной. По умолчанию таковой является первая созданная в проекте форма.
Отличия главной формы
1. Этой форме передается управление в начале выполнения приложения.
2. Закрытие пользователем главной формы означает завершение выполнения приложения.
3. Главная форма, как и любая другая, может быть спроектирована невидимой, но если все остальные формы закрыты, она в любом случае станет видимой (иначе пользователь не сможет работать с приложением).
Главной в приложении может быть вовсе не та форма, которая спроектирована первой. Также в общем случае не рекомендуется все формы создавать автоматически, т.к. в приложении могут быть предусмотрены формы, которые требуются далеко не в каждом сеансе работы с приложением.
Чтобы изменить порядок вывода форм, необходимо выполнить следующие действия.
1. Открыть контекстное меню проекта SolutionExplorerи выбрать опциюProperties. Откроется диалоговое окноProperty Pages.
2. В этом окне слева выбрать папку Generalи в окне справа из выпадающего менюStartupObjectвыбрать стартовую форму. Заметим, что дляVC++ExpressEditionэто сделать невозможно.
Так, статус главной имеет форма, с которой был связан проект при его создании. Это означает, что эта форма первой загружается и выполняется после того, как проект откомпилирован и запущен на выполнение. Если в проекте много форм, то из главной формы можно организовывать вызов на выполнение остальных форм (а можно из каждой формы вызывать любую другую). Эта задача решается с помощью обработчиков кнопок вызова конкретных форм.
При разработке проекта на экране всегда находится какая-то одна форма. Если нам требуется поместить другую форму на экран из уже добавленных ранее в проект, то следует просто переключиться на другую вкладку, отражающую требуемую форму в режиме дизайна.
Форма вызывается на выполнение в двух режимах: модальном и обычном. Вызов на выполнение осуществляется двумя различными командами. В модальном режиме – методом формы ShowDialog(), в обычном – методом формыShow().
В момент создания формы возникает следующая последовательность событий.
1. Создание формы и всех управляемых ей компонентов с помощью конструктора.
2. После выполнения события Shownформа становится видимой.
3. Управление передается данной форме посредством события Activated.
4. При выполнении события Enterфокус передается первому компоненту в последовательности табуляции.
5. Переустанавливается размер формы (событие Resize).
6. Выполняется прорисовка изображения формы с помощью события Paint.
Все события (кроме срабатывания конструктора) могут повторяться неоднократно.
Например, для приложения «Блокнот» в модальном режиме откроем окно для отображения информации о программе. Введем эту информацию в комнонентLabel, добавим графику (если необходимо) и кнопку с подписью «Закрыть», по нажатии на которую окно с информацией будет становиться невидимым.
Теперь остается в обработчике события Clickдля пункта меню «О программе» написать две строки:
prog ^hlp=gcnew prog();
hlp->ShowDialog();
А в первой строке файла Form1.hуказать
#include “Form2.h”
После этого включения методы и свойства формы станут доступными.
В обработчике события Clickдля кнопки закрыть необходимо указать единственный методthis->Close().
При открытии формы в качестве модальной можно еще пользоваться следующей конструкцией.
System::Windows::Forms::DialogResult dr;
Form2 ^nDial=gcnew Form2();
dr=nDial->ShowDialog();
switch (dr){…}
Эта конструкция позволяет обрабатывать различные сообщения, получаемые при закрытии модального окна. При обработке событий Clickдля модального окна в соответствующих функциях следует писать:
this->DialogResult=System::Windows::Forms::DialogResult::OK;
Здесь вместо OKможно указать любую другую величину из имеющегося списка.
Закрыть форму можно методом Close(). При этом в закрывающейся форме возникает последовательность событий, которые можно обрабатывать. Из назначение – проверить возможность закрытия формы и указать, что именно подразумевается под закрытием формы.
Проверка возможности закрытия формы необходима, например, для того, чтобы проанализировать, сохранил ли пользователь документ, с которым он работал в данной форме и который изменил. Если пользователь не сохранил изменения, приложение должно спросить о необходимости сохранения и, в зависимости от ответа пользователя, сохранить документы, закрыть приложение без сохранения или, вообще, отменить закрытие.
При наступлении события FormCloseанализируется значениеFormClosedEventArgs.