Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];

Вниз

Разноцветный Node.Text в TreeView. Может кто знает как?   Найти похожие ветки 

 
KIR   (2003-03-17 23:04) [0]

Народ, требуется выводить текст узла TreeView различными цветами. Одна строка раскрашена в три цвета, например:

Node.Text = "Шурупы 2 1 9";

где 2 -зеленым, 1 -синим, 9 - красным.

Это реализуемо?


 
MBo   (2003-03-18 06:46) [1]

OnCustomDraw***
в каталоге Demо есть пример


 
KIR   (2003-03-18 08:57) [2]

То что OnCustomDraw, это понятно. А в демос не тот пример. Внимательно читайте вопрос: мне надо что бы текст КАЖДОГО узла состоял из нескольких цветов. А не так что первый узел, например красный, а второй зеленый.


 
calm   (2003-03-18 09:09) [3]

Я тоже пробовал, не получилось :(
В демках нет разноцветных узлов.

Вот если бы кто поделился маленьким примерчиком...


 
ЮЮ   (2003-03-18 09:11) [4]

А кто мешает вместо одного оператора
TextOut(NodeRect.Left, NodeRect.Top, Node.Text);
Разобрать Node.Text на слова и отрисовать каждое слово в отдельности уже своим цветом?


 
Calm   (2003-03-18 09:36) [5]

2 ЮЮ © (18.03.03 09:11)
допустим, если различие написания только в цвете, то прокатит.
А вот если часть текста нужно нарисовать жирным, то у меня возникали проблемы.
Дело в том, что рисовать-то можно что угодно, но на мышку будет реагировать только та часть надписи, в которую попадает свойство Text.
Т.е. если Node.Text="Hello", а я отрисовываю "Hello world", то клик мышкой по слову world не выделит узел дерева :(

В чем проблема, я так и не понял :((


 
Alex44   (2003-03-18 09:52) [6]

Problema v tom, chto TTreeView (eventually) sdelano Micro$oftom. Poetomu risovat" Vy ego mozhete, kak ugodno, a schitat" razmery onovse ravnobudet po svoemu.


 
Smok_er   (2003-03-18 11:06) [7]

да че херней маяться... CustomDraw очень глючный, сам помню с этим столкнулся.
Не сторонник "левых" компонентов, но Virtual TreeView - это то, что надо!


 
REA   (2003-03-18 11:29) [8]

Осторожно грабли:
в непатченных версиях D5 TTreeView в CustomDraw пожирает GDI ресурсы при присвоении шрифта. Отрисовка линии нужного цвета под текстом в данном случае простейший выход из положения. К тому же читать текст легче.


 
TuMOXA   (2003-03-18 13:42) [9]

Есть такая шняга от TMS Software HTMLTree. Там можно задавать текст узла в виде ХТМЛа (там и можно задать цвета). Тока варнинг : компоненты у них глючные и тормозные, но попробовать можно. Ещё есть VirtualTreeView - вещь суперская и в исходниках (TMS тож в исхожниках если поискать:-). Разбираться с ней придётся подольше, но оно того стоит ибо оч оч оч быстрая и навороченная. Там есть событие он пайнт текст, можно обарбатывать перехватить.


 
Alexandr B.   (2003-03-18 14:46) [10]

Вот таким кодом делается разноветные строки в listview
попробуй может поможет

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if {(stage = cdPrePaint)and }(Item.Index = 2) then
ListView1.Canvas. Font.Color := clRed
else
ListView1.Canvas. Font.Color := clBlack;
end;


 
Alexandr B.   (2003-03-18 14:47) [11]

извините тоже невнимательно прочитал вопрос


 
Style   (2003-03-18 16:08) [12]

procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if(Node.Level = 0) then
TreeView1.Canvas.Font.Color := clRed
else
TreeView1.Canvas.Font.Color := clBlue;

TreeView1.Canvas.TextRect(Node.DisplayRect(true),1,1,Node.Text);
end;

Можно сделать проверку на Node.Selected! Чтобы рисовать текст цветом clHighlightText


 
Calm   (2003-03-18 19:17) [13]

2 Style (18.03.03 16:08)
Пробовал читать вопрос?


 
Style   (2003-03-19 07:43) [14]

Calm © >> Извеняюсь..

Хорошо напиши на MouseDown так

if( Button = mbLeft) then
begin
n := FTree.GetNodeAt(X,y);
if( n <> nil) then
begin
FTree.Selected := n;
end;
end;

И будет у тебя все выделяться


 
calm   (2003-03-19 09:10) [15]

2 Style (19.03.03 07:43)
Мне кажется, так не получится.
Имеется прямоугольник, который дерево считает прямоугольником, в котором отрисовывается узел. Назовем его NativeRect (NR).
И имеется прямоугольник, в котором размещается реальное изображение узла. Будем называть такой прямоугольник RealRect (RR).

Так вот проблема в том, что RealRect в общем случае не совпадает с NativeRect и превосходит NR по площади.

Так вот, если не ошибаюсь, GetNodeAt будет работать только с NativeRect, и при сильно кустомизированой отрсовке мы все равно ничего не добьемся. Юзер будет тыкать мышкой в видимый и интуитивно для него понятный RealRect, но если он при этом не попадет в NR, то дерево его проигнорирует.
IMHO так.


 
Style   (2003-03-19 09:48) [16]

calm :) А ты попробуй


 
Style   (2003-03-19 09:51) [17]

Вот посмотри как я это сделал www.sands.nm.ru/TGTView.zip


 
calm   (2003-03-19 10:07) [18]


> Вот посмотри как я это сделал www.sands.nm.ru/TGTView.zip

Это для D5? А нет ли для D6?


 
Style   (2003-03-19 10:11) [19]

Попробуй Поправить uses DsgnIntf на DesignIntf


 
ShuraGrp   (2003-03-19 10:23) [20]

А кто-нибудь ставил VirtualTreeView на D6 и W2k. Что там за зверь ThemeManager6 требуется? Подскажите пожалуйста.


 
ShuraGrp   (2003-03-19 11:07) [21]

Уже нашел.


 
KIR   (2003-03-26 09:08) [22]

Народ, а все же как раскрасить строку? Ни у кого мыслей не появилось?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.009 c
3-19412
sterran
2003-03-20 10:19
2003.04.07
Востановление ранее удаленных записей


1-19566
ArtemB
2003-03-27 08:07
2003.04.07
цикл по компонентам


3-19409
_BasiL_
2003-03-17 13:32
2003.04.07
Кто работал с halcyon


1-19598
electric
2003-03-28 16:24
2003.04.07
Поиск в подкаталогах


14-19751
rage
2003-03-21 19:12
2003.04.07
Как сделать калькулятор





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский