Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.31;
Скачать: CL | DM;

Вниз

TTreeView принудительное обновление TTreeNode.   Найти похожие ветки 

 
AlexanderSK   (2004-10-13 18:11) [0]

Подскажите, пожалуйста, как в TTreeView принудительно заставить перерисоваться один конкретный TTreeNode?

Проблема в том, что при определенном событии я меняю TTreeNode иконку, при этом эти изменения не всегда сразу становятся видны!

Подскажите, пожалуйста, как с этим бороться!

Заранее благодарен!!!


 
Pentium133 ©   (2004-10-13 18:15) [1]

при изминении иконки вызови Invalidate;


 
AlexanderSK   (2004-10-14 11:05) [2]

>при изминении иконки вызови Invalidate;
У TTreeNode Invalidate нет.
а ежли вызывать Invalidate у TTreeView он противно мигает...
Можно ли этого избежать?


 
KSergey ©   (2004-10-14 11:21) [3]

> [2] AlexanderSK   (14.10.04 11:05)
> Можно ли этого избежать?

Нет


 
AlexanderSK   (2004-10-14 11:23) [4]

ясно!
а можно сделать так чтобы напротив некоторых листьев были чекбоксы?


 
NAlexey ©   (2004-10-14 11:25) [5]

>KSergey ©   (14.10.04 11:21) [3]
Почему это нельзя? А Items.BeginUpdate, Items.EndUpdate?


 
KSergey ©   (2004-10-14 11:32) [6]

> [5] NAlexey ©   (14.10.04 11:25)
> >KSergey ©   (14.10.04 11:21) [3]
> Почему это нельзя? А Items.BeginUpdate, Items.EndUpdate?

Это не то. Это чтобы не перерисовывал при обновлении. Но на Invalidate он все равно моргать будет.
Другое дело, что может после Items.EndUpdate перерисовка пройдет "красивее"? (в смысле может и Invalidate не понадобится в явном виде). Но маловероятно.


 
[lamer]Barmaglot ©   (2004-10-14 13:30) [7]

Уменьшить количество нод... Тогда противно мигать не будет. Выводить в треевиев только ноды которые видны в данный момент...


 
Pentium133 ©   (2004-10-14 13:30) [8]

может TreeView.DoubleBuffered := true;


 
Pentium133 ©   (2004-10-14 13:31) [9]


> [lamer]Barmaglot ©   (14.10.04 13:30) [7]

Бред какойто....
Ясный пень, те которые не видны они и не выводятся...


 
[lamer]Barmaglot ©   (2004-10-14 13:45) [10]

то Pentium133 ©   (14.10.04 13:31) [9]

Компьютер обрабатывает все данные которые содержатся в ТрееВиев при каждой перерисовке, но выводит только те которые видны... Совет не мой а микрософта, надеюсь ему ты веришь? В ВинАПИ есть специальные ф-ции позволяющие выводить только определенное количество ВИДИМЫХ нод, а остальное загружать по требованию...


 
NAlexey ©   (2004-10-14 15:08) [11]

Всеравно не понятно о чем разговор, на пустом месте. Упрощенно так: TreeView у него Images. В котором 2 bmp - Checked и UnChecked.

procedure TForm1.TreeView1GetSelectedIndex(Sender: TObject;
 Node: TTreeNode);
begin
 Node.SelectedIndex := Node.ImageIndex;
end;

procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
const
 aImages: array[boolean] of Byte = (0, 1); //bmpUnchecked, bmpChecked
var
 HitTest : THitTests;
 Node: TTreeNode;
 NodeRect: TRect;
begin
 with Sender as TCustomTreeView do
 begin
   HitTest := GetHitTestInfoAt(X, Y);
   if htOnIcon in HitTest then
   begin
     Node := GetNodeAt(X, Y);
     if Node <> nil then
     begin
       Node.ImageIndex := aImages[Node.ImageIndex = 0];
       NodeRect := Node.DisplayRect(False);
       InvalidateRect(Handle, @NodeRect, False);
     end;
   end;
 end;
end;



Страницы: 1 вся ветка

Текущий архив: 2004.10.31;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
1-1097681010
Ivan_
2004-10-13 19:23
2004.10.31
вывести 2 таблицы в TdxDBGrid


3-1096897477
sloug
2004-10-04 17:44
2004.10.31
TDBRichEdit ошибка


1-1097842008
race1
2004-10-15 16:06
2004.10.31
плееры и потоки


4-1095926220
lehich
2004-09-23 11:57
2004.10.31
иконка в заголовке окна


1-1098205530
Sirruf
2004-10-19 21:05
2004.10.31
Alignment in TEdit