Почему элемент управления Delphi 2010 TRibbon «мерцает» в Windows XP, но не в Vista / 7? - PullRequest
5 голосов
/ 28 сентября 2010

alt text

Я заметил, что когда я использую элемент управления TRibbon, который поставляется с Delphi 2010, он работает безупречно в моей системе Windows 7. Тем не менее, у приложения есть некоторые странные проблемы рисования в системе Windows XP с «классической темой» (я не пробовал тему playschool).

Я знаю, что есть другие компоненты ленты, доступные из DevExpress и Программное обеспечение TMS , однако покупка стороннего элемента управления не является вариантом для этого проекта.

Кто-нибудь имел эту проблему, или знаете решение?

Ответы [ 2 ]

4 голосов
/ 02 ноября 2011

Скорее всего, потому что в Windows 7 используется «Компоновка рабочего стола», что, по сути, означает, что компонент перетаскивается в изображение вне экрана, а затем копируется на экран.В XP компонент обычно рисует прямо на дисплее (что может вызвать мерцание, если компонент сначала стирает то, что есть, и рисует поверх «чистого листа»).

Delphi поддерживает двойную буферизацию, которая выполняет то же самое,Если вы установите свойство ленты DoubleBuffered в значение True (в коде, поскольку оно не публикуется), тогда следует избегать мерцания (за счет дополнительной памяти, выделяемой и перемещаемой при рисовании) - однако я должен сказать, что у меня нет 'Это на самом деле пробовал с TRibbon.

Обратите внимание, что при работе в Windows 7 (или Vista, если уж на то пошло) дополнительных издержек не возникает, если для DoubleBuffered установлено значение True.В VCL есть код, пропускающий бизнес за пределами экрана при работе в версии Windows, которая создает настольные композиции.

0 голосов
/ 06 октября 2010

Скорее всего, это ошибка в коде TRibbon, лента Microsoft отлично воспроизводится как в XP, так и в Win7.

Если вы измените свою тему XP, изменится ли кнопка «Свернуть», показанная на изображении, в соответствии с изменением вашей темы?Если это так, то код ленты, вероятно, был оптимизирован для Vista и 7 и не был разработан для идеальной работы под XP.

Вы действительно не сможете решить эту проблему, если не сможете изменить код TRibbon.

...