Foros Club Delphi

Foros Club Delphi (http://www.clubdelphi.com/foros/index.php)
-   FireMonkey (http://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   Problemas de visualizacion de label en Firemonkey Delphi 10.1 (Multidevice) (http://www.clubdelphi.com/foros/showthread.php?t=91185)

josesuarezochoa 26-11-2016 21:40:51

Problemas de visualizacion de label en Firemonkey Delphi 10.1 (Multidevice)
 
Hola, al poner un label en app de MultiDevice, si el texto es mas grande que el Label se ve cortado y las letras un poco raras en la parte inferior. Le he puesto todas las opciones, trimming, WordWrap, Autosize, he probado con varias opciones y de varias maneras y no consigo que se vea correctamente en el movil, sin embargo la misma aplicacion en win 32 se muestra correctamente. Uso Delphi 10.1, movil galaxy s7, por si sirve de informacion adicional.
Gracias por la ayuda es la primera vez que creo un hilo en este sitio, aunque lo visito con frecuencia desde hace tiempo.

jhonny 26-11-2016 21:49:27

Tendríamos que ver como está la cosa... sin embargo podrías probar colocando un TLayout alineado en el lugar que deseas y poner el TLabel alineado al Client dentro del TLayout.

O bueno, quizá, simplemente sea cuestión de poner más grande el Alto de dicho TLabel.

Espero te sirva alguna de las sugerencias.

josesuarezochoa 26-11-2016 22:00:07

Ya lo he probado
 
Gracias por la rápida respuesta pero ya he probado esas opciones, de hecho tengo el label creado y el texto al final si el texto es mas grande que el label, me muestra 3 puntos al final ... eso es en tiempo de diseño, y al ejecutar el programa ya no se ve igual. No se que pueda ser.

AgustinOrtu 26-11-2016 23:08:04

Proba con un TText

josesuarezochoa 27-11-2016 00:29:48

Ya lo he probado
 
Ya lo probe con un Ttext y me salía de la misma manera, de todas formas voy a probar de nuevo con el ttext y varias de sus funciones y mañana doy mas detalles.

AgustinOrtu 27-11-2016 01:53:38

1 Archivos Adjunto(s)
A mi este ejemplo me funciona bien. No he cambiado ninguna propiedad de las que vienen por defecto en diseño

Código Delphi [-]
unit Unit1;

interface

uses
  System.Classes,
  FMX.Forms,
  FMX.Types,
  FMX.Controls,
  FMX.Objects;

type
  TForm1 = class(TForm)
    Text1: TText;
    procedure FormCreate(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Text1.Align := TAlignLayout.Client;
  Text1.TextSettings.VertAlign := TTextAlign.Leading;
  Text1.Text := 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore ' +
                'et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut ' +
                'aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse' +
                'cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, ' +
                'sunt in culpa qui officia deserunt mollit anim id est laborum.';
end;

end.

Dejo una imagen de como se ve en un Nexus 5X que tiene una pantalla de 5.2 pulgadas

josesuarezochoa 27-11-2016 02:40:47

Ya lo he probado
 
1 Archivos Adjunto(s)
Hola, gracias por contestar pero asi si me funciona bien. La forma en que digo yo es ese mismo texto que pusiste, que no se muestre completo, que solo muestre 3 líneas el label y el resto quede oculto con puntos supensivos al final.... Como lo muestras en tu imagen es completo, yo quiero que salga a mediados de línea sin que se muestre recortado, y si deseo pues dar click y que se muestre completo, pero lo esencial es que salga correctamente una parte del texto. En la imagen se muestra lo que me refiero y como sale el texto raro en la parte inferior.

Gracias de nuevo.

AgustinOrtu 27-11-2016 03:01:11

Siguiendo el ejemplo anterior y cambiando el codigo:

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  Text1.Align := TAlignLayout.Top;
  Text1.Trimming := TTextTrimming.Word;
  Text1.VertTextAlign := TTextAlign.Leading;
  Text1.Text := 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore ' +
                'et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut ' +
                'aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse' +
                'cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, ' +
                'sunt in culpa qui officia deserunt mollit anim id est laborum.';
  Text1.Height := Text1.Canvas.TextHeight(Text1.Text);
end;

procedure TForm1.Text1Click(Sender: TObject);
begin
  if Text1.Align = TAlignLayout.Top then
    Text1.Align := TAlignLayout.Client
  else
  begin
    Text1.Align := TAlignLayout.Top;
    Text1.Height := Text1.Canvas.TextHeight(Text1.Text);
  end;
end;

Tendrias que ajustar el calculo del alto cuando el texto se contrae. Por ejemplo podrias pasarle al Canvas como parametro las 3 primeras lineas para que te devuelva el alto necesario para mostrar esas 3 lineas

josesuarezochoa 31-12-2017 01:07:57

Firemonkey Android Problemas al Visualizar fuentes
 
1 Archivos Adjunto(s)
Hola, Tengo problemas al visualizar las fuentes en mi dispositivo android (Galaxy S7), las fuentes se muestran con una linea en la parte inferior, ya he probado a cambiar el fonts, size, autosize, pero se sigue mostrando con problemas. adjunto imagen para ver si me pueden ayudar.

Nota: son las pequeñas lineas debajo de las letras, no puedo subirla con mas calidad por limites en el servidor.

Gracias

josesuarezochoa 31-12-2017 01:26:10

Solucionado
 
al final lo que hice fue crear una función y en el evento onpaint del label pues llamarla:

Código Delphi [-]
LabelDescripcionDetalles.Text:=AdaptarTexto(LabelDescripcionDetalles.Text,cantidadcaracteres);
Código Delphi [-]
function TForm1.AdaptarTexto(texto:string;largo:integer): String;
begin
  if (Length(texto)>largo) and (largo > 5) then
  begin
    result:=Copy(texto,1,largo);
    Result:=result+'...';
  end
  else
    result:=texto;
end;

Por si a alguien le sirve de ayuda.

ecfisa 31-12-2017 01:56:55

Hola.

Muchas gracias por publicar la soluciòn ^\||/.

Por favor cuando incluyas código, aplícale las etiquetas correspondientes para una mejor visualización:


Saludos :)


La franja horaria es GMT +2. Ahora son las 19:28:10.

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