![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 2 Всего: 250 |
Здравствуйте.
У меня сложилась следующая ситуация : Если при создании PROGRESSBAR устанавливаю стили, то потом эти стили визуально отображаются:
Если же я хочу установить эти стили после создания, то никакой реакции нету. Т.е флаг стиля устанавливается, но визуально PROGRESSBAR остаётся прежним.
Может кто сталкивался, подскажите, пожалуйста, как заставить PROGRESSBAR "принять" новый стиль? Это сообщение отредактировал(а) mes - 16.1.2006, 13:57 |
||||
|
|||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 25 Всего: 155 |
Тебе надо включить XP стили(XPMan в uses добавь). А для прогресс бара сбросить его SetWindowTheme(PB.Handle,'',''); . И только в ентом случаи у тебя будут работать енти стили в XP.
-------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 2 Всего: 250 |
Спасибо за совет. Попробовал, пока ничего не получилось,
точнее при вызове ф-ции пропрамма прерывается из-за критической ошибки. Буду пробовать еще , однако смущает один момент: Эти стили у меня работают, только стиль установленый при создании потом я не могу сменить. Делаю я это с ф-цией:
Попробовал с флагом ws_Visible. Всё работает корректно. т.е не работает изменение именно флагов : pbs_Smooth , pbs_Vertical. |
|||
|
||||
| Girder |
|
||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 25 Всего: 155 |
Значит не так пробывал. Вот пример:
-------------------- Как слышим, так и пишим. Истина где-то там... |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 2 Всего: 250 |
Спасибо. Твой код работает. Будем иследовать
Только вот размер файла значительно увеличивается. Но это уже мелочи. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 2 Всего: 250 |
Кстати нашел интерсную особеность, может кому пригодится:
если пишите на WINAPI c XP-стилями и не хотите чтоб размер файла сильно увеличивался добавьте вместо uses XPMAN ,строчку {$R WindowsXP.res} ( всего 1Кбайт!) Надеюсь кому-нибудь это поможет. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 2 Всего: 250 |
После изучения кода всё же главный вопрос остался нерешеным.
Наблюдения: 1) Если я подключаю XP-стили то при изменинии флага pbs_Vertical, ProgressBar визуально меняется. 2) Ф-ция SetWindowTheme(PB,'','') сбрасывает темы однако реакция на флаг от неё не зависит. Вопрос: Неужели нельзя добиться реакции на флаг pbs_Vertical , не подлючая эти стили, ведь при создании она воспринимает же этот флаг. |
|||
|
||||
| Girder |
|
||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 25 Всего: 155 |
Добавлено @ 04:10 Хотя... можеш в "классику" переключиться... там работать должно -------------------- Как слышим, так и пишим. Истина где-то там... |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 2 Всего: 250 |
Ты удивишься, но изменение флагов происходит не от вышеназваной ф-ции. Как только я подключаю файл WindowsXp.res, ProgressBar начинает реагировать на флаги (на флаг pbs_Smooth он не реагирует так как у XP-Progressbar нет такого стиля) ф-ция SetWindowTheme приводит только к изменению темы. Ho Если я не подключу WindowsXP.res, то от сброса темы ничего не зависит. Ho в Windows 98 как то же работают эти стили!? Чтоб не углубляться я перефразирую свой вопрос. Если программа составлена для Windows98 и в ней используется изменение стиля после его создания,то эта программа будет некоректно работать в среде XP? Можно ли указать программе что она предназначена для 98 чтоб стили коректно раболи в XP?. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 2 Всего: 250 |
А как это сделать? |
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 25 Всего: 155 |
У меня в WinXP+SP1 не работает без сброса.
Должно работать как в W98... так и XP: 1. подключай WindowsXP.res 2. Динамически грузи uxtheme.dll 3. Если загрузилась... то сбрасывай(SetWindowTheme) для прогрессбара(можеш для всех элементов сбросить... что бы не отличался внешний вид). Если не загрузилась или не нашлась функциия SetWindowTheme(Ну мало... ли что 4. Изменяй флаги... через SetWindowLong -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |