|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
TreeView и TreeViewCustomDrawItem
Добра всем.
Встала задачка выделять цветом те дочерние ветви которые в чекбоксах отмечены галками. Сделал. Но пропали + - в узелках!! Пробывал в конце прорисовки своей ставить чёрный цвет - не помогает, но я и на белый не меняю ничего чтобы пропала по фону прорисовка. Просматривал параметры дерева перед этим - может какую галочку поставил/снял.. Вот код: Код:
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; Последний раз редактировалось -=#PupaJr#=-, 23.03.2024 в 10:01. |