![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TreeView Цветные строки [D7, XP]
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]Вот так не получается!