dbgrid类控件可以动态改变列宽 但如何才能让每列的宽=实际数据库列中最大宽度拉?
也就是说比如dbgrid.coulmns[1]列中默认宽度是等于字段设计宽度的 但如何让dbgrid列宽等于实际数据最大宽度 如何求这个最大列宽度 让dbgrid.coulmns[n].wigth能动态自动适应?有人知道么?
也就是说比如dbgrid.coulmns[1]列中默认宽度是等于字段设计宽度的 但如何让dbgrid列宽等于实际数据最大宽度 如何求这个最大列宽度 让dbgrid.coulmns[n].wigth能动态自动适应?有人知道么?
select max(length(field1)) from table1;
(与font有关)给你一个函数
//////////////////////////////////////////////////////////////////////////////
// 作者:Canan 日期:2002/11/27
// 功能:根据字体设置已知字符串的显示宽度
// 参数:AFont:字符串的Font
// AStr:字符串
// 返回:象素值
//////////////////////////////////////////////////////////////////////////////
function GetTextWidth(AFont:TFont;AStr:string):Integer;
begin
try
with TCanvas.Create do
try
Handle := GetDC(0);
Font := AFont;
Result := TextWidth(AStr);
finally
Free;
end;
except
result := 0;
end;
end;
DBGrid1.Fields[0].DisplayWidth := N
你的问题的另外一个解决方法就是自己手动添加数据(DBGrid1DrawColumnCell方法),每添加一个数据,比较它的长度
和现在column的长度,取最长值。
用select max(len.....这类语句 表大的时候慢得很
谁能告诉我如何获得GRID表的具体的某列某行的宽度?
再一个一个的把表中的数据表字段值的最大的长度提出
给各个列设其宽度。
然后再
DBGrid1.Fields[0].DisplayWidth := LENGTH(dbgrid1.DataSource.DataSet.Fields[i].AsString)
我想知道最好的方法是GRID在画表格时就能自动适应宽度 这方面技术还是比较难的 非要高手出现指点才行呀!~