查无此鸟的博客 一个不误正业的交通工程师的个人网站

[新浪博客][博文搬家]表格宽度自动适应表格内容的研究(VB6.0)

标签:野生程序猿 | 发表时间:2011-12-07 08:51:44 | 更新时间: 2020-04-23 19:08:29 | 阅读数:212 | 评论数:0 | 字数:1000

本文似乎是最早在baidu博客(也就是hi)发表的,也有可能是在博客园,已经记不太清楚,后转载至新浪博客,具体时间为2011-12-07 08:51:44,新浪博客的地址为:http://blog.sina.com.cn/s/blog_638f985701010ncb.html 。
0 引言 经常需要从数据库或者其他文件中将数据显示到网格控件中(如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属性设为True,Label1的Visibel属性设为False。 2)从文件中读入数据(如何设置MSHFlexGrid1以及读入代码不再详述),在将数据读入网格的同时也将数据读入标签(即将Label1的Caption属性设为数据)。 3)判断当前列的宽度是否小于Labe1的宽度,如果是,则将其宽度设为Label1的宽度,即 if MSHFlexGrid1.ColWidth(0) < Label1.width then MSHFlexGrid1.ColWidth(0)=Label1.width 。 4)以此类推,实现每一列的宽度的自动适应。 2 缺点与优化 2.1 缺点 由于需要将所有数据都要放到Label1的Caption中,代码运行效率将大大降低 2.2 优化 可以建立数组,记录每一列的最大宽度(即Label1的最大宽度),在程序将所有数据读入后再修改网格的宽度,这样可以提高其运行效率。 3 工程实例 编写过一个小程序,其中用到了该方法,其链接是: http: //hi.baidu.com/transteel/blog/item/0472a03ef1274c3b70cf6cff.html 4 结语 数据库功能是VB6.0一个强大的功能,相信如果充分利用可以编写出很好的数据库处理软件,本文讨论的问题是一个小技巧,希望能给各位朋友以帮助,起到抛砖引玉的作用。

版权声明:本文由@查无此鸟创作,采用知识共享 署名-非商业性使用-禁止演绎 3.0 中国大陆许可协议进行许可。除非注明,均为原创文章,请在转载时注明来源,并完整保留本段声明。本文地址: http://liyonggang.net/blog.aspx?id= 2011-12-07



本文评论:
暂无评论……

发表评论:(昵称或评论内容不允许为空!邮箱可不填,但建议填写以备联系,邮箱将不显示在评论中。) 昵称 邮箱

查无此鸟的博客

Copyright©查无此鸟 2020~2022, All Rights Reserved

邮箱:t5lyg@126.com

其他链接

卢昌海的网站 | 鱼の后花园博客) | 新交通人的技术闲谈-知乎 | FROYOs Blog | 博客园 | 鸟哥Linux | 蜂鸟的小窝 | 大眼仔

AutoCAD.NET: Kevin K | 大非sb