Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Agregar puntos suspensivos a cadena extensa (https://www.clubdelphi.com/foros/showthread.php?t=84146)

Caroso 14-09-2013 03:24:00

Agregar puntos suspensivos a cadena extensa
 
hola muchachos aqui vengo con otra duda... si alguien conocía algún procedimiento para colocar puntos suspensivos al final de una cadena de texto extensa, es decir... tengo un LABEL de un tamaño definido y quiero que al intentar superar el largo total, en ves de ocultarse, se coloquen los puntos suspensivos...

un ejemplo aqui:


en la imagen anterior el primer label muestra lo que quiero cambiar... y el segundo lo que en realidad quiero...
el label 2 se carga en tiempo de ejecución y cambia el texto indefinida cantidad de veces...

Desde ya muchísimas gracias a todos porque siempre me ayudaron.. Saludos :)

ecfisa 14-09-2013 04:55:01

Hola Caroso.

Podes hacer:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TLabel = class(StdCtrls.TLabel)
  protected
    procedure Paint; override;
  end;

  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
  private
  public
  end;

var
  Form1: TForm1;

implementation {$R *.dfm}

{ TLabel }
procedure TLabel.Paint;
var
  R : TRect;
  str: string;
begin
  str := Caption;
  R   := ClientRect;
  Canvas.Brush.Color := Color;
  DrawText(Canvas.Handle, PChar(str), -1, R, DT_SINGLELINE + DT_END_ELLIPSIS);
end;

{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
  with Label1 do
  begin
    AutoSize := False;
    Caption  := 'En un lugar de la Mancha, de cuyo nombre no quiero acordarme,' +
      ' no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero,' +
      ' adarga antigua, rocín flaco y galgo corredor.';
  end;
end;

end.

Saludos :)

Caroso 14-09-2013 05:56:12

Solucionado
 
muchísimas gracias ecfisa... siempre tan solidario con la comunidad y conmigo...

Un Saludo y gracias :)

dec 14-09-2013 09:27:11

Hola,

Cita:

Empezado por Caroso (Mensaje 466895)
muchísimas gracias ecfisa... siempre tan solidario con la comunidad y conmigo...

Un Saludo y gracias :)

La solución ya dada es perfecta, no obstante, recordemos la propiedad "EllipsisPosition" de los componentes "TLabel", pues con esta (y quizá con "AutoSize" igual a "False") se logra el efecto que quieres y puedes además usar otros.

nlsgarcia 14-09-2013 15:20:59

Caroso,

Cita:

Empezado por dec
...recordemos la propiedad "EllipsisPosition" de los componentes "TLabel"...

Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
   
   Label1.AutoSize := False;
   
   Label1.EllipsisPosition := epEndEllipsis;
   
   Label1.Caption := 'El valor aproximado de PI es : 3.141592653589793238462643383279502884197169' +
                     '399375105820974944592307816406286208998628034825342117067982148086513282306' +
                     '647093844609550582231725359408128481117450284102701938521105559644622948954' +
                     '930381964428810975665933446128475648233786783165271201909145648566923460348' +
                     '610454326648213393607260249141273724587006606315588174881520920962829254091' +
                     '715364367892590360011330530548820466521384146951941511609433057270365759591' +
                     '953092186117381932611793105118548074462379962749567351885752724891227938183' +
                     '011949129833673362440656643086021394946395224737190702179860943702770539217' +
                     '176293176752384674818467669405132000568127145263560827785771342757789609173' +
                     '637178721468440901224953430146549585371050792279689258923542019956112129021' +
                     '960864034418159813629774771309960518707211349999998372978049';

end;

end.
El código anterior es una variante en Delphi 2010, del código sugerido en el Msg #2.

Revisa estos links:
Espero sea útil :)

Nelson.

ecfisa 14-09-2013 16:30:19

Hola.

Recién me desayuno con EllipsisPosition... Sucede que en la versión de Delphi que poseo, el control TLabel no posee esa propiedad.:(

¿ A partir de que versión se implementó ?

Saludos :)

dec 14-09-2013 17:14:19

Hola,

Cita:

Empezado por ecfisa (Mensaje 466908)
Hola.

Recién me desayuno con EllipsisPosition... Sucede que en la versión de Delphi que poseo, el control TLabel no posee esa propiedad.:(

¿ A partir de que versión se implementó ?

Saludos :)

Yo estuve a punto de no decirlo, precisamente, por eso: porque creía que estaba sólo a partir de XE2. Sin embargo, miré en Delphi 2007 y allí estaba también, así que me atreví a mencionar la propiedad. Y eso puedo decir, que, al menos a partir de Delphi 2007 existe dicha propiedad. :)

nlsgarcia 14-09-2013 17:51:06

ecfisa,

Cita:

Empezado por ecfisa
...EllipsisPosition...¿ A partir de que versión se implementó ?...

A partir de Delphi 2005, revisa este link:
Cita:

Changes to the Win32 VCL in Delphi 2005 (VCL Folder) : http://delphi.wikia.com/wiki/Changes...8VCL_Folder%29
Nunca he utilizado Delphi 2005, pero en Delphi 2006 esta propiedad esta implementada en el componente TLabel, no obstante el código sugerido en el Msg #2 muestra la vigencia, potencia y flexibilidad de Delphi 7 para la resolución de problemas en la plataforma Win32.

Espero sea útil :)

Nelson.


La franja horaria es GMT +2. Ahora son las 01:51:09.

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