Одним из важнейших факторов коммерческого успеха ПО является примечательный, оригинальный, понятный и удобный интерфейс. Поскольку программисты, пишущие в средах Borland (Delphi, C++ Builder), порядком избалованы обилием компонентов от сторонних разработчиков, речь будет идти о создании такого интерфейса в среде MS VB 6. В этом цикле статей будут рассмотрены наиболее часто встречающиеся нестандартные элементы интерфейса, советы по построению приложения и пути их воплощения.
Msvbvm60.dll
Название msvbvm60.dll расшифровывается как MS VB Virtual Machine for VB 6.0. Этот файл необходим для всех программ, написанных на VB6. Некоторых начинающих программистов отпугивает от программирования на VB именно этот факт, в сочетании с размером этого файла 1 384 448 байт. Однако его совсем не нужно поставлять вместе со своей программой на VB, он входит в состав всех ОС Windows, начиная с 95 и NT, а для любого количества запущенных программ на VB требуется только одна копия этого файла. Тем не менее, используемые OCX-файлы необходимо поставлять вместе со своей программой, они-то и не радуют VB-программиста, поскольку весьма громоздки (>200 Kб). О том, как можно обойтись без дополнительных OCX’ов, написано ниже.
О Common Dialog
Все VB-программисты, хоть раз утруждавшие свои программы работой с пользовательскими файлами, знают о необходимости снабжать свой продукт диалогом открытия файлов. Такой диалог, будучи состряпанным из стандартных элементов управления VB DriveListBox, DirListBox, FileListBox, выглядит, мягко говоря, архаично (см. рис. 1) и не удовлетворяет требованиям нынешнего времени. Альтернативой ему служит control Microsoft Common Dialog Control 6.0, который можно отыскать, right-кликнув крысой на панели компонентов и выбрав из вылезшего PopUp-меню Компоненты… или разыскав пункт меню Проект > Компоненты (Ctrl+T). Control помещается на форме, после чего там возникает иконка. Затем в тексте программы надо написать примерно следующее:
Более того, Microsoft Common Control 6.0 позволяет, помимо вызова диалога открытия файла (см. Рис. 2), вызывать диалог сохранения файла, выбора цвета, шрифта, отображать help и устанавливать настройки принтера. Для всего этого необходимо вызывать соответственно, методы ShowSave, ShowColor, ShowFont, ShowHelp и ShowPrinter. Отпугивает лишь то, что файл этого элемента управления Comdlg32.ocx весит 140 096 байт . Для преодоления этого недостатка следует применять API-функцию GetOpenFileName (необходимо объявление типа OPENFILENAME). Вот пример (см. Рис. 3):
ToolBar
Неплохой control для создания панели инструментов входит в состав Microsoft Windows Common Controls 6.0. Он так и называется Toolbar. Но размер файла mscomctl.ocx 1 062 704 байт, поэтому предпочтительно создавать toolbar с помощью CommandButton.
Существуют, насколько мне известно, API-функции для создания toolbar, но хорошего я о них сказать ничего не могу, поскольку такой способ создания крайне трудоемок и едва ли себя оправдывает в Visual Basic.
О том, как создать «подставку» для кнопок, будет рассказано в разделе «О рельефных control’ах Delphi». Если вы не в курсе, где VB прячет картинки для toolbar’а, загляните в папку C:\Program Files\Microsoft Visual Studio\Сommon\Graphics\Bitmaps\OffCtlBr\Small\Color. Во всяком случае, в VB 6.0 Enterprise Edition и Professional Edition они лежат именно там. Но вы могли их и не установить: по умолчанию флажок «Графика» в инсталляторе отключен. Впрочем, графика нужна далеко не вся: почти никогда не используются файлы из папок Video и Cursors. Вообще же, желательно ограбить винт какой-нибудь программой типа Restorator (увы, Restorator не работает под XP) на предмет иконок, картинок и курсоров. Такой запас весит не так уж и много, а нужен регулярно.
Примечание: как это ни удивительно, но у многих начинающих VB-программистов возникают вопросы по поводу размещения картинки на кнопке. Для этого необходимо установить свойство Style=Graphical, Picture=нужная картинка и, если вам нужно, чтобы какой-то цвет был прозрачным, UseMaskColor=True; MaskColor=нужный цвет.