Delphi.
Встраивание XP Visual Manifest в ваше приложение:
Если ты программируешь на Делфи и юзаешь последние «Окошки», то должен был заметить одну неприятную вешь: В Windows XP программы, сделанные на Delphi не поддерживают визуальные стили. Обидно, но поправимо ?. Дело в том, что все переделанные елементы, которые отображаются в новом стиле, находятся в отдельной библиотеке ComCtl32.dll версии 6.0. (Если ты судорожно бросился искать этот файл, чтобы заменить им 5-ую версию в Windows 98, то остановись. ComCtl32.dll версии 6.0 работает только в Windows XP!)
Как же получается, что одни программы отображаются в новом стиле, а другие нет? Разработчики Windows XP для отображения приложений в старом стиле оставили версию 5.0, а для новых стилей добавили версию 6.0. Для того, чтобы новые программы корректно работали под предыдушими ОС в них по прежнему делается ссылка на старую версию библиотеки, а для новой ОС в ресурсах программы делается указатель на возможность поддержки новой версии библиотеки.
Вот наша задачка уже и прояснилась, необходимо просто напросто дополнительно запихнуть в программу этот ресурс и дело в шляпе.? Что же нам надо туда запихнуть?
А вот что (эдакий xml код):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
name="Microsoft.Windows.ApplicationName"
processorArchitecture="x86"
version="1.0.0.0"
type="win32"/>
<description>ApplicationDescription</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
Примечание:
Вместо ApplicationName укажите название программы
Вместо ApplicationDescription – описание программы
Для тех, кто не знает как помешаются ресурсы в программу - приведу пример.
1.Сохраните приведенный выше код в файл (например manifest.txt).
2.Создайте файл такого содержания:
1 24 [путь до файла]/manifest.txt
и сохраните его в папку ../Program Files/Delphi/Bin/ с именем: resfile.rc
3.Запустите файл: ../Program Files/Delphi/Bin/brcc32.exe resfile.rc
4.В папке ../Program Files/Delphi/Bin/ появится файл с названием resfile.res – этот файл необходимо прописать в разделе implementation вашего приложения.
Вот так выглядела наша программа до встраивания манифеста:
А это она же, только после усовершенствования:
Сразу же оговорюсь! Колонки компонента TListView – это THeaderControl. Дело в том, что «родные» колонки компонента выдают ошибку при наведении на них курсора мыши. В чем причина этой ошибки я выяснить не смог, но замечу, что у меня Delphi6 PE. Как ведуд себя программы, сделанные в других версиях Delphi – я не знаю.
Автор статьи Константин Тарабрин aka Delphir [delphir@times.lv]