Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Obtener el valor de la propiedad Width y Hignt (https://www.clubdelphi.com/foros/showthread.php?t=93253)

bulc 02-07-2018 21:04:05

Obtener el valor de la propiedad Width y Hignt
 
Deseo cambiar un TDBImage, posicionándolo como vertical (Portrait) u horizontal (Marine) según que el ancho (Width) sea mayor o menor que el alto (Hight).
Usaría el Evento onDataChange del DataSource para que evalúe dichas propiedades y se muestre del modo correcto. Lo sé hacer con un CheckBox a la vista del gráfico.
Mi pregunta es:
¿Cuál es la mejor manera de obtener el valor de esa propiedad? Probaré con Modulo1.FDQuery2.FieldByName('foto').... pero ahí tropiezo y no sé seguir. ¿Debo usar un formato Picture?
Saludos,
bulc

ecfisa 02-07-2018 22:13:56

Hola.

Una opcion para obtener los valores del ancho y alto de la imágen almacenada en el campo 'FOTO' es:
Código Delphi [-]
function ImageFieldWidthHeight(aField: TField): TPoint;
var
  BF: TBlobField;
  GR: TGraphic;
  FS: Word;
  st: string;
begin
  BF := TBlobField(aField);
  // obtener signature de la imágen
  CopyMemory(@FS, @BF.Value[1], SizeOf(FS));
  st := IntToHex(FS, 4);

  GR := TGraphic.Create;
  try
    if st = '4D42' then      GR := TBitmap.Create
    else if st = 'D8FF' then GR := TJPEGImage.Create
    else if st = '0000' then GR := TIcon.Create
    // else if st = ... etc, etc
    else  raise Exception.Create('Formato de imágen no soportado');
    GR.Assign(BF);
    Result := Point(GR.Width, GR.Height);
  finally
    GR.Free;
  end;
end;

Uso:
Código Delphi [-]
...
var
  p: TPoint;
begin
   p := ImageFieldWidthHeight(Query.FieldByName('FOTO'));
   ShowMessageFmt('Width:%5d%sHeight:%5d', [p.X, #10, p.Y]);
...

Saludos :)


La franja horaria es GMT +2. Ahora son las 12:02:35.

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