레이블 캡션 속성에 할당하기 위해 여러 줄에 걸쳐있는 문자열을 만들고 싶습니다. Delphi에서 어떻게 수행됩니까?
답변
System.pas (자동으로 사용됨)에는 다음이 정의되어 있습니다.
const
sLineBreak = {$IFDEF LINUX} AnsiChar(#10) {$ENDIF}
{$IFDEF MSWINDOWS} AnsiString(#13#10) {$ENDIF};
이것은 Delphi 2009에서 가져온 것입니다 (AnsiChar 및 AnsiString 사용에주의). (내가 줄 바꿈 추가.)
따라서 TLabel 랩핑을 만들려면 AutoSize가 true로 설정되어 있는지 확인한 후 다음 코드를 사용하십시오.
label1.Caption := 'Line one'+sLineBreak+'Line two';
sLineBreak가 도입 된 이후 Delphi 6의 모든 버전에서 작동합니다.
답변
다음은 더 짧은 접근 방식입니다.
my_string := 'Hello,'#13#10' world!';
답변
my_string := 'Hello,' + #13#10 + 'world!';
#13#10
십진수의 CR / LF 문자입니다.
답변
또는 ^ M + ^ J 단축키를 사용할 수도 있습니다. 모두 선호도의 문제입니다. “CTRL-CHAR”코드는 컴파일러에 의해 번역됩니다.
MyString := 'Hello,' + ^M + ^J + 'world!';
^ M과 ^ J 사이에서 +를 제거 할 수 있지만 컴파일러에서 경고를 받게됩니다 (하지만 여전히 잘 컴파일됩니다).
답변
측면에서 유용한 트릭이 있습니다
. TStrings에 여러 문자열을 보유하고 있다면 다음 예제와 같이 TStrings의 Text 속성을 사용해야합니다.
Label1.Caption := Memo1.Lines.Text;
그리고 여러 줄 레이블을 얻을 수 있습니다.
답변
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
Write ( ‘Hello’+ sLineBreak + ‘World!’);