【delphi开源代码栏目提醒】:网学会员为广大网友收集整理了,fOLEContainerMain.pas,希望对大家有所帮助!
unit fOLEContainerMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, ExtCtrls, DBCtrls, DB, StdCtrls, Buttons,
OleCtnrs, DBClient;
type
TForm1 = class(TForm)
dsBLOBDATA: TDataSource;
DBNavigator1: TDBNavigator;
DBGrid1: TDBGrid;
OleContainer1: TOleContainer;
bbtnLoad: TBitBtn;
bbtnShow: TBitBtn;
OpenDialog1: TOpenDialog;
BitBtn1: TBitBtn;
procedure bbtnLoadClick(Sender: TObject);
procedure bbtnShowClick(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
function GetFileExtension(const sFileName : String) : String;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses udmOLEContainer;
{$R *.dfm}
procedure TForm1.bbtnLoadClick(Sender: TObject);
var
fnOle : String;
function BlobContentToString(const sFileName : String) : String;
begin
with TFileStream.Create(sFileName, fmOpenRead) do
begin
try
SetLength(Result, Size);
Read(Pointer(Result)^, Size);
finally
Free;
end;
end;
end;
begin
if (OpenDialog1.Execute) then
begin
fnOle := OpenDialog1.FileName;
dmOLEContainer.scdsBLOBData.Edit;
dmOLEContainer.scdsBLOBData.FieldByName('BLOBDATA').AsString :=
BlobContentToString(fnOle);
dmOLEContainer.scdsBLOBData.FieldByName('EXT').Value :=
GetFileExtension(fnOle);
dmOLEContainer.scdsBLOBData.Post;
end;
end;
procedure TForm1.bbtnShowClick(Sender: TObject);
var
sFileName : String;
bs : TClientBlobStream;
begin
bs := TClientBlobStream.Create(dmOLEContainer.scdsBLOBDataBLOBDATA, bmRead);
try
sFileName := ExtractFilePath(Application.ExeName) + 'tempBlob';
sFileName := sFileName + '.' + dmOLEContainer.scdsBLOBData.FieldByName('EXT').AsString;
bs.Seek(soFromBeginning, 0);
bs.SaveToFile(sFileName);
OleContainer1.CreateObjectFromFile(sFileName, False);
finally
bs.Free;
end;
end;
function TForm1.GetFileExtension(const sFileName: String): String;
begin
Result := Copy(sFileName, Length(sFileName) - 2, 3);
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
dmOLEContainer.scdsBLOBData.ApplyUpdates(0);
end;
end.