要求基于数据库,只要能把初始化详细讲明白就行,
顺便也给说一下TtreeNode的属性和使用,谢谢各位大虾
顺便也给说一下TtreeNode的属性和使用,谢谢各位大虾
解决方案 »
- 如何将注册表写死 无法删除
- 如何取得在线电影播放状态,如果取得离线播放器(暴风影音等)的播放状态
- _——请问怎么把一个字符串(控件的名字)转换成一个控件?——
- 各位高手,有谁用Com实现过MDI窗体
- 窗体衍生和窗体继承有什么区别?举个例子
- 【求助】怎么把这样一个简单的DLL 做成COM? 100分酬谢!!里面有这个DLL的源代码
- 我如何在DELPHI中得到触发器的raiserroe的返回值
- 谁知道现在哪里还有卖DELPHI5.x
- 安装Fastreport 时怎么copy FR_Class?
- 如何提高数据的查询速度, 从一个100万条记录中找出一条记录,现在速度太慢了受不了了,而且要频繁的操作
- quickreport问题,多行如何打印?!!
- 如何将DBGrid中的数据直接导出到Excel表中?
NodeV : TTreeNode;
begin
NodeV := TreeView.AddC..(Nil,'aaa');
NodeV.AddC.....
end;
//用递归一次性生成所有树节点
var
idTemp:integer;
strSQL:string;
qryTemp:TQuery;
TrNodeTemp:TTreeNode;
begin
TrNodeTemp := mP_TreeNode;
qryTemp := TQuery.Create(self);
try
strSQL := ' select id,name '
+ ' from Tcity '
+ ' where Parentid='+inttostr(mpid);
ExecQry(strSQL,qryTemp,true);
while not qryTemp.Eof do
begin
idTemp := qryTemp.fieldbyname('id').AsInteger;
tvDemoTree.Selected := tvDemoTree.Items.AddChild(TrNodeTemp,qryTemp.fieldbyname('name').AsString);
BuildTree(tvDemoTree.Selected,idTemp);
qryTemp.Next;
end;
finally
qryTemp.Free; //释放资源
end;
end;
treeview1.addobject();
//ttreenode对象添加节点
treeview1.items[i].addchild;
一般在构造树的时候需要知道各个节点的父子关系,
先给ttreeview对象添加根节点;
根节点完之后为每个节点ttreenode对象添加子节点
添加子节点可用递归画到最低一级;
procedure TMain.CreateTree(QuerySource:TADOQuery;NodeParent:TTreeNode;treeview1:ttreeview);
var
pstr1, pstr2 : ^string;
NodeTemp : TTreeNode;
begin
pstr1 := NodeParent.Data;
with QuerySource do
begin
close;
sql.Clear;
sql.Text:='SELECT key,xcode,xname FROM xzdm WHERE parent = ' + '''' + pstr1^ + '''';
open;
if isempty then exit;
NodeTemp := nil;
while not eof do
begin
new(pstr2);
pstr2^ := FieldByName('key').AsString;
NodeTemp := TreeView1.Items.AddChildObject(NodeParent,
trim(FieldByName('xname').AsString)+'('+fieldbyname('xcode').AsString+')', pstr2);
Next;
end;
end;
while NodeTemp <> nil do
begin
CreateTree(QuerySource, NodeTemp,treeview1);
NodeTemp := Nodetemp.getPrevSibling;
end;
end;procedure TMain.RootTree(treeview1:ttreeview);
var
NodeTemp : TTreeNode;
pstr : ^string;
Query:TADOQuery;
begin
Query:=TADOQuery.Create(self);
query.Connection:=BgConnection;
try
Treeview1.Items.BeginUpdate;
with query do
begin
SQL.Text :='select top 1 * from xzdm ';
open;
if isempty then exit;
NodeTemp := nil;
while not eof do
begin
new(pstr);
pstr^ := FieldByName('key').AsString;
NodeTemp :=treeview1.Items.AddObject(nil,
trim(FieldByName('xname').AsString)+'('+fieldbyname('xcode').AsString+')', pstr);
Next;
end;
end;
while NodeTemp <> nil do
begin
CreateTree(Query, NodeTemp,treeview1);
NodeTemp:=NodeTemp.getPrevSibling;
end;
treeview1.Items.EndUpdate;
finally
Query.Free;
end;
end;