Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.009 c
15-1149783297
grisme
2006-06-08 20:14
2006.07.09
Преобразование указателя


3-1147245667
SHD
2006-05-10 11:21
2006.07.09
Значение по умолчанию.


2-1151031743
Pagoo-man
2006-06-23 07:02
2006.07.09
SQL запросы


2-1151035731
Mir
2006-06-23 08:08
2006.07.09
Выполнение команды через shellexecute


15-1150040952
Yanis
2006-06-11 19:49
2006.07.09
А ваше чадо уже программирует?





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