Снова обсуждаем формы
Помимо принципов проектирования формы, вам также необходимо учитывать, где начинается и заканчивается ваше приложение. Существует несколько методов определения того, как будет выглядеть ваше приложение при запуске. Также важно знать некоторые процессы, происходящие при удалении приложения.
Установить форму запуска
По умолчанию первая форма в приложении обозначена как форма запуска. Эта форма отображается при запуске приложения (поэтому первым выполняемым кодом является код в событии Form_Initialize формы). Если вы хотите отображать другую форму при запуске приложения, вам необходимо изменить форму запуска.
Чтобы изменить форму запуска, выполните следующие действия:
1. В меню «Проект» выберите «Свойства проекта».
2. Выберите «Общие».
3. В списке «Объект запуска» выберите форму, которая будет новой формой запуска.
4. Выберите ОК.
Начать без формы запуска
Иногда вам может потребоваться запустить приложение без загрузки каких-либо форм. Например, вам может потребоваться запустить код, который загружает файл данных, а затем решить, какую из нескольких различных форм отображать на основе содержимого файла данных. Для этого создайте подпроцесс с именем Main в стандартном модуле, как показано в следующем примере.
Подглавный()
DimintStatusAsInteger
'Вызов функциональной процедуры для проверки статуса пользователя.
intStatus=GetUserStatus
'Отображение формы запуска в зависимости от статуса.
ЕслиIntStatus=1Тогда
frmMain.Show
Еще
frmPassWord.Show
КонецЕсли
Эта процедура должна быть подпроцедурой и не может находиться в модуле формы. Чтобы установить процесс SubMain в качестве объекта запуска, выберите «Свойства проекта» в меню «Проект», затем выберите «Общие», а затем выберите «SubMain» в поле «Объект запуска».
Показывать быстрый дисплей при запуске
Если при запуске происходит длительный процесс выполнения, например загрузка большого объема данных из базы данных или загрузка больших растровых изображений, вы можете захотеть обеспечить быстрое отображение при запуске. Быстрое отображение — это форма, которая обычно отображает такое содержимое, как имя приложения, информацию об авторских правах и простое растровое изображение. Экран, отображаемый при запуске Visual Basic, представляет собой быстрый экран.
Для отображения быстрого отображения необходимо использовать процесс SubMain в качестве объекта запуска и использовать метод Show для отображения формы:
PRivateSubMain()
'Показать быстрый дисплей.
frmSplash.Show
'Добавьте сюда процесс запуска.
...
'Показать основную форму и выгрузить быстрое отображение.
frmMain.Show
Выгрузить frmSplash
EndSub
Быстрое отображение может привлечь внимание пользователя при выполнении какой-либо процедуры запуска, создавая иллюзию быстрой загрузки приложения. Когда эти процедуры запуска завершены, можно загрузить первую форму и быстро отобразить ее в выгруженном виде.
Для быстрого отображения дизайна делайте его как можно более простым. Если вы используете большое количество растровых изображений или большое количество элементов управления, сам быстрый дисплей будет загружаться медленно.
Завершить приложение
Приложения, управляемые событиями, перестают работать, когда все формы закрыты и код не выполняется. Если скрытые формы все еще существуют, когда закрывается последняя видимая форма, приложение выглядит завершенным (поскольку видимых форм нет), но на самом деле приложение продолжает работать до тех пор, пока не будут закрыты все скрытые формы. Это происходит потому, что любой доступ к свойствам или элементам управления выгруженной формы приведет к неявной и автоматической загрузке этой формы.
Лучший способ избежать подобных проблем при закрытии приложения — убедиться, что все формы выгружены. Если существует более одной формы, вы можете использовать коллекцию Forms и оператор Unload. Например, командную кнопку с именем cmdQuit можно использовать в главной форме для выхода из программы. Если приложение имеет только одну форму, процедура события Click может быть простой:
PrivateSubcmdQuit_Click()
Разгрузить меня
EndSub
Если ваше приложение использует несколько форм, вы можете выгрузить эти формы, поместив код в процедуру события Unload основной формы. Вы можете использовать коллекцию Forms, чтобы гарантировать, что все формы будут найдены и закрыты. Следующий код использует коллекцию форм для выгрузки всех форм:
PrivateSubForm_Unload (CancelAsInteger)
Димиасинтегер
'Проходим по коллекции форм и выгружаем каждую форму.
Fori=Forms.Count-1to0Step-1
Выгрузить формы(я)
Следующий
EndSub
В некоторых ситуациях необходимо завершить приложение независимо от состояния существующих форм или объектов. Для этой цели в Visual Basic предусмотрен оператор End.
Оператор End приводит к немедленному завершению работы приложения: код после оператора End не будет выполнен, и никаких дальнейших событий не произойдет. В частности, Visual Basic не будет выполнять какие-либо процедуры событий QueryUnload, Unload или Terminate формы. Каждая ссылка на объект будет освобождена, но если вы определите свои собственные классы, Visual Basic не будет выполнять событие Terminate для объектов, созданных этими классами.
В дополнение к оператору End, оператор Stop может приостановить работу приложения. Однако оператор Stop можно использовать только во время отладки, поскольку он не освобождает ссылку на объект.
Дополнительные сведения об операторе Stop см. в разделах «Использование режима прерывания» главы 13, «Отладка кода и обработка ошибок» и «Инструкция Stop» в справочнике по языку. Информацию о коллекциях форм и освобождении ссылок на объекты см. в главе 9 «Программирование с использованием объектов».
Использование меню в приложениях
Многие простые приложения состоят только из формы и нескольких элементов управления, но функциональность приложения Visual Basic можно улучшить, добавив меню. В этом разделе объясняется, как создавать и использовать меню в вашем приложении.
Создавайте меню с помощью редактора меню
Используйте редактор меню, чтобы создавать новые меню и строки меню, добавлять новые команды в существующие меню, заменять существующие команды меню своими собственными командами, а также изменять и удалять существующие меню и строки меню.
Чтобы отобразить редактор меню:
В меню «Инструменты» выберите «Редактор меню».
-или-
Нажмите кнопку «Редактор меню» на панели инструментов. Откроется редактор меню, как показано на рисунке 6.7.
Хотя большинство свойств элементов управления меню можно установить с помощью редактора меню, все свойства меню также доступны в окне «Свойства». Двумя наиболее важными свойствами элемента управления меню являются:
Имя — это имя, используемое для ссылки на элемент управления меню в коде.
Заголовок — это текст, который отображается на элементе управления.
Другие свойства редактора меню, включая Index, Checked и NegotiatePosition, описаны далее в этой главе.
Использование списка в редакторе меню
В поле «Список элементов управления меню» (расположенном в нижней части редактора меню) перечислены все элементы управления меню для текущей формы. Когда вы вводите пункт меню в текстовое поле заголовка, этот элемент также появляется в списке элементов управления меню. Выберите существующий элемент управления меню из списка, чтобы изменить свойства элемента управления.
Например, на рисунке 6.7 показаны различные элементы управления меню «Файл» в типичном приложении. Положение элемента управления меню в списке элементов управления меню определяет, является ли элемент управления заголовком меню, элементом меню, заголовком подменю или элементом подменю:
Элемент управления меню, расположенный слева от списка, отображается в строке меню в качестве заголовка меню.
Элемент управления меню с отступом в списке появится в меню только при щелчке по его заголовку в главном меню.
Элемент управления меню с отступом, если за ним следуют некоторые элементы меню с отступом, становится заголовком подменю. Каждый элемент управления меню, расположенный под заголовком подменю, становится пунктом меню этого подменю.
Элемент управления меню с дефисом (-) в качестве свойства Caption отображается в виде разделительной полосы. Разделители разделяют пункты меню на логические группы. Обратите внимание, что элемент управления меню нельзя использовать в качестве разделительной полосы, если он является заголовком меню, имеет элементы подменю, отмечен или отключен или имеет горячую клавишу.
Чтобы создать элемент управления меню в редакторе меню, выполните следующие действия:
1.Выберите форму
2. В меню «Инструменты» выберите «Редактор меню». -или- Нажмите кнопку «Редактор меню» на панели инструментов.
3. В текстовом поле «Заголовок» введите текст, который должен отображаться в строке меню для первого заголовка меню. Если вы хотите, чтобы определенный символ стал клавишей доступа к пункту меню, вы также можете добавить перед ним символ (&). В меню этот символ автоматически подчеркивается.
Текст заголовка меню появится в списке элементов управления меню.
4. В текстовом поле Имя введите имя, которое будет использоваться для ссылки на элемент управления меню в коде. См. «Названия меню и рекомендации по присвоению имен» далее в этой главе.
5. Нажмите кнопку со стрелкой влево или вправо, чтобы изменить уровень отступа элемента управления.
6. При необходимости вы также можете задать другие свойства элемента управления. Эту работу можно выполнить в редакторе меню или позже в окне «Свойства».
7. Выберите «Далее», чтобы создать еще один элемент меню. -или- Нажмите «Вставить», чтобы добавить элемент меню между существующими элементами управления. Вы также можете нажимать кнопки со стрелками вверх и вниз, чтобы перемещать элементы управления между существующими элементами меню.
8. Если все элементы меню формы созданы, выберите «ОК», чтобы закрыть редактор меню. Созданный заголовок меню будет отображаться в форме. Во время разработки щелкните заголовок меню, чтобы открыть соответствующий пункт меню.
отдельные пункты меню
Разделительная полоса отображается в меню в виде горизонтальной линии между пунктами меню. В меню с большим количеством элементов вы можете использовать разделители, чтобы разделить элементы на логические группы. Например, в меню «Справка» Visual Basic используются разделительные полосы для разделения пунктов меню на три группы, как показано на рисунке 6.8.
Чтобы создать разделительную полосу в редакторе меню, выполните следующие действия:
1. Если вы хотите добавить разделительную полосу в существующее меню, выберите «Вставить» и вставьте элемент управления меню между элементами меню, которые вы хотите разделить.
2. При необходимости нажмите кнопку со стрелкой вправо, чтобы сделать отступ нового пункта меню до того же уровня, что и элемент меню, от которого он отделен.
3. Введите дефис (-) в текстовом поле «Заголовок».
4.Установите атрибут «имя».
5. Выберите ОК, чтобы закрыть редактор меню.
Обратите внимание : хотя полосы-разделители создаются как элементы управления меню, они не реагируют на события Click и не могут быть выбраны.
Назначайте клавиши доступа и сочетания клавиш
Улучшите доступ с клавиатуры к командам меню, определив клавиши доступа и сочетания клавиш.
ключ доступа
Клавиши доступа позволяют нажать клавишу ALT и ввести указанный символ, чтобы открыть меню. После открытия меню элемент управления можно выбрать, нажав назначенный символ (клавишу доступа). Например, нажмите клавишу ALT E, чтобы открыть меню «Правка», а затем нажмите клавишу P, чтобы выбрать пункт меню «Вставить». В заголовке элемента управления меню указанная клавиша доступа отображается в виде подчеркнутой буквы, как показано на рисунке 6.9.
Чтобы назначить клавиши доступа к элементам управления меню в редакторе меню, выполните следующие действия:
1. Выберите пункт меню, которому должна быть назначена клавиша доступа.
2. В поле «Название» введите символ (&) непосредственно перед символом, который вы хотите использовать в качестве ключа доступа.
Например, если меню «Редактировать», показанное на рисунке 6.9, открыто, следующее значение настроек свойства Caption отвечает соответствующей клавише.
Обратите внимание, что дублирующиеся ключи доступа нельзя использовать в меню. Если для нескольких пунктов меню используется одна и та же клавиша доступа, она не будет иметь никакого эффекта. Например, если C является клавишей доступа как для «Вырезать», так и для «Копировать», то при выборе меню «Правка» и вводе C будет выбрана команда «Копировать», но только после нажатия клавиши ENTER, Приложение Эта команда будет выполнена. А команда «вырезать» вообще не будет выполнена.
быстрая клавиша
Сочетание клавиш сразу запускает пункт меню при нажатии. Вы можете назначить сочетание клавиш для часто используемых пунктов меню, что обеспечивает одноэтапный метод доступа с клавиатуры, а не трехэтапный метод удержания клавиши ALT, нажатия заголовка меню для доступа к символу, а затем нажатия меню. предмет для доступа к персонажу. Назначение клавиш быстрого доступа включает комбинацию функциональных клавиш и клавиш управления, например клавишу CTRL F1 или клавишу CTRL A. Они появляются справа от соответствующего пункта меню, как показано на рисунке 6.10.
Чтобы назначить горячую клавишу для пункта меню, выполните следующие действия:
1. Откройте «Редактор меню».
2. Выберите этот пункт меню.
3. Выберите функциональную клавишу или комбинацию клавиш в поле со списком «Сочетание клавиш».
Чтобы удалить назначение сочетания клавиш, выберите «(нет)» вверху списка.
Обратите внимание, что сочетание клавиш автоматически появится в меню, поэтому нет необходимости вводить клавишу CTRL в поле «Заголовок» редактора меню;
Названия меню и правила именования
Чтобы обеспечить согласованность с другими приложениями, при создании меню рекомендуется следовать установленным правилам именования.
Установить свойство Caption
При присвоении значений заголовков пунктам меню следует стараться следовать следующим рекомендациям:
1. Названия пунктов в меню должны быть уникальными, но схожие пункты действий в разных меню могут иметь одно и то же название.
2. Имя проекта может состоять из слова, составного слова или нескольких слов.
3. Каждое имя проекта должно иметь уникальный символ доступа к памяти для выбора команд с клавиатуры. Символ доступа должен быть первой буквой названия меню, если только другой символ, который легче запомнить, не может использовать один и тот же символ доступа; Дополнительную информацию о назначении клавиш доступа и сочетаний клавиш см. в разделе «Создание меню с помощью редактора меню» ранее в этой главе.
4. Если перед завершением команды требуется дополнительная информация, после ее имени должно стоять многоточие (...), например команда, отображающая диалоговое окно («Сохранить как...», «Настройки...»). .
5. Имя проекта должно быть как можно более коротким. Если бы приложение пришлось локализовать, длина слова в версии на иностранном языке увеличилась бы почти на 30 процентов, что могло бы не хватить места для перечисления отдельных пунктов меню. Более подробную информацию о локализации приложения см. в главе 16 «Международное распространение».
Соглашение об именах меню
Чтобы сделать ваш код более читабельным и удобным в сопровождении, рекомендуется следовать установленному соглашению об именах при настройке свойства Name в редакторе меню. Большинство правил соглашения об именах рекомендуют идентифицировать объект с помощью префикса (т. е. mnu для элемента управления меню), за которым следует имя меню верхнего уровня (например, «Файл»). Для подменю за ним следует заголовок подменю (например, mnuFileOpen).
Дополнительные сведения см. в приложении B «Соглашения о кодировании Visual Basic», где приведены примеры рекомендуемых соглашений об именах. Примеры рекомендуемых соглашений об именах см. в разделе «Соглашения о кодировании VisualBasic».
->