Форум: "Основная";
Текущий архив: 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