Saya ingin membuat string yang mencakup beberapa baris untuk ditetapkan ke properti Label Caption. Bagaimana ini dilakukan di Delphi?
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.
my_string := 'Hello,' + #13#10 + 'world!';
#13#10
adalah karakter CR / LF dalam desimal
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).
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 ...
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;
Cara agnostik plattform adalah 'sLineBreak': http://www.freepascal.org/docs-html/rtl/system/slinebreak.html
Write ('Hello' + sLineBreak + 'World!');
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.
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
sumber