Treeview & nodes
От: Dmitri_ru  
Дата: 25.07.05 13:49
Оценка:
Привет!

У меня такая проблема. Я обрабатываю события OnCustomDrawItem TreeView. Здесь вопросв нет — все перерисовывается отлично, вот только результат перересовки виден, если выполнить treeview.repaint (refresh)... При этом естесственно окно моргает. У меня в таймере в зависимости от события меняется картинка возле item'a и поэтому как только срабатывает таймер — окно рефрешится, т.е. моргает. Есть какой нибудь другой способ обновлять нодесы, не прибегая к полной прорисовке treeview.


П.С. вообще меня интересует больше прорисовка самой картинки, а не нодеса в целом (текст необязателен)...

Я делал так:

Rect:=Treeview1.Items[i].DisplayRect(false);
ImageList1.Draw(TreeView.Canvas, Rect.Left,Rect.top,ImageIndex,True);

Картинки прорисовываются, но каждая новая накладывается на предыдущую — а мне надо, что бы новая картинка сначала стирала предыдущую, а затем рисовалась сама

Вот такой вопрос, может как-то через WinAPI это сделать можно

Заранее Спасибо!
Re: Treeview & nodes
От: Danchik Украина  
Дата: 25.07.05 14:02
Оценка:
Здравствуйте, Dmitri_ru, Вы писали:

D_>Привет!


D_>У меня такая проблема. Я обрабатываю события OnCustomDrawItem TreeView. Здесь вопросв нет — все перерисовывается отлично, вот только результат перересовки виден, если выполнить treeview.repaint (refresh)... При этом естесственно окно моргает. У меня в таймере в зависимости от события меняется картинка возле item'a и поэтому как только срабатывает таймер — окно рефрешится, т.е. моргает. Есть какой нибудь другой способ обновлять нодесы, не прибегая к полной прорисовке treeview.



D_>П.С. вообще меня интересует больше прорисовка самой картинки, а не нодеса в целом (текст необязателен)...


D_>Я делал так:


D_>Rect:=Treeview1.Items[i].DisplayRect(false);

D_>ImageList1.Draw(TreeView.Canvas, Rect.Left,Rect.top,ImageIndex,True);

D_>Картинки прорисовываются, но каждая новая накладывается на предыдущую — а мне надо, что бы новая картинка сначала стирала предыдущую, а затем рисовалась сама


D_>Вот такой вопрос, может как-то через WinAPI это сделать можно


Можно конечно:

R := Node.DisplayRect (False);
InvalidateRect (TreeView.Handle, @R, False);


И не надо никакой прорисовки картинки...
Re[2]: Treeview & nodes
От: Dmitri_ru  
Дата: 25.07.05 14:08
Оценка:
Здравствуйте, Danchik, Вы писали:
...

D>И не надо никакой прорисовки картинки...


Пасип — точно я забыл про эту процедуру

Все заработало — и бысро как ответили — супер ...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.