Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > TVirtialStringTree событие между рисованием


Автор: Gwire 3.10.2012, 11:50
В данной задаче я использую TVirtialStringTree для отображения списка файлов. То есть просто как сетку.
В программе выполняется копирование файлов. А прогресс копирования отображается прямо в ячейке с именем файла.

Вызываю RepaintNode и обрабатываю событие OnBeforeCellPaint. В OnBeforeCellPaint рисую прогресс.
Событие OnTextPaint выполняется позже. Все смотрится довольно хорошо.

Но для (vsSelected in Node^.States) рисование селектора происходит между OnBeforeCellPaint и OnTextPaint.
И прогресса не видно - его тупо перекрывает селектор.

Вопрос есть ли событие которое выполняется между отрисовкой селектора и событием OnPaintText.

PS: 
Шутки ради: Пользоваться Total-ом или Far-ом - не предлагать.

Автор: ZBugz 3.10.2012, 14:42
Вообще не должно быть проблем.

Добавлено через 2 минуты и 24 секунды
Тут есть пример на форуме, но я не могу в смоем профиле найти отображение всех моих сособщений, что бы дать ссылку на пример. Если получиться мой профиль просмотреть, то найдешь пример

Автор: Gwire 3.10.2012, 15:35
Цитата(ZBugz @  3.10.2012,  14:42 Найти цитируемый пост)
Вообще не должно быть проблем.

В смысле? smile Не ни каких проблем.

Меня интересует есть ли событие с callback-функцией происходящее между рисование селектора и OnTextPaint.
Так-как рисование селектора происходит после события OnBeforeCellPaint и зарисовует прогресс. 
И нарисовать прямоугольник-прогресс нужно до того как будет выведен текст, чтобы отдельно текст не рисовать.

Обычно я такие штуки сам на хожу, но количество событий в TVirtialStringTree приличное. И не которые названы не совсем интуитивно понятно =/. 
Проверяя все "On-ы" и лазя по исходнику пришел к заключению что такой callback-функции нет.

Но решил спросить, на всякий случай, может мне по вылазило и кто-то встречал такую функцию.


Автор: ZBugz 4.10.2012, 06:21
А, понял. Тогда не знаю, не морочился этим smile

Автор: Gwire 4.10.2012, 11:09
Вообщем, добился я нужного мне результата используя OnAfterCellPaint (пятое через десятое). 
Правда, пришлось рисовать все и прогресс и текст, и иконку файла.
Учитывать всяких доп.атрибутов (Margin, TextMargin, ImageIndex).
---------
Пока писал посетила мысля... 
Чтобы не учитывать доп.атрибуты можно использовать GetDisplayRect(Node, <Номер колонки>, True).
Сразу получаю TRect области конкретно для текста. =) Гы. Голова дырявая.

А вообщем, если кто встречал такую функцию...
Полагаю в дальнейшем еще пригодится это знание.


Автор: ZBugz 4.10.2012, 16:32
А я все равно не пойму, а зачем оно тебе так ? 
Я просто рисую рамку и заполняю прогрессбар и там процентики пишу и при выделении колонки все симпотично, строка полностью выделаятся, а прогрессбар серенький и его видно

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)