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

VB dll中private 对象模块参数有关问题

2012-01-24 
VB dll中private 对象模块参数问题初学VB小弟我遇到这样一个问题现在把相关代码贴如下:PublicSubhit(form1

VB dll中private 对象模块参数问题
初学VB   小弟我遇到这样一个问题现在把相关代码贴如下:
Public   Sub   hit(form1   As   CommandButton,   form2   As   CommandButton)

    Dim   intf1,   intf2,   ints1,   ints2   As   Integer


   
    If   (form1.Left   +   form1.Width   >   form2.Left)   And   form1.Left   <   form2.Left   And   Abs((form1.Top   -   form2.Top)   <   form1.Top)   Then
        intf1   =   -1
        ints1   =   1
    ElseIf   (form2.Left   +   form2.Width   >   form1.Left)   And   form2.Left   <   form1.Left   And   Abs((form1.Top   -   form2.Top)   <   form1.Height)   Then
        intf1   =   1
        ints1   =   -1
    End   If

    If   (form1.Top   +   form1.Height   >   form2.Top)   And   form1.Top   <   form2.Top   And   Abs((form1.Left   -   form2.Left)   <   form1.Width)   Then
        intf2   =   -1
        ints2   =   1
    ElseIf   (form2.Left   +   form2.Width   >   form1.Left)   And   form2.Left   <   form1.Left   And   Abs((form1.Top   -   form2.Top)   <   form1.Top)   Then
        intf2   =   1
        ints2   =   -1
    End   If

    form1.Left   =   form1.Left   +   intf1   *   100
    form1.Top   =   form1.Top   +   intf2   *   100
    form2.Left   =   form2.Left   +   ints1   *   100
    form2.Top   =   form2.Top   +   ints2   *   100
 

End   Sub

以上的代码在生成DLL文件的时候被提示   private对象模块不能做为参数类型(该段代码如果不写成DLL,而在程序内时可正常使用)
而如果声明成private   过程却无法被外部引用   这个时候就需要声明一个公共函数来调用它,可小弟试者写了好多都无法实现。

    上面的代码主要是想判断两个commandbutton   控件的碰撞问题,当窗体中有2个以上的commandbutton控件,那么就必须两两判断那势必多次使用到该过程,所以小弟我就想着写一个DLL来共调用。DLL的注册和调用问题小弟熟悉,问题的关键在于我怎么把控件赋给一个private过程或者如何把他写成一个public过程。

[解决办法]
问题在这里
Public Sub hit(form1 As CommandButton, form2 As CommandButton)
改成声明为:
Public Sub hit(form1 As Object, form2 As Object)
为了防止传入错误的参数类型,可以在里面验证,如
if not (typeof form1 is vb.commandbutton) then err.raise 5
if not (typeof form2 is vb.commandbutton) then err.raise 5

[解决办法]
在类模块里声明为
Private MyForm As Object

热点排行