VB6.0对象变量声明为command1时出错
VB实用教程上提到,可以定义对象变量,举例如下:
dim formVariable as form1
dim buttonVariable as command1
dim textVariable as textbox
我把以上三条语句输入VB,运行后:
第一、三条语句没有出错,第二条语句报错:编译错误,用户定义类型未定义。
http://www.moon-soft.com/program/bbs/readelite5824.htm 此帖子说,可以用控件名作为对象变量的类型
1.我不明白form1和command1有什么本质区别吗?不都是一个控件的名称吗?为什么form1就不报错?
2.教材上说:“对象类型包括:对象名称(name属性),控件集合(control,textbox),窗体集合,屏幕对象等。“我不理解的是 对象名称 怎么能作为 对象类型。因为对象变量是:把一个变量声明成一种对象类型,然后对这个变量操作就是对所有这类对象操作。所以我可以理解dim textVariable as textbox;因为textbox是代表一种对象的类型。而dim buttonVariable as command1,我就没法理解。command1是具体到的某一个对象,而不是某一类对象。我如果执行“buttonVarible.caption=按钮”这条语句,到底是哪些控件的caption属性变成了“按钮”两字?是所有的CommandButton类型的控件的caption属性都改成了 " 按钮 " 吗?
3.如果要把第二条语句修改正确,如何更改?
[解决办法]
声明对象变量的As后,只能是类名而不能是类的实例,VB中的Form很特殊,每个窗体都是一个私有类,这也是容易让初学者混淆的地方。
commandbutton才是类名,command1只是其一个实例,不能用于声明。
[解决办法]
1、按照面向对象的方法可以这么理解。
Form跟Form1都是类,相当于Form1继承了Form,所以第一条语句正确。
Command1是由CommandButton类实例化的一个对象而不是类,所以第二条语句错误。
TextBox也是类,所以第三条语句正确。
如果对VB中的类不少很了解,可以察看对象浏览器。
2、你看得教材因该是比较糟糕的,建议读MSDN文档。
3、dim buttonVariable as CommandButton