Bagaimana cara menyertakan karakter baris baru dalam string di Delphi?


97

Saya ingin membuat string yang mencakup beberapa baris untuk ditetapkan ke properti Label Caption. Bagaimana ini dilakukan di Delphi?

Jawaban:


174

Di System.pas (yang secara otomatis digunakan), berikut ini didefinisikan:

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

Ini dari Delphi 2009 (perhatikan penggunaan AnsiChar dan AnsiString). (Garis bungkus ditambahkan oleh saya.)

Jadi jika Anda ingin membuat bungkus TLabel Anda, pastikan AutoSize disetel ke true, lalu gunakan kode berikut:

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

Bekerja di semua versi Delphi sejak sLineBreak diperkenalkan, yang saya yakini adalah Delphi 6.


33

Inilah pendekatan yang lebih pendek:

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

15

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

#13#10 adalah karakter CR / LF dalam desimal


8

Atau Anda juga dapat menggunakan pintasan ^ M + ^ J. Semua masalah preferensi. kode "CTRL-CHAR" diterjemahkan oleh kompiler.

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

Anda dapat menghilangkan + di antara ^ M dan ^ J, tetapi kemudian Anda akan mendapatkan peringatan dari kompilator (tetapi masih akan dikompilasi dengan baik).


7

Di sampingnya, trik yang bisa berguna:
Jika Anda menahan beberapa string dalam TString, Anda hanya perlu menggunakan properti Teks TString seperti pada contoh berikut.

Label1.Caption := Memo1.Lines.Text;

Dan Anda akan mendapatkan label multi-baris ...


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

Saya tidak memiliki salinan Delphi, tapi saya cukup yakin jika Anda menyetel properti wordwrap ke true dan properti autosize ke false itu harus membungkus teks apa pun yang Anda taruh pada ukuran yang Anda buat labelnya. Jika Anda ingin mengganti baris di tempat tertentu maka itu mungkin berhasil jika Anda mengatur pengaturan di atas dan menempelkannya dari editor teks .

Semoga ini membantu.


-2

Terkadang saya tidak ingin mengacaukan ruang kode saya, terutama untuk label statis. Untuk menentukannya dengan formulir, masukkan teks label pada formulir, lalu klik kanan di mana saja pada formulir yang sama. Pilih "Lihat sebagai Teks". Anda sekarang akan melihat semua objek seperti yang dirancang, tetapi hanya sebagai teks. Gulir ke bawah atau cari teks Anda. Saat Anda menemukannya, edit teksnya, sehingga terlihat seperti:

Keterangan = 'Baris 1' # 13' Baris 2 '# 13' Baris 3'

# 13 berarti ordinal 13, atau ascii untuk kereta kembali. Chr (13) adalah ide yang sama, CHR () mengubah angka menjadi tipe ordinal.

Perhatikan bahwa tidak ada titik koma di segi Delphi tertentu ini, dan "=" digunakan daripada ": =". Teks untuk setiap baris diapit tanda kutip tunggal.

Setelah Anda selesai, klik kanan sekali lagi dan pilih "Lihat sebagai Formulir". Anda sekarang dapat melakukan pemformatan apa pun seperti tebal, rata kanan kiri, dll. Anda tidak dapat mengedit ulang teks pada formulir atau Anda akan kehilangan jeda baris.

Saya juga menggunakan "Lihat sebagai Teks" untuk beberapa perubahan di mana saya hanya ingin menggulir dan melakukan penggantian, dll. Cepat.

Dave


Jawaban yang diterima langsung ke intinya, seperti pertanyaannya. Jawaban ini, sebaliknya, menambahkan lebih dari yang diminta; lebih buruk lagi: dengan cara yang tidak begitu jelas.
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;

Harap format kode Anda dan tambahkan beberapa deskripsi tentang bagaimana ini menyelesaikan masalah.
Blastfurnace
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.