我想在程序中用TextOut输出制表符,如:拐角、T形角等,但是输出的总不对,我是用制表符的Ascii来控制的。请大家帮忙想想办法,谢谢!

解决方案 »

  1.   

    用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键,画到设备上去!
      

  2.   

    错了,不是打印Tab。是如何控制打印表格?急死了!!!
      

  3.   

    哦,我明白了
    应该是字体的原因吧,因为有的字体中不字符的宽度是不一样的!
    这样吧设定
    Canvas.Font.Name := '宋体';
    Canvas.Font.Size := 9;