2011-10-25 3 views
1

タブ文字を文字列に入れて、文字列からラベルのCaptionプロパティを割り当てると、タブ文字は何をしますか?Delphi TLabelのキャプション内のタブ文字の動作は定義されていますか?

CR文字を指定するとリターンが発生し、複数行のキャプションを表示するのに便利です。タブ文字はある種のタブ動作を実行しているようです - この動作が定義されているか予測可能かどうかは疑問です。 (動作はDelphiではなくWindowsによって決まると思います)

+0

私の推測では、彼らが8つのスペースに展開することです。 :-) –

+0

TCustomLabel.PaintはDT_EXPANDTABSが設定されたDrawText(http://msdn.microsoft.com/en-us/library/dd162498%28v=vs.85%29.aspx)を最終的に呼び出します(ただし、 epNone)、はい、それはWindowsによって決定されます –

答えて

4

TLabel.Captionにタブ文字を入力すると、Captionにタブ文字が含まれます。

タブ文字の表示方法は、使用するフォントとWindows自体によって異なります。たとえばWin7のXEでの簡単なテストでは、タブ文字(約8スペース、非比例フォント)に適した間隔が表示されます。

ここは私のテストです。フォーム上の3つのラベルをドロップし、フォームの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

ありがとう@Ken。私のテストでは、比例フォントについても比較的賢明に動作することが示されていますが、列2の内容をすべてタブで維持したい場合は、列1の文字列をスペースで埋めて、アイテムは前のタブ位置にジャンプします(またはCanvas.TextWidthを使うことができます) – rossmcm

関連する問題