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

Вниз

Отрисовка 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.057 c
3-1134735715
rwg
2005-12-16 15:21
2006.02.12
Связывание таблиц


2-1137933004
XeON
2006-01-22 15:30
2006.02.12
Побайтовое сравнение файлов


15-1137884122
ancot
2006-01-22 01:55
2006.02.12
Очередной генератор отчетов


9-1124884482
Kisha
2005-08-24 15:54
2006.02.12
Моделирование молекулы в пространстве


3-1134659156
Виталий Панасенко
2005-12-15 18:05
2006.02.12
Портирование кода с BDE на ADO





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