我的数据库是SQL Server 我设定的文本字段长200,用ADO连接,我把DBGRID中的字段
设为AlwayShowEdit,当进入任一字段,该字段的内容被全选,光标就停在最后一个字
符,当本字段只有几个字符,看起来就像该字段的内容为空的一样,(以我所知,
SQL SERVER会把所有字段的内容以空格填满。)我只想让DBGRID显示字段中真实的内容,而不显示多余的空格,或全选后光标只停在第一个字符上。各位有什么意见,请多多指点
我的Email [email protected]

解决方案 »

  1.   

    标题:数据网格自动适应宽度uses
      Math;function DBGridRecordSize(mColumn: TColumn): Boolean;
    { 返回记录数据网格列显示最大宽度是否成功 }
    begin
      Result := False;
      if not Assigned(mColumn.Field) then Exit;
      mColumn.Field.Tag := Max(mColumn.Field.Tag,
        TDBGrid(mColumn.Grid).Canvas.TextWidth(mColumn.Field.DisplayText));
      Result := True;
    end; { DBGridRecordSize }function DBGridAutoSize(mDBGrid: TDBGrid; mOffset: Integer = 5): Boolean;
    { 返回数据网格自动适应宽度是否成功 }
    var
      I: Integer;
    begin
      Result := False;
      if not Assigned(mDBGrid) then Exit;
      if not Assigned(mDBGrid.DataSource) then Exit;
      if not Assigned(mDBGrid.DataSource.DataSet) then Exit;
      if not mDBGrid.DataSource.DataSet.Active then Exit;
      for I := 0 to mDBGrid.Columns.Count - 1 do begin
        if not mDBGrid.Columns[I].Visible then Continue;
        if Assigned(mDBGrid.Columns[I].Field) then
          mDBGrid.Columns[I].Width := Max(mDBGrid.Columns[I].Field.Tag,
            mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption)) + mOffset
        else mDBGrid.Columns[I].Width :=
          mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption) + mOffset;
        mDBGrid.Refresh;
      end;
      Result := True;
    end; { DBGridAutoSize }
    ///////End Source///////Begin Demo
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      DBGridRecordSize(Column);
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      DBGridAutoSize(DBGrid1);
    end;
    ///////End Demo
      

  2.   

    字段用varchar类型不会在后面补空格了。
      

  3.   

    在SQL SERVER中把文本字段的数据类型设为“varchar”即可。
    改完之后,记得把原记录中的空格清除。
      

  4.   

    SQL SERVER中如果你用Char(n)来定义字段的话,如果位数不足n,SQL SERVER会自动帮你补空格。如果你采用Varchar(n)的话,SQL SERVER就会保留字段的实际长度。所以跟DBGrid无关,只要改数据库字段的Char(n)为Varchar(n)就够了。
      

  5.   

    在字符字段的ongettext事件里:
    Text = Trim(Sender->AsString);