在delphi的demo下有个演示文件。
解决方案 »
- 如何在程序中嵌入excel,并把excel中的数据插入到ACCESS中?
- 用shellexecute执行一外部程序,如何等外部程序执行完再执行下一条语句?
- 关于delphi的dll,强烈咨询!!
- 寻求瑞星在线实时升级的技术原理与实现方法
- 各位高手,满分来了,就看你有没有水平
- delphi还能用多少年?它是标准化的吗?别像VB一样,半路被甩了!
- 哪里有关于delphi网络编程的书下载
- 一个很奇怪的问题
- 各位大侠!请多指教!
- 哪位朋友有获取任意月份有多少天的算法或控件?如有算法,请贴之。谢谢!
- 我在dbgrid的onkeydown中写了以下代码,为什么没有出现预期的效果呢?
- delphi的一个小技巧!
var
nodeTxt:string;
level:integer;
mynode:array[0..3] of TTreenode;
begin
TreeView.Items.Clear;
level:=0 ;
mynode[level]:=TreeView.Items.Add(nil,'根结点');
with treeDB do
begin
First;
while not Eof do
begin
nodeTxt:=Trim(FieldByName('Name').AsString);
level:=FieldByName('Level').AsInteger;
if level>0 then
begin
if level=1 then
mynode[level]:=
TreeView.Items.AddChild(mynode[level-1],nodeTxt)
else
mynode[level]:=
TreeView.Items.AddChild(mynode[level-1],nodeTxt);
end;
Next;
end;
end;
end;
//先试试这个,有问题在联络
procedure LoadTree(treeDB: TClientDataSet);
var
nodeTxt:string;
level:integer;
mynode:array[0..3] of TTreenode;
begin
TreeView.Items.Clear;
with treeDB do
begin
First;
while not Eof do
begin
nodeTxt:=Trim(FieldByName('Name').AsString);
level:=FieldByName('Level').AsInteger;
if level>0 then
begin
if level=1 then
mynode[level]:=TreeView.Items.Add(nil,nodeTxt)
else
mynode[level]:=
TreeView.Items.AddChild(mynode[level-1],nodeTxt);
end;
Next;
end;
end;
end;
procedure LoadTree(treeDB: TClientDataSet);
var
nodeTxt:string;
level:integer;
mynode:array[0..3] of TTreenode;
begin
TreeView.Items.Clear;
with treeDB do
begin
First;
while not Eof do
begin
nodeTxt:=Trim(FieldByName('Name').AsString);
level:=FieldByName('Level').AsInteger;
if level>0 then
begin
if level=1 then
mynode[level]:=TreeView.Items.Add(nil,nodeTxt)
else
mynode[level]:=
TreeView.Items.AddChild(mynode[level-1],nodeTxt);
end;
Next;
end;
end;
end;
TreeView.Items.AddChild(mynode[level-1],nodeTxt);
nodetemp:TTreenode;
pstr:^string;
str:string;
begin
with query(你的查询) do
begin
close;
sql.clear;
sql.text:='select id,name,parent_id from your_table where parent_id=-1';
end;
treeview1.Items.BeginUpdate;//这样会提高速度,系统不会每增加一个接点就重画树
with query do
begin
open;
if eof then exit;
nodetemp:=nil;
while not eof do
begin
new(pstr);
pstr^:=fieldbyname('id').AsString;
nodetemp:=treeview1.Items.AddObject(nil,fieldbyname('name').AsString,pstr);
next;
end;
end;
while nodetemp<>nil do
begin
CreateTree(query,nodetemp);
nodetemp:=nodetemp.getPrevSibling;
end; treeview1.Items.EndUpdate;
if treeview1.Items.Count>0 then
treeview1.FullExpand;
treeview1.Items[0].Selected:=true;
end;procedure TDlasc.CreateTree(QuerySource:TADOQuery;NodeParent:TTreeNode);
var
pstr1, pstr2 : ^string;
i : integer;
NodeTemp : TTreeNode;
begin
QuerySource.close;
pstr1 := NodeParent.Data;
QuerySource.Sql.Text := 'SELECT id,name,parent_id FROM your_table WHERE parent_id = ' + '''' + pstr1^ + '''';
QuerySource.open;
QuerySource.First;
if QuerySource.RecordCount = 0 then exit; NodeTemp := nil;
for i := 0 to QuerySource.RecordCount - 1 do
begin
new(pstr2);
pstr2^ := QuerySource.FieldByName('id').AsString;
NodeTemp := TreeView1.Items.AddChildObject(NodeParent,
QuerySource.FieldByName('name').AsString, pstr2);
QuerySource.Next;
end; while NodeTemp <> nil do
begin
CreateTree(QuerySource, NodeTemp);
NodeTemp := Nodetemp.getPrevSibling;
end;
end;