ActiveX 文档视口

ActiveX 文档不是一个独立的应用程序─ 必须在容器应用程序中查看它。在容器应用程序中的某个区域可以看到该文档,这个区域叫做视口。下图示出 Internet Explorer 的视口。

一般来说,用户可以改变视口的大小,而开发者却不能控制。然而,可以使用 SetViewPort 方法操作来决定 ActiveX 文档的哪一部分显示在视口中。让我们首先检查视口的其它特性,因为理解它们有助于理解 SetViewPort 方法。

ViewPortTop、ViewPortLeft、ViewPortHeight、和 ViewPortWidth 属性

ViewPortHeight、ViewPortWidth、ViewPortLeft、和 ViewPortTop 属性是只读属性。它们返回相对于 ActiveX 文档的视口坐标。下图中 Internet Explorer 覆盖了 ActiveX 文档。Viewport 属性被调用。注意,这里 ActiveX 文档比视口大。实际上,当视口太小不能显示整个文档时,会显示滚动条。(把 ScrollBars 属性设置为 False 可以关闭滚动条。注意,该属性为只读,必须在设计时设置)。

下图给出了用户为查看文档的其余部分而滚动视口后的 Viewport 属性;注意,只有 ViewPortLeft 和 ViewPortTop 属性改变了:

最后,下图给出了用户改变视口大小后的 Viewport 属性。注意,现在 ViewPortHeight 和 ViewPortWidth 也改变了:

MinHeight、MinWidth 属性

因为 ActiveX 文档被另一个应用程序所包含,所以,容器应用程序给 ActiveX 文档多少空间是不能控制的。但是,在显示滚动条之前,可以通过设置 MinHeight 和 MinWidth 属性来指定 ActiveX 文档需要的最小空间。

设计 ActiveX 文档时,UserDocument 设计器的 Height 和 Width 成为 MinHeight 和 MinWidth 属性的缺省设置值。同样,MinHeight 和 MinWidth 属性也被设置为 UserDocument 的 ScaleMode。

在下图中,ActiveX 文档比视口小。此时容器没有滚动条,视口的“空白”部分用 ActiveX 文档的 BackColor 来填充。如果用户改变了容器的大小,使得视口比 ActiveX 文档小,那么将显示出滚动条。

MinHeight 和 MinWidth 属性是可设置的。换句话说,只要设置 MinHeight 和 MinWidth 属性大于 Viewport 属性,就可在容器上显示滚动条。例如,假设一个 ActiveX 文档允许用户插入图象到 PictureBox 控件中,并且控件自动地把大小调整为图象的大小。通过设置 MinHeight 和 MinWidth 属性使它们大于控件,就可保证显示出滚动条,使用户可以观察整个图象:

Private Sub Picture1_Resize()
   UserDocument.MinHeight = _
      Picture1.Height + 100
   UserDocument.MinWidth = _
      Picture1.Width + 100
End Sub

使用 SetViewPort 方法滚动

使用 SetViewPort 方法可以使视口滚动到指定的坐标。该方法需要两个参数,Top 和 Left 参数。例如,把这两个参数设置为放置在文档上的 TextBox 的 Left 和 Top 属性,就可以保证拥有焦点的 TextBox 总是显示在 ActiveX 文档的左上角。如下图:

HScrollSmallChange 和 VScrollSmallChange 属性

HScrollSmallChange 和 VScrollSmallChange 属性的功能与 SmallChange 属性(HScolllBar 和 VScrollBar 控件的属性)相似。

注意 没有 "HScrollLargeChange" 或 "VScrollLargeChange" 属性,因为视口自动处理它。"LargeChange" 值由视口的当前高和宽来决定。