Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   FireMonkey (https://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   uso de Canvas en android da error pero no bajo windows (https://www.clubdelphi.com/foros/showthread.php?t=95576)

Esteban74 17-02-2022 22:36:34

uso de Canvas en android da error pero no bajo windows
 
Hola, el siguiente código me produce una excepción bajo Android pero funciona perfectamente en Windows, ¿a alguien le paso lo mismo o tiene una idea de por que sucede?

Código Delphi [-]
function Tfrm_Hoy.calcularAnchoString(AText: string): Single;
var
  bmp: TBitmap;
  ancho: Single;
begin
  bmp := TBitmap.Create;
  try
    bmp.Canvas.Font.Style := [];
    bmp.Canvas.Font.Family := frmPrincipal.configuracion.Family;
    bmp.Canvas.Font.Size := frmPrincipal.configuracion.tam_fuente;
    ancho := bmp.Canvas.TextWidth(AText);
    Result := ancho;
  finally
    bmp.Free;
  end;
end;

Me canse de registrar la web pero no encuentro ningún problema similar, agradecería mucho una idea de que puede estar pasando

Esteban74 17-02-2022 23:18:01

Bueno con la idea de que un TLayout al tener una propiedad parent podría llegar a heredar los atributos de fuente (que es donde fallaba el código al intentar asignarles un valor) podría funcionar, y funcionó anda en Windows y Android, no estoy seguro bien por que pero cito la solucion al problema, por si a alguien le pasó.

Código Delphi [-]
function Tfrm_Hoy.calcularAnchoString(AText: string): Single;
var
  unLayout: TLayout;
  ancho: Single;

begin
  unLayout := TLayout.Create(frmPrincipal);
  unLayout.Parent := frmPrincipal;
  Memo1.Lines.Add('paso: bmp := TBitmap.Create; ');
  try
    unLayout.Canvas.Font.Style := [];
    unLayout.Canvas.Font.Family := frmPrincipal.configuracion.Family;
    unLayout.Canvas.Font.Size := frmPrincipal.configuracion.tam_fuente;
    ancho := unLayout.Canvas.TextWidth(AText);
    Result := ancho;
  finally
    unLayout.Free;
  end;
end;

ElKurgan 18-02-2022 07:20:37

Gracias por compartir la solución

Saludos


La franja horaria es GMT +2. Ahora son las 14:20:37.

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