2008-10-31 15 views

Respuesta

141

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

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

Esto es de Delphi 2009 (nótese el uso de AnsiChar y AnsiString). (Ajuste de línea añadido por mí.)

Así que si usted desea hacer su envoltura TLabel, asegúrese de AutoSize se establece en true, y luego usar el siguiente código:

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

Obras en todas las versiones de Delphi desde que se introdujo sLineBreak, que creo que era Delphi 6.

+10

¡Gracias por eso! Siempre he usado # 13 # 10. –

+1

¡Guau, eso es mucho mejor de lo que esperaba! – Brendan

12

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

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

+0

Y aún funciona para el año 2009 (Unicode). –

28

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

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

no crossplatform :) – naXa

7

En el lado, un truco que puede ser útil:
Si mantenga sus múltiples cadenas en una TStrings, solo tiene que usar la propiedad Text de las TStrings como en el siguiente ejemplo.

Label1.Caption := Memo1.Lines.Text; 

Y obtendrá su etiqueta de varias líneas ...

8

O puede utilizar el^M + J^acceso directo también. Todo es una cuestión de preferencia. los códigos "CTRL-CHAR" son traducidos por el compilador.

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

Puede tomar la distancia entre el +^M y J ^, pero por lo que recibirá una advertencia por el compilador (pero todavía se compilará bien).

0

No tengo una copia de Delphi a mano, pero estoy bastante seguro de que si configura la propiedad wordwrap en true y la propiedad autosize en false, debe envolver cualquier texto que pones en el tamaño que hace la etiqueta. Si desea dividir la línea en un lugar determinado, entonces podría funcionar si establece las configuraciones anteriores y las pega desde un editor de texto.

Espero que esto ayude.

1
ShowMessage('Hello'+Chr(10)+'World'); 
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; 
-2

A veces no quiero saturar mi espacio de código, especialmente para una etiqueta estática. Para simplemente definirlo con el formulario, ingrese el texto de la etiqueta en el formulario, luego haga clic con el botón secundario en cualquier lugar del mismo formulario. Elija "Ver como texto". Ahora verá todos los objetos como diseñados, pero solo como texto. Desplácese hacia abajo o busque su texto.Cuando lo encuentre, editar el título, por lo que se ve algo como:

Caption = 'Línea 1' # 13'Line 2 '# 13'Line 3'

# 13 significa un ordinal 13, o ASCII para el retorno del 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 está entre comillas simples.

Una vez que haya terminado, haga clic una vez más y seleccione "Ver como formulario". Ahora puede hacer cualquier formateo como negrita, justificación derecha, etc. Simplemente no puede volver a editar el texto en el formulario o perderá los saltos de línea.

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

de Dave

+0

La respuesta aceptada es directa al grano, al igual que la pregunta es. 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; 
+0

Formatee su código y agregue alguna descripción de cómo esto resuelve el problema. – Blastfurnace

Cuestiones relacionadas