Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TreeView Цветные строки [D7, XP]


Страницы:   1 2 3

kirat ©   (2011-05-25 12:29:00) 

Подскажите пожалуйста как сделать цветные строки при их создании?
....
public
   izm:integer;
 end;
.....

procedure TForm1.Button1Click(Sender: TObject);
var
node:TTreeNode;
begin
izm:=1;
node:=TreeView1.Items.AddChild(nil,'sdf');
izm:=0;
node:=TreeView1.Items.AddChild(nil,'sdsdfsdf');
izm:=1;
node:=TreeView1.Items.AddChild(node,'sdfsdfs');
izm:=0;
node:=TreeView1.Items.AddChild(nil,'sdfsdf,');
izm:=0;
node:=TreeView1.Items.AddChild(node,'sdf');
izm:=0;
node:=TreeView1.Items.AddChild(node,'sdf');

end;

procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
 Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if izm =1 then Sender.Canvas.Font.Color:= clRed;
end;


Dennis I. Komarov   (2011-05-25 13:49:00) [41]


> Ega23 ©   (25.05.11 13:44) [6]

Ты меня не так понял, это не в IDE...


Ega23   (2011-05-25 13:44:00) [42]


> Все, теперь стэк оверфлоу... :)


Почему?


Dennis I. Komarov   (2011-05-25 13:38:00) [43]

Все, теперь стэк оверфлоу... :)


Ega23   (2011-05-25 13:20:00) [44]

Дело в том, что метод TForm1.TreeView1CustomDrawItemвызывается по событию, в момент отрисовки TreeViewItem.
Какое значение в этот момент имеет твоя переменная izm - Аллах ведает.
Соответственно, если ты хочешь каким-бы то ни было способом отличать узлы в момент отрисовки, то тогда тебе нужно сохранить данную штуку в узел.
Для этого можно использовать TTreeNode.Data:


node:=TreeView1.Items.AddChild(nil,'sdf');
Node.Data := Pointer(1);
node:=TreeView1.Items.AddChild(nil,'sdsdfsdf');
Node.Data := Pointer(0);
node:=TreeView1.Items.AddChild(node,'sdfsdfs');
Node.Data := Pointer(1);
node:=TreeView1.Items.AddChild(nil,'sdfsdf,');
Node.Data := Pointer(0);
node:=TreeView1.Items.AddChild(node,'sdf');
Node.Data := Pointer(0);
node:=TreeView1.Items.AddChild(node,'sdf');
Node.Data := Pointer(0);


Соответственно, в момент вызова обработчика события:

procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Integer(Node.Data)=1 then
 Sender.Canvas.Font.Color:= clRed;
end;


kirat   (2011-05-25 12:52:00) [45]

Ну вообще то оно по другому =) Но єто так на быструю руку! И как мне в зависимости от значения izm изменить цвет строки?


Ega23   (2011-05-25 12:47:00) [46]

izm:=1;
node:=TreeView1.Items.AddChild(nil,'sdf');
izm:=0;
node:=TreeView1.Items.AddChild(nil,'sdsdfsdf');
izm:=1;
node:=TreeView1.Items.AddChild(node,'sdfsdfs');
izm:=0;
node:=TreeView1.Items.AddChild(nil,'sdfsdf,');
izm:=0;
node:=TreeView1.Items.AddChild(node,'sdf');
izm:=0;
node:=TreeView1.Items.AddChild(node,'sdf');


Повеселил, спасибо!  :)


kirat   (2011-05-25 12:32:00) [47]

Вот так не получается!


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо