问一个VB中的面向对象的问题

hongbo163 2004-08-31 03:13:44
Public mForm As Form

Private Sub Class_Initialize()
Set mForm = New Form
End Sub
==============================
执行以上代码会出错
改成以下格式可以顺利运行
Public mForm As Form

Private Sub Class_Initialize()
Set mForm = New Form1
End Sub
===============================

从面向对象的角度看,执行中出现错误的代码是很好理解的
无非是定义一个form对象,然后实例化而已。
但是好像在VB中,实例化是否必须指向一个已经存在的form对象才行
例如以上例子中的form1.


大家讨论一下


...全文
111 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jam021 2004-08-31
  • 打赏
  • 举报
回复
关注关注
深渊的水影 2004-08-31
  • 打赏
  • 举报
回复
学习学习
hongbo163 2004-08-31
  • 打赏
  • 举报
回复
VB确实是个伪面向对象

就像Form1

又可以是个变量名,例如 msgbox Form1.caption
又可以是个类名,例如 dim obj as Form1
hongbo163 2004-08-31
  • 打赏
  • 举报
回复
嗯,大头的理解挺深入的
hhjjhjhj 2004-08-31
  • 打赏
  • 举报
回复
Form 与Form1有本质的区别。
当新建一工程时,对象浏览器上“所有库”的下拉列表中就可以看到"工程1"。VB程序本身就是一个库,Form1是"工程1"的对象,Form是VB的对象,当"工程1"运行时,它里面的可允许NEW的对象(如Form1)就可以NEW。当"工程1"运行时,想NEW一个VB中的Form,就得动用VB程序,这就变成对VB的VBE环境操作了。其实,ActiveX DLL 和ActiveX EXE就是另外的程序,VB做的程序只是对别的程序进行操控而已。
zmrok 2004-08-31
  • 打赏
  • 举报
回复
VB只是一个伪面向对象的语言
apple1980 2004-08-31
  • 打赏
  • 举报
回复
我认为
实例化指向一个已经存在的form对象
是指,把这个已经存在的FORM对象,做为一个类,进行继承,派生。实例化后的具有原窗体的特性。

如想单纯的增加窗体,VB应该有它的基类。
东方冉 2004-08-31
  • 打赏
  • 举报
回复
先建立一个窗体form1

Public mForm As Form
Private Sub Class_Initialize()
For i = 1 To NUM 'NUM是想动态添加的窗体个数
Set mForm = New Form1
mForm.show
NEXT
End Sub
hongbo163 2004-08-31
  • 打赏
  • 举报
回复
如果我想实现一个动态增加窗体的效果,又该怎么实现呢?

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧