문제

레이블 캡션 속성에 할당하기 위해 여러 줄에 걸쳐 있는 문자열을 만들고 싶습니다.델파이에서는 이것이 어떻게 이루어지나요?

도움이 되었습니까?

해결책

System.pas (자동으로 사용되는)에서 다음은 정의됩니다.

const
  sLineBreak = {$IFDEF LINUX} AnsiChar(#10) {$ENDIF} 
               {$IFDEF MSWINDOWS} AnsiString(#13#10) {$ENDIF};

이것은 Delphi 2009에서 나온 것입니다 (Ansichar 및 Ansistring의 사용에주의하십시오). (나에 의해 추가 된 라인 랩.)

따라서 tlabel 랩을 만들려면 자동 크기가 true로 설정된 다음 다음 코드를 사용하십시오.

label1.Caption := 'Line one'+sLineBreak+'Line two';

Slinebreak가 소개 된 이후 모든 버전의 Delphi에서 작업하는데, 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 Agnostic 방식은 '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'line 2 '#13'line 3'

#13은 캐리지 리턴에 대한 서수 13 또는 ASCII를 의미합니다. chr (13)은 동일한 아이디어입니다. chr ()는 숫자를 서수 유형으로 변경합니다.

델파이 의이 특정면에는 세미콜론이 없으며 "="는 ": ="보다는 사용됩니다. 각 라인의 텍스트는 단일 따옴표로 동봉됩니다.

완료되면 다시 마우스 오른쪽 버튼을 클릭하고 "양식으로보기"를 선택하십시오. 이제 Bold, Right 정당화 등과 같은 형식을 수행 할 수 있습니다. 양식의 텍스트를 다시 편집 할 수 없거나 라인 브레이크를 잃게됩니다.

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

데이브

 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;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top