给你个例子:
procedure DataSetToTreeView(DataSet: TDataSet; var TreeView: TTreeView; NodeRoot: string);
var Nodes: array of TTreeNode;
Strs: array of string;
i: integer;
begin
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
with DataSet do
begin
Close;
Open;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SetLength(Nodes, FieldCount+1);
SetLength(Strs, FieldCount);
Nodes[0] := TreeView.Items.AddChild(nil, NodeRoot);
for i:=Low(Strs) to High(Strs) do Strs[i] := #255;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
First;
while not Eof do
begin
for i:=Low(Strs) to High(Strs) do
if Strs[i]<>Fields[i].AsString then
begin
Strs[i] := Fields[i].AsString;
Nodes[i+1] := TreeView.Items.AddChild(Nodes[i],Fields[i].AsString);
end;
Next;
end;
Close;
end;
end;
procedure DataSetToTreeView(DataSet: TDataSet; var TreeView: TTreeView; NodeRoot: string);
var Nodes: array of TTreeNode;
Strs: array of string;
i: integer;
begin
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
with DataSet do
begin
Close;
Open;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SetLength(Nodes, FieldCount+1);
SetLength(Strs, FieldCount);
Nodes[0] := TreeView.Items.AddChild(nil, NodeRoot);
for i:=Low(Strs) to High(Strs) do Strs[i] := #255;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
First;
while not Eof do
begin
for i:=Low(Strs) to High(Strs) do
if Strs[i]<>Fields[i].AsString then
begin
Strs[i] := Fields[i].AsString;
Nodes[i+1] := TreeView.Items.AddChild(Nodes[i],Fields[i].AsString);
end;
Next;
end;
Close;
end;
end;
解决方案 »
- Delphi 怎样调用系统的"图片和传真查看器"来打开图片
- 如何控制一个程序的使用期限问题
- 关于dbgrideh的一个小问题~~
- delphi开发的软件与其他软件冲突,大家有没有碰到?
- 困难问题,请帮忙,一定给分
- 静儿有delphi问题需要帮助QQ:9813117
- 报表的Detail行本来是根据记录数自动伸缩的,我想固定其高度,应该怎样实现?
- ParamStr,setstring怎么用?详细一点,谢谢!
- 动态创建oracle数据库的存储过程?
- 救命!谁有Delphi5 Update Pack1的Key?
- 详细内容请进来看!!!
- 问一个简单问题。数据集控件里有个DataSetField属性,是怎么用的哦??谢谢
//字段用一个text或者blob类型//保存
procedure TForm1.Button1Click(Sender: TObject);
var
vMemoryStream: TMemoryStream;
begin
vMemoryStream := TMemoryStream.Create;
try
TreeView1.SaveToStream(vMemoryStream);
vMemoryStream.Position := 0;
Table1.Edit;
TBlobField(Table1.FieldByName('TreeField')).LoadFromStream(vMemoryStream);
finally
vMemoryStream.Free;
end;
end;//载入
procedure TForm1.Button2Click(Sender: TObject);
var
vMemoryStream: TMemoryStream;
begin
vMemoryStream := TMemoryStream.Create;
try
TBlobField(Table1.FieldByName('TreeField')).SaveToStream(vMemoryStream);
vMemoryStream.Position := 0;
TreeView1.LoadFromStream(vMemoryStream);
finally
vMemoryStream.Free;
end;
end;