![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Загрузка дерева [D6, MSSQL]
killer_john © (2003-09-09 05:54:00)
Как загрузить в компонент TreeView иерархическую структуру из базы, в которой она содержится( mssql).
Nucl (2003-09-09 16:55:00) [1]
смотря как хранится дерево в базе, если в иерархии таблиц то читаешь мастера и перебираешь его записи, для каждой записи читаешь ее детей и т.д.
Если в одной таблице то сканируешь по столбцам.
Virgis (2003-09-09 09:52:00) [2]
Я делал так:
таблица Place такова:
ID (идентификатор)
ParentID (идентификатор родителя)
PlaceName (название места)
procedure TForm1.FormShow(Sender: TObject);
begin
if Form1.DB.Connected then FillTreeView(nil);
end;
procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TTreeNode; var AllowExpansion: Boolean);
begin
if Node.Count=0 then FillTreeView(Node);
end;
procedure TF_Diafragmos.FillTreeView(node:TTreeNode);
var subNode:TTreeNode;val:pTWord;
begin
subNode:=nil;
if node=nil then
Query1.SQL.Add("select * from Place where ParentID is null")
else
Query1.SQL.Add("select * from Place where ParentID="+IntToStr(pTWord(Node.Data)^));
Query1.Open;
Query1.First;
while not Query1.Eof do
begin
New(val);
val^:=Query1.Fields.FieldByNumber(1).Value;
subNode:=TreeView1.Items.AddChildObject(node,Query1.Fields.FieldByNumber(3).Value,val);
subNode.ImageIndex:=0;
subNode.SelectedIndex:=1;
subNode.HasChildren:=true;
Query1.Next;
end;
if subNode=nil then node.HasChildren:=false;
Query1.SQL.Clear;
Query1.Close;
end;
HSolo (2003-09-09 09:02:00) [3]
http://delphi.vitpc.com/helloworld/dbtreeview.htm
Radionov Alexey (2003-09-09 08:15:00) [4]
Смотря как она (структура)там хранится.
Поищи в инете TDBTreeView и посмотри как он это делает :)