2011-10-25 3 views
1

나는 문자열로 탭 문자를 넣어 다음 문자열에서 레이블의 Caption 속성 탭 문자가 무엇을해야합니까를 할당하면?Delphi TLabel 캡션에서 탭 문자의 동작이 정의되어 있습니까?

CR 문자는 여러 줄의 캡션을 표시하는데 도움이되는 수익을 발생합니다. 탭 문자는 일종의 탭 동작을 수행하는 것 같습니다.이 동작이 정의되어 있는지 또는 예측 가능한지 궁금합니다. (동작은 Windows가 아니라 Delphi가 아닙니다.) 당신이 TLabel.Caption에 탭 문자를 넣으면

+0

내 생각 엔 그들이 8 개 공간으로 확장한다는 것이다. :-) –

+0

TCustomLabel.Paint 결국 호출 DT_EXPANDTABS 세트 DrawText에 (http://msdn.microsoft.com/en-us/library/dd162498%28v=vs.85%29.aspx) (이외의 줄임표 위치를 사용하지 않는 epNone), 그렇습니다, 그것은 Windows에 의해 결정됩니다 –

답변

4

Caption 탭 문자가 포함되어 있습니다. 탭 문자가 표시되는 방법

은 사용 글꼴 및 Windows 자체에 따라 달라집니다. XE의 빠른 테스트 (예 : Win7)는 탭 문자 (비례 글꼴로 약 8 칸)에 적합한 간격을 표시합니다.

여기 내 테스트입니다. 폼에 세 개의 레이블을 삭제하고 폼의 한 OnCreate 이벤트에 이것을 추가 :

procedure TForm1.FormCreate(Sender: TObject); 
begin 
    Label2.Left := Label1.Left; 
    Label3.Left := Label2.Left; 
    Label1.Caption := 'Some text'#9'Some text'#9'More text'; 
    Label2.Caption := Label1.Caption; 
    Label3.Caption := Label1.Caption; 
end; 

다음은 출력입니다 :

Sample label output

+0

Thanks @Ken. 또한 필자의 테스트는 비례적인 폰트에 대해서도 상대적으로 현저하게 행동 함을 시사한다. 그러나 필자가 열 2의 내용을 모두 지키도록 유지하려면 열 1의 문자열을 공백으로 채워서 대략 너비가 같도록해야한다. 항목은 이전 탭 위치로 돌아갑니다 (또는 Canvas.TextWidth를 사용할 수 있다고 생각합니다). – rossmcm

관련 문제