Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.044 c
4-1095928921
Aleksandr.
2004-09-23 12:42
2004.10.31
Модальные окна ордер путают. Как правильнее сделать,?


6-1093041116
Baron Fon FasHisT
2004-08-21 02:31
2004.10.31
Заход на страницу.


1-1097843076
SSGuest
2004-10-15 16:24
2004.10.31
Как в DBGrid е сделать такую штуку...


14-1097466794
080D:07BBh
2004-10-11 07:53
2004.10.31
Linux XP


1-1097652492
cvg
2004-10-13 11:28
2004.10.31
Как сделать ширину окна проги равной ширине экрана?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский