怎样不用递归列一个分三级的TreeView,急啊!!帮帮我!!我可以给300分的
解决方案 »
- 如何写这样的Panel 控件?
- DbGridEH为什么插入新行会全选所有记录。悲剧!
- 用 Delphi 开发一个服务器,用来响应 Javascript 中的 xmlhttp 提交的请求,并返回 xml 数据
- 选中DBGRID记录,变颜色问题,谢谢!
- 设置EXCEL表某列的宽度
- 如何屏蔽win2000信使服务的弹出信息,并且捕获信息
- 用SocketClient连上了SocketServer端,如何从Server端放回传数据?
- 送分了,有关DBGrid的 Field 的
- ASPack 专栏!(我的一个1.27M 的程序被ASPack 压缩到了173K!你信不信?)
- 请教流高手!(有源代码)
- 树形结构怎么用呀,我看了很多,但是没有明白原理,有那们大哥,可以相告,小弟不感激不尽!!!
- 小妹又要麻烦大家了?
type
TtmpData = record
no: string;
id: Integer;
pid: Integer;
title: string;
content: string;
attachfile: string;
end;
var
SaveData: array of TtmpData;
I: Integer;
RdCount: Integer;
ChildCount: Integer;
CurrNode: TTreeNode;
begin
Result := False;
with LoginInf.MySQLPlus do
begin
Close;
SQL.Clear;
SQL.Add('select id, pid, title, content, no, attachfile from pactitem '
+ 'where pid = ' + IntToStr(pid) + ' and pactno = ''' + FCurrPactNo
+ #39);
Open; RdCount := RecordCount;
SetLength(SaveData, RdCount); for I := 0 to RdCount - 1 do
begin
SaveData[I].id := Fields[0].AsInteger;
SaveData[I].pid := Fields[1].AsInteger;
SaveData[I].title := Fields[2].AsString;
SaveData[I].content := Fields[3].AsString;
SaveData[I].no := Fields[4].AsString;
SaveData[I].attachfile := Fields[5].AsString;
Next;
end;
Close;
end;
for I := 0 to RdCount - 1 do
begin
LoginInf.PactItem[FIndex].id := IntToStr(SaveData[I].id);
LoginInf.PactItem[FIndex].pid := IntToStr(SaveData[I].pid);
LoginInf.PactItem[FIndex].title := SaveData[I].title;
LoginInf.PactItem[FIndex].content := SaveData[I].content;
LoginInf.PactItem[FIndex].no := SaveData[I].no;
LoginInf.PactItem[FIndex].currindex := IntToStr(FIndex);
LoginInf.PactItem[FIndex].haschange := False;
LoginInf.PactItem[FIndex].attachfile := SaveData[I].attachfile;
LoginInf.PactItem[FIndex].status := ''; CurrNode := tvMain.Items.AddChild(pNode, SaveData[I].Title);
CurrNode.Data := PChar(LoginInf.PactItem[FIndex].Currindex);
Inc(FIndex);
SetLength(LoginInf.PactItem, FIndex + 1);
with LoginInf.MySQLPlus do
begin
Close;
SQL.Clear;
SQL.Add('select count(no) from pactitem where pid = ' +
IntToStr(SaveData[I].id)
+ ' and pactno = ''' + FCurrPactNo + #39);
Open;
ChildCount := Fields[0].AsInteger;
Close;
end; if CurrNode.Parent = nil then
begin
CurrNode.ImageIndex := 4;
CurrNode.SelectedIndex := 5;
end
else if ChildCount > 0 then
begin
CurrNode.ImageIndex := 2;
CurrNode.SelectedIndex := 3;
end
else
begin
CurrNode.ImageIndex := 0;
CurrNode.SelectedIndex := 1;
end; if ChildCount > 0 then
begin
LoadNode(SaveData[I].id, CurrNode);
end;
end;
Result := True;
end;