Làm cách nào để đưa một ký tự dòng mới vào một chuỗi trong Delphi?


97

Tôi muốn tạo một chuỗi kéo dài nhiều dòng để gán cho thuộc tính Phụ đề nhãn. Làm thế nào điều này được thực hiện trong Delphi?

Câu trả lời:


174

Trong System.pas (tự động được sử dụng), điều sau được xác định:

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

Đây là từ Delphi 2009 (lưu ý việc sử dụng AnsiChar và AnsiString). (Dòng bọc do tôi thêm vào.)

Vì vậy, nếu bạn muốn tạo TLabel, hãy đảm bảo AutoSize được đặt thành true, sau đó sử dụng mã sau:

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

Hoạt động trong tất cả các phiên bản của Delphi kể từ khi sLineBreak được giới thiệu, mà tôi tin rằng đó là Delphi 6.


33

Đây là một cách tiếp cận ngắn hơn:

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

15

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

#13#10 là các ký tự CR / LF ở dạng thập phân


8

Hoặc bạn cũng có thể sử dụng phím tắt ^ M + ^ J. Tất cả đều là vấn đề sở thích. mã "CTRL-CHAR" được dịch bởi trình biên dịch.

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

Bạn có thể bỏ dấu + giữa ^ M và ^ J, nhưng sau đó bạn sẽ nhận được cảnh báo bởi trình biên dịch (nhưng nó vẫn sẽ biên dịch tốt).


7

Bên cạnh đó, một thủ thuật có thể hữu ích:
Nếu bạn giữ nhiều chuỗi của mình trong một TStrings, bạn chỉ cần sử dụng thuộc tính Text của TStrings như trong ví dụ sau.

Label1.Caption := Memo1.Lines.Text;

Và bạn sẽ nhận được nhãn nhiều dòng của mình ...


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

Tôi không có bản sao của Delphi để giao, nhưng tôi khá chắc chắn nếu bạn đặt thuộc tính wordwrap thành true và thuộc tính autosize thành false, nó sẽ bao bọc bất kỳ văn bản nào bạn đặt nó ở kích thước bạn tạo nhãn. Nếu bạn muốn ngắt dòng ở một vị trí nhất định thì nó có thể hoạt động nếu bạn đặt các cài đặt trên và dán từ trình soạn thảo văn bản .

Hi vọng điêu nay co ich.


-2

Đôi khi tôi không muốn làm lộn xộn không gian mã của mình, đặc biệt là đối với một nhãn tĩnh. Để chỉ định nghĩa nó với biểu mẫu, hãy nhập văn bản nhãn trên biểu mẫu, sau đó nhấp chuột phải vào bất kỳ đâu trên biểu mẫu tương tự. Chọn "Xem dưới dạng Văn bản". Bây giờ bạn sẽ thấy tất cả các đối tượng như được thiết kế, nhưng chỉ ở dạng văn bản. Cuộn xuống hoặc tìm kiếm văn bản của bạn. Khi bạn tìm thấy nó, hãy chỉnh sửa chú thích để nó trông giống như sau:

Caption = 'Dòng 1' # 13 'Dòng 2' # 13' Dòng 3 '

# 13 có nghĩa là số 13 thứ tự, hoặc ascii cho dấu xuống dòng. Chr (13) là cùng một ý tưởng, CHR () thay đổi số thành kiểu thứ tự.

Lưu ý rằng không có dấu chấm phẩy nào trong khía cạnh cụ thể này của Delphi và "=" được sử dụng thay vì ": =". Văn bản cho mỗi dòng được đặt trong dấu ngoặc kép.

Khi bạn đã hoàn tất, nhấp chuột phải một lần nữa và chọn "Xem dưới dạng biểu mẫu". Bây giờ bạn có thể thực hiện bất kỳ định dạng nào như in đậm, căn phải, v.v. Bạn không thể chỉnh sửa lại văn bản trên biểu mẫu hoặc bạn sẽ mất ngắt dòng.

Tôi cũng sử dụng "Xem dưới dạng Văn bản" cho nhiều thay đổi mà tôi chỉ muốn cuộn qua và thực hiện thay thế, v.v. Nhanh chóng.

Dave


Câu trả lời được chấp nhận là trực tiếp vào vấn đề, giống như câu hỏi. Ngược lại, câu trả lời này bổ sung nhiều hơn những gì được hỏi; tệ hơn nữa: theo một cách không quá rõ ràng.
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;

Vui lòng định dạng mã của bạn và thêm một số mô tả về cách điều này giải quyết vấn đề.
Blastfurnace,
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.