| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 690 人关注过本帖
标题:[求助]试将控件数组作参数传递给子过程,出错,原因何在?,
只看楼主 加入收藏
wantvb
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-7-19
收藏
 问题点数:0 回复次数:5 
[求助]试将控件数组作参数传递给子过程,出错,原因何在?,

想用下面这个非常简单的程序试验一下'将控件数组作为参数传递给子过程'
我先用'复制->粘贴'的方法在窗体上建了一个image类型的控件数组box(0),box(1)。然后添加下面代码:
窗体:
Dim i As Integer

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyD Then
Call inline(i, box())
End If
End Sub

模块:
Public Sub inline(i As Integer, box() As Image)
For i = 0 To 1
box(i).Top = 600
Next i
End Sub

预期是:当按下键盘D键时将box(0)和box(1)的top值都变成600。

但是运行时出错了,说是"编译错误:类型不匹配:缺少数组或用户定义类型".
请问这是什么原因?如何更正?

[此贴子已经被作者于2006-7-19 3:02:17编辑过]

搜索更多相关主题的帖子: 控件 参数 
2006-07-19 02:54
wantvb
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-7-19
收藏
得分:0 
又试了一回,有点儿收获,但还是不很理想

刚才将代码修改成下面样子:
窗体:
Dim i As Integer

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyD Then
Call inline(i, box)
End If
End Sub
模块:
Public Sub inline(i As Integer, box)
For i = 0 To 1
box(i).Top = 600
Next i
End Sub

虽然可以正常运行了,但是又出现一个问题:参数box由于没有被指定类型而被默认成了Variant型。于是在编写子过程时系统就不会对box进行类型检查了,很不方便啊。所以还是希望有其它更好的解决方法。

[此贴子已经被作者于2006-7-19 4:51:46编辑过]

2006-07-19 04:48
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-19 07:38
阿牛不是牛
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-7-12
收藏
得分:0 

试试引用看行不?用 ByRef。我还没试过整个对象数组传递,单个对象的话用 ByRef 引用即可。


阿牛不是牛,可他确实牛。
2006-07-19 13:36
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-19 17:22
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

有個問題要說明一下, 即使你在設計時用了 控件數組
Image 類型的 box(0), box(1).......
但在運行時對於 box 並不是 Image 類型, 而是 Object 類型,
(可以通過 Debug.Print TypeName(box) 得知)

將 box() As Image 改爲 box As Object
....
...
沒有了強類型檢查...


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-07-19 20:30
快速回复:[求助]试将控件数组作参数传递给子过程,出错,原因何在?,
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034060 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved