назад | содержание
| вперед
Глава 7. Разработка пользовательского интерфейса.
Интерфейс — это внешняя оболочка приложения вместе с программами управления доступом и другими скрытыми от пользователя механизмами управления, дающая возможность работать с документами, данными и другой информацией, хранящейся в компьютере или за его пределами. Главная цель любого приложения — обеспечить максимальное удобство и эффективность работы с информацией: документами, базами данных, графикой или изображениями. Поэтому интерфейс является, пожалуй, самой важной частью любого приложения.
Хорошо разработанный интерфейс гарантирует удобство работы с приложением и, в конечном итоге, его коммерческий успех. В данной главе описаны виды интерфейсов и процесс создания интерфейса со всеми его основными элементами управления: меню, контекстным меню, панелями инструментов, строкой состояния.
Проектирование интерфейса — процесс циклический. На этом этапе разработки приложения желательно чаще общаться с пользователями и заказчиками приложения для выработки наиболее приемлемых по эффективности. удобству и внешнему виду интерфейсных решений.
Выбор того или иного типа интерфейса зависит от сложности разрабатываемого приложения, поскольку каждый из них имеет некоторые недостатки и ограничения и предназначен для решения определенных задач. При этом необходимо ответить на ряд вопросов: какое количество типов документов обрабатывается в приложении, имеют ли данные древовидную иерархию, потребуется ли панель инструментов, какое количество документов обраба-тывается за некоторый интервал времени (например, за день) и т. д. Toлько после этого можно выбирать конкретный тип интерфейса.
Рассмотрим возможные типы интерфейсов и их характерные особенности, влияющие на выбор интерфейсного решения приложения.
Общие советы по разработке интерфейса
При разработке интерфейса необходимо руководствоваться следующими принципами:
Здесь перечислены основные принципы, которые следует учитывать при проектировании интерфейса приложения, но они не являются догмой. Со временем в процессе работы с пользователями и накоплением практического опыта будут вырабатываться и свои оптимальные принципы построения интерфейса.
В настоящее время для приложений, разрабатываемых в среде Windows при помощи Visual Basic б, используется три типа интерфейса: однодокументный SDl (Single-Document Interface), многодокументный MDI (Multiple-Document Interface) и интерфейс типа проводник (Explorer).
Замечание
Под документом в этом случае нужно понимать форму, предназначенную для работы с данными, а не с конкретным документом.
В этой главе основное внимание будет уделено первым двум типам интерфейса, поскольку они наиболее часто применяются для разработки пользовательских приложений. Интерфейс типа проводника используется в приложениях не так часто, поэтому мы дадим только его краткое описание.
Однодокументный интерфейс — это тип интерфейса, в котором предоставляется возможность работы только с одним документом в одном окне. Примером может служить редактор Microsoft WordPad. Для работы с несколькими документами в таком интерфейсе необходимо многократно запускать приложение. Для каждого типа данных и документов требуется своя форма и, соответственно, свое приложение с интерфейсом типа SDI. В принципе, это тоже один из возможных вариантов, но он подходит только для работы с небольшим количеством форм документов. При загрузке большого количества SDI-приложений начинает переполняться оперативная память компьютера и приложения работают очень медленно. Каждый раз при запуске SDI-приложения в память загружаются одни и те же данные (меню, панель и элементы управления), выполняющие одинаковые действия, что приводит к неэффективной и медленной работе запускаемых приложений.
Однако полностью отказываться от интерфейса типа SDI не стоит, поскольку он вполне годится для работы с одним или двумя документами (например, для копирования из одного документа в другой). Есть и положительные стороны приложений такого типа интерфейса — они занимают меньше места на диске и в оперативной памяти, да и на их разработку уходит гораздо меньше времени, что также немаловажно.
Интерфейс типа MDI дает возможность работать в одном приложении с любым количеством открытых окон.
Интерфейс типа SDI показан на рис. 7.1. Он состоит из следующих элементов:
Рис. 7.1. Пример интерфейса типа SDI
Этот тип интерфейса подходит для приложений, созданных для работы с документом одного типа с небольшим количеством полей (иначе форма перегружается элементами управления и интерфейс становится сложным и неудобным).
Главная особенность MDI заключается в том, что для этого типа интерфейса можно многократно открывать форму одного вида документа для нескольких разных по содержанию документов. Примером интерфейса типа MDI может служить программа Microsoft Word (рис. 7.2).
Рис. 7.2. Пример интерфейса типа MDI
Для интерфейса такого типа характерно наличие одного главного окна (MDI-окно), которое обычно именуется родительским окном (на рис. 7.2 это окно с заголовком Microsoft Word), и необходимого для работы количества подчиненных (вложенных) окон, называемых дочерними (на рис. 7.2 это окна с заголовками Документ1, Документ2, Документ4). Количество открытых дочерних окон ограничено лишь возможностями компьютера.
Подчеркнем, что родительское окно для MDI-интерфейса может быть только одно, при этом оно является контейнером для всех дочерних окон. Это означает, что при минимизации родительского окна вместе с ним минимизируются и все дочерние окна.
В свою очередь, дочерние окна могут находиться только внутри родительского, то есть при раскрытии на весь экран дочерние окна раскрываются полностью только в границах родительского окна и не могут быть вынесены или перемещены за эти границы.
В состав интерфейса MDI входят следующие элементы:
Рассмотрим подробнее элементы интерфейса и технологию их создания при помощи инструментальных средств Visual Basic.
Родительское окно MDI-интерфейса
Для добавления родительской формы в проект можно выполнить одно из следующих действий:
Замечание
При наличии MDI-формы в проекте эта команда недоступна.
MDI-форма показана на рис. 7.3.
Рис. 7.3. Форма родительского окна интерфейса типа MDI
Родительское и дочернее окна имеют набор основных свойств, описанных в табл. 7.1. Доступ к этим свойствам можно получить при помощи окна Properties (Свойства).
Таблица 7.1. Набор основных свойств родительских и дочерних окон
Свойство |
Назначение |
BackColor |
Определяет цвет фона формы. Выбирается из предлагаемой палитры |
BorderStyie |
Определяет тип обрамления, а также управляет изменениями размеров формы. Дополнительно определяет наличие кнопок в строке заголовка окна |
Caption |
Задает текст, выводимый в заголовке формы |
ControlBox |
Определяет наличие в левом верхнем углу окна кнопки в виде значка, открывающей оконное меню |
Font |
Задает шрифт в окне |
ForeColor |
Задает цвет выводимого в окне текста. Рекомендуется использовать стандартные цвета как фона, так и текста |
Height |
Задает высоту формы. При конструировании автоматически модифицируется при изменении размеров при помощи мыши |
Icon |
Задает значок для формы |
Left |
Задает расстояние от формы до левого края экрана |
MaxButton |
Управляет наличием кнопки развертывания (максимизации) окна |
MinButton |
Управляет наличием кнопки свертывания (минимизации) окна |
MDIChild |
Управляет возможностью превращения окна типа MDI в дочернее. Принимает значения True или False. По умолчанию принимает значение False |
Name |
Задает уникальное имя формы для использования в программных модулях и тексте кода. При назначении имени рекомендуется использовать префикс frm или mdi |
ScaleMode |
Задает единицу измерения свойств Width, Height, Left и Top |
ShowInTaskbar |
Управляет отображением значка окна на панели задач системы Windows |
Width |
Определяет ширину формы |
WindowState |
Управляет состоянием формы при запуске и может принимать следующие значения: 0-Normal— нормальное состояние, 1-Mini-mized — минимизированное состояние и 2-Maximized — максимизированное состояние |
Свойство BorderStyle определяет тип обрамления окна и может принимать значения, приведенные в табл. 7.2.
Таблица 7.2. Тип обрамления окна. задаваемый свойством BorderStyle
Значение свойства |
Тип обрамления |
0-Мопе |
Отсутствует рамка окна. Изменение размеров и перемещение окна запрещено. Отсутствуют основные атрибуты окна: заголовок, меню, кнопки свертывания, развертывания и закрытия |
1-Rxed Single |
Окно с рамкой в виде одинарной линии и с фиксированными размерами. Изменение размеров окна с помощью мыши запрещено. Основные атрибуты заголовка формы, упомянутые выше, доступны для этого значения |
2-Sizable |
Окно имеет рамку, размеры которой можно изменить при помощи мыши. Разрешено также перемещение окна. Все атрибуты заголовка окна присутствуют. Это значение устанавливается по умолчанию при создании формы |
3-Fixed Dialog |
Окно имеет рамку, размеры которой изменить нельзя, при этом разрешено перемещение окна. В заголовке расположена только кнопка закрытия окна. Это значение свойства BorderStyle используется, в основном, для диалоговых окон |
4-Fixed ToolWindow |
Аналогично значению 3-Fixed Dialog. При этом заголовок уже и содержит только кнопку закрытия окна |
5-Sizable ToolWindow |
Аналогично значению 2-Sizable, однако кнопки свертывания и развертывания окна при этом недоступны |
Свойство ScaleMode задает единицу измерения свойств width, Height, Left и Top и может принимать значения, описанные в табл. 7.3.
Таблица 7.3. Значения, принимаемые свойством ScaieMode
Значение |
Единица измерения |
0-User |
Пользовательская |
1-Twip |
Твип. Является стандартной единицей измерения для Visual Basic и устанавливается по умолчанию при создании формы. В одном дюйме содержится 1440 твипов |
2-Point |
Точка. Необходимо иметь в виду, что в дюйме 72 точки |
3-Pixel |
Пиксел. Базовая аппаратная единица измерения. Определяет минимальный допустимый размер точки экрана или точки при выводе на принтер |
4-Character |
Символ |
5-Inch |
Дюйм |
6-Milimeter |
Миллиметр |
7-Centimeter |
Сантиметр |
Свойства окон можно изменять в режиме проектирования. Кроме того, Visual Basic дает возможность изменять свойства окон из программы в ре-жиме выполнения.
Здесь следует заметить, что в отличие от дочернего, для родительского окна доступна только часть из перечисленных свойств. Например, недоступны свойства MaxButton, MinButton или controiBox, управляющие кнопками в заголовке окна.
В свою очередь, существуют свойства, характерные только для родительского окна. Это свойства AutoShowChildren И ScrollBars. Если свойство AutoShowChildren имеет значение True (это значение используется по умол чанию), то при загрузке родительского окна автоматически загружается дочернее окно. Свойство ScrollBars определяет наличие полос прокрутки в родительском окне для дочерних окон, выходящих за границы видимости. По умолчанию это свойство имеет значение True, разрешающее отображение полосы прокрутки.
В табл. 7.4 приведены основные события, которые чаще всего используются для форм. В процессе программирования вы познакомитесь с ними более подробно.
Таблица 7.4. События, используемые формами
Событие |
Описание |
Activate |
Происходит в тот момент, когда форма становится активной. Связано с событиями Initialize, Load, GotFocus. При открытии формы сначала происходит событие initialize, затем Load, после этого непосредственно Activate и завершает процесс открытия событие GotFocus |
Click |
Происходит при щелчке кнопки мыши |
DblClick |
Двойной щелчок кнопки мыши |
Deactivate |
Событие, противоположное Activate. Происходит, когда форма становится неактивной |
GotFocus |
Происходит при установке фокуса на активизируемой форме |
Initialize |
Инициализация формы |
KeyUp |
Происходит при нажатии клавиши на клавиатуре |
Load |
Происходит при загрузке формы в память до ее появления на экране |
MouseUp |
Происходит при нажатии кнопки мыши |
Resize |
Происходит при изменении размеров формы |
Unload |
Противоположное событию Load. Происходит перед выгрузкой формы из памяти и удалением ее с экрана |
При проектировании можно просмотреть список событий, связанных с формой, в окне редактора кода формы. Для этого необходимо выполнить команду Code (Код) меню View (Вид) или переместить указатель в поле конструирования формы и дважды щелкнуть кнопкой мыши. В верхней части окна редактора кода расположены два списка. Выберите из левого списка объектов текущую форму. При этом в правом списке будут расположены все события формы.
При программировании событий Visual Basic 6 сразу же при выборе события предоставляет готовую конструкцию (шаблон кода) для программирования действий по событию. Имя процедуры обработки события всегда связано с его именем. Например, для обработки события Load автоматически предоставляется такой шаблон:
Private Sub Form_Load()
... код процедуры обработки события
End Sub
Дочернее окно (рис. 7.4) обладает всеми описанными в табл. 7.1 свойствами окон. Практически все они доступны при проектировании.
Рис. 7.4. Форма дочернего окна интерфейса типа MDI
Основные особенности дочерних окон:
Расположением дочерних окон в родительском окне можно управлять при помощи метода Arrange родительского окна и набора переменных, которые задают способы размещения дочерних окон (табл. 7.5).
Таблица 7.5. Значения констант для метода Arrange
Константа |
Значение |
Описание |
vbCascade |
0 |
Каскадное расположение дочерних форм, при этом каждая последующая сдвинута вниз и вправо примерно на ширину заголовка формы |
vbTileVertical |
1 |
Расположение в виде вертикальной мозаики, при этом дочерние формы имеют высоту родительской формы и такую ширину, чтобы разместиться по всей ширине родительского окна |
vbTileHorizontal |
2 |
Расположение в виде горизонтальной мозаики, при этом дочерние формы имеют ширину родительской формы и такую высоту, чтобы разместиться по всей высоте родительского окна |
vbArrangeIcon |
3 |
При минимизации окна располагаются на нижнем крае родительского окна |
Для добавления дочерней формы в проект необходимо выполнить команду Add Form (Добавить форму) меню Project (Проект). В качестве дочерней формы можно использовать автоматически создаваемую при выборе нового проекта форму. При этом свойство MDIchild следует установить в значение True.
Для исследования характеристик и взаимодействия родительского и дочернего окон создадим небольшое приложение. Для этого выполните следующие действия:
1. Создайте новый проект. Для этого в меню File (Файл) выберите команду New Project (Создать проект) и дважды щелкните на значке Standard ЕХЕ.
2. Откройте окно свойств проекта, выбрав команду ProjectName Properties в меню Project.
3. В поле Project Name введите имя проекта MyMDIApp и нажмите кнопку ОК для закрытия диалогового окна.
4. Чтобы автоматически использовать созданную форму проекта в качестве дочерней, откройте окно свойств, вызвав его командой Properties Window (Окно свойств) в меню View (Вид), и установите для свойства MDichild значение True.
5. Используя свойство Name, введите имя формы frmChildMDI.
6. В поле свойства caption введите заголовок окна Дочернее окно MDI.
7. Добавьте в проект MDI-форму, выполнив команду Add MDI Form (Добавить MDI-форму) меню Project (Проект).
8. Воспользовавшись свойством Name, введите имя формы mdiParentMDI.
9. Используя свойство Caption, введите заголовок окна Родительское окно MDI
10. Для демонстрации некоторых действий нам понадобится простое меню. Создадим его по шагам (редактор меню описан в разделе "Меню" данной главы).
Небольшое приложение готово к работе. Для проверки запустите его при помощи команды Start (Запустить) меню Run (Запуск). Остановка приложения выполняется командой End (Остановить) того же меню.
11. Запрограммируем вызов нескольких дочерних форм. Для этого выделите родительскую форму в конструкторе форм и дважды щелкните левой кнопкой мыши для вызова редактора кода родительского окна.
12. В списке объектов (левый раскрывающийся список) выберите пункт меню mnuFileNewForm, в левом списке событий выберите событие click и напишите для него следующий код :
Private Sub nmuFileNewForm Click()
Dim frmNewForm As New frmChildMDI
frmNewForm.Show
End Sub
В тексте кода мы объявили объектную переменную frmNewForm для ссылки на вновь созданный экземпляр окна. Затем с помощью метода show новый экземпляр визуализируется в родительском окне. Для вычисления номера дочернего окна используется переменная frmCount. Этот код выполняется при выборе команды Новая форма из меню Файл родительского окна.
13. При помощи этого простого приложения можно проверить все основные характеристики родительского и дочернего MDI-окон. Для проверки возможностей упорядочения дочерних окон в родительском окне (свойство Arrange) добавим в меню пункт Окно и команду меню, выполняющую упорядочение. Для этого откройте редактор меню и добавьте пункт Окно и необходимую команду. Присвойте пункту меню имя mnuwindow, а команде, предназначенной для расположения окон каскадом, имя mnuwindowTileVertical. Программный код должен выглядеть следующим образом:
Private Sub mnuwindowTileVertical Click()
mdiParentMDI.Arrange vbTileVertical
End Sub
Ниже приведен полный текст кода созданного нами простого приложения:
Dim frmCount As Integer
Private Sub MDIForm_Load()
frmChildMDI.Caption = "Дочерняя форма 1"
frmCount = 1
End Sub
Private Sub mnuFileNewForm Click()
Dim frmNewForm As New frmChildMDI
frmCount = frmCount + 1
frmNewForm.Caption = "Дочерняя форма " + Str(frmCount)
frmNewForm.Show
End Sub
Private Sub mnuWindowTileVertical Click()
mdiParentMDI.Arrange vbTileVertical
End Sub
Работающее приложение с упорядоченными окнами представлено на рис. 7.5.
Рис. 7.5. Работа простого приложения в стиле интерфейса MDI
Аналогично можно запрограммировать другие способы упорядочивания дочерних окон в родительском.
Интерфейс типа проводник разрабатывается для доступа к иерархическим древовидным структурам, то есть к таким, где встречается вложенность. Примером вложенности могут служить папки и файлы. Файлы лежат в папках, которые в свою очередь лежат в вышестоящих папках и так далее. Примером такого интерфейса является проводник Windows (рис. 7.6). На рисунке наглядно видна структура хранения папок и файлов, образующая иерархическое дерево. По своей сути это аналог интерфейса SDI, разработанный специально для древовидных структур.
Интерфейс приложения типа проводник содержит следующие элементы:
Рис. 7.6. Интерфейс типа проводник (Explorer)
Рассмотрим подробнее основные элементы интерфейса и возможности их использования в приложениях Visual Basic 6.
Любое приложение создается для реализации комплекса функций, обеспечивающих выполнение общей задачи приложения. Для быстрого доступа ко всем функциям приложения используется меню: главное меню приложения и контекстное меню отдельных объектов приложения (форм, панелей).
При проектировании меню следует руководствоваться определенными принципами. Главный из них — стандарты. Рекомендуется придерживаться стандартных названий команд меню и их расположения: например, пункт меню для работы с файлами рекомендуется называть в своих приложениях File (Файл), а пункт меню для вызова справочной системы приложения — Help (Справка). При этом пункт меню File желательно располагать самым первым, а пункт Help — последним. На этот стандарт для всех приложений Windows, к которому привыкли многие миллионы пользователей, можно вполне положиться. Приложение будет при этом более понятным пользователю.
В процессе разработки меню желательно группировать команды меню, реализующие функции для решения конкретной задачи (например, работа с файлами), в одно раскрывающееся меню, которое будет соответствовать пункту меню. Например, все команды, реализующие функции работы с файлами, желательно сгруппировать в одно раскрывающееся меню, связанное с пунктом меню File.
В приложениях каждой команде меню, как правило, соответствует "горячая" клавиша (клавиша быстрого доступа). Рекомендуется по возможности использовать стандартные клавиши, например, как в Microsoft Word. В принципе, это приложение может служить стандартным образцом для создания собственных приложений при разработке не только меню, но и всех других элементов. Как и любой другой объект приложения, меню имеет набор свойств. Свойства меню доступны для редактирования в окне Properties (Свойства) формы, которой принадлежит меню (рис. 7.7). |
Рис. 7.7. Свойства меню
Основные свойства меню приведены в табл. 7.6.
Таблица 7.6. Основные свойства меню
Свойство |
Назначение |
Name |
Наименование (имя) меню. Должно быть уникальным, так как позволяет идентифицировать меню. Желательно пользоваться стандартным присвоением имени, то есть имя должно начинаться с букв mnu |
Caption |
Текст, отображаемый в пункте меню. Если в этом тексте перед одной из букв поместить символ "&", то буква в пункте меню будет подчеркнута и клавиша этой буквы будет назначена "горячей" клавишей для быстрого доступа к данному пункту меню |
Checked |
Если это свойство имеет значение True, при работе приложения слева от наименования выбранного пункта меню появляется галочка |
Enabled |
Свойство, определяющее возможность выполнения команды (пункта) меню. В зависимости от контекста объекта команды запрещаются или разрешаются |
HelpContextID |
Идентификатор справочной системы, соответствующий справке об этом меню |
Index |
Идентификатор пункта меню в массиве элементов управления приложения |
NegotiatePosition |
Определяет положение меню на экране |
Shortcut |
Комбинация клавиш для быстрого выполнения пункта меню |
Visible |
Определяет видимость на экране пункта меню. При работе приложения с помощью этого свойства пункты меню можно динамически прятать или показывать |
WindowList |
Назначает свойство формирования динамического списка окон. При установке этого свойства в меню будет добавляться список окон по мере их запуска при работе приложения. Это свойство обычно используется для пункта меню самого верхнего уровня и для родительского окна приложений с интерфейсом типа MDI |
Для проектирования меню всех видов используется редактор меню Menu Editor (Редактор меню) среды проектирования IDE (рис. 7.8). Редактор меню вызывается одним из следующих способов:
Редактор создает меню для активного в данный момент окна, то есть, если активно MDI-OKHO, проектируется меню для него, если активна дочерняя форма, проектируется меню для дочерней формы. На рис. 7.8 показан редактор меню родительского окна, созданного автоматически мастером приложения Application Wizard.
Редактор меню состоит из двух групп: элементов управления свойствами и элементов конструирования структуры меню. Управлять основными свойствами меню, о которых было сказано выше, можно с помощью следующих элементов редактора меню:
Рис. 7.8. Окно редактора меню Menu Editor
Элементы группы конструирования структуры меню позволяют добавлять и удалять новые пункты меню, перемещать пункты по вертикали, меняя порядок их следования, и по горизонтали, меняя расположение пунктов в иерархии системы меню:
Для добавления пункта меню выполните следующие шаги:
1. Выберите место в имеющейся структуре меню.
2. Добавьте пункт меню, нажав кнопку Insert (Вставить).
3. В поле Caption (Заголовок) введите название пункта меню, которое будет отображаться в строке меню при запуске приложения на выполнение.
4. В поле Name (Имя) введите имя пункта меню, по которому он иденти фицируется в программном коде.
Для приложения любого типа можно использовать удобное средство быстрого доступа к функциям — контекстное меню. Контекстное меню связано с некоторым действием (обычно это щелчок правой кнопки мыши на объекте) и вызывается в любом месте приложения. В исходном состоянии контекстное меню невидимо и визуализируется рядом с указателем мыши после вызова. Контекстным такое меню называется потому, что оно появляется рядом с выбранным объектом, и его состав зависит от содержания (контекста) этого объекта. После выбора команды из контекстного меню оно исчезает.
Проектируется контекстное меню как один из пунктов верхнего уровня строки меню. Поскольку меню должно быть скрыто и вызываться определенным действием, свойство visible проектируемого пункта меню необходимо установить в значение False.
Для визуализации контекстного меню на экране необходимо использовать метод popUpMenu формы. Например, для вызова меню File (Файл) при нажатии правой кнопки мыши достаточно написать такую условную конструкцию для события MouseUp формы:
If Button = vbRightButton
Then Form1.PopUpMenu mnuFile
End If
В этом примере при выполнении в форме события MouseUp (Нажатие на кнопку мыши) проверяется, какая кнопка нажата. В данном случае, при помощи внутренней константы Visual Basic 6 vbRightButton (Правая кнопка) проверяется нажатие на правую кнопку мыши и запускается метод PopUpMenu. В качестве параметра задается имя требуемого контекстного меню.
В дополнение к строке состояния и контекстному меню, в настоящее время большой популярностью пользуются панели инструментов, позволяющие ускорить доступ к функциям приложения. Обычно панель инструментов содержит наиболее часто используемые команды строки меню или контекстных меню. При разработке приложении можно применять панели двух видов: обычную панель ToolBar (рис. 7.9) и улучшенную панель CoolBar (рис. 7.10).
Рис. 7.9. Обычная панель инструментов
Рис. 7.10. Улучшенная панель инструментов
Для проектирования панелей инструментов в Visual Basic 6 используются:
Мастер панелей инструментов Toolbar Wizard
Для проектирования панелей инструментов в программе Visual Basic можно использовать мастер панелей инструментов, работающий в составе мастера приложений VB Application Wizard.
Замечание
Запуск и работу данного мастера мы рассмотрели в главе 2.
Диалоговое окно мастера показано на рис. 7.11. В верхней части окна мастера расположена предлагаемая по умолчанию панель инструментов, ниже расположены два списка. Левый список содержит набор кнопок, который может быть добавлен на панель инструментов. Правый список отображает набор кнопок, уже размещенных на панели инструментов.
Для добавления кнопки на панель инструментов необходимо выбрать в левом списке требуемую кнопку и перенести ее в правый список, выполнив одно из следующих действий:
Рис. 7.11. Окно мастера проектирования панелей инструментов
При выполнении любого из этих действий требуемая кнопка перемещается в правый список и одновременно добавляется на панель инструментов.
Чтобы отредактировать наименование или изменить значок кнопки, располагаемой на панели инструментов в верхней части окна мастера, нажмите данную кнопку. Откроется диалоговое окно Button Attributes (Атрибуты кнопки) (рис. 7.12), в котором можно изменить требуемые параметры. Для изменения значка нажмите кнопку Change Bitmap и с помощью открывшегося диалогового окна выберите графический файл для изображения, размещаемого на кнопке.
Рис. 7.12. Диалоговое окно Button Attributes
Кнопка Reset (Сброс) возвращает панель инструментов в исходное состояние, устанавливаемое мастером по умолчанию. Изменить последовательность кнопок на панели инструментов можно кнопками перемещения позиций в списке. Следует иметь в виду, что кнопки перемещения позиций управляют только правым списком.
Используя кнопку Load an External Bitmap or Icon можно добавить на панель инструментов свою кнопку. Пользовательская кнопка размещается в правом списке и на панели инструментов.
Элемент управления ToolBar предоставляет возможность применять в приложении обычные панели инструментов. Для использования этого элемента управления в приложении необходимо подключить к проекту библиотеку Microsoft Windows Common Controls 6.0, выбрав команду Components (Компоненты) меню Project (Проект). В открывшемся при выполнении этой команды окне Components необходимо найти в списке указанную библиотеку, установить располагаемый с левой стороны флажок и нажать кнопку ОК. После подключения этой библиотеки элемент управления TooiBar появится на панели элементов управления.
Панель инструментов ToolBar является контейнером и может содержать следующие элементы управления:
Управлять панелью можно при помощи основных свойств, описанных в табл. 7.7.
Таблица 7.7. Основные свойства панели инструментов
Свойство |
Назначение |
AllowCustomize |
Позволяет настраивать панель инструментов при работе приложения, то есть добавлять, удалять, перемещать кнопки панели |
BorderStyle |
Задает тип обрамления панели |
ButtonHeight |
Задает высоту кнопок панели, при этом автоматически вычисляется высота самой панели |
ButtonWidth |
Задает ширину кнопок панели |
Enabled |
Управляет доступом к выполнению действий на панели инструментов |
ShowTips |
Устанавливает режим отображения подсказки для кнопок панели инструментов |
Visible |
Задает видимость панели инструментов |
Wrappable |
Устанавливает режим автоматического переноса кнопок на другой ряд при недостатке места |
Возможности настройки панели инструментов рассмотрим на примере. Для этого сконструируем небольшую панель инструментов в приложении MyMDIApp, созданном для проверки свойств интерфейса в стиле MD1. Выполните для этого следующие действия:
1. Подключите к проекту библиотеку Microsoft Windows Common Controls 6.0, в которой содержится элемент управления ToolBar, воспользовавшись диалоговым окном Components (Компоненты).
2. Добавьте в родительскую форму объект ToolBar, дважды щелкнув мышью кнопку ToolBar на панели элементов управления.
3. Откройте окно свойств, выбрав команду Properties Window (Окно свойств) в меню View (Вид) при выделенной в форме панели инструментов.
4. Используя свойство Name, присвойте панели имя tbrTools.
5. Панель инструментов создана, теперь необходимо разместить на ней кнопки. Для этого вызовем окно проектирования панели, нажав на ней правую кнопку мыши и выбрав в появившемся контекстном меню команду Properties (Свойства).
6. В открывшемся диалоговом окне Property Pages (рис. 7.13) по умолчанию выбрана вкладка General (Основная), позволяющая установить основные свойства панели. Оставим параметры в исходном состоянии. Выберите вкладку Buttons (Кнопки), с помощью которой создаются кнопки панели инструментов.
7. Нажмите кнопку Insert Button (Вставить кнопку) для добавления новой кнопки на панель инструментов. Эту кнопку будем использовать для вызова нового дочернего окна формы, то есть как аналог команды Новая форма меню Файл родительского окна.
Рис. 7.13. Диалоговое окно Property Pages
8. В полях, управляющих свойствами кнопок, задайте следующие значения:
9. Запрограммируем действие, выполняемое при нажатии новой кнопки. Для вызова редактора кода дважды щелкните мышью на панели tbrTools. При этом будет автоматически использован шаблон для действия, выполняемого при нажатии на кнопку панели инструментов. Введите следующий программный код:
Private Sub tbrTools_ButtonClick (ByVal Button As MSComctlLib. Button)
Select Case Button.Key
Case Is = "ToolsNewForm"
Dim frmNewForm As New frmChildMDI
frmCount = frmCount + 1
frmNewForm.Caption = "Дочерняя форма " +
Str(frmCount)
frmNewForm.Show
End Select
End Sub
Замечание
Несмотря на то, что кнопка на панели инструментов всего одна, в коде применена конструкция Select Case для отработки действий других добавляемых на панель кнопок.
На рис. 7.14 показано приложение, содержащее панель инструментов с одной кнопкой.
Рис. 7.14. Пример приложения с использованием панели инструментов
Вместо текста на кнопке можно разместить графическое изображение, как это обычно и делается для экономии места. Для этого необходимо сначала создать файл графического изображения, а затем подключить его к кнопке панели. В качестве объекта для хранения списка графических изображений можно использовать элемент управления imageList. Создадим такой список в нашем приложении. Данный элемент управления находится в той же библиотеке, что и панель инструментов, поэтому дополнительного подключения библиотек не потребуется. Для размещения в форме элемента управления imageList выполните следующие действия:
1. Разместите в родительской форме объект imageList, дважды щелкнув мышью кнопку ImageList (Я на панели элементов управления.
2. В окне свойств задайте имя созданного объекта imlimageListTools.
3. Выделите объект, нажмите правую кнопку мыши и выберите в появившемся контекстном меню команду Properties (Свойства). Откроется диалоговое окно Property Pages (Страницы свойств), с помощью которого создадим список графических изображений (рис. 7.15).
4. Выберите вкладку Images (Изображения).
Рис. 7.15. Диалоговое окно Property Pages объекта ImageList
5. Для идентификации списка изображений введите в поле Key (Ключ) имя списка imITools.
6. Чтобы добавить в список графическое изображение, нажмите кнопку Insert Picture (Вставить изображение). Откроется диалоговое окно поиска графических файлов. Выберите требуемый файл и нажмите кнопку Открыть. Графическое изображение добавляется в список. Для добавления следующего элемента списка опять нажмите кнопку Insert Picture. Завершив формирование всего списка графических изображений, нажмите кнопку ОК для закрытия диалогового окна Property Pages.
Замечание
Для создания панели инструментов в своем приложении мы воспользуемся графическими файлами New.bmp и Open.bmp из каталога \Visual Basic \Common\Grafics\Bitmaps\OffCtrlBr\Small\Color.
7. Список изображений готов. Для подключения созданного списка изображений к панели необходимо вызвать окно свойств панели и на вкладке General (Общие) выбрать наименование созданного графического списка в открывающемся списке ImageList (Список изображений).
Для размещения графического изображения на кнопке панели инструментов выполните следующие действия:
1. Откройте диалоговое окно Property Pages (Страница свойств) для проектируемой панели.
2. На вкладке General (Общие) выберите из списка ImageList наименование
созданного нами списка изображений imlImageListTools.
3. Перейдите на вкладку Buttons (Кнопки).
4. Установите в поле Index (Индекс) значение 1, указывая, что выбирается первая кнопка.
5. Установите в поле Image (Изображение) значение 1, указывая, что выбирается первое изображение из списка. На кнопке после этого появляется требуемое изображение. При этом размеры кнопки автоматически устанавливаются в соответствии с размером изображения.
Приложение, содержащее на панели инструментов графическую кнопку, показано на рис. 7.16.
Рис. 7.16. Панель инструментов приложения содержит графическую кнопку
Совет
Для создания интервалов между кнопками используются кнопки, для которых свойство Style установлено в значение tbrSeparator.
назад | содержание | вперед
Hosting uCoz