
- •08_01.Bmp
- •08_02.Bmp
- •08_03.Bmp
- •08_04.Bmp
- •08_05.Bmp
- •ProgressBar в ваших программах
- •08_06.Bmp
- •08_07.Bmp
- •08_08.Bmp
- •Хранение скрытой информации в документе
- •Что такое api?
- •08_09.Bmp
- •Немного о паролировании и шифровании
- •Функция xor
- •11010101010110101001101010111110101010111110101010001…
- •Открытый и закрытый коды
- •Ответы на вопросы
- •Отличия новых версий Office
- •08_10.Bmp
08_05.Bmp
Рис. 8.5. Выпадающее меню с полем ввода.
Создать такое поле можно только программно - через окно настройки это сделать нельзя (как, впрочем, и удалить их впоследствии). Для такого создания следует в окне отладки или в отдельном модуле выполнить команду
CommandBars(x).Controls.Add Type:=y
где "х" - номер панели (можно узнать, просто перебрав их все с помощью команды "MsgBox CommandBars(номер).Name" и выяснив, какой номер имеет панель инструментов с нужным названием), а "y" - одна из констант: "msoControlEdit", "msoControlDropdown", "msoControlComboBox", создающие соответственно поле ввода текста, выпадающее меню и выпадающее меню с возможностью ввода текста.
Управлять созданными полями, добавляя, к примеру, в них текст, можно стандартными командами работы с панелями инструментов. Так, чтобы поместить какой-либо текст в поле ввода, следует использовать команду
CommandBars(x).Controls(y).Text = "текст в поле ввода"
где "х" - номер панели, "y" - номер по счету слева направо данного поля среди кнопок этой панели. Таким образом можно использовать эти элементы для отображения нужной пользователю информации. Точно так же - командой "a=CommandBars(x).Controls(y).Text" можно считать информацию из данного поля и использовать ее в работе программы. Следует лишь внимательно следить за соответствием номеров кнопок их реальному расположению, - при изменении порядка кнопок программа может работать неверно. Назначить макрос кнопке, меню или полю ввода можно командой "CommandBars(x). Controls(y).OnAction = "Имя модуля.Имя программы"".
* * *
Если у вас на компьютере установлено несколько версий Microsoft Office, то вы наверняка сталкивались с одной весьма неприятной ситуацией. Все компоненты Microsoft Office, начиная с 2000-й версии, при каждом своем запуске сканируют системный реестр и перепрограммируют открытие файлов, которые должны ими открываться - .doc, .xls - "на себя", заставляя их открываться именно в новой версии, а не в старой. Помимо того, что это занимает немало времени, подобная ситуация мешает использовать на компьютере сразу две версии Office, например, для того, чтобы, работая в старой, постепенно осваивая новую или, используя новую версию, не отказываться от возможностей, входящих только в предыдущую.
Для того, чтобы "отучить" Word2002 (из OfficeXP) перерегистрировать расширения файлов при каждом запуске, создайте в системном реестре, в разделе HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Word\Options параметр NoRereg, имеющий формат Dword и равный 1, а чтобы сделать то же с Word2000, отредактируйте так же содержимое раздела HKEY_CURRENT_USER\Software\ Microsoft\Office\9.0\Word\Options.
* * *
ProgressBar в ваших программах
Во многих программах для Windows используется такой элемент, как ProgressBar - индикатор, показывающий, на сколько продвинулся тот или иной процесс. В частности, он есть практически во всех программах-инсталляторах. К сожалению, в VBA этот элемент отсутствует, но его можно сделать самостоятельно!
Выглядеть он будет, например, так, как на рис.8.6.
А делается он следующим образом (предполагается, что у нас есть часть программы, в которой выполняется длинный и долгий цикл: то есть известное нам количество множество однотипных операций, и которую надо снабдить ProgressBar'ом):
1. Создаем небольшую форму и помещаем на нее: надпись с пояснительным текстом (например, "Label1") и две другие надписи, (скажем, "Label2" и "Label3"), низкие и широкие, которые расположим одну над другой (рис.8.7).