Многоцветный текст в TreeView (студия Embarcadero RAD) - PullRequest
0 голосов
/ 07 апреля 2010

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

UPDATE

Закончилось делать это с пользовательским рисунком.

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

1 Ответ

1 голос
/ 10 апреля 2010

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

...