怎样对区读取数据库的表生成一棵树? 我用一表结构如下:id name parid01 管辖地区 00101 城北区 01010101 街道1 01010102 江南区 01010201 街道1 0102请问怎样生成一棵树在treeview中?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 帮我看看这段代码的问题,我运行出错。procedure CreateSubTree(FNodeName: string; Node: TTreeNode = nil);var mLocalName: string; TreeNode: TTreeNode; Ads_Tmp: TADOQUERY; TREEVIEW1:TTREEVIEW;begin ADS_Tmp := TADOQUERY.Create(application); ADS_Tmp.ConnectionString :='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=ldj;Data Source=LYY'; with ADS_Tmp do begin Close; sql.Clear ; sql.Add ( 'Select * from treeview Where PID =' + FNodeName); Open; First; while not Eof do begin mLocalName := FieldbyName('ID').Asstring; TreeNode := TreeView1.Items.AddChild(Node, FieldByName('Name').AsString); CreateSubTree(mLocalName, TreeNode); Next; end; end;end; 调用//procedure TForm1.Button1Click(Sender: TObject);beginCreateSubTree('0', nil);end;end. TreeNode := TreeView1.Items.AddChild(Node, FieldByName('Name').AsString); 这句话有问题。你的parid是做什么用的。你的id号是不是分子级和父级的。如果是的话,比如2个长度为一级,你可以根据这个判断它在树中的位置和关系。。 我明白了mysummer2003 ()的意思,是要從數據庫中得到數據,然後生成這樣一棵樹嗎?-管轄區 | -城北區 | | | -街道1 | -城南區 | -街道2Treeview中的效果圖 (*//标题:数据集处理成可视树说明:处理父节点标识字段、节点文本字段、节点标识字段这种表结构设计:Zswang日期:2002-05-20支持:[email protected]//*)///////Begin Sourcefunction DataSetToTreeNode(mDataSet: TDataSet; mFieldNameParent: string; //父节点标识字段名 mFieldNameTreeText: string; //节点文本字段名 mFieldNameTreeId: string; //节点标识字段名 mTreeView: TTreeView; mTreeNode: TTreeNode; mParentText: string): Boolean;var vTreeNode: TTreeNode; vFieldValues: Variant; vFieldNames: string;begin Result := False; if not Assigned(mDataSet) then Exit; if not Assigned(mTreeView) then Exit; if not mDataSet.Active then Exit; vFieldNames := Format('%s;%s;%s', [mFieldNameParent, mFieldNameTreeText, mFieldNameTreeId]); mDataSet.Filtered := False; mDataSet.Filter := Format('%s=%s', [mFieldNameParent, QuotedStr(mParentText)]); mDataSet.Filtered := True; if mDataSet.RecordCount = 0 then Exit; mDataSet.First; while not mDataSet.Eof do begin vTreeNode := mTreeView.Items.AddChild(mTreeNode, mDataSet.FieldByName(mFieldNameTreeText).AsString); vFieldValues := mDataSet[vFieldNames]; DataSetToTreeNode(mDataSet, mFieldNameParent, mFieldNameTreeText, mFieldNameTreeId, mTreeView, vTreeNode, mDataSet.FieldByName(mFieldNameTreeId).AsString); ///////Begin 恢复位置 mDataSet.Filtered := False; mDataSet.Filter := Format('%s=%s', [mFieldNameParent, QuotedStr(mParentText)]); mDataSet.Filtered := True; mDataSet.Locate(vFieldNames, vFieldValues, []); ///////End 恢复位置 mDataSet.Next; end; Result := True;end;///////End Source///////Begin Demoprocedure TForm1.Button1Click(Sender: TObject);var vADOQuery: TADOQuery;begin TreeView1.Items.Clear; vADOQuery := TADOQuery.Create(nil); try vADOQuery.ConnectionString :='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=ldj;Data Source=LYY'; vADOQuery.SQL.Text := 'Select * from treeview'; vADOQuery.Open; DataSetToTreeNode(vADOQuery, 'parid', 'name', 'id', TreeView1, nil, '0'); vADOQuery.Close; finally vADOQuery.Free; end;end;///////End Demo 樓主的過程沒錯,下面這句有問題:TreeNode := TreeView1.Items.AddChild(Node, FieldByName('Name').AsString);TreeView1之前應加上Form1,我調試通過了,無錯誤。TreeNode := Form1.TreeView1.Items.AddChild(Node, FieldByName('Name').AsString); 三层结构中参数传递遭遇问题 怎样判断打印机是否在线,也就是电源是否打开(加了打印服务器的,打印机通过网线连接) 圣诞快乐!圣诞将至,祝愿delphi区的朋友们各方面都可以顺心如意 关于Indy的一个问题? ~~~~~~~~~请大家帮帮小弟,过来看看,马上给分~~~~~~~~ ADO连库 改变运行期form的width问题 使用SetParent后,如何响应键盘消息? 哪位仁兄有用来保存csdn问题的软件?(可以自己维护) 如何写个任务交给后台每天晚上00:00处理 COBRA OBJECT 为何我无处新建! 关于矢量图的缩放!!
procedure CreateSubTree(FNodeName: string; Node: TTreeNode = nil);
var
mLocalName: string;
TreeNode: TTreeNode;
Ads_Tmp: TADOQUERY;
TREEVIEW1:TTREEVIEW;
begin
ADS_Tmp := TADOQUERY.Create(application);
ADS_Tmp.ConnectionString :='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=ldj;Data Source=LYY';
with ADS_Tmp do
begin
Close;
sql.Clear ;
sql.Add ( 'Select * from treeview Where PID =' + FNodeName);
Open;
First;
while not Eof do
begin
mLocalName := FieldbyName('ID').Asstring;
TreeNode := TreeView1.Items.AddChild(Node, FieldByName('Name').AsString);
CreateSubTree(mLocalName, TreeNode);
Next;
end;
end;
end;
调用//
procedure TForm1.Button1Click(Sender: TObject);
begin
CreateSubTree('0', nil);
end;end.
这句话有问题。
你的parid是做什么用的。你的id号是不是分子级和父级的。如果是的话,比如2个长度为一级,你可以根据这个判断它在树中的位置和关系。。
|
-城北區
| |
| -街道1
|
-城南區
|
-街道2Treeview中的效果圖
标题:数据集处理成可视树
说明:处理父节点标识字段、节点文本字段、节点标识字段这种表结构
设计:Zswang
日期:2002-05-20
支持:[email protected]
//*)///////Begin Source
function DataSetToTreeNode(mDataSet: TDataSet;
mFieldNameParent: string; //父节点标识字段名
mFieldNameTreeText: string; //节点文本字段名
mFieldNameTreeId: string; //节点标识字段名
mTreeView: TTreeView; mTreeNode: TTreeNode;
mParentText: string): Boolean;
var
vTreeNode: TTreeNode;
vFieldValues: Variant;
vFieldNames: string;
begin
Result := False;
if not Assigned(mDataSet) then Exit;
if not Assigned(mTreeView) then Exit;
if not mDataSet.Active then Exit;
vFieldNames := Format('%s;%s;%s',
[mFieldNameParent, mFieldNameTreeText, mFieldNameTreeId]);
mDataSet.Filtered := False;
mDataSet.Filter := Format('%s=%s', [mFieldNameParent, QuotedStr(mParentText)]);
mDataSet.Filtered := True;
if mDataSet.RecordCount = 0 then Exit;
mDataSet.First;
while not mDataSet.Eof do begin
vTreeNode := mTreeView.Items.AddChild(mTreeNode,
mDataSet.FieldByName(mFieldNameTreeText).AsString);
vFieldValues := mDataSet[vFieldNames];
DataSetToTreeNode(mDataSet, mFieldNameParent, mFieldNameTreeText,
mFieldNameTreeId, mTreeView, vTreeNode,
mDataSet.FieldByName(mFieldNameTreeId).AsString);
///////Begin 恢复位置
mDataSet.Filtered := False;
mDataSet.Filter := Format('%s=%s', [mFieldNameParent, QuotedStr(mParentText)]);
mDataSet.Filtered := True;
mDataSet.Locate(vFieldNames, vFieldValues, []);
///////End 恢复位置
mDataSet.Next;
end;
Result := True;
end;
///////End Source///////Begin Demo
procedure TForm1.Button1Click(Sender: TObject);
var
vADOQuery: TADOQuery;
begin
TreeView1.Items.Clear; vADOQuery := TADOQuery.Create(nil);
try
vADOQuery.ConnectionString :=
'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=ldj;Data Source=LYY';
vADOQuery.SQL.Text := 'Select * from treeview';
vADOQuery.Open;
DataSetToTreeNode(vADOQuery, 'parid', 'name', 'id',
TreeView1, nil, '0');
vADOQuery.Close;
finally
vADOQuery.Free;
end;
end;
///////End Demo
TreeNode := TreeView1.Items.AddChild(Node, FieldByName('Name').AsString);TreeView1之前應加上Form1,我調試通過了,無錯誤。
TreeNode := Form1.TreeView1.Items.AddChild(Node, FieldByName('Name').AsString);