如何将一棵树(TTreeView)以流的形式存于表(的某个字段)中?? (100分)

  • 主题发起人 主题发起人 cenghao
  • 开始时间 开始时间
C

cenghao

Unregistered / Unconfirmed
GUEST, unregistred user!

烦哦!又遇到这个麻烦!
到底怎样才能把一棵树(TTreeView)以流(TStream或者TBLobStream、TMemoryStream)的形式存于表中?要用到Blob的字段怎么搞?表中存树的字段,我
设置为binary数据类型,行吗?SQL Server中字段的binary类型和Delphi中的TStream型(或者TBLobStream、TMemoryStream),怎么接?
如果用Query(TQuery)Add或者Edit的话,怎么做?
我的数据库是SQL Server 7.0。
回复能给段简单的代码吗?把过程写写清楚,OK?多谢了!!!!!!
 
首先创建一个Blob字段BlobTree,然后在代码中
BlobStr: TBolbStream;
Table1: TTable;
TreeView1: TTreeView;

Table1.Edit

BlobStr := CreateBlobStream(Table1.FieldByName('BlobTree'), bmReadWrite);
TreeView1.SaveToStream(BlobStr);
try
Table1.Post;
finally
BlobStr.Free;
end;



 
hlsl:
你好啊!谢谢你的答复哦.但是问题好像还是没解决啊.
你写到"BlobStr := CreateBlobStream(Table1.FieldByName('BlobTree'),
bmReadWrite);",好像BlobStr应该要TStream型的,否则编译通不过啊.
我改成为TStream型后,编译通过,运行出现"Invalid class typecast"错误.
前几天,我自己也试过,也是这个问题.
能帮助解决吗?

 
把CreateBlobStream(Table1.FieldByName('BlobTree'), bmReadWrite);
改成table1.CreateBlobStream(Table1.FieldByName('BlobTree'), bmReadWrite);试试?
 
应该是对的吧>>>我想。或者你用下面的代码看看
{$define MIDAS}
//保存
var
bm:{$ifdef MIDAS}TClientBlobStream{$Else}TBlobStream{$endif};
begin
bm:={$ifdef MIDAS}TClientBlobStream{$Else}TBlobStream{$endif}.Create(Dataset.fieldname('tree'),bmwrite);
treeview1.savetostream(bm);
bm.free;
{$ifdef MIDAS}
dataset.applyupdates(-1);
{$else}
dataset.post;
{$endif}
end;
//装载
var
bm:{$ifdef MIDAS}TClientBlobStream{$Else}TBlobStream{$endif};
begin
bm:={$ifdef MIDAS}TClientBlobStream{$Else}TBlobStream{$endif}.Create(Dataset.fieldname('tree'),bmread);
if bm.size>0 then
treeview1.loadfromstream(bm);
bm.free;
end;



 
这个问题我已经自己解决了,说来好笑,我是把这个字段的类型,没有设为image型,而是binary
djdsz为什么要用TClientBlobStream?这样可以用来解决TQuery的问题吗?
hlsl你的回答很具针对性,其实我本来也是你这样做的,就是字段数据类型的错误,真没想到吧?
我自己更没想到
 
三层中用ClientBlobStream啊
 
多谢djdsz
 
对了,其实还有一个方案,示例如下:
S: TMemoryStream;

s:=TMemoryStream.Create;
treeview1.SaveToStream(S);
table1.edit;
(table1.field1 as TBlobField).LoadFromStream(s);
table1.post;
s.free;
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
回复
0
查看
795
爱音乐的孩子是小白
I
回复
0
查看
612
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部