Delphi: Интерфейс в XPерементальном стилеИсточник: codingclub
Как вы уже, наверное, заметили, приложения, созданные с помощью Delphi и C++ Builder не имеют поддержки тем новой ОС. Ваш рабочий стол и все такое выглядит красиво, стильно, а вот ваше приложение до сих пор мозолит глаза прямоугольными невыразительными кнопками Win9x/Me. Все это можно изменить, главное - дочитать эту статью до конца. Изначально поддержка тем ХР осуществляется через ComCtl32.dll версии 6, которая поставляется с этой ОС и не является redistributable (т.е. перераспостраняемой), так что в WinMe вам не удастся устроить поддержку визуальных тем, просто скопировав в нее библиотеку из XP. Но вернемся к нашей задаче... Для того чтобы организовать поддержку тем, нужно использовать так называемый «манифест» приложения, написанный на XML (Extensible Markup Language). Итак, создаем текстовый файл и набираем в нем следующее (попутно заменив CompanyName… на имя приложения и остальные данные о нем): <?xml version="1.0" encoding="UTF-8" standalone="yes"?> Если вам этот способ показался неудобным, то чтобы лишний раз не сбивать пальцы о клавиатуру (и складывать руки в ожидании 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 напишите этот код: var // 'Edit' theme data И еще один важный момент - вывод текста в стиле выбранного компонента. Специально для этого я написал коротенькую процедуру, которая вызывается при перерисовке (в примере PaintBox’a): DrawXPStart_Text(PaintBox.Canvas,PaintBox.ClientRect,tspUserPane,-10,-55,'Super font, isn''t it?'); procedure TForm1.DrawXPStart_Text(Canvas: TCanvas; R: TRect; Ну, думаю, теперь точно хватит. Впрочем, если вы кое-что недопоняли, то разобраться вам поможет мой пример, в котором с левой стороны окна выводится синяя панель, аналогичная панели Проводника. И в заключение еще пару слов о компоненте - он оказался настолько хорош и функционален, что Borland взяла именно его для поддержки тем в своих последующих продуктах (Delphi 7)... P.S. Если вы желаете присвоить стиль ХР другим программам автоматически, то существует программа XPSkins, в окне которой достаточно выбрать ехе-файл и нажать на кнопку установитьубрать стиль ХР (она автоматически создает «манифесты»). |