根据表格中的数据长度自动调整表格宽度
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;