for example
1小小李      640
2谢总      460
3魔帕客    430
4崔      410
5阿漫      360
6小张      320我想要的结果是
1  小小李    640
2  谢总      460
3  魔帕客    430
4  崔        410
5  阿漫      360
6  小张      320就是每列都对齐了请问怎么实现?

解决方案 »

  1.   

    不要用VK_TAB,用VK_SPACE
    CONST
      MAX_NAME_LEN = 5;
    VAR
      GRADE_ARR[n]
    BEGIN
      MEMO1.Lines.Clear();
      FOREACH GRADE IN GRADE_ARR DO BEGIN
        FILLCHAR(FILLSPACE,MAX_NAME_LEN - GRADE.NAME.Length,CHR(VK_SPACE));
        MEMO1.Lines.Add(GRADE.NAME + FILLSPACE + GRADE.SCORE);
      END;
    END;
      

  2.   

    可以在添加的地方用Format控制
    procedure TForm1.Button1Click(Sender: TObject);
    var
      A, B: Integer;
      S: string;
    begin
      Memo1.Lines.Add(Format('%-3s%-10s%s', ['1', '小小李', '640']));
      //or
      A := 1;
      B := 640;
      S := '小小李';
      Memo1.Lines.Add(Format('%-3d%-10s%d', [A, S, B]))
    end;
      

  3.   

    with qryr do
        begin
            while not(qryr.Eof) do
            begin
              emi:=fieldbyname('名次').AsString;
              id:=fieldbyname('会员id').AsString;
              :=fieldbyname('积分').AsString;
              FILLCHAR(FILLSPACE,5 - length(emi),CHR(VK_SPACE));
              Memoemi.Lines.Add(emi+FILLSPACE+id+);
              next;
            end;fillspace 没有值
      

  4.   

    // -_-!!!!!!
      with qryr do
      begin
        while not Eof do
        begin
          Memoemi.Lines.Add(Format('%-3s%-10s%s', [
            FieldByName('名次').AsString,
            FieldByName('会员id').AsString,
            FieldByName('积分').AsString
          ]));
          Next;
      end;