1.uses Math(我在xp+d7下没有引用该文件貌似也能执行,原文是要引用的,大家可以测试一下)
2.先定义两个函数
function Tmain_khjx.DBGridAutoSize(mDBGrid: TDBGrideh;
mOffset: Integer): 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 }
/////////////////////////////////////////////////////////////////
function Tmain_khjx.DBGridRecordSize(mColumn: TColumneh):
Boolean;
begin //返回数据网格自动适应宽度是否成功
Result := False;
if not
Assigned(mColumn.Field) then Exit;
mColumn.Field.Tag := Max(mColumn.Field.Tag,
TDBGrideh(mColumn.Grid).Canvas.TextWidth(mColumn.Field.DisplayText));
Result :=
True;
end;
3.
在DBGridEh1DrawColumnCell的事件中写上一句代码:
DBGridRecordSize(Column);
在想让dbgrideh自动调整列宽的事件中写上
:DBGridAutoSize(DBGridEh1,12);
我是在窗体的onshow事件中写的,也可以在按钮等事件总写
4.注意:dbgrideh的autofitcolwidths 的属性必须设置成false
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。