是否可以使用控件而不将其放在VB6中的表单上?

时间:2014-10-16 19:37:53

标签: forms vb6 controls

我非常肯定这个问题的答案,但是我尝试了各种各样的事情来让一个非常顽固的项目工作。一个想法是尝试通过控件运行代码而不在表单上定义它。

因此,例如,我的原始代码如下所示:

frmProcess.MyViewer.MaxPageSize = 100
frmProcess.MyViewer.ResetPages
frmProcess.MyViewer.AddPageToView "C:\TestPage1.txt"

我已将其更改为:

Dim objViewer As MyViewer
objViewer.MaxPageSize = 100
objViewer.ResetPages
objViewer.AddPageToView "C:\TestPage1.txt"

我得到一个错误窗口,其中包含"运行时错误' 91':对象变量或没有设置块变量"。

但似乎没有一种方法来设定'这个控制。这是不可能的,还是有另一种方法可以做到不需要表格?

编辑:我最终放弃了整个活动路径,因为找到了一个替代解决方案,解决了我在这个窗体冻结时遇到的问题。我不想删除这个问题以防其他人出现并且可以从答案中受益,这些答案可能很有用。

3 个答案:

答案 0 :(得分:1)

在表单上试试。

Dim objViewer As MyViewer

Set objViewer = Controls.Add("MyViewer", "MyViewer1")
objViewer.MaxPageSize = 100
objViewer.ResetPages
objViewer.AddPageToView "C:\TestPage1.txt"

答案 1 :(得分:1)

我过去曾遇到过类似的情况。如果所有其他方法都失败了,你必须使用表格,你可以做一些粗糙的事情,如

1)将控件的.Left属性设置为负数(如-10000),这样控件就不会出现在窗体上,用户看不到它

2)使整个表格不可见..

答案 2 :(得分:0)

ActiveX控件通常需要来自其容器的许多服务,例如持久性。它们也被包装和标记"以设置他们支持的实例化类型的方式。

请参阅Introduction to ActiveX Controls

虽然完全可以以使许多可用服务可选的方式创建控件,但大多数控件都是从需要许多控件的模板代码创建的。并且大多数控件在运行时都可见"将需要集装箱服务。

然而,这并不意味着控件不能设计为支持无容器实例化。这种控件的一个众所周知的例子是Microsoft Script Control 1.0(MSScriptControl.ScriptControl),它可以任意使用。