比网上其他版本(也包括之前在此发的两次)修正:
去除tab只有9页的限制
修正tab页宽度超过1万后,应该在其他页中的控件会留一部分在当前页
放多个没有left、top或WhatsThisHelpID的控件不会产生错误(只是不会随页变动)
修正tabstop不能保持原值错误
修正鼠标停在tab上会不断刷新占用系统资源甚至内存溢出错误(去除usercontrol_mouseover中refresh)
tab标题头背景透明处理(美化了^_^)
'-------------------------------------------- 修正后仍存在的不足 --------------------------------
1、控件必须编译后使用,否则一旦拖放出新的adodc等会让自定义控件变为不可用状态的控件,TAB则会跳页错乱!
2、tab控件中的WhatsThisHelpID属性被占用(-_-#,没办法,为了省系统资源,好在多数控件有这个属性且基本没人用,偷笑^^)
3、没有WhatsThisHelpID属性的控件不会随页变动
4、如果把本控件的BackColor设成&H00FF00DA& ,则所有放在Tab页上的控件将与背景一起被透明掉。 (本控件会重画放在其上的控件,所以控件也会被透明)
这个问题其实不算问题,没人必须把背景色设的和这个完全一样吧^^,哪怕差1也可以啊,点明这个问题只是要说明本控件的背景透明或任意形状控件的制作原理
原理:
backstyle设为:0
maskColor设为:&H00FF00DA& (这个控件里UserControl的BackColor也要设为:&H00FF00DA&)
在Refresh方法中将在UserControl中重绘好的图作为maskPicture,即:
Set UserControl.MaskPicture = UserControl.Image
这样maskpicture中背景没有被重绘的部分保持&H00FF00DA&(即与maskcolor指定的颜色相同色),该颜色的部分即被透明
(注意,指定了backstyle=0及maskpicture后超出maskpicture大小的部分全部会被透明)!!!
'---------------------------------------------------------比这个前一个版本的是没有用API的,可以在我的资源里找到前两次修改的版本,使用的话还是用这个版本
这几个控件有很多可学的地方,
比如其中的错误处理(网上的源码和我上一个修改版本的源码中错误处理的部分是不太合理的,虽然我和这个控件的其他修改者一样思路,但研究后最终还是用这次发布的这个版本)
比如上一版本中的无API绘图,这个版本有api,因此图大小可变
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
测试.vbp那个是原先旧版的测试,没有跟着新版修改,所以不兼容,此楼新版是经过测试的,编译好的ocx可以直接使用(★必须使用编译好的ocx,原因一楼已经说了★)
对编译好的ocx有疑问或自己要改进的可以直接修改TabSwitch.vbp,再重新编译
1