vb中自动调整控件的大小
2013-11-17 21:26
423 查看
机房收费系统中有很多查询记录类的窗体用到了MSHFlexGrid控件。当没有调整该控件的大小时,查询结果可能会如图所示:
![](http://img.blog.csdn.net/20131117204238562?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDkzMDM0MA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
而我们需要的是:
![](http://img.blog.csdn.net/20131117210134531?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDkzMDM0MA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这本来是一个很简单的调整MSHFlexGrid列宽的问题,只需要设置AllowUserResizing即可,如图:
![](http://img.blog.csdn.net/20131117204815953?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDkzMDM0MA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
但是我刚开始没有注意到这个属性,所以就百度了自动调整MSHFlexGrid列宽的方法,需要自定义一个过程:
这个过程的关键就是要知道form窗体有TextWidth方法,Textwidth方法则返回一个文本字符串的宽度值。
因为知道了Textwidth方法,我们就能使任何输入内容为文本字符类控件自动调节到最适合宽度,因为还有TextHeight方法,我们就能调整任何输入内容为文本字符类控件自动调节到最适合高度。我们知道label控件有AutoSize属性,而把上述代码封装起来就是输入内容为文本字符类控件的AutoSize属性。
http://li25686686.blog.163.com/blog/static/3684873720105644729263/
而我们需要的是:
这本来是一个很简单的调整MSHFlexGrid列宽的问题,只需要设置AllowUserResizing即可,如图:
但是我刚开始没有注意到这个属性,所以就百度了自动调整MSHFlexGrid列宽的方法,需要自定义一个过程:
Public Sub AdjustColWidth(frmCur As Form, gridCur As Object, Optional bNullRow As Boolean = True, Optional dblIncWidth As Double = 0) Dim i, j As Integer Dim dblWidth As Double With gridCur For i = 0 To .Cols - 1 dblWidth = 0 If .ColWidth(i) <> 0 Then For j = 0 To .Rows - 1 If frmCur.TextWidth(.TextMatrix(j, i)) > dblWidth Then dblWidth = frmCur.TextWidth(.TextMatrix(j, i)) End If Next .ColWidth(i) = dblWidth + dblIncWidth + 100 End If Next End With End Sub然后再调出 : Call AdjustColWidth(frmLineHis, myFlexGrid)
这个过程的关键就是要知道form窗体有TextWidth方法,Textwidth方法则返回一个文本字符串的宽度值。
因为知道了Textwidth方法,我们就能使任何输入内容为文本字符类控件自动调节到最适合宽度,因为还有TextHeight方法,我们就能调整任何输入内容为文本字符类控件自动调节到最适合高度。我们知道label控件有AutoSize属性,而把上述代码封装起来就是输入内容为文本字符类控件的AutoSize属性。
问题虽小,但是有一个从特殊到一般的思考过程。任何问题都能归类,任何解决问题的方法提升后都能解决一类问题!
*自动调整MSHFlexGrid各列列宽为最合适的宽度参考文章:http://li25686686.blog.163.com/blog/static/3684873720105644729263/
相关文章推荐
- VB窗口大小,控件自动调整的问题
- 把界面上静态文本控件的尺寸根据文本的内容自动调整大小
- vb.net控件随窗口大小调整
- 如何实现控件随对话框大小变化而自动调整大小和位置
- 控件随对话框大小变化而自动调整大小和位置
- C#控件随窗体大小自动调整
- vb窗体中控件自动随窗体变化大小
- 对话框程序自动调整控件大小和位置的宏
- 让VB自动改变控件大小
- MFC如何使控件大小随着对话框大小自动调整
- 让VB自动改变控件大小
- TextArea控件自动调整大小
- 把界面上静态文本控件的尺寸根据文本的内容自动调整大小(转)
- 如何实现控件随对话框大小变化而自动调整大小和位置
- 如何实现控件随对话框大小变化而自动调整大小和位置
- 根据控件大小自动调整字体大小方法(C#)
- MFC如何使控件大小随着对话框大小自动调整
- 一劳永逸让VB自动改变控件大小
- MFC如何使控件大小随着对话框大小自动调整
- Android自定义控件之自定义Text,令控件中的字根据控件高度自动调整大小-FenGKun