[delphi] Delphi에서 문자열에 개행 문자를 어떻게 포함합니까?

레이블 캡션 속성에 할당하기 위해 여러 줄에 걸쳐있는 문자열을 만들고 싶습니다. 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!’);