Форум: "Основная";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];
ВнизПравильное добавление дочерних веток Найти похожие ветки
← →
0_o (2006-05-28 20:53) [0]Подскажите как правильно добавлять дочерние ветки
Юзаются следующие процедуры
На построение дочерних:
procedure TForm1.BuildTree(Node: TTreeNode; ExecNo: integer);
var ID , i : Integer;
TreeNode : TTreeNode;
begin
TreeView.Items.BeginUpdate;
ADODataSet1.First;
for i:=1 to ADODataSet1.RecordCount do
begin
ID:=ADODataSet1.Fields[0].AsInteger;
TreeNode:=
TreeView.Items.AddChildObject(Node,ADODataSet1.Fields[1].AsString,TObject(ID));
ADODataSet1.Next;
end;
TreeView.Items.EndUpdate;
end;
Построение всего дерева:
procedure TForm1.Button3Click(Sender: TObject);
var i,j: integer;
begin
ShowMessage(IntToStr(TreeView.Items[0].Count));
for i:=0 to TreeView.Items.Count-1 do
begin
ADODataSet1.Active:=false;
ADODataSet1.Close;
j:=Integer(TreeView.Items[i].Data);
ADODataSet1.CommandText:="SELECT Producer_ID, Name FROM Producers WHERE Producer_ID IN "
+"(SELECT Producer FROM Wares WHERE Type = "+IntToStr(j)+") ORDER BY Name ASC";
ADODataSet1.Open;
ADODataSet1.Active:=true;
ADODataSet1.First;
BuildTree(TreeView.Items[i], 0);
end;
ShowMessage(IntToSTr(TreeView.Items.Count));
end;
В конце должно получится древо вида:
Элемент_1
|
- 111
|
- 222
|
- 333
Элемент_2
|
- 123
...
А получается вот такое:
Элемент_1
|
- 111
| |
| - 111
| | |
| | ... - тоже самое - 111, 222, 333
| |
| - 222
| |
| - 333
|
- 222
|
- 333
Элемент_2
...
Т.е. получается что я каждый раз в процедуреprocedure TForm1.Button3Click(Sender: TObject);
заставляю делать дочек для первого элемента каждой ветки, в одной главной ветке - Элемент_1
Подскажите как делать дочерние ветки для каждого главного элемента? :(
Заранее спасибо.
← →
wsih © (2006-05-28 22:11) [1]Y! Вот мои ламерские процедурки для выращивания деревьев... %)
procedure treenav(Tree:TTreeView;s:string); //Навигация по древесине
var
node:TtreeNode;
pnode:TTreeNode;
begin
if Tree.Selected <> nil then
if (s="pparent") then
while not (Tree.Selected.Parent = nil) do begin
node:=Tree.Selected;
pnode:=node.Parent;
Tree.Select(pnode);
end
else if (s="parent") then Tree.Select(Tree.Selected.Parent)
else if (s="firstchild") then Tree.Select(Tree.Selected.GetFirstChild)
else if (s="next") then Tree.Select(Tree.Selected.GetNext)
else if (s="nextonlevel") then Tree.Select(Tree.Selected.GetNextChild(Tree.Selected));
end;
procedure TForm1.popnewboreClick(Sender: TObject);
var pBore:BorePointer;
begin
treenav(Tree,"pparent");
Tree.Select(Tree.Items.Add(Tree.Selected,"УРОВЕНЬ 0"));
...
end;
procedure TForm1.popnewlayerClick(Sender: TObject);
var pLayer:LayerPointer;
begin
if Tree.Selected = nil then exit;
treenav(Tree,"pparent");
Tree.Select(Tree.Items.AddChild(Tree.Selected,"УРОВЕНЬ 1"));
...
end;
procedure TForm1.popnewsampleClick(Sender: TObject);
var pSample:SamplePointer;
begin
if Tree.Selected = nil then exit;
if Tree.Selected.Level=0 then exit;
if tree.Selected.Level=2 then treenav(tree,"parent");
Tree.Select(Tree.Items.AddChild(Tree.Selected,"УРОВЕНЬ 2"));
...
end;
← →
0_o (2006-05-29 17:53) [2]Видимо это Бормана глюк! - стоило поменять в процедуре
procedure TForm1.Button3Click(Sender: TObject);
строчкуfor i:=0 to TreeView.Items.Count-1 do
наfor i:=TreeView.Items.Count-1 downto 0 do
и все заработало как надо!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c