谢谢
解决方案 »
- 用unidac遇到的悲催事
- 1000分悬赏多iframe中src连接的网页访问和操作问题,帮顶者有分
- 再散分200,看有没有人能解决这个问题。
- 请教高手,这条语句这样写正确吗?form1.query1.fields[2].asfloat:=form1.query3.fields[0].value
- 即将的生日,鸡毛一地
- 一个很简单的问题,一下子想不起来了?
- 请教delphi高手-------100分
- 有人在delphi中用过华表的组件吗?有一难题请教?
- delphi读取access表格的内容-错误标准表达式数据类型不匹配
- 用Xe5开发android手机客户端程序遇到问题
- 请问哪里有软件工程—实践者之路的下载
- 如何建立修改读取记录文件??
http://zswang.51.net/function/zsfunc0w.htm(*//
标题:数据网格自动适应宽度
说明:使用DBGrid不可不看
设计:Zswang
日期:2002-03-04
支持:[email protected]
//*)///////Begin Source
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