首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

在写自定义控件(ActiveX控件)的时候,UserControl的ScaleMode设为Pixel。可使用这个控件的窗体上又变回Twip。何故?解决方法

2012-02-04 
在写自定义控件(ActiveX控件)的时候,UserControl的ScaleMode设为Pixel。可使用这个控件的窗体上又变回Twip。

在写自定义控件(ActiveX控件)的时候,UserControl的ScaleMode设为Pixel。可使用这个控件的窗体上又变回Twip。何故?
我在写一个自定义的容器控件(ControlContainer为True)。容器控件中加入的其他控件,坐标系都是像素(这个容器的ScaleMode应该是3   VbPixels)。

写控件的时候,我已经把UserControl的ScaleMode设为3了。可是把它拖到窗体,在里面加上的其他控件,长宽都显示的是Twip的单位。

试过几个办法,比如在控件的InitProperties中设定   Ambient.ScaleUnits   =   "Pixel ",显示只读错误。
另外一个办法是在控件的InitProperties中设定:UserControl.Extender.Parent.ScaleMode   =   vbPixels。无效。

应该怎么办呢?

[解决办法]
控件长宽的scalemode是由放置它的容器决定的,就像picturebox,你即使将它的scalemode设定为pixel,放在scalemode为Twip的窗体上,它的长宽仍就是Twip单位的,没办法,只能修改容器的scalemode。

另外,你要弄清楚一个概念,虽然你的控件长宽显示的是twip单位,但是它内部仍然是你设定的scalemode(pixel),并不会影响控件的内部结构和操作。
[解决办法]
我大概明白你的意思,你是专指可作为容器的控件,也自己试了一下,确实不管如何设置,里面的东西确实以twip为单位

一时也找不出解决方法,要不先screen.TwipsPerPixelX 和screen.TwipsPerPixely进行单位的转换试试

热点排行