改一下字体.
有些字体所有字符都是一样宽的,有些则是变宽字体.
你用不同的字体显示这段文本试试:
MMMMMM
IIIIII
如果你在输入时用的是变宽字体,可能就不太好改了.如果输入时用的是等宽字体,显示时也用等宽字体,一般就没问题.     ____     ____
     \ p \   / g /
      \ l \_/ n /
       \ a   o /
        \ i s /
         \ n /
          \_/

解决方案 »

  1.   

    我用的是‘Arial'字体,
    希望‘:’能够对齐。
      

  2.   

    如 plainsong(轻风) 所说,
    改字体。例如宋体
      

  3.   

    Arial字体是变宽字体.你改成Courier试试.     ____     ____
         \ p \   / g /
          \ l \_/ n /
           \ a   o /
            \ i s /
             \ n /
              \_/
      

  4.   

    TTF字休不一样宽 在宋体小五时是一样宽
      

  5.   

    不关字体的事, 一般显示字符串都是调用drawtext这个api的,不幸的是drawtext中tab的宽度等于windows默认tab长度(一般是8个空格),换句话说,
    tab字符是定长而不是变长。
    memo中能行是因为windows的edit控件做的手脚(估计使用的是tabbedtextout)
      

  6.   

    我试过了,不同的字体对Tab位的计算是有影响的.试一下如下代码:
      aRect := Rect(0,0,200,20);
      DrawText(PaintBox1.Canvas.Handle,'MMMMMM'#9':',-1,aRect,DT_EXPANDTABS);
      aRect := Rect(0,20,200,40);
      DrawText(PaintBox1.Canvas.Handle,'IIIIII'#9':',-1,aRect,DT_EXPANDTABS);
    在Arial和Courier下是不一样的.
    我看你的情形好象是第一行有两个Tab符,第二行有一个Tab符,在某种字体下,'Qoutation Date'比'Qoutation No.'多占了一个Tab区,结果冒号是对齐的;
    在另一种字体下,它们在同一个Tab区结果就不对齐了.