引言
经常需要从数据库或者其他文件中将数据显示到网格控件中(如MSHFlexGrid),但是却发现这些网格控件没有自动调整宽度的功能(至少我在其属性中找很久没找到)。这个功能的缺失将给编写程序者带来不小的麻烦,势必会造成网格空间的浪费或者是数据内容显示不全的现象发生。本文主要研究如何使网格控件宽度自动适应内容的问题。
1 方法介绍
1.1 Label控件
从学VB6开始就接触了Label控件,对该控件的熟悉程度毋容置疑,本文所讨论的方法既是利用该控件完成。
Label控件的AutoSize属性可以使Label自动适应其Caption属性中字符的大小,在编写程序时,可以将AutoSize属性设为True,从而使Label具有自适应的能力。
1.2 MSHFlexGrid控件
MSHFlexGrid控件是一个很好用的表格控件,拥有强大的功能、众多的属性,可以根据需要设置,这里不再详述,只说明一下其控制网格宽度的属性,即ColWidth。
例如,需要设置MSHFlexGrid第一列的宽度为500,则可以使用下面的语句:
MSHFlexGrid1.ColWidth(0)=500
注意,MSHFlexGrid的第一列的Index为0,第一行的Index为0,这个需要特别留心,特别是从Excel读入数据时,需要一定的转换,否则可能出现数据读入错误的表格的情况发生。
1.3 Label与MSHFlexGrid的结合
本小节具体讨论如何用Label控件使MSHFlexGrid具有自适应的能力。
1)新建MSHFlexGrid1和Label1,将Label1的AutoSize