Многоцветный текст в TreeView (студия Embarcadero RAD)

Я пишу программу на C++ RAD studio 2010, и у меня возник вопрос о TreeView.
Можно ли использовать многоцветный текст в компоненте TTreeView? Я не мог найти простого способа, кроме как реализовать пользовательский рисунок, который в настоящее время кажется странным. Есть ли какие-то простые способы или, может быть, дополнительные компоненты, которые могут сделать это за меня?

ОБНОВЛЕНИЕ

В итоге сделал это с помощью пользовательского рисунка.

void __fastcall TForm1::TreeView1AdvancedCustomDrawItem(TCustomTreeView *Sender, TTreeNode *Node,
    TCustomDrawState State, TCustomDrawStage Stage, bool &PaintImages,
    bool &DefaultDraw)
if (Stage == cdPostPaint)
  {
 TRect rect(Node->DisplayRect(true));
 String redText = "redtext";
 String greenText = " greentext";
 Sender->Canvas->Font->Color = clRed;
 Sender->Canvas->Refresh();
 Sender->Canvas->TextOut(rect.Left, rect.Top, redText);

 rect.Left += Sender->Canvas->TextWidth(redText);

 Sender->Canvas->Font->Color = clGreen;
 Sender->Canvas->Refresh();
 Sender->Canvas->TextOut(rect.Left, rect.Top, greenText);

 rect.Left += Sender->Canvas->TextWidth(greenText);
  }

Было важно использовать Обновить, чтобы метод работал.

Кроме того, поняв, что мне нужен многострочный текст для вывода, я переключился на компонент VirtualTreeView из soft-gems.


person Andrew    schedule 07.04.2010    source источник
comment
Мне никогда не приходилось использовать TCanvas::Refresh() внутри пользовательского обработчика отрисовки. Смена шрифта несколько раз всегда работала нормально для меня без дополнительной работы.   -  person Remy Lebeau    schedule 19.05.2010


Ответы (1)


Индивидуальный рисунок - единственный способ. В этом нет ничего странного. Многие элементы управления поддерживают пользовательское рисование.

person Remy Lebeau    schedule 10.04.2010