一,我数据库中对应有字段推荐人手机和被推荐人手机号,一个推荐人可以对应多个推荐人,被推荐人也可以推荐多人,我写了一个递归过程对其实现,把它们的对应关系显示在TREEVIEE中,但是应该是访问服务器数据库时需要很多的时间,所以程序一直都反映不过来。我想问一下怎么样可以减少时间。
下面是我写的一个过程,应该没有问题:
procedure GetDirectories(Tree:TTreeView; introducer:string; Item:TTreeNode);
var
SearchRec: TSearchRec;
ItemTemp: TTreeNode;
begin
Tree.Items.BeginUpdate;
form1.ADOQuery1.SQL.Clear;
form1.ADOQuery1.SQL.Text:='select * from tagy_agency where introducer =:introducer and levelno=:level CONNECT BY PRIOR agencyId = fatherId';
form1.ADOQuery1.Parameters.ParamByName('introducer').value:=trim(introducer);
form1.ADOQuery1.Parameters.ParamByName('level').Value:=10;
if not form1.ADOQuery1.Active then form1.ADOQuery1.Open;
if form1.ADOQuery1.recordcount>0 then
begin
form1.ADOQuery1.First;
while not (form1.ADOQuery1.Eof) do
begin
Item := Tree.Items.AddChild(Item, form1.ADOQuery1.fieldbyname('agencyId').value);
ItemTemp := Item.Parent;
GetDirectories(Tree, introducer, Item);
Item := ItemTemp;
Tree.Items.AddChild(Item, form1.ADOQuery1.fieldbyname('agencyId').value);
form1.ADOQuery1.Next;
end;{loop end}
Tree.Items.EndUpdate;
end;二:我怎么样把上面的实现以生成一幅图片的形式显示出来。
下面是我写的一个过程,应该没有问题:
procedure GetDirectories(Tree:TTreeView; introducer:string; Item:TTreeNode);
var
SearchRec: TSearchRec;
ItemTemp: TTreeNode;
begin
Tree.Items.BeginUpdate;
form1.ADOQuery1.SQL.Clear;
form1.ADOQuery1.SQL.Text:='select * from tagy_agency where introducer =:introducer and levelno=:level CONNECT BY PRIOR agencyId = fatherId';
form1.ADOQuery1.Parameters.ParamByName('introducer').value:=trim(introducer);
form1.ADOQuery1.Parameters.ParamByName('level').Value:=10;
if not form1.ADOQuery1.Active then form1.ADOQuery1.Open;
if form1.ADOQuery1.recordcount>0 then
begin
form1.ADOQuery1.First;
while not (form1.ADOQuery1.Eof) do
begin
Item := Tree.Items.AddChild(Item, form1.ADOQuery1.fieldbyname('agencyId').value);
ItemTemp := Item.Parent;
GetDirectories(Tree, introducer, Item);
Item := ItemTemp;
Tree.Items.AddChild(Item, form1.ADOQuery1.fieldbyname('agencyId').value);
form1.ADOQuery1.Next;
end;{loop end}
Tree.Items.EndUpdate;
end;二:我怎么样把上面的实现以生成一幅图片的形式显示出来。
解决方案 »
- 开发基于internet网络环境下的进销售存软件是使用soap/webservices还是用dcom/midas?多层开发比c/s模式有什么优势?
- 请问各位从哪里能找到VB高手?或是WINDOWS编程高手?或API高手?
- 关于数据库占用内存的问题。
- bsBusinessSkinForm中如何实现application.messagebox的皮肤?
- 查询问题,请各位大侠指正。
- QReport怎么老是有问题?
- 我有一个数据库问题请教!
- 请问,当新加的记录的"编号"与数据库中的记录的"编号"重号时,数据库会还会一个异常,我要怎样扑捉到这个异常,并让用户看到我告诉用户的话?
- 在dephi怎么使用存储过程
- 请问在Delphi中怎样实现VB中日Doevent功能,即转让控制权,以便让操作系统处理其它的事件。
- 自定义标题栏组件有问题,大家进来了看看,见源码
- cxGrid中输入中文的问题
2.图片的问题,你说得比较含糊
1)如果只是TreeVew转换到图片上,那么简单,TreeView的Canvas可以Copy到Bmp的Canvas上。
2)如果你要自己定义显示格式来画这个图的话。其实很简单,就是算好所有节点的位置,然后画就好了。复杂一点的就是,要做那种折叠效果:)
比如如何将表中所有数据都取都客户端,如何过滤每一层的记录
还有延迟加载问题。
我要自己定义显示格式来画这个图的话,该怎么画
请恕我愚昧,可以给我一个DEMO,让我好理解一点吗?