解决方案 »

  1.   

    还有就是怎样让DBGRID表格中的文字居中?
      

  2.   

    function TForm1.NewTextWidth(fntFont: TFont; const sString: OpenString): integer;
    {根据程序默认系统取得文字所需宽度}
    var
      fntSave: TFont;
    begin
      result := 0;
      fntSave := Application.MainForm.Font;
      Application.MainForm.Font := fntFont;
      try
        result := Application.MainForm.Canvas.TextWidth(sString);
      finally
        Application.MainForm.Font := fntSave;
      end;
    end;function TForm1.iCalcGridWidth(dbg: TDBGrid): integer;
    {指定dbgrid文字所需宽度}
    const
      cMEASURE_CHAR = '0';
      iEXTRA_COL_PIX = 4;
      iINDICATOR_WIDE = 11;
    var
      i, iColumns, iColWidth, iTitleWidth, iCharWidth: integer;
      //字段数,列数,列宽,列标题宽,字宽
    begin
      iColumns := 0;
      result := GetSystemMetrics(SM_CXVSCROLL);
      //得到滚动条的大小
      iCharWidth := NewTextWidth(dbg.Font, cMEASURE_CHAR);
      with dbg.dataSource.dataSet do
        for i := 0 to FieldCount - 1 do
          with Fields[i] do
            if visible then
            begin
              iColWidth := iCharWidth * DisplayWidth;
              if dgTitles in dbg.Options then
              begin
                iTitleWidth := NewTextWidth(dbg.TitleFont, DisplayLabel);
                if iColWidth < iTitleWidth then
                  iColWidth := iTitleWidth;
              end;
              inc(iColumns, 1);
              inc(result, iColWidth + iEXTRA_COL_PIX);
            end;
            if dgIndicator in dbg.Options then
            begin
              inc(iColumns, 1);
              inc(result, iINDICATOR_WIDE);
            end;
            if dgColLines in dbg.Options then
              inc(result, iColumns)
            else
              inc(result, 1);
    end;procedure TForm1.FormCreate(Sender: TObject);
    var
      W, i: Integer;
    begin
      ADOTable1.Active := True; 
      W := 0;
      for i := 0 to DBGrid1.Columns.Count - 1 do //遍列得到累加宽度
        W := W + DBGrid1.Columns[i].Width + 4; //增加余值
      DBGrid1.ClientWidth := W; 
      Self.ClientWidth := (DBGrid1.Left * 2) + DBGrid1.Width; 
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      Showmessage(IntToStr(iCalcGridWidth(DBGrid1)));
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      Showmessage(Inttostr(DBGrid1.Width));
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
      ADOTable1.Active := not ADOTable1.Active;
    end;
      

  3.   

    dbgrid1.columns[0].width:=123;//第1列列宽
    dbgrid1.columns[0].Alignment:='tacenter'第1列数据居中