Добра всем.
Встала задачка выделять цветом те дочерние ветви которые в чекбоксах отмечены галками. Сделал.
Но пропали + - в узелках!! Пробывал в конце прорисовки своей ставить чёрный цвет - не помогает, но я и на белый не меняю ничего чтобы пропала по фону прорисовка.
Просматривал параметры дерева перед этим - может какую галочку поставил/снял..
Вот код:
Код:
procedure TSDIAppForm.TreeViewZakazCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var
iich:integer; // данные проверки ноды на отметку
jj:integer; // cчетчик отмеченных нод
prnode:TTreeNode; // родительская нода
begin
with Sender.Canvas do
begin
Font.Color := clWindowText;
prnode:=node.Parent; // берём родительскую ноду
if prnode=nil then // проверяем - это родительская?
begin // если родительская то красим по разному
jj:=0;
prnode:= node.getFirstChild;
while Assigned(prnode) do //Перебираем дочерние на хотябы одну снятую
begin // чтобы главную закрасить светлее
iich:=ItTESTChecked(prnode);
if iich<=100 then // если хотябы один НЕстоит
begin
jj:=255; // признак того что есть хотябы одна дочерняя нода
end;
prnode := node.GetNextChild(prnode);
end;
iich:=ItTESTChecked(Node); // если первая нода отмечена то красим зелёным фон
if ((iich=200)and(jj=0)) then Brush.Color:= clLime;
if ((iich=200)and(jj=255)) then Brush.Color:= RGB(188,255,188); // светлая закраска не полной главной ноды
if node.Selected then // выделенная нода серая
begin
Brush.Color:= clMenuHighlight;
Font.Color := clWindow;
end;
end else // если нода НЕ родительская
begin
iich:=ItTESTChecked(Node); // если нода отмечена то красим зелёным фон
if iich=200 then
Brush.Color:= clLime;
if iich<=100 then // если НЕ отмечена то белый фон
Brush.Color:= clWindow;
if node.Selected then // выделенная нода серая
begin
Brush.Color:= clMenuHighlight;
Font.Color := clWindow;
end;
end;
Pen.Color:= clWindowText;
//Brush.Color:= clMenuHighlight;
end;
end;
крестики.PNG