Конференция "Компоненты" » Проблемы с AdvancedCustomDrawSubItem в TListView [D7]
 
  • kotyara12 (15.11.16 18:32) [0]
    Доброго всем вечера (равно как и любого другого времени суток)!

    Понадобилось мне в TListView в режиме vsReport в некоторых из столбцов выводить данные так, что бы в одной ячейки разные символы выводились разными цветами.
    Решил проблему через обработчик события AdvancedCustomDrawSubItem (мне нужно выводить "цветные данные" именно из Subitems) и Canvas.TextOut "посимвольно". Причем "в лоб" проблему решить не удалось: изменение ListView.Canvas.Font.Color ни к чему не приводило. Где-то нашел способ сделать то-же самое обходным путем - через временный "буферный" Canvas (например Bitmap), затем копировать его "в нужное место" Sender.Canvas.CopyRect..

    В общем-то основное получилось (https://yadi.sk/i/JC2R7EDSygJd5), но есть некоторые проблемы.

    Проблема 1:
    После того, как я что-либо вывожу "свое" на Canvas ListView, у него "слетает" шрифт - меняется тип шрифта, размер и стиль (https://yadi.sk/i/JC2R7EDSygJd5).

    Проблема 2:
    Выделение "отслеживаю" так:

       if cdsFocused in State
       then Buf.Canvas.Brush.Color := GetSysColor(COLOR_HIGHLIGHT)
       else Buf.Canvas.Brush.Color := GetSysColor(COLOR_WINDOW);


    Вроде бы все хорошо, все работает. До тех пор, пока...
    - не появляется hint c подсказкой - подсветка теряется: https://yadi.sk/i/CyrmOVlxygMru
    - а если при этом еще и попытаться "снять" выделение, то COLOR_HIGHLIGHT на "вручную" перерисованных ячейках остается: https://yadi.sk/i/9qYaZwtKygNTz

    Второй день гуглю, нечего толкового не нашел.
    Прошу "наставить на путь истинный" :-), либо подсказать, куда копать.

    PS: Использование другого компонента, к сожалению на данный момент, не возможно, придется доламывать этот.
  • kotyara12 (15.11.16 23:49) [1]
    Вопрос более не актуален.

    Оказалось, что "взять и переписать все" на tStringGrid оказалось проще и быстрее, чем докопаться до сути этого ....ого tListView.
 
Конференция "Компоненты" » Проблемы с AdvancedCustomDrawSubItem в TListView [D7]
Есть новые Нет новых   [119336   +44][b:0][p:0.001]