Главная страница
    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.039 c
11-1119419512
midas2k5
2005-06-22 09:51
2006.02.12
StatusBar


15-1137629133
Bogdan1024
2006-01-19 03:05
2006.02.12
pay4click и его изотопы


5-1124023949
Navi
2005-08-14 16:52
2006.02.12
Компонент не реагирует на сообщение


15-1137839821
щелкунчик
2006-01-21 13:37
2006.02.12
Как найти мышиную нору?


1-1137335863
Compton's G
2006-01-15 17:37
2006.02.12
Проблема HKEY и сети





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