Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.12;
Скачать: CL | DM;

Вниз

Отрисовка TreeView разными цветами   Найти похожие ветки 

 
Ольга   (2006-01-10 16:54) [0]

Дерево у меня 3-х уровневое.
Пишу обработчик на отрисовку Item с условием, что цвет Item зависит от его идентификатора. Не получается, т.к. параметр Node всегда есть Node 1-го уровня, который расцвечивать и не надо:

procedure TFCompare.Tree_testAdvancedCustomDrawItem(
 Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState;
 Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean);
begin
 With Tree_test.Canvas do
 begin
    case Integer(Node.Data) of     // всегда равно 1,2,3 - идентификаторам 1-го уровня
     10..20: begin
               Font.Color:=clRed;
               Font.Style:=[fsBold];
             end;
     21..50: begin
                 Font.Color:=clBlue;
                 Font.Style:=[fsBold];
             end;
     else
     begin
       Font.Color:=clBlack;
       Font.Style:=[];
     end;
   end;
 end;
end;

Что я не так делаю?


 
Johnmen ©   (2006-01-10 17:08) [1]

А в Data ты занесла необходиную инфу?


 
Ольга   (2006-01-10 17:20) [2]

Конечно.

 NodeFirst:=TTreeNode.Create(T.Items);
 Tree.Items.AddObject(NodeFirst,"Name",pointer(1));

 Tree.Items.AddChildObject(NodeFirst, Query.FieldByName("name_obj").AsString,
                                          pointer(Query.FieldByName("id_obj").AsInteger));


 
Johnmen ©   (2006-01-10 17:26) [3]

Я могу только предполагать...
- Data прописана неверно, напр. неверно ходили по НД
- неверные данные поля id_obj в НД
- узлы дерева в указанный момент не распахнуты, т.е. и не отрисовываются


 
Ольга   (2006-01-11 07:55) [4]


> узлы дерева в указанный момент не распахнуты, т.е. и не
> отрисовываются

Так оно и было. Узлы распахнула, в отладчике вижу, что процедура отрисовки работает так, как надо. Все хорошо, только дерево не раскрашивается. Добавила в процедуру команды из help-a:

procedure TFCompare.Tree_testAdvancedCustomDrawItem(
Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState;
Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean);
var
NodeRect: TRect;begin
With Tree_test.Canvas do
begin
    case Integer(Node.Data) of    
    10..20: begin
              Font.Color:=clRed;
              Font.Style:=[fsBold];
            end;
    21..50: begin
                Font.Color:=clBlue;
                Font.Style:=[fsBold];
            end;
    else
    begin
      Font.Color:=clBlack;
      Font.Style:=[];
    end;
  end;
  NodeRect:=Node.DisplayRect(True);
  FillRect(NodeRect);
  TextOut(NodeRect.Left, NodeRect.Top, Node.Text);
end;
end;

Не помогает.


 
MBo ©   (2006-01-11 08:09) [5]

>Ольга   (11.01.06 07:55) [4]
Попробовал код из [4], заменив
case Integer(Node.Data)
на
 case Node.Level of
1
2
...

Все нормально рисуется и раскрашивается


 
Ольга   (2006-01-11 08:36) [6]


> Попробовал код из [4]... Все нормально рисуется и раскрашивается


Я тоже скопировала свой же текст из [4] - и, о чудо, заработало!  
Была глупая ошибка - ходила по одному дереву, а пыталась раскрасить другое.
Всем спасибо.


 
MBo ©   (2006-01-11 08:47) [7]

>ходила по одному дереву, а пыталась раскрасить другое.
во избежание этого стоит вместо явного указания
With Tree_test.Canvas использовать Sender



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

Текущий архив: 2006.02.12;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.04 c
2-1138184886
_serg
2006-01-25 13:28
2006.02.12
Как подружить БД и сеть


15-1137696182
yuril
2006-01-19 21:43
2006.02.12
Требуется программист


3-1134646353
ra4fcr
2005-12-15 14:32
2006.02.12
Таблица Paradox 5.0 - проблема!


15-1137924000
Колян
2006-01-22 13:00
2006.02.12
книга по ASP для работы с базами данных?


2-1138305469
Vetalich
2006-01-26 22:57
2006.02.12
Edit





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский