用TBlobField来作: if not OpenPictureDialog1.Execute then exit; Table1.Edit; TBlobField(Table1.FieldByName('Pic')).LoadFromFile(OpenPictureDialog1.FileName); Table1.Post;
procedure TfrmDataModul.OleImageMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);var frm :TfrmOleToBig; begin try if(ssRight in Shift) then begin OleImage.InsertObjectDialog(); exit; end; if((ssCtrl in Shift) and (Button=mbLeft)) then begin if(OleImage.State=osLoaded) then OleImage.Run; exit; end; end; procedure TfrmDataModul.BitBtnUpdClick(Sender: TObject); var strOldValue,strNewValue :String; UpdateId :Integer; SavePlace: TBook;//保存數據的當前位置 Stream :TADOBlobStream; Stream1 :TADOBlobStream; begin with DM.tbEdit do begin Close; TableName := 'data_modul'; Open; Locate('id', UpdateId, [loPartialKey]); Edit; if(OleImage.State = osLoaded)then begin Stream := TADOBlobStream.Create(TBlobField(FieldByName('cad')),bmReadWrite); try OleImage.SaveToStream(Stream); finally Stream.Free; end; end; end; end;
我用的是ADO控件连接。首先在数据库中建立一个含有位图地字段,然后利用简帖板的图像拷贝的功能,首先进行图像格式的转换,在利用数据库操作的函数完成。给你部分主要代码看看: procedure TForm1.Button1Click(Sender: TObject); begin if OpenPictureDialog1.Execute then begin try Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName); except Application.MessageBox('文件类型错误','错误',MB_OK);//????? end; if not (Image1.Picture.Graphic Is TBitmap) then begin ClipBoard.Assign(Image1.Picture); Image1.Picture.Bitmap.Assign(ClipBoard); ClipBoard.Clear; end;//Change the picture that's not belonged to .bmp to .bmp // picture ADOTable1.Edit; ADOTable1.FieldByName('pic').Assign(Image1.Picture); ADOTable1.Post; image1.Picture.Bitmap.Assign(nil); //get from database //Image1.Picture.Bitmap.Assign(TPicture(Table1.FieldByName('Image'))); end; end;
var Stream : TMemoryStream; begin Stream=TMemoryStream.Create; Stream.LoadFromFile('c:\12.bmp'); Table1.append; (Table1.Fieldbyname('jj').as TBlobFile).LoadFromStream(Stream) Table1.post; Stream.Free; end;
adoquery1.SQL.Clear ;
adoquery1.SQL.Add('select * from bb');
adoquery1.Open ;
tblobfield(adoquery1.FieldByName('s6')).savetofile('c:\test1.bmp') ;
//用动态sql语句插入有ole对象字段的记录
sqlstring := 'insert into bb(s1,s2,s6) values("12","45",:bb)' ;
adoquery1.SQL.Add(sqlstring) ;
adoquery1.Parameters.ParamByName('bb').loadfromfile('c:\test1.bmp',ftblob) ;
adoquery1.execsql;刚看到的,你试用一下:)
if not OpenPictureDialog1.Execute then exit;
Table1.Edit;
TBlobField(Table1.FieldByName('Pic')).LoadFromFile(OpenPictureDialog1.FileName);
Table1.Post;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);var
frm :TfrmOleToBig;
begin
try
if(ssRight in Shift) then
begin
OleImage.InsertObjectDialog();
exit;
end;
if((ssCtrl in Shift) and (Button=mbLeft)) then
begin
if(OleImage.State=osLoaded) then
OleImage.Run;
exit;
end;
end;
procedure TfrmDataModul.BitBtnUpdClick(Sender: TObject);
var
strOldValue,strNewValue :String;
UpdateId :Integer;
SavePlace: TBook;//保存數據的當前位置
Stream :TADOBlobStream;
Stream1 :TADOBlobStream;
begin with DM.tbEdit do
begin
Close;
TableName := 'data_modul';
Open; Locate('id', UpdateId, [loPartialKey]); Edit;
if(OleImage.State = osLoaded)then
begin
Stream := TADOBlobStream.Create(TBlobField(FieldByName('cad')),bmReadWrite);
try
OleImage.SaveToStream(Stream);
finally
Stream.Free;
end;
end;
end;
end;
http://expert.csdn.net/Expert/topic/1171/1171608.xml?temp=9.601992E-02
看看代碼
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
begin
try
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
except
Application.MessageBox('文件类型错误','错误',MB_OK);//?????
end;
if not (Image1.Picture.Graphic Is TBitmap) then
begin
ClipBoard.Assign(Image1.Picture);
Image1.Picture.Bitmap.Assign(ClipBoard);
ClipBoard.Clear; end;//Change the picture that's not belonged to .bmp to .bmp
// picture
ADOTable1.Edit;
ADOTable1.FieldByName('pic').Assign(Image1.Picture);
ADOTable1.Post;
image1.Picture.Bitmap.Assign(nil);
//get from database
//Image1.Picture.Bitmap.Assign(TPicture(Table1.FieldByName('Image')));
end;
end;
Stream : TMemoryStream;
begin
Stream=TMemoryStream.Create;
Stream.LoadFromFile('c:\12.bmp');
Table1.append;
(Table1.Fieldbyname('jj').as TBlobFile).LoadFromStream(Stream)
Table1.post;
Stream.Free;
end;