Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Como poner una imagen en Paradox (https://www.clubdelphi.com/foros/showthread.php?t=91664)

J3Y 28-03-2017 17:55:21

Como poner una imagen en Paradox
 
Hola
Quisiera saber como puedo poner una imagen en Paradox

Les cuento:
Tengo una base de datos en Paradox 7, quiero introducir imágenes en JPEG o JPG, ya que quiero hacer una base de datos de unos estudiante para que cada vez que pase de estudiante aparezca su respectiva foto.

Como lo puedo hacer?



PD: Soy nuevo en este lenguaje, si me podrian explicar detalladamente se los agradecerecia. v:-)v

bitbow 28-03-2017 22:46:30

Si tu proyecto es algo que vas a realizar de cero , te recomiendo encarecidamente que te olvides de paradox y uses otra base de datos pero claro que esa no es tu pregunta.

Normalmente cuando se manejan imagenes, se almacena solo la ruta de la imagen en la base de datos y cuando quieres visualizarlas las cargas mediante esa ruta.

Posibles procesos:
Seleccion de image->guardado de ruta
ó
Seleccion de imagen->Mover imagen a un directorio especifico (esto para tener todo organizado)->gurdado de ruta

Adicional si tu desarrollo requiere la carga de imagenes puedes codificar el archivo en Base64 y guardarlo como cadena o cargarlo directamente como binario en un campo (desconozco los tipos de datos paradox que te puedan servir para esto ultimo).

Saludos.

ecfisa 28-03-2017 22:58:47

Hola.

Estos procedimientos te van a servir para cualquier descendiente de TDataSet:
Código Delphi [-]
uses JPeg;

procedure JpgToBlobField( Jpg: TJPEGImage; DataSet: TDataSet; const FieldName: string );
var
  Stream : TStream;
begin
  Stream := TMemoryStream.Create;
  try
    Jpg.SaveToStream( Stream );
    Stream.Seek( 0, soFromBeginning );
    DataSet.Edit;
    TBlobField( DataSet.FieldByName(FieldName) ).LoadFromStream( Stream );
    DataSet.Post;
  finally
    Stream.Free;
  end;
end;

procedure BlobFieldToJpg( DataSet: TDataSet; const FieldName: string; Jpg: TJPEGImage );
var
  Stream : TStream;
begin
  Stream := TMemoryStream.Create;
  try
    TBlobField( DataSet.FieldByName(FieldName) ).SaveToStream( Stream );
    Stream.Seek( 0, soFromBeginning );
    Jpg.LoadFromStream( Stream );
  finally
    Stream.Free;
  end;
end;

Ejemplos de uso:
Código Delphi [-]
procedure TForm1.btnSaveImageClick( Sender: TObject );
var
  Jpg: TJPEGImage;
  pd : TOpenPictureDialog;
begin
  pd := TOpenPictureDialog.Create( nil );
  try
    pd.Filter  := 'JPG Files (*.JPG) | *.JPG';
    pd.Options := [ofFileMustExist];
    if pd.Execute then
    begin
      Jpg := TJPEGImage.Create;
      try
        Jpg.LoadFromFile( pd.FileName );
        JpgToBlobField( Jpg, tuDataSet, 'IMAGEN' );
      finally
        Jpg.Free;
      end;
    end;
  finally
    pd.Free;
  end;
end;

procedure TForm1.btShowImageClick( Sender: TObject );
var
  Jpg: TJPEGImage;
begin
  Jpg := TJPEGImage.Create;
  try
    BlobFieldToJpg( tuDataSet, 'IMAGEN', Jpg );
    Image1.Picture := nil;
    Image1.Picture.Assign( Jpg );
  finally
    Jpg.Free;
  end;
end;

Saludos :)

J3Y 29-03-2017 15:37:26

Gracias bitbow y ecfisa, queria con JPG o JPEG pero termine usando BMP, pero gracias por el aporte ^\||/


La franja horaria es GMT +2. Ahora son las 14:03:38.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi