请问怎么使DBGrid1的栏宽自动适应内容长度? 我希望DBGrid1的栏宽自动适应最长的纪录,而不要一个个的去设定宽度,谢谢大家 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 来自猛料: 数据网格自动适应宽度 (*// 标题:数据网格自动适应宽度说明:使用DBGrid不可不看设计:Zswang日期:2002-03-04支持:[email protected]//*)///////Begin SourceusesMath;function DBGridRecordSize(mColumn: TColumn): Boolean;{ 返回记录数据网格列显示最大宽度是否成功 }beginResult := 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;{ 返回数据网格自动适应宽度是否成功 }varI: Integer;beginResult := 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 beginif 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)) + mOffsetelse mDBGrid.Columns[I].Width := mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption) + mOffset; mDBGrid.Refresh;end; Result := True;end; { DBGridAutoSize }///////End Source///////Begin Demoprocedure 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 获取每一列中最长的字符串,再调用canvas.textwidth测量字符宽度,然后再设置列宽。 larruping真是够快够全,惭愧,惭愧! 问:如何用delphi把一个文件接制作成exe运行文件 关于intraweb问题 欢迎大伙一块研究《VCL架构剖析》,希望给我提问题 请教大家 SQL 查询问题 谢谢 得到本机的IP地址 如何使用进度条? delphi 5简体中文版 哪里下载最快 請問關於dbtree問題? 为什么发消息给IE的Input(text)对象不能完全响应? 需ICON文件格式,那为仁兄手头有?可否mail一份来?[email protected] 请问高手 请问stringgrid怎么加入数据的?(我的数据是Paradox表)
数据网格自动适应宽度
(*//
标题:数据网格自动适应宽度说明:使用DBGrid不可不看设计:Zswang日期:2002-03-04支持:[email protected]//*)///////Begin SourceusesMath;function DBGridRecordSize(mColumn: TColumn): Boolean;{ 返回记录数据网格列显示最大宽度是否成功 }beginResult := 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;{ 返回数据网格自动适应宽度是否成功 }varI: Integer;beginResult := 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 beginif 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)) + mOffsetelse
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