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 Nhãn phụ đề. Làm thế nào là điều này được thực hiện trong Delphi?Làm cách nào để bao gồm ký tự dòng mới trong chuỗi trong Delphi?
Trả lời
Trong System.pas (mà sẽ tự động được sử dụng) sau được xác định:
const
sLineBreak = {$IFDEF LINUX} AnsiChar(#10) {$ENDIF}
{$IFDEF MSWINDOWS} AnsiString(#13#10) {$ENDIF};
Đây là từ Delphi 2009 (chú ý việc sử dụng AnsiChar và AnsiString). (Tuyến bọc thêm bởi tôi.)
Vì vậy, nếu bạn muốn chắc bọc TLabel của bạn, hãy chắc chắn AutoSize được thiết lập là true, và sau đó sử dụng đoạn mã sau:
label1.Caption := 'Line one'+sLineBreak+'Line two';
trình 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 là Delphi 6.
my_string := 'Hello,' + #13#10 + 'world!';
#13#10
là ký tự CR/LF trong hệ thập phân
Và nó vẫn hoạt động cho năm 2009 (Unicode). –
Dưới đây là một cách tiếp cận thậm chí ngắn hơn:
my_string := 'Hello,'#13#10' world!';
không crossplatform :) – naXa
ở 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 bạn 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 đa dòng của bạn ...
Hoặc bạn có thể sử dụng^M +^J phím tắt cũng có. Tất cả vấn đề ưu tiên. mã "CTRL-CHAR" được dịch bởi trình biên dịch.
MyString := 'Hello,' + ^M + ^J + 'world!';
Bạn có thể lấy dấu + đi giữa^M và^J, nhưng sau đó bạn sẽ nhận được cảnh báo của trình biên dịch (nhưng nó vẫn sẽ biên dịch tiền phạt).
Tôi không có bản sao Delphi để bàn tay, 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 thì nên bọc bất kỳ văn bản bạn đặt ở kích thước bạn tạo nhãn. Nếu bạn muốn ngắt dòng ở một nơi nhất định thì nó có thể hoạt động nếu bạn đặt cài đặt ở trên và dán từ trình chỉnh sửa văn bản.
Hy vọng điều này sẽ hữu ích.
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;
Các plattform cách thuyết bất khả tri sẽ là 'sLineBreak': http://www.freepascal.org/docs-html/rtl/system/slinebreak.html
Write ('Hello' + sLineBreak + '! Thế giới');
Thỉnh thoảng 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 nhãn tĩnh. Để chỉ định 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 cùng một biểu mẫu. 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ỉ là 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ó, chỉnh sửa chú thích, vì vậy nó trông giống như sau:
Caption = 'Line 1' # 13'Line 2 '# 13'Line 3'
# 13 có nghĩa là một thứ tự 13, hoặc ascii cho vận chuyển trở lại. Chr (13) là cùng một ý tưởng, CHR() thay đổi số thành một loại thứ tự.
Lưu ý rằng không có dấu chấm phẩy trong khía cạnh cụ thể này của Delphi và "=" được sử dụng thay vì ": =". Các văn bản cho mỗi dòng được kèm theo trong dấu nháy đơn.
Khi bạn đã hoàn tất, hãy nhấp chuột phải một lần nữa và chọn "Xem dưới dạng biểu mẫu". Giờ đây, bạn có thể thực hiện bất kỳ định dạng nào như in đậm, đúng đắn, 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 các 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.
Dave
Câu trả lời được chấp nhận là trực tiếp đến điểm, giống như câu hỏi. Câu trả lời này, ngược lại, thêm nhiều hơn là được hỏi; tồi tệ hơn: theo một cách không rõ ràng. – 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;
Vui lòng định dạng mã của bạn và thêm một số mô tả về cách giải quyết vấn đề này. – Blastfurnace
Cảm ơn vì điều đó! Tôi đã luôn luôn sử dụng # 13 # 10. –
Chà, điều đó tốt hơn rất nhiều so với những gì tôi đã hy vọng! – Brendan