在用MESSAGEBOX时,如果提示语有多行的话,为什么用后补空格的问题不能使字符串对齐?具体见下所示:var
  s1, s2, s :string
begin
  s1 := '第一' ; s2 := '第二行' ;  s := s1 + StringOfChar(' ', 20 - Length(s1)) + '88' + #13#10 +
       s2 + StringOfChar(' ', 20 - Length(s2)) + '99' ;
  Application.MessageBox(pChar(s), '', 0) ;
end ;用上述方法为什么总是不能对齐,请问这是字体的缘故?还是PCHAR变量存放引起的?谢谢!

解决方案 »

  1.   

    字体的原故. MessageBox 的字体会使空格仅占很小一个位置, 你得多放几个空格
      

  2.   

    不同字体空格占的宽度不一样。
    先不说中文和英文,就算都是英文,不同的字体,空格宽度也不一样。看一下:"宋体"和"Tahoma".
      

  3.   

    不过你可以得到字符串的宽度。
    就是利用tcanvas.TextWidth函数得到字符串的宽度。
    但首先你要先设置canvas的font:=screen.hintfont;得到宽度以后就可以知道要补多少空格了。
      

  4.   

    谢谢两位。我试过设置字体,没想到要用screen.hintfont