Ver Mensaje Individual
  #14  
Antiguo 15-08-2003
quetzal quetzal is offline
Miembro
 
Registrado: may 2003
Posts: 78
Reputación: 21
quetzal Va por buen camino
Talking

gracias a todos por sus comentarios

lo soluciones con este codigo



unit Unit1;

{
Copyright (c) 2001 Ernesto De Spirito
Latium Software http://www.latiumsoftware.com/
Email: edspirito@latiumsoftware.com

This example requires the BDE.
Este ejemplo requiere de la BDE.
}

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Db, DBTables, Grids, DBGrids, jpeg, ExtCtrls, DBCtrls, Menus,
ExtDlgs;

type
TForm1 = class(TForm)
Image1: TImage;
DataSource1: TDataSource;
Table1: TTable;
dlgOpenPicture: TOpenPictureDialog;
PopupMenu1: TPopupMenu;
mnuLoad: TMenuItem;
DBNavigator1: TDBNavigator;
mnuClear: TMenuItem;
Table1FOTO: TBlobField;
procedure Table1AfterScroll(DataSet: TDataSet);
procedure mnuLoadClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure mnuClearClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

type
TGraphType = (gtBitmap, gtIcon, gtMetafile, gtJpeg);

implementation

{$R *.DFM}

// =====================================================================

procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
var
Stream: TMemoryStream;
Jpg: TJpegImage;
GraphType: TGraphType;
begin
Jpg := nil;
Stream := nil;
try
Stream := TMemoryStream.Create;
TBlobField(Table1.FieldByName('foto')).SaveToStream(Stream);
if Stream.Size > 0 then begin
Stream.Position := 0;
Stream.Read(GraphType, 1);
case GraphType of
gtBitmap: Image1.Picture.Bitmap.LoadFromStream(Stream);
gtIcon: Image1.Picture.Icon.LoadFromStream(Stream);
gtMetafile: Image1.Picture.Metafile.LoadFromStream(Stream);
gtJpeg: begin
Jpg := TJpegImage.Create;
Jpg.LoadFromStream(Stream);
Image1.Picture.Assign(Jpg);
end else
Image1.Picture.Assign(nil);
end;
end else
Image1.Picture.Assign(nil);
except
Image1.Picture.Assign(nil);
end;
jpg.Free;
Stream.Free;
end;

// =====================================================================

procedure TForm1.mnuLoadClick(Sender: TObject);
var
Jpg: TJpegImage;
Stream: TMemoryStream;
FileExt: string;
GraphType: TGraphType;
begin
if dlgOpenPicture.Execute then begin
Jpg := nil;
Stream := nil;
try
Stream := TMemoryStream.Create;
FileExt := LowerCase(ExtractFileExt(dlgOpenPicture.FileName));
if (FileExt = '.bmp') or (FileExt = '.dib') then begin
GraphType := gtBitmap;
Stream.Write(GraphType, 1);
with Image1.Picture.Bitmap do begin
LoadFromFile(dlgOpenPicture.FileName);
Image1.Picture.Bitmap.SaveToStream(Stream);
end;
end else if (FileExt = '.ico') then begin
GraphType := gtIcon;
Stream.Write(GraphType, 1);
with Image1.Picture.Icon do begin
LoadFromFile(dlgOpenPicture.FileName);
Image1.Picture.Bitmap.SaveToStream(Stream);
end;
end else if (FileExt = '.emf') or (FileExt = '.wmf') then begin
GraphType := gtMetafile;
Stream.Write(GraphType, 1);
with Image1.Picture.Metafile do begin
LoadFromFile(dlgOpenPicture.FileName);
Image1.Picture.Bitmap.SaveToStream(Stream);
end;
end else if (FileExt = '.jpg') or (FileExt = '.jpeg')
or (FileExt = '.jpe') then begin
Jpg := TJpegImage.Create;
Jpg.LoadFromFile(dlgOpenPicture.FileName);
Image1.Picture.Assign(Jpg);
GraphType := gtJpeg;
Stream.Write(GraphType, 1);
Jpg.SaveToStream(Stream);
end;
if (Table1.State <> dsEdit) and (Table1.State <> dsInsert) then
Table1.Edit;
Stream.Position := 0;
TBlobField(Table1.FieldByName('foto')).LoadFromStream(Stream);
except
jpg.Free;
Stream.Free;
raise;
end;
jpg.Free;
Stream.Free;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
if Not FileExists('GraphTest.DB') then
Table1.CreateTable;
Table1.Open;
end;

procedure TForm1.mnuClearClick(Sender: TObject);
begin
Image1.Picture.Assign(nil);
if (Table1.State <> dsEdit) and (Table1.State <> dsInsert) then
Table1.Edit;
Table1.FieldByName('foto').Assign(nil);
end;

end.


Gracias a spitito por compartir este codigo

es mejor gusrdar la informacion en una BD que fuera de ella, nsi no para que fueron creas
Responder Con Cita