Текущий архив: 2003.11.13;
Скачать: CL | DM;
ВнизКто пользовался Virtual Treeview? Найти похожие ветки
← →
lipskiy (2003-10-23 20:38) [0]Есть такой компонент, слышал что хороший, быстрый, но не могу понять как им пользоваться.
Лежит здесь:
http://www.delphi-gems.com/VirtualTreeview/VT.php
Для начала - как его правильно инсталлировать? А то каждый раз мучаюсь - все время что-то не так.
И потом - так и не пойму принципа организации ветвей, как например обратиться к конкретной ноде?
Может есть какие-то русские справки по этому компоненту?
← →
jack128 (2003-10-23 20:48) [1]
> Для начала - как его правильно инсталлировать?
скачало открываешь и компилируешь VirtualTreesD5.dpk
потом открываешь, компелируешь и инсталирушь VirtualTreesD5D.dpk
Только у тебя должет быть TThemeMenager стоять (XPThemeMenager или что то типа этого библиотека называется - качать с тех же http://www.delphi-gems.com )
> пойму принципа организации ветвей, как например обратиться к конкретной ноде?
методы GetFirstXXX/GetNextXXX
← →
me (2003-10-23 21:00) [2]Там достаточно простые демки - все можно понять, изучая их сорсы. И сделать это надо обязательно. Вообще - изучение чужих сорсов должно быть одним из любимейших занятий профессионального программера!
← →
lipskiy (2003-10-23 21:26) [3]Угу, про инсталляцию понял, поставил сейчас новую версию под D7, менеджер тем вроде не потребовался, по крайней мере демки компилятся.
Я честно все сорсы изучал, но не могу понять вот такой простой вещи, напрмер, как добавить потомка и потом с ним работать:
type
PNodeData = ^TNodeData;
TNodeData = record
Caption : WideString;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.TreeInitNode(Sender: TBaseVirtualTree; ParentNode,
Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
var
Data: PNodeData;
begin
Data:= Sender.GetNodeData(Node);
with Data^ do
begin
if Sender.GetNodeLevel(Node) = 0 then
begin
case Node.Index of
0: Caption:= "Первая";
1: Caption:= "Вторая";
2: Caption:= "Третья";
end;
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Tree.NodeDataSize := SizeOf(TNodeData);
end;
procedure TForm1.TreeGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString);
var
Data: PNodeData;
begin
Data:= Sender.GetNodeData(Node);
if Assigned(Data) then CellText := Data.Caption;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//как добавить потомка к одной конкретной из корневых нод???
//и как потом обращаться к данным этой конкретной ноды?
end;
end.
← →
lipskiy (2003-10-23 21:28) [4]Во всех демках идет обращение к ноде через SelectedNode, а мне-то надо обратиться к конкретной ноде, которая не выделена, добавить к ней потомков, прочесть ее данные. Как найти необходимую ноду? Неужели поиском шерстить все дерево?
← →
jack128 (2003-10-24 09:40) [5]with VST
ChildrenCount[GetFirst()] := 10;
при инициализации
procedure TForm1.TreeInitNode(Sender: TBaseVirtualTree; ParentNode,
Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
var
Data: PNodeData;
begin
Data:= Sender.GetNodeData(Node);
with Data^ do
begin
case Sender.GetNodeLevel(Node) of
0 :
begin
case Node.Index of
0: Caption:= "Первая";
1: Caption:= "Вторая";
2: Caption:= "Третья";
end;
1 : if ParenNode.Index = 0 then
Caption := Format("Это дочерний узел №%d первого узла дерева",[Node.Index]);
end;
end;
end;
end;
← →
lipskiy (2003-10-27 18:42) [6]спасибо!
Страницы: 1 вся ветка
Текущий архив: 2003.11.13;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.033 c