VB ……数组,不允许作为对象模块的public 成员
以下代码摘自某教材的关于MDL窗体那一章,我原封不动的copy的,编译时,出现如题的对话框,请问该如何解决,能否帮忙写个解决问题的代码?多谢。PublicCountFor...
以下代码摘自某教材的关于MDL窗体那一章,我原封不动的copy的,编译时,出现如题的对话框,请问该如何解决,能否帮忙写个解决问题的代码?多谢。
Public CountForm As Integer '新建窗体计数
Public FileState(10) As Integer '窗体状态
Public document(10) As New frmchild '窗体对象数组
Private Sub MDIForm_Load()
CountForm = 1
End Sub
Private Sub mnuNew_Click()
'菜单,创建新的编辑区
document(CountForm).Tag = CountForm
document(CountForm).Caption = "无标题: " & CountForm
document(CountForm).Show
CountForm = CountForm + 1
End Sub
Private Sub mnuExit_Click()
Dim strMsg As String
Dim strFileName As String
Dim intResponse As Integer
'判断文本是否被改变
For i = 1 To 10
strFileName = " "
If FileState(i) = 1 Then
strFileName = document(i).Caption
strMsg = "[" & strFileName & "]中的文本已经改变,"
strMsg = strMsg & vbCrLf
strMsg = strMsg & "希望保存吗?"
intResponse = MsgBox(strMsg, 51, MDIWrite.Caption)
Select Case intResponse
Case 6
If Left(Screen.ActiveForm.Caption, 3) = "无标题" Then
'文件未保存,获取文件名
strFileName = "无标题.txt"
strFileName = GetFileName(strFileName)
Else
'窗体标题包含打开的文件名
strFileName = Screen.ActiveForm.Caption
End If
If strFileName <> "" Then
FileState(i) = 0
MsgBox "这是保存文件的示意!"
End If
Case 7 '选择"否",卸载
Case 2 '选择"取消",卸载
End Select
End If
Unload document(i) '依次卸载窗体
Next i
End
End Sub 展开
Public CountForm As Integer '新建窗体计数
Public FileState(10) As Integer '窗体状态
Public document(10) As New frmchild '窗体对象数组
Private Sub MDIForm_Load()
CountForm = 1
End Sub
Private Sub mnuNew_Click()
'菜单,创建新的编辑区
document(CountForm).Tag = CountForm
document(CountForm).Caption = "无标题: " & CountForm
document(CountForm).Show
CountForm = CountForm + 1
End Sub
Private Sub mnuExit_Click()
Dim strMsg As String
Dim strFileName As String
Dim intResponse As Integer
'判断文本是否被改变
For i = 1 To 10
strFileName = " "
If FileState(i) = 1 Then
strFileName = document(i).Caption
strMsg = "[" & strFileName & "]中的文本已经改变,"
strMsg = strMsg & vbCrLf
strMsg = strMsg & "希望保存吗?"
intResponse = MsgBox(strMsg, 51, MDIWrite.Caption)
Select Case intResponse
Case 6
If Left(Screen.ActiveForm.Caption, 3) = "无标题" Then
'文件未保存,获取文件名
strFileName = "无标题.txt"
strFileName = GetFileName(strFileName)
Else
'窗体标题包含打开的文件名
strFileName = Screen.ActiveForm.Caption
End If
If strFileName <> "" Then
FileState(i) = 0
MsgBox "这是保存文件的示意!"
End If
Case 7 '选择"否",卸载
Case 2 '选择"取消",卸载
End Select
End If
Unload document(i) '依次卸载窗体
Next i
End
End Sub 展开
3个回答
展开全部
常数、固定长度字符串、数组、自定义类型与 Declare 语句不能是对象模块中的 Public 成员
并非所有对象模块中的变量都可声明成 Public。然而,按缺省规定,过程是 Public,且 Property 过程在语法结构上可模拟变量。这个错误的起因与解决方法如下所示:
在对象模块中声明了一个 Public 常数。
虽然不能在对象模块中声明 Public 常数,但可以创建一个同名的Property Get 过程。若不能创建同名的 Property Let 或 Property Set 过程,实际上创建了一个只读属性,其用法与常数相同。
在对象模块中声明了一个 Public 类型的固定长度字符串。
可用一组 Property 过程仿真固定长度字符串,并截掉超出长度的字符串数据,或通知用户超出长度。
在对象模块中声明了一个 Public 数组。
虽然过程不能返回数组,但可返回一个包含数组的 Variant。要仿真类模块中的 Public 数组,可用一组Property 过程,它们接受与返回包含数组的 Variant 。
在对象模块中放了一个 Declare 语句。
Declare 语句隐含着公用的意思,可在 Declare 语句之前加上一个 Private 关键字。
并非所有对象模块中的变量都可声明成 Public。然而,按缺省规定,过程是 Public,且 Property 过程在语法结构上可模拟变量。这个错误的起因与解决方法如下所示:
在对象模块中声明了一个 Public 常数。
虽然不能在对象模块中声明 Public 常数,但可以创建一个同名的Property Get 过程。若不能创建同名的 Property Let 或 Property Set 过程,实际上创建了一个只读属性,其用法与常数相同。
在对象模块中声明了一个 Public 类型的固定长度字符串。
可用一组 Property 过程仿真固定长度字符串,并截掉超出长度的字符串数据,或通知用户超出长度。
在对象模块中声明了一个 Public 数组。
虽然过程不能返回数组,但可返回一个包含数组的 Variant。要仿真类模块中的 Public 数组,可用一组Property 过程,它们接受与返回包含数组的 Variant 。
在对象模块中放了一个 Declare 语句。
Declare 语句隐含着公用的意思,可在 Declare 语句之前加上一个 Private 关键字。
追问
这个答案是在百度中能搜到的,对我来说没用,因为我看不懂,我是初学者。
展开全部
Declare 语句之前加上一个 Private 关键字
一般是声明出错!
例如你的API声明为Declare Function FindWindowEx Lib "user32.........xA" 就不行
改为Private Declare Function FindWindowEx Lib "user32.........xA就行了!yeh!!我也是新手!别人的回答里面最后一句才是重点!我晕
一般是声明出错!
例如你的API声明为Declare Function FindWindowEx Lib "user32.........xA" 就不行
改为Private Declare Function FindWindowEx Lib "user32.........xA就行了!yeh!!我也是新手!别人的回答里面最后一句才是重点!我晕
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
eclare 语句不能是对象模块中的 Public 成员
并非所有对象模块中的变量都可声明成 Public。然而,按缺省规定,过程是 Public,且 Property 过程在语法结构上可模拟变量。这个错误的起因与解决方法如下所示:
在对象模块中声明了一个 Public 常数。
虽然不能在对象模块中声明 Public 常数,但可以创建一个同名的Property Get 过程。若不能创建同名的 Property Let 或 Property Set 过程,实际上创建了一个只读属性,其用法与常数相同。
在对象模块中声明了一个 Public 类型的固定长度字符串。
可用一组 Property 过程仿真固定长度字符串,并截掉超出长度的字符串数据,或通知用户超出长度。
在对象模块中声明了一个 Public 数组。
虽然过程不能返回数组,但可返回一个包含数组的 Variant。要仿真类模块中的 Public 数组,可用一组Property 过程,它们接受与返回包含数组的 Variant 。
在对象模块中放了一个 Declare 语句。
Declare 语句隐含着公用的意思,可在 Declare 语句之前加上一个 Private 关键字。
并非所有对象模块中的变量都可声明成 Public。然而,按缺省规定,过程是 Public,且 Property 过程在语法结构上可模拟变量。这个错误的起因与解决方法如下所示:
在对象模块中声明了一个 Public 常数。
虽然不能在对象模块中声明 Public 常数,但可以创建一个同名的Property Get 过程。若不能创建同名的 Property Let 或 Property Set 过程,实际上创建了一个只读属性,其用法与常数相同。
在对象模块中声明了一个 Public 类型的固定长度字符串。
可用一组 Property 过程仿真固定长度字符串,并截掉超出长度的字符串数据,或通知用户超出长度。
在对象模块中声明了一个 Public 数组。
虽然过程不能返回数组,但可返回一个包含数组的 Variant。要仿真类模块中的 Public 数组,可用一组Property 过程,它们接受与返回包含数组的 Variant 。
在对象模块中放了一个 Declare 语句。
Declare 语句隐含着公用的意思,可在 Declare 语句之前加上一个 Private 关键字。
追问
这个答案是在百度中能搜到的,对我来说没用,因为我看不懂,我是初学者。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询