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


97

레이블 캡션 속성에 할당하기 위해 여러 줄에 걸쳐있는 문자열을 만들고 싶습니다. Delphi에서 어떻게 수행됩니까?

답변:


174

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의 모든 버전에서 작동합니다.


33

다음은 더 짧은 접근 방식입니다.

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

15

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

#13#10 십진수의 CR / LF 문자입니다.


8

또는 ^ M + ^ J 단축키를 사용할 수도 있습니다. 모두 선호도의 문제입니다. "CTRL-CHAR"코드는 컴파일러에 의해 번역됩니다.

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

^ M과 ^ J 사이에서 +를 제거 할 수 있지만 컴파일러에서 경고를 받게됩니다 (하지만 여전히 잘 컴파일됩니다).


7

측면에서 유용한 트릭이 있습니다
. TStrings에 여러 문자열을 보유하고 있다면 다음 예제와 같이 TStrings의 Text 속성을 사용해야합니다.

Label1.Caption := Memo1.Lines.Text;

그리고 여러 줄 레이블을 얻을 수 있습니다.


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

필자는 Delphi의 복사본을 가지고 있지 않지만 wordwrap 속성을 true로 설정하고 autosize 속성을 false로 설정하면 레이블을 만든 크기로 텍스트를 래핑해야합니다. 특정 위치에서 줄 바꿈을 원할 경우 위의 설정을 설정하고 텍스트 편집기에서 붙여 넣으면 작동 할 수 있습니다. .

도움이 되었기를 바랍니다.


-2

때로는 특히 정적 레이블의 경우 코드 공간을 복잡하게 만들고 싶지 않습니다. 양식으로 정의하려면 양식에 레이블 텍스트를 입력 한 다음 동일한 양식의 아무 곳이나 마우스 오른쪽 버튼으로 클릭합니다. "텍스트로보기"를 선택합니다. 이제 모든 개체가 설계된대로 표시되지만 텍스트로만 표시됩니다. 아래로 스크롤하거나 텍스트를 검색합니다. 찾으면 캡션을 편집하여 다음과 같이 보이도록합니다.

캡션 = '라인 1'# 13 '라인 2'# 13 '라인 3'

# 13은 서수 13 또는 캐리지 리턴의 ASCII를 의미합니다. Chr (13)은 같은 아이디어이고 CHR ()은 숫자를 서수 유형으로 변경합니다.

Delphi의이 특정 측면에는 세미콜론이 없으며 ": ="대신 "="가 사용됩니다. 각 줄의 텍스트는 작은 따옴표로 묶여 있습니다.

완료되면 다시 한 번 마우스 오른쪽 버튼을 클릭하고 "View as Form"을 선택합니다. 이제 굵게, 오른쪽 맞춤 등과 같은 서식을 지정할 수 있습니다. 양식의 텍스트를 다시 편집 할 수 없거나 줄 바꿈이 손실됩니다.

나는 또한 스크롤하고 교체 등을 수행하려는 여러 변경 사항에 "텍스트로보기"를 사용합니다.

데이브


받아 들여지는 대답은 질문과 마찬가지로 요점에 직접적입니다. 반대로이 답변은 요청 된 것보다 더 많은 것을 추가합니다. 더 나쁜 것은 분명하지 않은 방식입니다.
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;

코드의 형식을 지정하고 이것이 문제를 해결하는 방법에 대한 설명을 추가하십시오.
Blastfurnace
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.