2008-10-31 8 views

Antwort

141

In dem System.pas folgenden (das wird automatisch verwendet) definiert:

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

Die von Delphi ist 2009 (beachten Sie die Verwendung von AnsiChar und Ansistring). (Zeilenumbruch von mir hinzugefügt.)

Also, wenn Sie Ihre TLabel Wrap machen wollen, stellen Sie sicher, Autosize auf true gesetzt ist, und verwenden Sie dann den folgenden Code:

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

Arbeiten in allen Versionen von Delphi Seit sLineBreak eingeführt wurde, was ich glaube, war Delphi 6.

+10

Danke dafür! Ich habe immer # 13 # 10 benutzt. –

+1

Wow, das ist viel besser als ich mir erhofft hatte! – Brendan

12

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

#13#10 sind die CR/LF-Zeichen in Dezimal

+0

Und es funktioniert immer noch für das Jahr 2009 (Unicode). –

28

Hier ist ein noch kürzerer Ansatz:

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

nicht crossplatform :) – naXa

7

Auf der Seite, ein Trick, der nützlich sein kann:
Wenn Sie Halten Sie Ihre mehreren Strings in einem TStrings, müssen Sie nur die Text-Eigenschaft der TStrings wie im folgenden Beispiel verwenden.

Label1.Caption := Memo1.Lines.Text; 

Und Sie werden Ihre mehrzeiligen Etikett ...

8

Oder Sie können die^M +^J Abkürzung auch verwenden bekommen. Alles eine Frage der Vorliebe. Die "CTRL-CHAR" -Codes werden vom Compiler übersetzt.

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

Sie können die + wegzunehmen die zwischen^M und^J, aber dann wird eine Warnung vom Compiler bekommen (aber es wird weiterhin übersetzt).

0

Ich habe keine Kopie von Delphi zur Hand, aber ich bin ziemlich sicher, wenn Sie die wordwrap -Eigenschaft auf true und die Autosize-Eigenschaft auf false setzen sollte es wickeln Text Sie legen es auf die Größe, die Sie das Etikett machen. Wenn Sie einen Zeilenumbruch an einer bestimmten Stelle vornehmen möchten, dann funktioniert es möglicherweise , wenn Sie die obigen Einstellungen festlegen und aus einem Texteditor einfügen.

Hoffe, das hilft.

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

Manchmal möchte ich meinen Coderaum nicht überladen, besonders für ein statisches Etikett. Um es nur mit dem Formular zu definieren, geben Sie den Beschriftungstext in das Formular ein und klicken Sie mit der rechten Maustaste auf eine beliebige Stelle im selben Formular. Wählen Sie "Als Text anzeigen". Sie sehen nun alle Objekte wie vorgesehen, aber nur als Text. Scrollen Sie nach unten oder suchen Sie nach Ihrem Text.Wenn Sie es finden, bearbeiten Sie die Beschriftung, so sieht es so etwas wie:

Caption = 'Linie 1' # 13'Line 2 '# 13'Line 3'

13 # bedeutet eine Ordnungs 13 oder ascii für den Wagenrücklauf. Chr (13) ist die gleiche Idee, CHR() ändert die Zahl in einen Ordinaltyp.

Beachten Sie, dass in dieser speziellen Facette von Delphi kein Semikolon vorhanden ist und "=" anstelle von ": =" verwendet wird. Der Text für jede Zeile ist in einfache Anführungszeichen eingeschlossen.

Sobald Sie fertig sind, klicken Sie erneut mit der rechten Maustaste und wählen Sie "Als Formular anzeigen". Sie können nun beliebige Formatierungen wie fett, rechtsbündig usw. vornehmen. Sie können den Text im Formular einfach nicht mehr bearbeiten, da sonst die Zeilenumbrüche verloren gehen.

Ich benutze auch "Ansicht als Text" für mehrere Änderungen, wo ich nur scrollen und Ersatz tun, etc. schnell.

Dave

+0

Die akzeptierte Antwort ist direkt auf den Punkt, genau wie die Frage ist. Diese Antwort fügt im Gegenteil mehr hinzu, als gefragt wurde; schlimmer noch: auf nicht so klare Weise. – 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

Bitte formatieren Sie Ihren Code und fügen Sie eine Beschreibung hinzu, wie dies das Problem löst. – Blastfurnace

Verwandte Themen