Frage

Ich möchte eine Zeichenfolge erstellen, die mehrere Zeilen umfasst, die einer Beschriftungsbeschreibung zugewiesen werden. Wie wird das in Delphi gemacht?

War es hilfreich?

Lösung

Im System.pas (das automatisch verwendet wird) wird die folgende definiert:

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

Dies ist von Delphi 2009 (Beachten Sie die Verwendung von Ansichar und Ansistring). (Zeilenwrap hinzugefügt von mir.)

Wenn Sie also Ihre TLABEL -Wrap durchführen möchten, stellen Sie sicher, dass autosize auf true eingestellt ist, und verwenden Sie dann den folgenden Code:

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

Arbeiten in allen Versionen von Delphi seit Einführung von SLINEBREAK, von denen ich glaube, dass sie Delphi 6 war.

Andere Tipps

Hier ist ein noch kürzerer Ansatz:

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

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

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

Oder Sie können auch die Shortcut ^m+ ^j verwenden. Alles eine Frage der Präferenz. Die "Strg-CharCor" -Codes werden vom Compiler übersetzt.

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

Sie können das + zwischen ^m und ^j wegnehmen, aber dann werden Sie eine Warnung des Compilers erhalten (aber es wird immer noch gut kompilieren).

Nebenbei kann ein Trick nützlich sein:
Wenn Sie Ihre mehrere Zeichenfolgen in einem TStrings halten, müssen Sie nur die Texteigenschaft der TStrings wie im folgenden Beispiel verwenden.

Label1.Caption := Memo1.Lines.Text;

Und Sie erhalten Ihr Multi-Line-Etikett ...

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;

Der agnostische Weg der Plattform wäre "Slinebreak":http://www.freepascal.org/docs-html/rtl/system/slineebreak.html

Schreiben Sie ('Hallo' + SLINEBREAK + 'Welt!');

ShowMessage('Hello'+Chr(10)+'World');

Ich habe keine Kopie von Delphi, aber ich bin mir ziemlich sicher, wenn Sie die WordWrap -Eigenschaft auf True und die automatische Eigenschaft festlegen, um den Text zu verpacken, den Sie mit der Größe, die Sie erstellen, das Etikett erstellen. Wenn Sie dann an einem bestimmten Ort Bruch einlegen möchten, dann dann Es kann funktionieren, wenn Sie die oben genannten Einstellungen festlegen und aus einem Texteditor einfügen.

Hoffe das hilft.

Manchmal möchte ich meinen Coderaum nicht überladen, besonders für ein statisches Etikett. Um es einfach mit dem Formular definieren zu lassen, geben Sie den Labeltext in das Formular ein und klicken Sie dann mit der rechten Maustaste auf demselben Formular. Wählen Sie "Ansicht als Text". Sie werden jetzt alle Objekte als entworfen ansehen, aber nur als Text. Scrollen Sie nach unten oder suchen Sie nach Ihrem Text. Wenn Sie es finden, bearbeiten Sie die Bildunterschrift, so dass es so aussieht wie:

Caption = 'Zeile 1'#13'line 2 '#13'line 3'

#13 bedeutet eine Ordinal 13 oder ASCII für die Kutschenrendite. CHR (13) ist die gleiche Idee, CHR () ändert die Zahl in einen Ordnungstyp.

Beachten Sie, dass es in dieser speziellen Facette von Delphi keine Semikolon gibt, und "=" wird eher verwendet als ": =". Der Text für jede Zeile ist in einzelnen Zitaten eingeschlossen.

Sobald Sie fertig sind, klicken Sie erneut mit der rechten Maustaste und wählen Sie "Ansicht als Form". Sie können jetzt jede Formatierung wie mutig, richtig gerechtfertigt usw. erledigen.

Ich verwende auch "Ansicht als Text" für mehrere Änderungen, bei denen ich nur durchsuchen und Ersatz usw. durchführen möchte.

Dave

 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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top