Рис. 19.2. В таком диалоговом окне выбирается шрифт, который будет использоваться по умолчанию для формы или текста на элементе управления
Простые фокусы с мышью
В VBA есть несколько свойств, которые позволяют управлять тем, что увидят пользователи программы при разглядывании формы, двигая указатель мыши туда-сюда по экрану.
Самое главное, что никакого программирования событий при этом не требуется!
В любом профессионально изготовленном приложении вид указателя мыши зависит от того, над каким сегментом экрана он находится. И вы, как настоящий профессионал, непременно должны добавить такую эффектную возможность в свои VBA-программы. Тем более, для этого вам придется изменить значения лишь одного-двух свойств. Вот что нужно сделать.
1. Выделите форму или элемент управления, для которого потребуется изменить вид указателя мыши.
2. Найдите в списке окна свойств свойство MousePointer и щелкните в поле этого свойства.
3. Выберите подходящий пункт из раскрывающегося списка этого поля.
Все пункты раскрывающегося списка, кроме одного, соответствуют указателям мыши, задаваемым с помощью панели управления Windows (конкретно, на вкладке Указатели панели управления Мышь). Так что при выборе этих пунктов вид указателя в выполняемой программе будет на самом деле зависеть от той графики, которая назначена соответствующему типу указателя в панели управления Windows.
Если назначить специальный указатель мыши форме, то он получит соответствующий вид в рамках формы, включая все ее элементы управления (кроме тех, которым приписаны указатели иного вида).
Не исключено, что вам понравится идея появления изображения черепа со скрещенными костями, когда указатель мыши будет пересекать недоступный элемент управления, - неважно, какой, и независимо от установок в панели управления Windows.
Или, может быть, вы захотите видеть более приятное изображение, например золотую рыбку (рис. 19.3).
Рис. 19.3. Пользовательский указатель мыши на форме VBA
Превратить имеющееся графическое изображение в пользовательский указатель мыши несложно. Вот соответствующие инструкции.
1. Создайте новую пиктограмму или возьмите готовую из коллекции рисунков.
Изображение нужно сохранить в стандартном формате Windows для пиктограмм, в файле с расширением .ico
2. Выполнив инструкцию, предложенную в предыдущем разделе "Изменение вида указателя мыши", установите для свойства MousePointer формы значение 99.
3. Щелкните в поле свойства MouseIcon.
4. Щелкните на кнопке, вызывающей диалоговое окно (на кнопке с многоточием).
VBA откроет диалоговое окно Load Picture (Загрузка рисунка), с помощью которого можно найти и открыть файл с картинкой для вашего указателя мыши.
Вы можете даже связать со своими формами всплывающие подсказки - небольшие текстовые сообщения, которые появляются рядом с указателем мыши при задержке последнего на секунду-другую на элементе управления. Всплывающие подсказки являются прекрасным средством ненавязчивого информирования пользователя о назначении элемента управления.
И еще, всплывающие подсказки предусмотрены только для элементов управления, но не для содержащей их формы.
Чтобы назначить элементу управления всплывающую подсказку, просто напечатайте подходящий текст в поле свойства Tool Tip. Пример того, что вы можете получить, показан на рис. 19.4.
Нельзя навсегда подавить свои художественные порывы, поэтому придет время, когда вы захотите украсить форму или ее элементы управления рисунками. В дополнение к возможности выбирать цвет для тривиальных текстовых окон, вы можете размещать изображения на кнопках, флажках, переключателях, фреймах и других элементах управления. Результат подобного творчества показан на рис. 19.5.
Рис. 19.4. ЧТО же делает эта кнопка? Указания на этот счет дает всплывающая подсказка
Элемент управления Image (Изображение)- тот элемент управления в панели
Toolbox, пиктограмма которого напоминает картину,- можно использовать не только для того, чтобы размещать в нем изображения. Элемент управления Image - это, по сути, просто надпись без заголовка. Поэтому вы можете для размещения изображений использовать элемент управления надписью ( Label ), очистив поле свойства Caption (Заголовок), если текст на элементе управления не нужен.
Рис. 19.5. В эту форму и ее элементы управления добавлены изображения
Не волнуйтесь, хотя работа с графикой не считается простой для начинающего программиста, но VBA превращает процесс в почти тривиальный. Вот инструкции, которым вам нужно следовать в данном случае.
1. Щелкните на форме или элементе управления, куда нужно поместить прекрасный рисунок.
2. В окне свойств для выделенного объекта щелкните в поле свойства Picture.
3. Щелкните на открывающей диалоговое окно кнопке с многоточием, которая теперь появилась в поле свойства Picture.
4. В открывшемся диалоговом окне Load Picture (Загрузка рисунка) найдите файл с нужным изображением и щелкните на кнопке Открыть, чтобы добавить изображение в объект.
В форме (или элементе управления) появится рисунок.
5. Используйте свойства PictureAlignment, PictureSizeMode и Picture Tiling (если они есть у того объекта, с которым вы работаете), чтобы разместить рисунок так, как вам нравится. Вот некоторые подробности об этих свойствах.
* Выбрав подходящее значение свойства PictureAlignment, можно разместить изображение либо по центру, либо в углу объекта.
* Выбрав подходящее значение свойства PictureSizeMode, можно либо растянуть изображение так, чтобы оно заняло всю поверхность объекта (соответствующее значение- fmPictureSizeModeStretch), либо пропорционально сжать изображение, чтобы оно поместилось в объекте (fmPictureSizeModeZoom). либо оставить размер изображения как есть, обрезав лишнее (fmPictureSizeModeClip).
* Для свойства Picture Tiling допускаются всего два значения- True (т.е. VBA нужно размножить изображение и заполнить копиями весь объект) и False.
Поиграв некоторое время с рисунками в формах, не исключено, что вы придете к выводу, что "спартанский" вид для форм предпочтительнее. Чтобы удалить изображение из элемента управления или формы, щелкните в поле свойства Picture в окне свойств, а затем нажмите клавишу <Delete>. Другие методы не работают - ни нажатие <Ctrl+X>, ни нажатие клавиши пробела или печатание и даже нажатие клавиши <Backspace>.
Другие возможности форматирования
По большей части, другие опции меню Format применимы и к отдельным элементам управления, и к их группам. Выделив один или несколько элементов управления, вы можете использовать следующие опции.
* Center in Form (Центрировать в форме) - чтобы центрировать объекты по вертикали или по горизонтали. Если выделено несколько элементов управления, эта команда выставляет все элементы управления по средней линии, а не центрирует набор как одно целое (чтобы получить последнее, сначала нужно сгруппировать элементы управления).
* Arrange Buttons (Выстроить кнопки) - чтобы разместить одну или несколько выделенных кнопок у нижнего или у правого края формы. Команда Arrange Buttons работает и тогда, когда выделены не только кнопки, но перемещаются в результате выполнения этой команды только кнопки.
* Size to Fit (Задать размеры в соответствии с содержимым) - чтобы заставить VBA привести размеры элемента(ов) управления в точное соответствие с размерами содержащегося в нем текста. Эта команда действует одноразово - она не устанавливает для свойства AutoSize значение True, так что при изменении текста в элементе управления размеры последнего не изменятся.
* Size to Grid (Задать размеры по сетке) - чтобы сдвинуть все стороны элемента(ов) управления к ближайшим линиям сетки.
В редакторе Visual Basic нет команды, позволяющей равномерно распределить элементы управления в форме по горизонтали или вертикали. Однако приблизительно то же самое можно сделать достаточно просто с помощью такой последовательности действий (все упомянутые здесь команды находятся в меню Format).
1. Разместите элементы управления с помощью мыши примерно так, как вам нужно.
2. Выделите эти элементы управления и активизируйте команду Align=Tops
(Выровнять=По верху) или любую другую команду выравнивания по горизонтали.
3. Оставив все элементы управления выделенными, активизируйте команду
Horizontal Spaclng=Make Equal (Расстояние по горизонтали = Сделать одинаковым).
4. Сгруппируйте выделенные элементы управления (т.е. активизируйте команду
Group (Сгруппировать)).
5. Активизируйте команду Center in Form Horizontally (Центрировать в форме по горизонтали).
В вышеприведенной инструкции предполагалось равномерно распределить элементы управления по горизонтали. Чтобы распределить их равномерно по вертикали, выберите в пп. 2, 3 и 5 версии команд, соответствующие действиям по вертикали.
Дополнительно о работе с элементами управления
В главе 10 вы познакомились с наиболее важными элементами управления и их использованием. В настоящем разделе я дам вам дополнительные советы о работе с отдельными типами элементами управления, а также расскажу об элементах управления, которым не нашлось места в главе 10.