PDA

Ver la Versión Completa : Problemas de visualizacion de label en Firemonkey Delphi 10.1 (Multidevice)


josesuarezochoa
26-11-2016, 20:40:51
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, 20: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, 21:00:07
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, 22:08:04
Proba con un TText (http://docwiki.embarcadero.com/Libraries/en/FMX.Objects.TText)

josesuarezochoa
26-11-2016, 23:29:48
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, 00:53:38
A mi este ejemplo me funciona bien. No he cambiado ninguna propiedad de las que vienen por defecto en diseño


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, 01:40:47
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, 02:01:11
Siguiendo el ejemplo anterior y cambiando el codigo:


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, 00:07:57
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, 00:26:10
al final lo que hice fue crear una función y en el evento onpaint del label pues llamarla:


LabelDescripcionDetalles.Text:=AdaptarTexto(LabelDescripcionDetalles.Text,cantidadcaracteres);


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, 00: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:
http://sia1.subirimagenes.net/img/2014/09/20/140920064308529777.jpg

Saludos :)