Ich möchte eine Zeichenfolge erstellen, die sich über mehrere Zeilen erstreckt, um sie einer Label Caption-Eigenschaft zuzuordnen. Wie wird das in Delphi gemacht?Wie lege ich in Delphi ein Newline-Zeichen in eine Zeichenfolge ein?
Antwort
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.
my_string := 'Hello,' + #13#10 + 'world!';
#13#10
sind die CR/LF-Zeichen in Dezimal
Und es funktioniert immer noch für das Jahr 2009 (Unicode). –
Hier ist ein noch kürzerer Ansatz:
my_string := 'Hello,'#13#10' world!';
nicht crossplatform :) – naXa
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 ...
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).
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.
ShowMessage('Hello'+Chr(10)+'World');
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;
Die Plattform Agnostiker Weise wäre 'sLineBreak': http://www.freepascal.org/docs-html/rtl/system/slinebreak.html
Write ('Hallo' + sLineBreak + '! Welt');
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
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
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;
Bitte formatieren Sie Ihren Code und fügen Sie eine Beschreibung hinzu, wie dies das Problem löst. – Blastfurnace
- 1. Wie lege ich ein PDF in Xcode?
- 2. Wie lege ich eine 'if-Klausel' in eine SQL-Zeichenfolge?
- 3. Wie lege ich eine Schriftart in meine iPhone-Anwendung ein?
- 4. Wie füge ich eine Zeichenfolge in eine andere Zeichenfolge ein?
- 5. Wie lege ich ein xml in die CouchDB?
- 6. Wie verwende ich ein Kontrollkästchen in Delphi?
- 7. Wie lege ich mehrere Boxplots in ein Diagramm in R?
- 8. Ich lege ein Weka-Modell in einen Java-Code ein
- 9. Wie man eine Zeichenfolge in Delphi leert
- 10. Wie lege ich ein Fragezeichen über \ leq?
- 11. Wie lege ich ein Label nach f.text_field?
- 12. Wie lege ich ein Google-Suchergebnisfenster fest?
- 13. Wie lege ich Daten in eine Masterpage?
- 14. Wie lege ich einen Rahmen um ein Bild in WPF?
- 15. Wie lege ich ein HTML-Klassenattribut in Markdown fest?
- 16. Tomcat6 -> Wie lege ich ein Projekt in den Stammordner?
- 17. Wie lege ich Google Apps Script-Ergebnisse in HTML ein?
- 18. Wie lege ich ein Hintergrundbild für eine gruppierte Tabellenansicht fest?
- 19. Wie lege ich ein Feld fest, das durch eine Zeichenfolge benannt wird?
- 20. Wie lege ich Dateien in den TFS-Build-Ablageort ein
- 21. Wie lege ich Bilder in ein EditText-Feld?
- 22. Matlab: Wie lege ich Elemente in einem Array wieder ein?
- 23. Wie lege ich ein Click-Ereignis für ein Formular fest?
- 24. Wie lege ich ein Bild unter ein anderes?
- 25. Wie lege ich ein benutzerdefiniertes Symbol für ein statisches UIApplicationShortcutItem in meiner iOS 9 App fest?
- 26. Wie füge ich eine Zeichenfolge ein, die ein "&" enthält
- 27. Wie analysiere ich eine Textdatei in Wörterbuchform und lege sie in ein Wörterbuch in Python?
- 28. Wie lade ich eine XML formatierte Zeichenfolge in ein XElement
- 29. Wie konvertiere ich ein einzelnes Zeichen in eine Zeichenfolge?
- 30. Wie konvertiere ich eine JTextField-Zeichenfolge in ein Double?
Danke dafür! Ich habe immer # 13 # 10 benutzt. –
Wow, das ist viel besser als ich mir erhofft hatte! – Brendan