根据表格中的数据长度自动调整表格宽度DBGrid
2008年03月27日 星期四 下午 08:16
根据表格中的数据长度自动调整表格宽度
http://www.csai.cn 作者:Delphi开发经验技巧宝典 来源:希赛网 2008年3月11日 
——此文章摘自《Delphi开发经验技巧宝典》定价:¥95.00 特价:¥71.25 购买>>

     DBGrid 表格列的宽度是根据所连接的字段的长度来决定的,由于设计字段长度的时候留有足够长的空间,因此通常情况下在表格显示数据的时候表格的列宽很大,大部分都是空白处,这样在浏览数据的时候很不方便,为了避免这一情况,可以考虑根据数据实际数据长度来自动调整表格的宽度,如图7.16所示。


图7.16 根据表格中数据长度自动调整表格宽度

     在“自动设置表格宽度”文本框中获取每个字段实际使用的最大字节数,然后设置DBGrid表格列的Field.DisplayWidth属性来根据实际字段长度自动调整表格宽度,主要代码如下:
     procedure TFrmOrderBy.BtnOrderClick(Sender: TObject);
     var
      i: integer;
      fieldname: string;
     begin
      with AQuery do
       begin
         Close;
         SQL.Clear;
         SQL.Add('SELECT max(datalength(id)) AS id ,');
         SQL.Add('max(datalength(number))AS number,');
         SQL.Add('max(datalength(name))AS name,');
         SQL.Add('max(datalength(old))AS old,');
         SQL.Add('max(datalength(sex))AS sex,');
         SQL.Add('max(datalength(telephone))AS telephone,');
         SQL.Add('max(datalength(department))AS department,');
         SQL.Add('max(len(joindate))AS joindate');
         SQL.Add('FROM TB_Worker');
         Open;
       end;
      for i := 0 to DBGList.Columns.Count - 1 do
       begin
         fieldname := DBGList.Columns[i].Field.FieldName;
         DBGList.Columns[i].Field.DisplayWidth := AQuery.FieldByName(fieldname).AsInteger;
       end;
     end;