我做程序时候碰到这样的问题,需要显示第几名,得多少分的时候因为名字长度不一,所以显示的分数总是不能对齐。stringgrid1.Cells[0,i-1]:='第'+inttostr(i)+'名'+'   '+arr[i].name+
      '……'+inttostr(arr[i].score)+'分';输入名字的时候我用的是:InputQuery('输入名字:','name:',st)请问一下,有什么办法能对齐。还就就是我在用Messagedlg('sure?',mtinformation,[mbok,mbno],0);的时候怎么可以控制NO和YES按键的前后顺序?每次都是NO在前面,而且默认按钮也是NO

解决方案 »

  1.   

    你不要把他们放在一个格子里不就可以了。
    一个格子显示名字,一个格子显示分数。第二个问题好象是Yes在前面的吧,没有注意过
      

  2.   

    如果我把格子分成两列,那怎么控制第一列的宽度?分成5列,又怎么让name占用两列啊?
    不好意思,笨的很,请再讲的仔细些~先谢了
      

  3.   

    1、建议用format格式成相同长度的
    2、可能注册表问题?我查查去,应该yes在前面啊?
      

  4.   

    可以帮忙给些代码吗?format我也不会用~
      

  5.   

    SQL.Add(Format('%s %s ''%s''',[FieldName,Mode,Val]));例子    SQL.Add(Format('%s %s %d ',[FieldName,Mode,Val]));
    自己琢磨
      

  6.   

    if t then
        SQL.Add(Format('%s %s #%s#',[FieldName,Mode,FormatDateTime('YYYY-MM-DD''',dSame)]))
      else
        SQL.Add(Format('%s %s #%s#',[FieldName,Mode,FormatDateTime('hh:mm:ss''',dSame)]));
      

  7.   

    stringgrid1.Cells[0,i-1]:='第'+inttostr(i)+'名'+chr(13)+chr(10)+arr[i].name+
          chr(13)+chr(10)+inttostr(arr[i].score)+'分';
      

  8.   

    问一下
    我按楼上的做,怎么chr(13)和chr(10)出来的 || 并没有把分数对齐。我是这么加的stringgrid1.Cells[0,i-1]:=format('%s %s %s',['第'+inttostr(i)+'名'+chr(13)+chr(10),arr[i].name+chr(13)+chr(10),inttostr(arr[i].score)+'分']);
    不过出来和楼上的一样。
      

  9.   

    msgDig的顺序问题可能来自源代码
    Dialogs
    function CreateMessageDialog(const Msg: string; DlgType: TMsgDlgType;
    中    for B := Low(TMsgDlgBtn) to High(TMsgDlgBtn) do处(反了)要不是的话就是系统的问题或者注册表问题吧
      

  10.   

    格式画问题format('%-6s %6s',['小明','100']);format('%-6s %6s',['小甜甜,'59']);
    出来字符串都一样长
    小明      100
    小甜甜     59