我经常用ADOquery打开Excel文件,但显示在DBGrid中每个字段都是超宽(在1000以上).
且表内字段又超多,一个个建TDBGridColumns,挨个选fieldname可是很累人的.
大家有什么高招吗?
且表内字段又超多,一个个建TDBGridColumns,挨个选fieldname可是很累人的.
大家有什么高招吗?
解决方案 »
- 按钮的背景色
- 问一个有点难读取文件中数据的问题,60分奉上!
- 请问如何在WebBrowser控件中不让链接在新窗口打开!
- 你们是怎麽理解私有成员,保护成员,及公用成员的?
- 求助ADO问题,up有分。解决有高分。
- 在Delphi中,怎么处理Access中的一对多关系的两个表?
- 树的使用
- 上海软件公司急招Delphi熟手4名,学历不限
- delphi本身研究
- mincer 限你3天内写出这个危害CSDN的小花帽病毒的修复程序!!否则咱们法庭上见!不信是吧?咱走着瞧!!高中毕业,你想和CIH想比呀??技术还差得很远。看哪个大学敢要你!!!
- 怎樣從dll文件中傳遞圖標給主程序,在線等待
- 大吓指点:关于PopupEdit自动下拉的问题
dbgrid1.Columns[i].Width:=table1.Fields[i].Size*8;
当然,这是对字符型的,如果对boolean 等,你可以自己判断一下用多宽。
http://kingron.myetang.com/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