Всем привет! У меня не выходить корректно в зависимости от параметров раскрасить шрифт узлов в 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 - всё ужасно тормозит (заново отрисовываясь), без раскраски работает оч шустро. Есть ли возможность чтоб это один раз раскрасилось по нажатии кнопки и больше ничего не делало(не перекрашивалось и по одной команде перекрашивалось бы без выделений). Буду оч. благодарен за помощь!!