Êý¾Ý¿â½á¹¹ÈçÏ£º
id parentid,name,money,totalmoney,submoney
0,0,¸ù½Úµã,0,15000,0
1,0,ÕÅɽ,1000,5000,0
2,0,ÕźÃ,2000,7000,0
3,0,ÍõÎå,3000,3000,0
4,1,ÀèÃ÷,4000,4000,0
5,2,ÀÏÁõ,5000,5000,0
type
tmydata = record
id:integer;
parentid:integer;
name:string;
money:double;
totalmoney:double;
submoney:double;
resume:boolean;
end;
pmydata = ^tmydata;
ÏÖÔÚÏë·´Ïò¼ÆËãsubmoney.
submoney Êǵ±Ç°½ÚµãµÄtotalmoney ¼õÈ¥ÏÂÃæËùÓвã´ÎµÄmoney.
²¢ÇÒҪȥµôµ±Ç°Ï¼¶½ÚµãµÄmoney×î´óÖµ¡£
function submoney(p:tTreenode):double;
var
i:integer;
d:pcustdata;
begin
d:=pcustdata(p.data);
{
if not d.resum then //resum Æðµ½Ö»¼ÆËãÒ»´ÎµÄ×÷ÓÃ?¡£
begin
result:=d.money;
exit;
end;
}
if p.Count <1 then
begin
d.submoney := 0; //=0
result := d.money;
d.resum:=false;
exit;
end;
result := d.money;
for i:=0 to p.count -1 do
result := result + submoney(p.Item[i]);
//È«²¿¼ÓÆðÀ´ÒÔºóÓÃ×ÜÊýÈ¥¼õ
d.submoney := d.totalmoney + d.money - result;
d.resum:=false;
end;
ÎÒдµÄÕâ¸öûÓп¼ÂÇϼ¶½ÚµãµÄ×î´óÖµ¡£
ÁíÍâÒ»ÖÖ¡£
function submoney(p:tTreenode):double;