用teetree2.0或teechart8.06写个小程序保存动态创建的树,但是碰到了问题,可能和持久化有关,但始终没找到解决办法:
保存树的代码:
procedure Tstep_wayfrm.Button2Click(Sender: TObject);
var st:TMemoryStream;
begin
st:=TMemoryStream.Create;
SaveTreeToStream(Tree1,st);
with aqtemp1 do
begin
close;
sql.Text:='select * from flow_tree';
Open;
Append;
TBlobField(FieldByName('tree')).LoadFromStream(st);
Post;
end;
st.Free;
Tree1.Clear;end;
载入数据库树的代码:
procedure Tstep_wayfrm.Button3Click(Sender: TObject);
var st:TMemoryStream;
begin
with aqtemp1 do
begin
close;
SQL.Text:='select * from flow_tree';
Open;
st:= TADOBlobStream.Create(TBlobField(FieldByName('tree')),bmRead); LoadTreeFromStream(tcustomtree(tree1),st);
end;
st.Free;end;
以上调试通过,在设计状态下的树可以正常保存和读入,但是在程序运行阶段添加的树元素,保存后没有!
保存树的代码:
procedure Tstep_wayfrm.Button2Click(Sender: TObject);
var st:TMemoryStream;
begin
st:=TMemoryStream.Create;
SaveTreeToStream(Tree1,st);
with aqtemp1 do
begin
close;
sql.Text:='select * from flow_tree';
Open;
Append;
TBlobField(FieldByName('tree')).LoadFromStream(st);
Post;
end;
st.Free;
Tree1.Clear;end;
载入数据库树的代码:
procedure Tstep_wayfrm.Button3Click(Sender: TObject);
var st:TMemoryStream;
begin
with aqtemp1 do
begin
close;
SQL.Text:='select * from flow_tree';
Open;
st:= TADOBlobStream.Create(TBlobField(FieldByName('tree')),bmRead); LoadTreeFromStream(tcustomtree(tree1),st);
end;
st.Free;end;
以上调试通过,在设计状态下的树可以正常保存和读入,但是在程序运行阶段添加的树元素,保存后没有!
1. lshape:=Tree1.Add(200,60,'aa',nil);
2.从保存的文本中导入:procedure Tstep_wayfrm.Button4Click(Sender: TObject);
begin
Tree1.Clear;
Tree1.LoadFromStrings(Memo1.Lines);end;
反正动态导入的德无法保存,以前的就有。
用tree2自带的演示程序同样如此,不知是组件缺陷还是运行时和设计时有什么不同?