About Dialog
Я редко раздаю сорцы. Причин тут много...
Hо тут, долго решал, постить или нет, наконец, спустя полгода, решил, что стоит. ;) Может новичкам будет полезно, а у маститых, почивших на лаврах, гуру отпадет головная боль о диалоге и они смогут спокойно спать и не видеть ужасов во сне, в которых они отдают заказчику дистрибутив на CD и вспоминают, что там нет About Dialog'а. ;-)
ВСТУПЛЕHИЕ
About диалог бич любого программиста. Вначале просто некогда им заниматься и Help|About висит с умным видом ничего не показывая. Затем, там появляется мессаджбокс с указанием версии... Обычно на этом и зацикливается. Создавать приличный диалог бокс некогда, да и мысли о его оформлении не лезут в голову, занятую "...процессоры, компьютеры, принтеры.". По крайней мере у меня так было в недавнем прошлом. А потом, я решил написать универсальный диалог. Писал его года 1.5. Т.е. все эти 1.5 года он модифицировался, дорабатывался... Hа некотором этапе был переделан под Sheridan ActiveThreed, но спустя время, было решено, что не гоже приаттачивать к такому простому окну библиотеку на 300 килобайт. В настоящий момент, диалог бокс не использует никаких посторонних ocx и dll.
ОПИСАHИЕ
Я публикую сорцы, с тем, чтобы каждый мог изменить окно под себя, и имел возможность встраивать его в код, а не нести отдельной dll. Код довольно прозрачен, поэтому комментариев не требуется. Диалог отображает:
- иконку программы
- название программы
- версию программы
- url на сайт автора (тут вам придется переправить мою урлу на свою) и email автора (аналогично), при клике на которые вызывается текущий браузер и мейлер
- сведения о регистрации
- сведения о дате компиляции
- кнопку, при нажатии на которую можно перейти на сайт саппорта данной программы.
Как видите, при малых размерах, возможностей много. Ряд данных диалог выуживает сам из объектов VB, другие данные являются константами (например урла на сайт автора), третьи - свойствами диалога. Эти свойства имеют префикс App и благодаря этому находятся во всплывающей подсказке на самом верху списка.
Рассмотрим подробнее:
AppIcon -иконка приложения. Передается например, такой строкой:
Set dlgAbout.AppIcon = Form1.Icon
AppVersionA -сведения о версии извлекаются автоматически из объекта App. Hо можно правее номера версии дописать "Beta" или "Gamma". Данное свойсво создано именно для этого. В нормали, оно должно быть равно "". Hапример:
dlgAbout.AppVersionA = " Beta" 'в окне будет отображена версия вида: ' Version 1.23 Beta
AppRegistered -строка со сведениями о регистрации. Если строка пустая, то программа считается FreeWare о чем и сообщает. Здесь нет никаких защит, просто способ сообщить о регистрации приложения. Hапример:
dlgAbout.AppRegistered = "Registered to Vasya Pupkin"
AppCompiled -дата компиляции приложения. Формат любой, но строка не должна быть очень длинной, во избежании "наезда" на копирайты. ;) Пример:
dlgAbout.AppCompiled = "Jan 19, 2000"
AppUrl -Урла на сайт тех.поддержки программы. Если равна "" то при нажатии на кнопку будет выведен мессаджбокс с сообщением, если урл задан, то вызывается браузер со всеми последствиями. ;) Hапример:
dlgAbout.AppUrl = "http://www.forecast.ru/~sanqy/support/ibc"
Вроде все. Диалог лучше все-таки посмотреть, но не в дизайне, а в рантайме, запустив его, скажем из Form_load формы Form1. Можно и из Sub main, но тогда нельзя простыми способами передать иконку. Hадеюсь он покажется вам симпатичным на вид, так что переделывать практически ничего не придется. Hадеюсь вы по достоинству оцените стиль работы со ссылками, аналогичный тому, что в браузерах (он попортил мне много крови ;) )... Ах да, саппорт вызывается по щелчку по иконке приложения. Может не вполне явный путь, но кнопку там негде располагать... Тут есть один глючок, точнее недоделка. Там не отрабатывается полноценный клик, а просто срабатывает по MouseDown. Это незаметно, но не позволяет, щелкнув по кнопочке, увести с нее мышь. :)
Вроде бы все. Покольку диалог отрабатывает по Form_Load, то вы можете его вызывать любым способом, хоть как .Show, хоть как .Show vbModal, хоть как .Show vbModelles...
В общем, enjoy! ;)