在写自定义控件(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进行单位的转换试试