Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   FireMonkey (https://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   Guardar el gráfico de un TPath en un campo Blob de un Dataset (https://www.clubdelphi.com/foros/showthread.php?t=96162)

david.camaleon 21-03-2023 13:52:19

Guardar el gráfico de un TPath en un campo Blob de un Dataset
 
Buenos días:

En una aplicación tengo un rectángulo que contiene un TPath que sirve para recoger una firma manuscrita. La intención es guardar dicha firma como Jpg en un campo Blob de una base de datos, pero cuando trato de hacerlo me aparece un mensaje de error indicando que no se ha invocado el método BeginScene.
El código es le siguiente:

Código Delphi [-]
Procedure grabar (Firma:Tpath);
Var
  m: TMemoryStream;
  jpgImg,Img: TBitmap;

Begin
    img:=Tbitmap.Create(Trunc(Firma.Width), Trunc(Firma.Height));
    m := TmemoryStream.Create;
    firma.PaintTo(img.Canvas, firma.LocalRect);
    img.SaveToStream(m);
    Dataset.close;
    Dataset.open;
    Dataset.Edit;
    Dataset.CampoFIRMA.LoadFromStream(m);
    DataSet.post;
End;

Muchas gracias.

Neftali [Germán.Estévez] 21-03-2023 15:58:54

Prueba a llamar a los métodos BeginScene y EndScene, tal y como te dice el error, antes de realizar la asignación.
En los propios links de ayuda, tienes ejemplos de uso.

Código Delphi [-]
...
  img := Tbitmap.Create(Trunc(Firma.Width), Trunc(Firma.Height));
  try
    img.Canvas.BeginScene;
    try
      firma.PaintTo(img.Canvas, firma.LocalRect);
    finally
      img.Canvas.EndScene;
    end;
    m := TmemoryStream.Create;
    try
      img.SaveToStream(m);
      Dataset.close;     
      Dataset.open;     
      Dataset.Edit;     
      Dataset.CampoFIRMA.LoadFromStream(m);     
      DataSet.post;
    finally
      FreeAndNil(m);
    end;
  finally
    FreeAndNil(img);
  end;

david.camaleon 22-03-2023 10:48:13

Solucionado: Guardar el gráfico de un Tpath en un campo de Blob de un dtaset
 
Buenos días,

Muchas gracias por tu rápida respuesta, Neftalí. El problema de la grabación ha quedado solucionado.
Ahora me toca pelear con los colores de fondo y pincel. :)

Saludos


La franja horaria es GMT +2. Ahora son las 14:52:00.

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