назад | содержание | вперед

Глава 7. Разработка пользовательского интерфейса.

Интерфейс — это внешняя оболочка приложения вместе с программами управления доступом и другими скрытыми от пользователя механизмами управления, дающая возможность работать с документами, данными и другой информацией, хранящейся в компьютере или за его пределами. Главная цель любого приложения — обеспечить максимальное удобство и эффективность работы с информацией: документами, базами данных, графикой или изображениями. Поэтому интерфейс является, пожалуй, самой важной частью любого приложения.

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

Проектирование интерфейса — процесс циклический. На этом этапе разработки приложения желательно чаще общаться с пользователями и заказчиками приложения для выработки наиболее приемлемых по эффективности. удобству и внешнему виду интерфейсных решений.

Выбор того или иного типа интерфейса зависит от сложности разрабатываемого приложения, поскольку каждый из них имеет некоторые недостатки и ограничения и предназначен для решения определенных задач. При этом необходимо ответить на ряд вопросов: какое количество типов документов обрабатывается в приложении, имеют ли данные древовидную иерархию, потребуется ли панель инструментов, какое количество документов обраба-тывается за некоторый интервал времени (например, за день) и т. д. Toлько после этого можно выбирать конкретный тип интерфейса.

Рассмотрим возможные типы интерфейсов и их характерные особенности, влияющие на выбор интерфейсного решения приложения.

Общие советы по разработке интерфейса

При разработке интерфейса необходимо руководствоваться следующими принципами:

Здесь перечислены основные принципы, которые следует учитывать при проектировании интерфейса приложения, но они не являются догмой. Со временем в процессе работы с пользователями и накоплением практического опыта будут вырабатываться и свои оптимальные принципы построения интерфейса.

Типы интерфейсов

В настоящее время для приложений, разрабатываемых в среде Windows при помощи Visual Basic б, используется три типа интерфейса: однодокументный SDl (Single-Document Interface), многодокументный MDI (Multiple-Document Interface) и интерфейс типа проводник (Explorer).

Замечание

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

В этой главе основное внимание будет уделено первым двум типам интерфейса, поскольку они наиболее часто применяются для разработки пользовательских приложений. Интерфейс типа проводника используется в приложениях не так часто, поэтому мы дадим только его краткое описание.

Однодокументный интерфейс — это тип интерфейса, в котором предоставляется возможность работы только с одним документом в одном окне. Примером может служить редактор Microsoft WordPad. Для работы с несколькими документами в таком интерфейсе необходимо многократно запускать приложение. Для каждого типа данных и документов требуется своя форма и, соответственно, свое приложение с интерфейсом типа SDI. В принципе, это тоже один из возможных вариантов, но он подходит только для работы с небольшим количеством форм документов. При загрузке большого количества SDI-приложений начинает переполняться оперативная память компьютера и приложения работают очень медленно. Каждый раз при запуске SDI-приложения в память загружаются одни и те же данные (меню, панель и элементы управления), выполняющие одинаковые действия, что приводит к неэффективной и медленной работе запускаемых приложений.

Однако полностью отказываться от интерфейса типа SDI не стоит, поскольку он вполне годится для работы с одним или двумя документами (например, для копирования из одного документа в другой). Есть и положительные стороны приложений такого типа интерфейса — они занимают меньше места на диске и в оперативной памяти, да и на их разработку уходит гораздо меньше времени, что также немаловажно.

Интерфейс типа MDI дает возможность работать в одном приложении с любым количеством открытых окон.

SDI-интерфейс

Интерфейс типа SDI показан на рис. 7.1. Он состоит из следующих элементов:

Рис. 7.1. Пример интерфейса типа SDI

Этот тип интерфейса подходит для приложений, созданных для работы с документом одного типа с небольшим количеством полей (иначе форма перегружается элементами управления и интерфейс становится сложным и неудобным).

MDI-интерфейс

Главная особенность 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-форма показана на рис. 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

Дочернее окно MDI-интерфейса

Дочернее окно (рис. 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

Для проектирования меню всех видов используется редактор меню 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

Элемент управления 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