Yo hace un tiempo hice una aplicacion que tenia un pageframe que capturaba varias fotos correspondientes a un vehiculo que entraba a reparacion en un taller, el codigo que usaba era el siguiente:
Este es para guardar la foto en la base de datos:
Código Delphi
[-]
procedure TFotosxEquipo.BitBtn1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
begin
if table1.RecordCount=0 then begin
dbedit1.Text:=REPARA.HOJA.Text;
q1.sql.Text:=('insert into FOTOSXREPFB01 (CVE_DOC,'+FOTOS.ActivePage.Caption+') values (:CVE_DOC,agina)');
q1.parambyname('CVE_DOC').AsString:= REPARA.HOJA.Text;
q1.parambyname('pagina').LoadFromFile(OpenPictureDialog1.filename,ftGraphic );
q1.execsql;
FotosxEquipo.Database1.Commit;
Table1.Active:=false;
Table1.Filtered:= FALSE;
Table1.Filter:='CVE_DOC='+QuotedSTR(REPARA.HOJA.Text);
Table1.Filtered:= True;
Table1.Active:=true;
end else begin
q1.sql.text:=('update FOTOSXREPFB01 set '+FOTOS.ActivePage.Caption+'=agina where CVE_DOC=:CVE_DOC');
q1.parambyname('CVE_DOC').AsString:= table1.fieldbyname('CVE_DOC').Text;
q1.parambyname('pagina').LoadFromFile(OpenPictureDialog1.filename,ftGraphic );
q1.execsql;
FotosxEquipo.Database1.Commit;
Table1.Active:=false;
Table1.Filtered:= FALSE;
Table1.Filter:='CVE_DOC='+QuotedSTR(REPARA.HOJA.Text);
Table1.Filtered:= True;
Table1.Active:=true;
end;
end;
end;
Y este es para guardarla como archivo luego que ya habia sido guardada en la base y por ejemplo requiero guardarla en jpg para enviarla por email:
Código Delphi
[-]
procedure TFotosxEquipo.BitBtn2Click(Sender: TObject);
var
jp: TJPEGImage; begin
jp := TJPEGImage.Create;
try
with jp do
begin
jp.LoadFromStream(Table1.CreateBlobStream(table1.FieldByName(FOTOS.ActivePage.Caption),bmread));
SaveToFile(ExtractFilePath(Application.ExeName)+FOTOS.ActivePage.Caption+'.jpg');
Messagedlg('Imagen Guardada en:'+#13+ExtractFilePath(Application.ExeName)+FOTOS.ActivePage.Caption+'.jpg',mtWarning, [mbok],1);
end;
finally
jp.Free;
end;
end;
Y este ultimo sirve para imprimirla a traves de un quick report:
Código Delphi
[-]
procedure TFotosxEquipo.BitBtn3Click(Sender: TObject);
var cved:string;
jp: TJPEGImage; begin
jp := TJPEGImage.Create;
try
with jp do
begin
jp.LoadFromStream(Table1.CreateBlobStream(table1.FieldByName(FOTOS.ActivePage.Caption),bmread));
SaveToFile(ExtractFilePath(Application.ExeName)+FOTOS.ActivePage.Caption+'.jpg');
end;
finally
jp.Free;
end;
rptImpFoto := TrptImpFoto.Create(Application);
Try
cved:=DBEdit1.Text;
rptImpFoto.Query1.Active:=false;
rptImpFoto.Query2.Active:=false;
rptImpFoto.Query1.ParamByName('initialcod').Text:=cved;
rptImpFoto.Query2.ParamByName('initialcod').Text:=cved;
rptImpFoto.QRLabel5.Caption:=FOTOS.ActivePage.Caption;
rptImpFoto.QRImage1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+FOTOS.ActivePage.Capti on+'.jpg');
rptImpFoto.Query1.Active:=true;
rptImpFoto.Query2.Active:=true;
rptImpFoto.QuickRep1.previewmodal;
Finally
rptImpFoto.Release;
End;
end;
Espero estas ideas te sirvan para resolver tu situacion
Saludos