¿Cómo incluyo un carácter de nueva línea en una cadena en Delphi?


97

Quiero crear una cadena que abarque varias líneas para asignar a una propiedad de título de etiqueta. ¿Cómo se hace esto en Delphi?

Respuestas:


174

En System.pas (que se usa automáticamente) se define lo siguiente:

const
  sLineBreak = {$IFDEF LINUX} AnsiChar(#10) {$ENDIF} 
               {$IFDEF MSWINDOWS} AnsiString(#13#10) {$ENDIF};

Esto es de Delphi 2009 (observe el uso de AnsiChar y AnsiString). (Ajuste de línea agregado por mí).

Entonces, si desea hacer que su TLabel se ajuste, asegúrese de que AutoSize esté configurado en verdadero y luego use el siguiente código:

label1.Caption := 'Line one'+sLineBreak+'Line two';

Funciona en todas las versiones de Delphi desde que se introdujo sLineBreak, que creo que fue Delphi 6.


33

Aquí hay un enfoque aún más corto:

my_string := 'Hello,'#13#10' world!';

15

my_string := 'Hello,' + #13#10 + 'world!';

#13#10 son los caracteres CR / LF en decimal


8

O también puede usar el atajo ^ M + ^ J. Todo es cuestión de preferencias. los códigos "CTRL-CHAR" son traducidos por el compilador.

MyString := 'Hello,' + ^M + ^J + 'world!';

Puede quitar el + entre ^ M y ^ J, pero luego recibirá una advertencia del compilador (pero aún así se compilará bien).


7

Por otro lado, un truco que puede ser útil:
si mantiene sus múltiples cadenas en un TStrings, solo tiene que usar la propiedad Text de TStrings como en el siguiente ejemplo.

Label1.Caption := Memo1.Lines.Text;

Y obtendrás tu etiqueta de varias líneas ...


3
var
  stlst: TStringList;
begin
  Label1.Caption := 'Hello,'+sLineBreak+'world!';

  Label2.Caption := 'Hello,'#13#10'world!';

  Label3.Caption := 'Hello,' + chr(13) + chr(10) + 'world!';

  stlst := TStringList.Create;
  stlst.Add('Hello,');
  stlst.Add('world!');
  Label4.Caption := stlst.Text;

  Label5.WordWrap := True; //Multi-line Caption
  Label5.Caption := 'Hello,'^M^J'world!';

  Label6.Caption := AdjustLineBreaks('Hello,'#10'world!');
  {http://delphi.about.com/library/rtl/blrtlAdjustLineBreaks.htm}
end;



0

No tengo una copia de Delphi a mano, pero estoy bastante seguro de que si establece la propiedad wordwrap en true y la propiedad de tamaño automático en false, debería envolver cualquier texto que ponga en el tamaño que hace la etiqueta. Si desea hacer un salto de línea en un lugar determinado , podría funcionar si establece la configuración anterior y la pega desde un editor de texto .

Espero que esto ayude.


-2

A veces no quiero abarrotar mi espacio de código, especialmente para una etiqueta estática. Para tenerlo definido con el formulario, ingrese el texto de la etiqueta en el formulario, luego haga clic derecho en cualquier lugar del mismo formulario. Elija "Ver como texto". Ahora verá todos los objetos como se diseñaron, pero solo como texto. Desplácese hacia abajo o busque su texto. Cuando lo encuentre, edite el título, para que tenga un aspecto similar a:

Título = 'Línea 1' # 13'Línea 2 '# 13'Línea 3'

# 13 significa un ordinal 13, o ascii para retorno de carro. Chr (13) es la misma idea, CHR () cambia el número a un tipo ordinal.

Tenga en cuenta que no hay punto y coma en esta faceta particular de Delphi, y se usa "=" en lugar de ": =". El texto de cada línea se incluye entre comillas simples.

Una vez que haya terminado, haga clic derecho una vez más y elija "Ver como formulario". Ahora puede aplicar cualquier formato como negrita, justificar a la derecha, etc. No puede volver a editar el texto en el formulario o perderá los saltos de línea.

También utilizo "Ver como texto" para varios cambios en los que solo quiero desplazarme y hacer reemplazos, etc. Rápido.

Dave


La respuesta aceptada es directa al grano, al igual que la pregunta. Esta respuesta, por el contrario, agrega más de lo que se pidió; peor aún: de una manera no tan clara.
ranieribt

-2
 private
   { Private declarations }
   {declare a variable like this}
   NewLine : string; // ok
  // in next event handler assign a value to that variable (NewLine)
  // like the code down
procedure TMainForm.FormCreate(Sender: TObject);
begin`enter code here`
  NewLine := #10;
 {Next Code To show NewLine In action}
  //ShowMessage('Hello to programming with Delphi' + NewLine + 'Print New Lin now !!!!');
end;

Formatee su código y agregue una descripción de cómo esto resuelve el problema.
Blastfurnace
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.