Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Caption de Label en varias filas (https://www.clubdelphi.com/foros/showthread.php?t=83578)

Novatin 03-07-2013 00:22:24

Caption de Label en varias filas
 
Hola amigos,

Tengo un TButton con un caption así "NUNCA ES TARDE", y me gustaria saber si es posible cambiar el caption a:

"NUNCA
ES
TARDE"

Es decir en 3 lineas...

Si es posible de hacerlo estare muy agradecido

FGarcia 03-07-2013 00:53:00

Hola:

Por codigo en el evento OnCreate del form:

Código Delphi [-]
Button1.Caption := 'NUNCA ' + #10#13 + 'ES ' + #10#13 + 'TARDE';

Saludos!

Edito No me di cuenta que es el foro de C++ Builder pero pruebalo o tal vez algo similar :)

escafandra 03-07-2013 02:13:43

Código:

  SetWindowLong(Button1->Handle, GWL_STYLE, GetWindowLong(Button1->Handle, GWL_STYLE) | BS_MULTILINE);
  Button1->Caption = "Nunca\res\rtarde";

Saludos.

ecfisa 03-07-2013 03:31:23

Hola.

Agregando algo a lo que bién sugirió escafandra, si deseas aplicarlo a todos los botones de un mismo contenedor:
Código:


void WordWrapButtons(TWinControl* aParent)
{
  for(int i=0; i < aParent->ControlCount; i++)
    if(aParent->Controls[i]->ClassNameIs("TButton")) {
      TButton *b = static_cast<TButton*>(aParent->Controls[i]);
      SetWindowLong(b->Handle,
                    GWL_STYLE,
                    GetWindowLong(b->Handle, GWL_STYLE) | BS_MULTILINE);
      b->Refresh();
    }
}

Ejemplo de llamadas:
Código:

  ...
  WordWrapButtons(Form1);
  WordWrapButtons(Panel1);
  ...

Saludos :)

FGarcia 03-07-2013 04:06:31

:eek:

¿¡¡Todo eso para el caption de un Button!!?

Ahora entiendo el porque de la repulsión de Al Gonzalez a C, C++ y demas engendros !!! :D

ecfisa 03-07-2013 04:41:48

Cita:

Empezado por FGarcia (Mensaje 463128)
:eek:

¿¡¡Todo eso para el caption de un Button!!?

Ahora entiendo el porque de la repulsión de Al Gonzalez a C, C++ y demas engendros !!! :D

:)

Bueno, en realidad tratándose de Delphi y C++ Builder se necesita un código de complejidad similar para lograrlo.

En Delphi para un TButton:
Código Delphi [-]
begin
  SetWindowLong(Button1.Handle,
                GWL_STYLE,
                GetWindowLong(Button1.Handle, GWL_STYLE) or BS_MULTILINE);
  Button1.Caption := 'Nunca ' + #10#13 + 'es ' + #10#13 + 'tarde';
end;

Y el código para todos los TButton residentes en un mismo contenedor, sería:
Código Delphi [-]
procedure WordWrapButtons(aParent: TWinControl);
var
  i: Integer;
  b: TButton;
begin
  for i :=0 to aParent.ControlCount - 1 do
    if aParent.Controls[i] is TButton then
    begin
      b := TButton(aParent.Controls[i]);
      SetWindowLong(b.Handle,
                    GWL_STYLE,
                    GetWindowLong(b.Handle, GWL_STYLE) or BS_MULTILINE);
      b.Refresh;
    end;
end;

Saludos. :)

Novatin 03-07-2013 05:24:52

Gracias a todos...

Ya pude hacer lo que queria... igual que FGarcia, pense que iba a ser algo mas fácil como en VB6 "vbcrfl"... aunque ahora que aprendi un poco más de builder se me hará dificil aprender otros lenguajes (por el cariño que le voy tomando :o )... Pero A veces me pregunto ya pa que ir a clases... si al final tenes tantos buenos profesores en clubdelphi ... :p

Un Saludo


La franja horaria es GMT +2. Ahora son las 04:31:44.

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