如题

解决方案 »

  1.   

    你把dbgrid设置为对应字段的长度就可以了
      

  2.   

    当然有办法啦!
    procedure TSelectForm.AdjustMaxWidth;
    var
      i, vCount: Integer;
      vMaxWidth: array[0..30] of Integer;
      vTextLength: Integer;
      vNameLength: Integer;
    begin
      //初始化
      for i := 0 to 20 do vMaxWidth[i] := 0;
      //取得最大宽度  with SysDM.dsSelect.DataSet do
      begin
        DisableControls;
        First;
        //取得数据宽度
        while not Eof do
        begin
          for i := 0 to dbg.Columns.Count - 1 do
          begin
            vTextLength := Length(Trim(dbg.Fields[i].AsString));
            vNameLength := Length(Trim(dbg.Fields[i].Fieldname));
            if vTextLength > vMaxWidth[i] then vMaxWidth[i] := vTextLength + 3;
            if vTextLength < vNameLength then vMaxWidth[i] := vNameLength + 3;
          end;
          Next;
        end;
        First;
        //当记录为空时,取列名宽度
        if IsEmpty then
        begin
          for i := 0 to dbg.Columns.Count - 1 do
          begin
            vNameLength := Length(Trim(dbg.Fields[i].Fieldname));
            vMaxWidth[i] := vNameLength;
          end;
        end;
        EnableControls;
      end;
      //设置最大宽度,计算总长度
      vCount := 0;
      for i := 0 to dbg.Columns.Count - 1 do
      begin
        dbg.Columns[i].Width := vMaxWidth[i] * 8;
        vCount := vCount + vMaxWidth[i] * 8;
      end;
      //设置DBG宽度
      dbg.Width := vCount + 50;
    end;
      

  3.   

    dbg :TDBGrid;以前的代码!