Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2008.06.29;
Скачать: [xml.tar.bz2];

Вниз

ListView + lvoOwnerData + темы   Найти похожие ветки 

 
mdw ©   (2007-09-24 18:57) [0]

Столкнулся с такой проблемой. Использую ListView с lvoOwnerData, соответственно пределил OnLVData. Все хорошо, проблем нет.
Но заметил под WinXP c подключенной темой, что в режиме lvsIcon и lvsSmallIcon, при изменении размера ListView (caClient), содержимое ListView не перерисовывается. Если отключить использование тем, то все нормально. Посмотрел в MSDN про LVN_GETDISPINFO, вроде никаких особенностей для ХР нет.
Сейчас поставил принудительную перерисовку при изменении размера, но это не есть хорошо.
Собственно вопрос, никто не сталкивался с описанной проблемой? Или это глюк WinXP?


 
robt   (2007-09-25 12:09) [1]


> Или это глюк WinXP?

ты видел подобное в explorer ?


 
mdw ©   (2007-09-25 13:23) [2]

Не видел, но это не показатель, в MS еще те программеры, могли тоже по ресайзу перерисовку поставить. Но вероятнее, что просто сообшение не доходит. Поэтому и спрашиваю. Может Владимир Кладов посмотрит, мне что-то не хватило силенок...
Хотя почему без манифеста все нормально? Поэтому и возникли подозрения про глюк.


 
robt   (2007-09-25 14:50) [3]


> Может Владимир Кладов посмотрит

я уже подымал тему про темы
но так как автор их не любит и на своем компе отключает
то и работать нормально они никогда не будут


 
mdw ©   (2007-09-25 16:31) [4]


> то и работать нормально они никогда не будут

Да почему? Нормально все работает, включи GRAPHCTL_XPSTYLES и наслаждайся, что не устраивает то?


 
Vladimir Kladov ©   (2007-09-25 21:06) [5]

Вот здесь http://kolmck.net/testListViewResizeInThemes.rar

проект, который я с ваших слов сделал. Ничего не вижу, что ломается? Или ищите глюки у себя, или делайте минимальный тест, который демонстрирует проблему.

P.S. Из-за переключения тем XP у меня напрочь слетел Delphi6. Пришлось переставлять. Обновления пока откладываются. Надеюсь, только до завтра.


 
mdw ©   (2007-09-26 13:26) [6]

www.kolnmck.ru/_Test.zip

Вот минимальный проект. Попробуйте изменять размер за левую границу.


 
homm ©   (2007-09-26 13:30) [7]

> [6] mdw ©   (26.09.07 13:26)
> www.kolnmck.ru/_Test.zip
> Вот минимальный проект.

Ого! 250 кб в одном dfm. Вот это мимнимум :)


 
mdw ©   (2007-09-26 14:36) [8]


> Ого! 250 кб в одном dfm. Вот это мимнимум :)

Нда, ImageList не почистил. Перезалил.


 
Vladimir Kladov ©   (2007-09-26 17:54) [9]

ответ: неправильный манифест. Правильный называется XPThemes.mainfest и лежит в папке Windows в подпапках там поищите и найдёте. Переименуете и все будет правильно. Кстати, изображение портится и при отключённых темах, достаточно наличия файла манифеста.


 
mdw ©   (2007-09-26 18:35) [10]


>  Правильный называется XPThemes.mainfest и лежит в папке
> Windows в подпапках там поищите и найдёте.

Нашел "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\XPThemes.manifest", но эффект такой же. Пришлите пожалуйста правильный.


 
Vladimir Kladov ©   (2007-09-26 19:09) [11]

Именно он и есть. Его надо положить в папку программы и переименовать в test.exe.manifest. У меня сразу все заработало как надо (правда, сами темы я так и не включал).


 
mdw ©   (2007-09-26 22:48) [12]


> Именно он и есть. Его надо положить в папку программы и
> переименовать в test.exe.manifest. У меня сразу все заработало
> как надо (правда, сами темы я так и не включал).

Владимир, ну я же не совсем придурок, положил конечно.:) Ну да ладно, если честно, то не очень критично, на данный момент для меня... Попробую еще дома посмотреть, может локальный глюк? хотя не верю в это я...
А вы темы попробуйте включить.:))


 
mdw ©   (2007-09-26 22:53) [13]


> А вы темы попробуйте включить.:))

Хотя, если вам не интересно, то можно забить на это дело и закрыть тему, мне тоже не критично.


 
homm ©   (2007-09-26 22:54) [14]

> [12] mdw ©   (26.09.07 22:48)
> может локальный глюк?

Нет. У меня тоже не перерисовывается. Причем даже без тем, достаточно наличие манифеста. Глюк 6-х комонконтроллов?


 
Vladimir Kladov ©   (2007-09-27 15:33) [15]

и с правильным манифестом - тоже? Я проверил уже и с темами и на друглм компе. С правильным все нормально. Везде XP SP2 английская, на одной MUI руссий есть, другая чистая..


 
homm ©   (2007-09-27 15:42) [16]

> [15] Vladimir Kladov ©   (27.09.07 15:33)
> и с правильным манифестом - тоже?

Не знаю, насколко он првильный, я проверял на том, что в архиве, и тот, что в указаном выше месте (Microsoft.NET\Framework\v2.0.50727\).


 
Vladimir Kladov ©   (2007-09-27 15:56) [17]

У меня .NET серсия 1.1.4322. Не думаю, что он чем-то отличается:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 <description>Windows Forms Common Control manifest</description>
 <dependency>
   <dependentAssembly>
     <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" />
   </dependentAssembly>
 </dependency>
</assembly>


 
mdw ©   (2007-09-27 16:25) [18]


> У меня .NET серсия 1.1.4322. Не думаю, что он чем-то отличается:

Ага. Один в один...


 
mdw ©   (2007-09-27 16:27) [19]

У меня WinXP SP2 русская.


 
homm ©   (2007-09-27 16:37) [20]

> [19] mdw ©   (27.09.07 16:27)

так-же.


 
Vladimir Kladov ©   (2007-09-27 17:37) [21]

Ну не знаю. Под виртуальной машиной проверьте, с чистым XP. Лучше с английским. У меня дистриб только английский, русский при надобности накатываю муёй.


 
Vladimir Kladov ©   (2007-09-27 17:47) [22]

На VCL сделать можно еще. На нем работает?
GRAPHICXP_STYLES подключать пробовали? Может, тоже нужна дополнительная обработка своим кодом.

Моё отношение к темам вы знаете. Меня  в этом вопросе больше всего бесит то, что майкросовт свои недоделки фиксить по ходу не собирается, перевалил всё на плечи разработчиков сред программирования. Меня тут на днях спросили на работе про VCL в D6, почему group box не в стиле, если манифест подрубить. Наверное, в bds2006 уже "исправлено". А еще интереснее, что БЕЗ манифеста при включённых темах image list (в D6) больше не умеет загрузить картинки, и приложение падает.


 
Yury Sidorov   (2007-09-27 18:47) [23]

В Д7 уже с темами в VCL все нормально.


 
mdw ©   (2007-09-27 18:56) [24]

GRAPHICXP_STYLES пробовал, не помогает.
В VCL у меня тоже самое, не перерисовывается.


 
Vladimir Kladov ©   (2007-09-27 19:54) [25]

Думаю, вы просто "испортили" свою винду, доустановив Framework.NET 2.0. Есть еще шанс поправить, поставив FW.NET 3.0, или просто переустановив винду, те. откатиться на FW.NET1.

Попробуйте уже на других машинах, хотя бы на виртуальной.


 
homm ©   (2007-09-27 23:32) [26]

> Есть еще шанс поправить, поставив FW.NET 3.0

У меня 3.0 стоИт. Да и не в нем дело, дотНЕТ не занимается контроллами.

В Свисте все комбинации из манифестов и их отсутствия, а так-же всех вариантов тем (без темы, упрощенная, Аеро) не дают такого глюка. НО!!! видно, что если есть манифест, то контрол передергивает каждый раз, а если манифеста нет, то только при переносе элементов которые не помещаются. Вывды, я дкмаю сделать не сложно.

mdw, у тебя винда насколько пропатченая? Просто у меня почти SP3, 150 метров разных апдейтов стоит. Может от этого глюки? От этих апдейтов правда одни глюки, XP SP2 - последняя нормальная винда.


 
homm ©   (2007-09-27 23:41) [27]

Самое интересное, что глюк легко убирается, если поставить на конртолл буферизацию через OLD_TRANSPARENT. С новой прозрачностью уже не работает. Только не надо думать, что это глюк новой прозрачности :) Наоборот, в новой версии пофиксено, что при надобности перерисовать один небольшой регион рисовалось все подряд.

С новой прозрачностью можно по прежнему сделать
procedure TMainForm.ListView1Resize(Sender: PObj);
begin
 ListView1.Invalidate;
end;

, и моргать не будет.


 
homm ©   (2007-09-27 23:48) [28]

еше интересно, что  код
ListView1.ClsStyle := ListView1.ClsStyle or CS_VREDRAW or CS_HREDRAW;
дает потрясающие, не передаваемый эффект :)


 
mdw ©   (2007-09-28 10:43) [29]


> mdw, у тебя винда насколько пропатченая? Просто у меня почти
> SP3, 150 метров разных апдейтов стоит. Может от этого глюки?
>  От этих апдейтов правда одни глюки, XP SP2 - последняя
> нормальная винда.

Честно говоря, не знаю, не сам ставил. Но учитываю ленивость наших инженеров, скорее всего просто SP2, без каких либо апдейтов,

> procedure TMainForm.ListView1Resize(Sender: PObj);begin
>  ListView1.Invalidate;end;
>  , и моргать не будет.

Я так и сделал сейчас, + DoubleBuffered:= True.



Страницы: 1 вся ветка

Форум: "KOL";
Текущий архив: 2008.06.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.061 c
2-1212173582
Hawke
2008-05-30 22:53
2008.06.29
Вопрос по дельфи


2-1212584820
TUserClass
2008-06-04 17:07
2008.06.29
Забацать DLL в EXE и распаковать ...


2-1212159887
programmer90
2008-05-30 19:04
2008.06.29
Одинаковое значение свойств у всех Edit-ов


15-1210925436
Ega23
2008-05-16 12:10
2008.06.29
Года полтора-два назад тема была


15-1211209910
Пробегал2...
2008-05-19 19:11
2008.06.29
Скорость движения мыши





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский