利用Stream就可以的了,不过注意的是OleContainer1所使用的Stream与Bmp保存的Stream有所不同即OleContainer1所使用的Stream不能在Image中显示 var MyStream:TMemoryStream with DataMod.ADOTable1 do begin open; MyStream := TMemoryStream.Create; try TblobField(FieldByName('Image')).SaveToStream(MyStream); MyStream.Position := 0; OleContainer1.LoadFromStream(MyStream); finally MyStream.Free; end; end;
显示 if OpenPictureDialog1.Execute then begin OleContainer1.CreateObjectFromFile(OpenPictureDialog1.FileName, False); OleContainer1.Align := alClient; OleContainer1.DoVerb(ovShow); end;
你可以先把内容复制到剪切板,然后在ole对象中粘贴。
var
MyStream:TMemoryStream
with DataMod.ADOTable1 do
begin
open;
MyStream := TMemoryStream.Create;
try
TblobField(FieldByName('Image')).SaveToStream(MyStream);
MyStream.Position := 0;
OleContainer1.LoadFromStream(MyStream);
finally
MyStream.Free;
end;
end;
if OpenPictureDialog1.Execute then
begin
OleContainer1.CreateObjectFromFile(OpenPictureDialog1.FileName, False);
OleContainer1.Align := alClient;
OleContainer1.DoVerb(ovShow);
end;
将内存流复制到OLECONTAINER中。