Стиль вертикальной полосы прокрутки TTreeView в режиме RTL

Похоже, что в Windows много проблем с правым левым режимом. Я работаю над тем, чтобы исправить некоторые из них, и мне удалось разобраться с некоторыми, и в нашем приложении осталось еще кое-что исправить. Одна странная проблема, которую я обнаружил, связана с вертикальной полосой прокрутки в элементе управления TTreeView.

При изменении BiDiMode на bdRightToLeft, используя SetWindowLong, мне удалось правильно расположить содержимое TreeView и вертикальной полосы прокрутки:

if (TreeView2->BiDiMode == bdRightToLeft)
{
LONG ExStyle = GetWindowLong(TreeView2->Handle, GWL_EXSTYLE);
SetWindowLong(TreeView2->Handle, GWL_EXSTYLE, WS_EX_RTLREADING | WS_EX_RIGHT | WS_EX_LAYOUTRTL | WS_EX_NOINHERITLAYOUT);
}

Однако полоса прокрутки теряет пользовательский стиль, как видно на прикрепленном изображении.

введите описание изображения здесь

Любые идеи, как это исправить. Является ли создание собственного TScrollingStyleHook правильным / единственным способом исправить это?

Изменить: Все еще не может это исправить. Последующие вопросы:

  • Какой метод TTreeView или TTreeViewStyleHook рисует текст каждого
    узел?
  • Похоже, что TreeViewStyleHook.Paint или
    TScrollingStyleHook.Paint никогда не вызывается. С чего бы это?

Спасибо

Информация о версии IDE: Embarcadero C ++ Builder 10.2, версия 25.0.27659.1188

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]