| 发表于:2007-06-19 23:28:57 楼主 |
最近做产品一直被combox不支持多国语言的问题困扰,得到了csdn不少兄弟的帮助,很遗憾最终也没能完美解决,索性用自己有限的水平写一个ocx,继承了vb自带combox的主要方法属性,实现原理非常简单,richtexbox+combox组合 但是现在有一个问题,在引用ocx后,在ocx的事件中写入代码的时候,总是提示运行时错误330,非法参数。因为不支持持久性不能写对象 (只写了一个dropdown事件) 抛块砖,希望能引出高手的玉,完善的有分 以下是代码: option explicit private imaxlength as integer private iwidth, iheight as integer private const blnenabled as boolean = true private const blnlocked as boolean = false public event dropdown() property get text() as string text = cmbbox.text end property property let text(byval str as string) cmbbox.text = str end property property get listindex() as integer listindex = cmbbox.listindex end property property let listindex(byval i as integer) cmbbox.listindex = i end property property get list(i as integer) as string list = cmbbox.list(i) & " " end property property get listcount() as integer listcount = cmbbox.listcount end property property get enabled() as boolean enabled = usercontrol.enabled end property property let enabled(byval bln as boolean) usercontrol.enabled = bln cmbbox.enabled = bln end property property get locked() as boolean locked = cmbbox.locked end property property let locked(byval bln as boolean) cmbbox.locked = bln txtrich.locked = bln end property public function additem( _ byref stext as string, _ optional byval iindex as long) cmbbox.additem stext, iindex end function public sub clear() cmbbox.clear txtrich.text = " " end sub private sub cmbbox_click() txtrich.text = cmbbox.text end sub private sub cmbbox_dropdown() raiseevent dropdown end sub private sub txtrich_change() cmbbox.text = txtrich.text end sub private sub usercontrol_initialize() txtrich.zorder 1 end sub private sub usercontrol_readproperties(propbag as propertybag) iwidth = propbag.readproperty( "width ", cmbbox.width) usercontrol.enabled = propbag.readproperty( "enabled ", blnenabled) cmbbox.enabled = usercontrol.enabled cmbbox.locked = propbag.readproperty( "locked ", blnlocked) txtrich.locked = propbag.readproperty( "locked ", blnlocked) end sub private sub usercontrol_resize() cmbbox.left = 0 cmbbox.top = 0 cmbbox.width = usercontrol.width usercontrol.height = cmbbox.height txtrich.top = cmbbox.top + 30 txtrich.left = cmbbox.left + 30 txtrich.width = cmbbox.width - 300 txtrich.height = cmbbox.height - txtrich.top * 2 end sub private sub usercontrol_writeproperties(propbag as propertybag) call propbag.writeproperty( "width ", iwidth, cmbbox.width) call propbag.writeproperty( "enabled ", usercontrol.enabled, blnenabled) call propbag.writeproperty( "locked ", cmbbox, blnlocked) call propbag.writeproperty( "locked ", txtrich, blnlocked) end sub 有兴趣的留下mail我发源程序 |
|
|
|
|