| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 |
В смысле? Меня интересует есть ли событие с callback-функцией происходящее между рисование селектора и OnTextPaint. Так-как рисование селектора происходит после события OnBeforeCellPaint и зарисовует прогресс. И нарисовать прямоугольник-прогресс нужно до того как будет выведен текст, чтобы отдельно текст не рисовать. Обычно я такие штуки сам на хожу, но количество событий в TVirtialStringTree приличное. И не которые названы не совсем интуитивно понятно =/. Проверяя все "On-ы" и лазя по исходнику пришел к заключению что такой callback-функции нет. Но решил спросить, на всякий случай, может мне по вылазило и кто-то встречал такую функцию. |
| Автор: ZBugz 4.10.2012, 06:21 |
| А, понял. Тогда не знаю, не морочился этим |
| Автор: Gwire 4.10.2012, 11:09 |
| Вообщем, добился я нужного мне результата используя OnAfterCellPaint (пятое через десятое). Правда, пришлось рисовать все и прогресс и текст, и иконку файла. Учитывать всяких доп.атрибутов (Margin, TextMargin, ImageIndex). --------- Пока писал посетила мысля... Чтобы не учитывать доп.атрибуты можно использовать GetDisplayRect(Node, <Номер колонки>, True). Сразу получаю TRect области конкретно для текста. =) Гы. Голова дырявая. А вообщем, если кто встречал такую функцию... Полагаю в дальнейшем еще пригодится это знание. |
| Автор: ZBugz 4.10.2012, 16:32 |
| А я все равно не пойму, а зачем оно тебе так ? Я просто рисую рамку и заполняю прогрессбар и там процентики пишу и при выделении колонки все симпотично, строка полностью выделаятся, а прогрессбар серенький и его видно |