DBGird的问题!高手请进!!

国风 2004-06-30 04:02:17
怎样根据实际的数据宽度来显示DBGird每列的宽度,而不是根据后台数据库表中定义的宽度来显示。
...全文
121 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangmai 2004-07-01
  • 打赏
  • 举报
回复
考虑从之类入手,这是解决根本的方法,不过难度比较高;

或者,建立一个文本文件,用来存储dbgrid的title信息(如:宽度。字体。字段数。。。。)
第一次调整写入ini文件就好。。然后每次读取ini不会浪费资源(如果出现新的数据长度。那么再重复一次操作!)
huangmai 2004-07-01
  • 打赏
  • 举报
回复
考虑从子类入手。
国风 2004-07-01
  • 打赏
  • 举报
回复
--> huangmai(黄麦)
你的方法还是比较好的,这样可以减少重复操作。可取!!
Open2ye 2004-06-30
  • 打赏
  • 举报
回复
楼上的对
bob008 2004-06-30
  • 打赏
  • 举报
回复
你应该根据记录的长度,动态设置你的DBGRID的COLUME.WIDTH。没有什么了,就这些
国风 2004-06-30
  • 打赏
  • 举报
回复
我这里的数据量很大,如果对每条记录的长度进行比较就行不通了。看来只能接纳楼上两位仁兄的意见了!
PW4000 2004-06-30
  • 打赏
  • 举报
回复
同意楼上说法
jacket008 2004-06-30
  • 打赏
  • 举报
回复
楼上这样如果数据多会牺牲很多资,一般在设置时调一下,合理美观就行。
yjbing 2004-06-30
  • 打赏
  • 举报
回复
for i:=0 to sGrid.Columns.Count-1 do
begin
MaxWidth:=length(sGrid.Columns.Items[i].Title.Caption)*6;
DataSet.First;
while not DataSet.Eof do
begin
if Maxwidth<length(DataSet.fieldByName(sGrid.Columns.Items[i].DisplayName).AsString) * 6 then
Maxwidth:=length(DataSet.fieldByName(sGrid.Columns.Items[i].DisplayName).AsString) * 6;
DataSet.Next;
end;
sGrid.Columns.Items[i].Width:=MaxWidth + 6;
if sGrid.Columns.Items[i].Width>300 then
sGrid.Columns.Items[i].Width:=300;
if sGrid.Columns.Items[i].Width<50 then
sGrid.Columns.Items[i].Width:=50;
end;

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧