我使用的是Delphi XE8。多设备应用程序。
我的.cds文件我' ve字段:[ID]字段类型:ftAutoInc和字段:[IMAGE]字段类型:ftGraphic。
我只想将.png图像插入.cds文件。但是,当我将.png图像插入.cds时,它会插入。当我尝试从.cds加载时,它会给出消息"位图图像无效"。
那么如何解决这个问题呢?
提前致谢!
这是我的代码:
procedure TForm1.btnImageInsertClick(Sender: TObject);
var
LStream : TMemoryStream;
begin
if OpenDialog1.Execute then
begin
Image1.Bitmap.LoadFromFile(OpenDialog1.FileName);
LStream := TMemoryStream.Create;
Image1.Bitmap.SaveToStream(LStream);
{
cdsMenu2.Insert;
cdsMenu2.FieldByName('IMAGE').Assign(Image1.Bitmap);
cdsMenu2.Post;
}
cdsMenu2.Insert;
TBlobField(cdsMenu2.FieldByName('IMAGE')).LoadFromStream(LStream);
cdsMenu2.Post;
cdsMenu2.SaveToFile(ExtractFileDir(ParamStr(0))+'\db\menu2.cds');
end;
答案 0 :(得分:3)
尝试使用此代码:
添加对单元Vcl.Imaging.pngimage;
的引用procedure TForm1.btnImageInsertClick(Sender: TObject);
var
LStream : TMemoryStream;
Png: TPngImage;
begin
if OpenDialog1.Execute then
begin
Image1.Bitmap.LoadFromFile(OpenDialog1.FileName);
LStream:= TMemoryStream.Create;
Png:= TPngImage.Create;
try
Png.Assign(Image1.Bitmap);
Png.SaveToStream(LStream);
LStream.Position:= 0;
cdsMenu2.Insert;
(cdsMenu2.FieldByName('IMAGE') as TBlobField).LoadFromStream(LStream);
cdsMenu2.Post;
cdsMenu2.SaveToFile(ExtractFileDir(ParamStr(0))+'\db\menu2.cds');
finally
LStream.Free;
Png.Free;
end;
end;
end;