CFA LogoCFA Logo Computer
Загрузка поиска
Новости Компьютеры Прайс-лист [Новое] Прайс-лист [Б/У] Для ноутбуков Конфигуратор ПК Заказ, Оплата, Доставка Сервис объявления Драйвера Статьи Как нас найти Контакты
Новости
RSS канал новостей
Компактный компьютерный блок питания с уменьшенной до 140 мм глубиной представила в эти дни тайваньская ...
Несмотря на лето и запрет в Украине российских интернет ресурсов Яндекс, Mail.Ru и других, посещаемость ...
Китайская компания Colorful презентовала в эти дни свою новую материнскую плату на базе топового ...
Компания Google опубликовала в эти дни свой ежемесячный отчет о распределении на рынке фирменной ...
Тайваньская компания Gigabyte Technology сегодня официально представила свою башенную систему охлаждения ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2002 ГОД

Интерфейс в XPерементальном стиле

Вячеслав ДЖУРА hoaxer@i.com.ua

Как вы уже, наверное, заметили, приложения, созданные с помощью Delphi и C++ Builder не имеют поддержки тем новой ОС. Ваш рабочий стол и все такое выглядит красиво, стильно, а вот ваше приложение до сих пор мозолит глаза прямоугольными невыразительными кнопками Win9x/Me. Все это можно изменить, главное — дочитать эту статью до конца :-).

Изначально поддержка тем ХР осуществляется через ComCtl32.dll версии 6, которая поставляется с этой ОС и не является redistributable (т.е. перераспостраняемой), так что в WinMe вам не удастся устроить поддержку визуальных тем, просто скопировав в нее библиотеку из XP. Но вернемся к нашей задаче... Для того чтобы организовать поддержку тем, нужно использовать так называемый «манифест» приложения, написанный на XML (Extensible Markup Language). Итак, создаем текстовый файл и набираем в нем следующее (попутно заменив CompanyName… на имя приложения и остальные данные о нем):

Теперь сохраните файл на жесткий диск в папку с приложением с именем имя_файла.exe.manifest (где имя файла — имя исполняемого модуля вашего приложения) и запустите программу — и вот она перед вами, только с контролами XP :-)! Вдаваться в подробности не буду, хочу лишь добавить, что этот «манифест» придется поставлять с приложением, или прикомпилировать его в качестве ресурса к исполняемому модулю (в .rc-файле должен быть текст типа 1 24 XPTheme.manifest). Впрочем, и тут есть свои нюансы (например, при использовании плагинов). Детальнее ознакомиться со всем этим вам поможет MSDN http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/userex/cookbook.asp.

Если вам этот способ показался неудобным, то чтобы лишний раз не сбивать пальцы о клавиатуру (и складывать руки в ожидании Delphi 7, в котором осуществили поддержку тем автоматически), можете воспользоваться прекрасным компонентом Theme Manager для Delphi (и Borland C++ Builder, соответственно). Автор компонента —Майк Лишке (Mike Lischke — кстати, спасибо ему за то, что разрешил написать статью о данном компоненте). Заходите к нему на сайт http://www.delphi-gems.com, Скачиваете оттуда комплект Themes Manager, распаковываете и устанавливаете пакет ThemeManager.dpk, после чего у вас в палитре компонентов появится закладка XP с двумя новыми. Чтобы добавить в ваше приложение поддержку стилей, достаточно бросить TThemeManager на форму — и все (в некоторых случаях, если поддержка не работает, придется добавлять ресурс WinXp.res из папки с компонентом, но с такими ситуациями я пока не сталкивался). Откомпилируйте ваш продукт и проверьте — все окна приложения имеют красивые кнопки и контролы а ля XP. Но рано ставить точку — а вдруг любезный читатель захочет написать собственные контролы, используя красивые рамки и шрифты XP? Например, с левой стороны окна сделать панель, как у Проводника... Ну-с, приступим.

Компонент ThemeManager предоставляет все необходимое для рисования отдельно каждого элемента ХР. Для примера мы нарисуем на теле компонента PaintBox красивую рамку от ProgressBar’a. Для этого положите на форму компонент ThemeManager и PaintBox. В обработчике OnPaint PaintBox’a напишите этот код:

Откомпилируйте все это и посмотрите на результат. По краю PaintBox’a выводится красивая рамка с гладкими углами, аналогичная выводимой вокруг компонента ProgressBar. Теперь поясню код по строкам. В переменную Details мы присваиваем детали элемента tpBar (рамка вокруг индикатора прогресса). Затем средствами компонента менеджера тем мы выводим заданный в переменной элемент на канву PaintBox’a. Откуда брать названия элементов? Из файла ThemeSrv.pas или из программы Theme Explorer, созданной автором компонента (закачать ее вместе с исходным кодом вы можете с того же сайта). Откройте файл и поищите там то, что вас интересует. Например, вы наткнулись на такой участок кода:

Перед вами описывается стиль компонента Edit. Вам достаточно скопировать любое из его состояний и вставить в код GetElementDetails() — вместо рамки индикатора нарисуется рамка редактора текста. В этом файле (themeSrv.pas) можно найти описание TaskBar, StartMenu, ExplorerBar. Смотрите таблицу краткого пояснения (или воспользуйтесь Theme Explorer), чтобы быстрей найти компонент, который вам нужен.

И еще один важный момент — вывод текста в стиле выбранного компонента. Специально для этого я написал коротенькую процедуру, которая вызывается при перерисовке (в примере PaintBox’a):

Это приведет к тому, что наш текст будет выведен стилем надписи имени пользователя панели меню «Пуск». Вот сама процедура:

В ней нет ничего сложного, как и в прорисовке компонентов — попросту устанавливаете стиль и с помощью процедуры вывода текста выводите его :-).

Ну, думаю, теперь точно хватит. Впрочем, если вы кое-что недопоняли, то разобраться вам поможет мой пример, в котором с левой стороны окна выводится синяя панель, аналогичная панели Проводника. Исходники программы можете взять здесь —http://www.i.com.ua/~hoaxer/mycomp/example_xp.zip. И в заключение еще пару слов о компоненте — он оказался настолько хорош и функционален, что Borland взяла именно его для поддержки тем в своих последующих продуктах (Delphi 7)...

P.S. Если вы желаете присвоить стиль ХР другим программам автоматически, то существует программа XPSkins, в окне которой достаточно выбрать ехе-файл и нажать на кнопку установить\убрать стиль ХР (она автоматически создает «манифесты»). Закачать ее можно здесь: http://www.cronosoft.com. По тому же адресу вы можете найти еще много других программ, связанных со стилем XP.

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы: *
captcha
Обновить





Хостинг на серверах в Украине, США и Германии. © www.sector.biz.ua 2006-2015 design by Vadim Popov