Как изменить цвет рамки фокуса в TVirtualStringTree? - PullRequest
3 голосов
/ 12 апреля 2011

Мне нужно изменить цвет рамки поля фокусировки TVirtualStringTree, как показано на следующем рисунке:

from gray color to red color

Ответы [ 2 ]

6 голосов
/ 12 апреля 2011

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

Если вы говорите о цвете всего узла, то сначала проверьте, чтобы убедиться, чтоtoUseBlendedSelection опция рисования устанавливается так, как вы хотите.По умолчанию он отключен, но, поскольку при перетаскивании блока вокруг элементов он выглядит круто, вы могли бы включить его, даже не осознавая, что он делает с обычными выбранными узлами.настройте одно из значений в свойстве Colors элемента управления дерева, возможно, либо FocusedSelectionColor, либо UnfocusedSelectionColor.Но, пожалуйста, не делайте такого изменения легко;пользователь выбрал цвет выделения в настройках ОС, поэтому вам, вероятно, не следует его менять.Если вы делаете другого цвета, убедитесь, что текст по-прежнему читается на любом новом выбранном вами цвете.

2 голосов
/ 12 апреля 2011

Вы можете установить для параметра дерева toHideFocusRectangle значение true и нарисовать прямоугольник фокуса самостоятельно в одном из нескольких событий рисования (в основном достаточно использовать OnBeforeCellPaint).

...