我用treeview.SaveToStream属性保存到流中,然后写入数据库!读出来的时候先读到流里面,然后用treeview.LoadFromStream写入到树型控件当中,但是问题出现了:树型的结构和文本都正确,但是其中节点的Image Index , Selected Index , State Index 都没有保存,请问这些属性如何一同保存到数据库中?
解决方案 »
- 控件太多,怎么写可简化代码啊?
- 50分请问动态指针数组的问题
- 怎么求得文件的大小?
- 请教带参数的字符串like匹配查询
- 征求多用户操作的完美解决办法!分不够可以在开帖子!(300分)
- access数据库,一表中有一字段bid,形式为‘2002-0001’,如何在新增一条新记录时,使bid字段自动加1,如‘2002-0002’?
- 串口通讯问题
- 各位谈谈制作透明控件。
- 高手请进!SendBuf与ReceiveBuf问题。(谢绝灌水!!!)
- 两个表关联的sql
- 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;