![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Ребят, нужна помощ.. есть treeview, в нем есть заглавия и список (допустим такое разветвление):
Иван чето-там Петр чето-там Семен чето-там вот нужно чтобы все елементы "чето-там" были красного цвета, а имена черного.... компонент не имеет свойств font и canvas для пунктов.... Как можно ето реализовать? заранее спасибо |
|
#2
|
||||
|
||||
|
Используй событие OnAdvancedCustomDrawItem и в зависимости от уровня узла меняй цвет:
Код:
procedure TForm1.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage;
var PaintImages, DefaultDraw: Boolean);
begin
DefaultDraw := true;
if Node.Selected then // В зависимости от того, выделен узел или нет
// Используются разные цветовые схемы
// А то черный цвет на синем фоне - мрак
begin
if (Node.Level = 0)
then Sender.Canvas.Font.Color := clWhite // это самый верхний узел
else Sender.Canvas.Font.Color := clRed; // а это остальные
end
else
begin
if (Node.Level = 0)
then Sender.Canvas.Font.Color := clBlack // это самый верхний узел
else Sender.Canvas.Font.Color := clRed; // а это остальные
end;
end;Необходимо менять именно Sender.Canvas.Font.Color т.к. при стандартной прорисовке вызывается функция DrawText , которая использует параметра шрифта той канвы, где рисует. |