Главная страница
    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.01 c
1-1148980769
Pavels
2006-05-30 13:19
2006.07.09
Плагинная архитектура приложения.


15-1149862062
infom
2006-06-09 18:07
2006.07.09
Вычислить вероятности исходов.


6-1140865230
WondeRu
2006-02-25 14:00
2006.07.09
Связь ISAPI модуля и внешнего приложения


4-1143729890
Lik
2006-03-30 18:44
2006.07.09
Проблема с RasEnumConnections


1-1148562932
Silver...
2006-05-25 17:15
2006.07.09
OLEContainer -> PowerPoint + ...??? Команды ???... = Типа Preview





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