unit
FRM_BlobInserts;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Grids, Buttons,
IB_Components,
IB_Process,
IB_Script, IB_Session, dbTables, IB_Controls, IB_Grid;
// IB_Components,
// IB_Script,
//IB_Process;
type
TfrmMP3inserts = class(TForm)
btn_TestIt: TBitBtn;
btn_Cancel: TBitBtn;
IB_Connection1: TIB_Connection;
IB_Transaction: TIB_TransactionSingle;
IB_Script1: TIB_Script;
odMP3: TOpenDialog;
bbSave: TBitBtn;
dsMP3: TIB_DataSource;
IB_LookupList1: TIB_LookupList;
sdMP3: TSaveDialog;
qmp3: TIB_Query;
Label1: TLabel;
procedure btn_TestItClick(Sender: TObject);
procedure btn_CancelClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure IB_Connection1BeforeConnect(Sender: TIB_Connection);
procedure bbSaveClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
fProcessRunning: boolean;
fCancelled: boolean;
public
end;
var
frmMP3inserts: TfrmMP3inserts;
TempStream: TStream;
MemoryStream: TMemoryStream;
count: integer;
implementation
{$R *.DFM}
procedure TfrmMP3inserts.btn_TestItClick(Sender: TObject);
var
mp3BLOB: TIB_Column;
filename: string;
begin
fProcessRunning := true;
fCancelled := false;
btn_Cancel.SetFocus;
btn_Cancel.Caption := 'Cancel';
btn_TestIt.Enabled := false;
if odMP3.Execute then filename := ExtractFileName(odMP3.FileName)
else exit;
try
qmp3.insert;
qmp3.FieldByName('id').asinteger := 1;
qmp3.FieldByName('mp3title').AsString := filename;
TempStream := qMP3.CreateBlobStream(qMP3.FieldByName('mp3file'), bsmWrite);
MemoryStream := TmemoryStream.Create;
MemoryStream.LoadFromFile(filename);
count := tempStream.CopyFrom(MemoryStream, 0);
qMP3.Post;
filename := '';
Application.ProcessMessages;
finally
// Complete the process and return the screen cursor to normal.
fProcessRunning := false;
btn_TestIt.Enabled := true;
btn_Cancel.Caption := 'Close';
MemoryStream.free;
TempStream.free;
end;
qmp3.refresh;
end;
procedure TfrmMP3inserts.btn_CancelClick(Sender: TObject);
begin
// Allow the process to be cancelled if it is running.
if fProcessRunning then begin
fcancelled := true;
end else begin
IB_Transaction.Commit;
Close;
end;
end;
procedure TfrmMP3inserts.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
// Don't allow the form to be closed if the process is running.
if FProcessRunning then begin
CanClose := false;
MessageBeep(0);
end;
end;
procedure TfrmMP3inserts.IB_Connection1BeforeConnect(
Sender: TIB_Connection);
begin
// Make sure that the database file exists.
with IB_Connection1 do begin
if (Protocol = cpLocal) and not FileExists(Database) then begin
IB_Script1.Execute;
end;
end;
end;
procedure TfrmMP3inserts.bbSaveClick(Sender: TObject);
begin
sdMP3.FileName := qMP3.FieldByName('mp3title').asString;
if sdMP3.Execute then
(qmp3.FieldByName('mp3file') as TIB_ColumnBlob).SaveToFile(sdMp3.FileName);
end;
procedure TfrmMP3inserts.FormActivate(Sender: TObject);
begin
qmp3.open;
qmp3.active := true;
end;
end.