你是乎没有结点被选中:
procedure tform1.calacanodemoney(anode:ttreenode);
var
achild:ttreenode;
adata,cdata:tmydata;
scale:real;
begin
// 在这里加一句试试
treeview.selected:=treeveiw.topitem;
procedure tform1.calacanodemoney(anode:ttreenode);
var
achild:ttreenode;
adata,cdata:tmydata;
scale:real;
begin
// 在这里加一句试试
treeview.selected:=treeveiw.topitem;
解决方案 »
- 有没有熟悉DELPHI的资深大虾,能讲一下DELPHI使用ORACLE开发时需要注意的地方
- 如何控制windows设备啊?譬如USB,显卡,网卡之类的?
- CSDN有这些人在肯定人气不行,现在上delphi版的越来越少了
- ■■■如何用最简单的方法得到文件的大小?■■■
- help!如何用d5+ado的代码实现增加一个access表的字段?谢谢!
- 为什么Del命令WINEXEC 和SHELLEXECUTE执行不了?
- FastReport报表中上下标题
- 我要请人开发一个P2P视频点播的客户端..大概需要多少钱.多少时间..急急急.
- 怎么一个文本框中的keypress事件没反应
- 怎样将IE当前页存为TXT文件
- 关于QQ,怎么实现这个功能?
- 菜鸟用delphi和sql server 2000做程序,我想读取sql server服务器上的当前日期和时间,怎么办啊?
procedure TForm1.CalacMoney;
var
aNode : TTreeNode;
aData : TMyData;
begin
aNode :=TreeView1.Items.GetFirstNode;//找到第一个顶结点
var
achild:ttreenode;
adata,cdata:tmydata;
scale:real;
begin
achild:=anode.getfirstchild;
while achild<>nil do
begin
Case (aNode.level) of
0: scale := 0.5;
1: scale := 0.4;
2: scale := 0.3;
3: scale := 0.2;
end;
achild:=anode.getfirstchild; // 这里也是
while achild<>nil do // 这里去掉才对,要不然你这个递归不对
//了,因为已经有一个循环了,直接可以判断有没有子节点了,如果有则进入递归
begin // 和这里
if achild.haschildren then calacanodemoney(achild);
adata.ps:=adata.ps+tmydata(achild.data).ps*scale;
achild:=achild.getnextsibling;
end; //还有这里
end;
procedure tform1.CalacMoney;
……
aNode :=TreeView1.Items.GetFirstNode;//找到第一个顶结点
while aNode <> nil do//原来,从这里跳出去,不执行递归了
……什么怪问题哟
for i:=0 to treeview1.items.count-1 do
begin
aNode:=treeview1.items[i];
.......
end;
先运行buildtree 看看是不是生成 树了?看你后面的calmoney 应该没有什么问题的
但是label2.caption:=inttostr(cdata.ps);
显示为0让我百思不得其解