请问如何使cxdbgrid每一列的宽度能根据该列中元素而调整,从而使每个元素都可以全部显示出来? ( 积分: 50 )

  • 主题发起人 主题发起人 wyxriver
  • 开始时间 开始时间
W

wyxriver

Unregistered / Unconfirmed
GUEST, unregistred user!
经过试验:clumnautowidth属性为TRUE时,整个CXDBGRID的宽度可以自动调整大小,可是其中的每个列却并不能自动调整,使其列内元素完全显示出来。如果用DBGRID控件,网上有许多函数可以做到这个功能,一般来说都是遍历该列全部元素,找出最长的元素,然后重定义列宽,CXDBGRID功能如此强大,有没有自动可以实现的办法?
 
它好像有个双击列线自动适应列内容宽度的属性吧?[:D]
 
function&nbsp;DBGridAutoSize(mDBGrid:&nbsp;TDBGrid;&nbsp;mOffset:&nbsp;Integer&nbsp;=&nbsp;5):&nbsp;Boolean;<br>{&nbsp;返回?据网格自?适??度是否成功&nbsp;}<br>var<br>I:&nbsp;Integer;<br>begin<br>Result&nbsp;:=&nbsp;False;<br>if&nbsp;not&nbsp;Assigned(mDBGrid)&nbsp;then&nbsp;Exit;<br>if&nbsp;not&nbsp;Assigned(mDBGrid.DataSource)&nbsp;then&nbsp;Exit;<br>if&nbsp;not&nbsp;Assigned(mDBGrid.DataSource.DataSet)&nbsp;then&nbsp;Exit;<br>if&nbsp;not&nbsp;mDBGrid.DataSource.DataSet.Active&nbsp;then&nbsp;Exit;<br>for&nbsp;I&nbsp;:=&nbsp;0&nbsp;to&nbsp;mDBGrid.Columns.Count&nbsp;-&nbsp;1&nbsp;do&nbsp;begin<br>if&nbsp;not&nbsp;mDBGrid.Columns.Visible&nbsp;then&nbsp;Continue;<br>if&nbsp;Assigned(mDBGrid.Columns.Field)&nbsp;then<br>mDBGrid.Columns.Width&nbsp;:=&nbsp;Max(mDBGrid.Columns.Field.Tag,<br>mDBGrid.Canvas.TextWidth(mDBGrid.Columns.Title.Caption))&nbsp;+&nbsp;mOffset<br>else&nbsp;mDBGrid.Columns.Width&nbsp;:=<br>mDBGrid.Canvas.TextWidth(mDBGrid.Columns.Title.Caption)&nbsp;+&nbsp;mOffset;<br>mDBGrid.Refresh;<br>end;<br>Result&nbsp;:=&nbsp;True;<br>end;&nbsp;{&nbsp;DBGridAutoSize&nbsp;}
 
TcxGridDBBandedTableView.ApplyBestFit()自动适应可以是一列或是全部
 
关注中!应该可以实现,我以前也想实现,但是由于客户没要求,所以也没实现!
 
接受答案了.
 

Similar threads

D
回复
0
查看
768
DelphiTeacher的专栏
D
D
回复
0
查看
672
DelphiTeacher的专栏
D
D
回复
0
查看
842
DelphiTeacher的专栏
D
后退
顶部