用API就很好解决了: const S = '带Tab 的串'; var Rect: TRect; begin FillChar(Rect, SizeOf(Rect), 0); {以下是通过DT_CALCRECT参数算出Rect的大小} DrawText( Canvas.Handle, PAnsiChar(S), -1 , Rect, DT_SINGLELINE or DT_CALCRECT or DT_LEFT or DT_EXPANDTABS); DrawText( Canvas.Handle, PAnsiChar(S), -1, ARect, DT_CENTER or DT_SINGLELINE or DT_BOTTOM or DT_EXPANDTABS ); end; 注: DT_EXPANDTABS就可以展开Tab键,画到设备上去!
const
S = '带Tab 的串';
var
Rect: TRect;
begin
FillChar(Rect, SizeOf(Rect), 0);
{以下是通过DT_CALCRECT参数算出Rect的大小}
DrawText(
Canvas.Handle,
PAnsiChar(S),
-1 ,
Rect,
DT_SINGLELINE or DT_CALCRECT or DT_LEFT or DT_EXPANDTABS); DrawText(
Canvas.Handle,
PAnsiChar(S),
-1,
ARect,
DT_CENTER or DT_SINGLELINE or DT_BOTTOM or DT_EXPANDTABS
);
end;
注:
DT_EXPANDTABS就可以展开Tab键,画到设备上去!
应该是字体的原因吧,因为有的字体中不字符的宽度是不一样的!
这样吧设定
Canvas.Font.Name := '宋体';
Canvas.Font.Size := 9;