我用treeview.SaveToStream属性保存到流中,然后写入数据库!读出来的时候先读到流里面,然后用treeview.LoadFromStream写入到树型控件当中,但是问题出现了:树型的结构和文本都正确,但是其中节点的Image Index , Selected Index , State Index 都没有保存,请问这些属性如何一同保存到数据库中?
解决方案 »
- 为什么unit载入不全?
- 大家帮忙推荐要加密狗带U盘,google好象搜到的全是加密狗。
- delphi中,使用XML的优势?
- 石家庄DELPHI群:48621650
- SQL语句请教??
- 如何修改硬盘的序列号和盘符的序列号
- --------类似于C++中lib方式,在Delphi中如何静态链接DLL?--------
- 如何知道每一个键的键值
- 数据库的别名问题?
- 请问在Delphi中什么函数相当于VB中的IIF?即根据表达式的值,来返回两部分中的其中一个。
- DELPHI7中使用corba时,编译IDL语言总是出“找不到指定文件”的错误
- 请问D6里添加了一个控件(自己写的)以后,怎么在系统中删除它。
TTreeNodeInfo = packed record
rImageIndex: Integer;
rSelectedIndex: Integer;
rStateIndex: Integer;
end;function TreeViewSaveToStream(mTreeView: TTreeView; mStream: TStream): Boolean;
var
I: Integer;
vTreeNodeInfo: TTreeNodeInfo;
begin
Result := False;
if not (Assigned(mTreeView) and Assigned(mStream)) then Exit;
mStream.Size := 0;
mStream.Position := 0;
I := mTreeView.Items.Count;
mStream.Write(I, SizeOf(I));
for I := 0 to mTreeView.Items.Count - 1 do
begin
vTreeNodeInfo.rSelectedIndex := mTreeView.Items[I].SelectedIndex;
vTreeNodeInfo.rImageIndex := mTreeView.Items[I].ImageIndex;
vTreeNodeInfo.rStateIndex := mTreeView.Items[I].StateIndex;
mStream.Write(vTreeNodeInfo, SizeOf(vTreeNodeInfo));
end;
mTreeView.SaveToStream(mStream);
Result := True;
end; { TreeViewSaveToStream }function TreeViewLoadFromStream(mTreeView: TTreeView; mStream: TStream): Boolean;
var
I: Integer;
vTreeNodeInfo: TTreeNodeInfo;
begin
Result := False;
if not (Assigned(mTreeView) and Assigned(mStream)) then Exit;
mStream.Position := 0;
mStream.Read(I, SizeOf(I));
mStream.Position := SizeOf(I) + I * SizeOf(vTreeNodeInfo);
mTreeView.LoadFromStream(mStream);
mTreeView.Items.BeginUpdate;
try
mStream.Position := SizeOf(I);
for I := 0 to I - 1 do
begin
mStream.Read(vTreeNodeInfo, SizeOf(vTreeNodeInfo));
mTreeView.Items[I].SelectedIndex := vTreeNodeInfo.rSelectedIndex;
mTreeView.Items[I].ImageIndex := vTreeNodeInfo.rImageIndex;
mTreeView.Items[I].StateIndex := vTreeNodeInfo.rStateIndex;
end;
finally
mTreeView.Items.EndUpdate;
end;
Result := True;
end; { TreeViewLoadFromStream }procedure TForm1.Button1Click(Sender: TObject);
var
vMemoryStream: TMemoryStream;
begin
vMemoryStream := TMemoryStream.Create;
try
TreeViewSaveToStream(TreeView1, vMemoryStream);
TreeViewLoadFromStream(TreeView2, vMemoryStream);
finally
vMemoryStream.Free;
end;
end;