Показать сообщение отдельно
  #1  
Старый 21.04.2010, 14:42
Gman Gman вне форума
Новичок
 
Регистрация: 25.02.2010
Сообщения: 59
Репутация: -54
По умолчанию Раскрасить TreeView

Всем привет! У меня не выходить корректно в зависимости от параметров раскрасить шрифт узлов в TreeView.
Имеется дерево (только нулевой уровень) с узлами. По нажатии кнопки эти узлы проверяются по определённому критерию. Если узел удовлетворяет критерию №1 x[1]:=0, если не удовлет. то 1. Отсюда в TreeView2CustomDrawItem в соответствие с получ. парам. дерево раскрашивается.
Вот код :
Код:
 procedure TForm1.Button2Click(Sender: TObject);//кнопки проверки
var i,j,g:integer;
begin
rask:=1;    //разрешаем перекрашивать
if TreeView2.Items.Count>0 then
 BEGIN        //проверяем есть ли на компьютер паспорт и опред. парам
  for i:=0 to TreeView2.items.Count - 1 do
   for j:=0 to TreeView1.Items.Count-1 do   //если есть тогда
    if TreeView2.Items.Item[i].Text=TreeView1.Items.Item[j].Text then
      Begin

       ki[i]:=1;
       .....................{ост. усл.}
       Break;
      End else ki[i]:=0;
 END;
for I:=0 to TreeView2.items.Count - 1 do
 TreeView2.items[i].Selected:=true;//только после этой команды всё перекрашивается
end;

procedure TForm1.TreeView2CustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var i,j,g:integer;
begin
if rask=1 then
 BEGIN
  for i:=0 to TreeView2.items.Count-1 do
   if ki[i]<>1 then if Node.Index=i then Sender.Canvas.Font.Color:=ClRed;

 END;
end;

Проблема в следующем: При передвижении "скроллинга" и при наступлении TreeView2Change - всё ужасно тормозит (заново отрисовываясь), без раскраски работает оч шустро. Есть ли возможность чтоб это один раз раскрасилось по нажатии кнопки и больше ничего не делало(не перекрашивалось и по одной команде перекрашивалось бы без выделений). Буду оч. благодарен за помощь!!
Ответить с цитированием