ฉันต้องการสร้างสตริงที่ครอบคลุมหลายบรรทัดเพื่อกำหนดให้กับคุณสมบัติ Label Caption สิ่งนี้ทำได้อย่างไรใน Delphi?
ฉันต้องการสร้างสตริงที่ครอบคลุมหลายบรรทัดเพื่อกำหนดให้กับคุณสมบัติ Label Caption สิ่งนี้ทำได้อย่างไรใน Delphi?
คำตอบ:
ใน System.pas (ซึ่งจะถูกใช้โดยอัตโนมัติ) มีการกำหนดสิ่งต่อไปนี้:
const
sLineBreak = {$IFDEF LINUX} AnsiChar(#10) {$ENDIF}
{$IFDEF MSWINDOWS} AnsiString(#13#10) {$ENDIF};
มาจาก Delphi 2009 (โปรดสังเกตการใช้ AnsiChar และ AnsiString) (เพิ่มบรรทัดโดยฉัน)
ดังนั้นหากคุณต้องการตัด TLabel ของคุณตรวจสอบให้แน่ใจว่าได้ตั้งค่าขนาดอัตโนมัติเป็นจริงจากนั้นใช้รหัสต่อไปนี้:
label1.Caption := 'Line one'+sLineBreak+'Line two';
ใช้งานได้กับ Delphi ทุกเวอร์ชันตั้งแต่เปิดตัว sLineBreak ซึ่งฉันเชื่อว่า Delphi 6
นี่เป็นแนวทางที่สั้นกว่า:
my_string := 'Hello,'#13#10' world!';
my_string := 'Hello,' + #13#10 + 'world!';
#13#10
คืออักขระ CR / LF ในทศนิยม
ด้านข้างเคล็ดลับที่มีประโยชน์:
หากคุณถือหลาย ๆ สตริงใน TStrings คุณก็ต้องใช้คุณสมบัติ Text ของ TStrings ดังตัวอย่างต่อไปนี้
Label1.Caption := Memo1.Lines.Text;
และคุณจะได้รับฉลากหลายบรรทัด ...
หรือคุณสามารถใช้ทางลัด ^ M + ^ J ก็ได้เช่นกัน ทั้งหมดเป็นเรื่องของความชอบ โค้ด "CTRL-CHAR" ถูกแปลโดยคอมไพเลอร์
MyString := 'Hello,' + ^M + ^J + 'world!';
คุณสามารถนำ + ออกไประหว่าง ^ M และ ^ J ได้ แต่จากนั้นคอมไพเลอร์จะได้รับคำเตือน (แต่คอมไพเลอร์จะยังคงคอมไพล์ได้ดี)
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;
วิธีที่ไม่เชื่อเรื่องพระเจ้าของ Plattform คือ "sLineBreak": http://www.freepascal.org/docs-html/rtl/system/slinebreak.html
เขียน ('Hello' + sLineBreak + 'World!');
ShowMessage('Hello'+Chr(10)+'World');
ฉันไม่มีสำเนาของ Delphi อยู่ในมือ แต่ฉันค่อนข้างมั่นใจถ้าคุณตั้งค่าคุณสมบัติ wordwrap เป็น true และคุณสมบัติ autosize เป็น false ควรตัดข้อความใด ๆ ที่คุณใส่ตามขนาดที่คุณสร้างป้ายกำกับ หากคุณต้องการที่จะแบ่งบรรทัดในสถานที่หนึ่งแล้วมันอาจจะทำงานถ้าคุณตั้งค่าดังกล่าวข้างต้นและวางจากโปรแกรมแก้ไขข้อความ
หวังว่านี่จะช่วยได้
บางครั้งฉันไม่ต้องการทำให้พื้นที่โค้ดของฉันรกโดยเฉพาะอย่างยิ่งสำหรับฉลากแบบคงที่ หากต้องการกำหนดด้วยแบบฟอร์มให้ป้อนข้อความป้ายกำกับในแบบฟอร์มจากนั้นคลิกขวาที่ใดก็ได้ในแบบฟอร์มเดียวกัน เลือก "ดูเป็นข้อความ" ตอนนี้คุณจะเห็นวัตถุทั้งหมดตามที่ออกแบบไว้ แต่เป็นข้อความเท่านั้น เลื่อนลงหรือค้นหาข้อความของคุณ เมื่อคุณพบแล้วให้แก้ไขคำบรรยายภาพเพื่อให้ดูเหมือนว่า:
คำบรรยาย = 'บรรทัด 1' # 13' บรรทัด 2 '# 13' บรรทัด 3'
# 13 หมายถึงลำดับ 13 หรือ ascii สำหรับการกลับรถ Chr (13) เป็นแนวคิดเดียวกัน CHR () เปลี่ยนตัวเลขเป็นประเภทลำดับ
โปรดทราบว่าไม่มีเครื่องหมายอัฒภาคในด้านนี้ของ Delphi โดยเฉพาะและใช้ "=" แทน ": =" ข้อความสำหรับแต่ละบรรทัดอยู่ในเครื่องหมายคำพูดเดี่ยว
เมื่อเสร็จแล้วให้คลิกขวาอีกครั้งแล้วเลือก "View as Form" ขณะนี้คุณสามารถจัดรูปแบบใด ๆ เช่นตัวหนาจัดชิดขวา ฯลฯ คุณไม่สามารถแก้ไขข้อความในแบบฟอร์มซ้ำได้ไม่เช่นนั้นคุณจะสูญเสียตัวแบ่งบรรทัด
ฉันยังใช้ "ดูเป็นข้อความ" สำหรับการเปลี่ยนแปลงหลาย ๆ อย่างที่ฉันแค่ต้องการเลื่อนดูและทำการเปลี่ยน ฯลฯ อย่างรวดเร็ว
เดฟ
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;