| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1217 人关注过本帖
标题:[求助]关于类的问题?
只看楼主 加入收藏
rensheng
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-8-9
收藏
 问题点数:0 回复次数:23 
[求助]关于类的问题?
VB中的类具体是怎么应用的?
搜索更多相关主题的帖子: 应用 
2006-08-11 14:36
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

我覺得你問這個問題很可笑, (VB 中的類具體是怎麽應用的?)

其實你使用 VB 的時候一直在使用類,
例如 App 是一個類, 你會用...
CheckBox, Clipboard, Control........... 等等, 都是 VB 的類啊

有些類不需要你親自實例化, 例如 App,
而有些類則需要你實例化才可以使用, 例如 Collection
-----------------------------------------------------------------------------------
你可能要問怎麽編寫一個類吧 (猜想的)


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-11 15:38
rensheng
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-8-9
收藏
得分:0 
呵呵,就是这个意思.
2006-08-11 17:55
leon2
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:731
专家分:0
注 册:2005-3-18
收藏
得分:0 

就在工程浏览器直接右击工程,选新建->类模块,在出现的框中点确定即可,然后重命名这个类的名,再编代码。

2006-08-11 18:58
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 
簡單的示例:
-------------------------
新建一個類, 在屬性窗口自己定義類的名字 (這裏定義爲 MyCar)
在類模組窗口編寫類的代碼:
------------------------------------------
Option Explicit

'聲明一些類成員(私有爲例):
Private m_Color As OLE_COLOR
Private m_Name As String


'聲明一些事件:
Public Event OnDrive()
Public Event OnStop()


'構造函數, 初始化某些成員
Private Sub Class_Initialize()
m_Color = vbRed
m_Name = "AFX"
End Sub


'定義類的一些屬性(以公有的爲例):
' 以下的屬性僅顯示簡單的功能, 這樣的屬性可以設置爲公有,
' 但有時在寫屬性時, 會對屬性進行必要的修改, 因此寫成以下的形式
Public Property Get Color() As OLE_COLOR ' 可讀屬性
Color = m_Color
End Property
Public Property Let Color(ByVal dwColor As OLE_COLOR) ' 可寫屬性
m_Color = dwColor
End Property

Public Property Get Name() As String
Name = m_Name
End Property
Public Property Let Name(ByVal lpszName As String)
m_Name = lpszName
End Property


' 定義一些類的方法(公有爲例):
Public Sub Drive()
Debug.Print "Running....."
RaiseEvent OnDrive () ' 引發一個事件
End Sub
Public Sub Shutdown()
Debug.Print "Stopped...."
RaiseEvent OnStop() '引發一個事件
End Sub
'--------------------------------------------------------------------------------------================================================


這樣就可以在你的專案裏使用 MyCar 這個類了

Dim WithEvents car As MyCar ' 聲明一個類作爲 Form 模組的成
' 員可以使用類的事件

Private Sub Command1_Click()

Set car = New MyCar ' 實例化
car.Color = vbGreen ' 設置類成員
car.Name = "Benz"

car.Drive ' 調用方法, 會引發一個 OnDrive 事件
car.Shutdown ' 會引發一個 OnStop 事件

Set car = Nothing ' 釋放類實例
End Sub

' 處理事件
Private Sub car_OnDrive()
Debug.Print "Pay attention...."
End Sub

Private Sub car_OnStop()
Debug.Print "You are safe now..."
End Sub

原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-12 07:55
leon2
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:731
专家分:0
注 册:2005-3-18
收藏
得分:0 
对了,想问楼上一个问题:声明属性的关键字 Let 和 Set 有什么不同之处?有人说 Let 是用来设置一个 对象类型的属性 的。但好像并不是那样啊?
2006-08-12 11:22
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

Let 是用來傳值用的, Set 是傳遞引用的, 例如

Private m_CObject As Object


Public Property Set CObject(pObject As Object)
Set m_CObject = pObject
End Property

Public Property Get CObject() As Object
Set CObject = m_CObject
End Property


----------------------------
在引用的時候就要用 Set 傳遞屬性:
'設置引用
Set myClass.CObject = pObject
'或者得到一個引用
Set pObject = myClass.CObject

''''''''''''''''''''''''''''''''''''''''''''
一個很好的例子就是 ADO.Command 物件的 ActiveConnection 屬性
Set hCmd.ActiveConnection = hConn

Set hConn2 = hCmd.ActiveConnection


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-12 13:25
xinfresh
Rank: 4
等 级:贵宾
威 望:13
帖 子:594
专家分:0
注 册:2006-1-13
收藏
得分:0 
不是大陆人吧,怎么全是烦体字,看得头疼

E-mail:xinfresh@QQ:383094053校内:http:///getuser.do?id=234719042
2006-08-23 23:51
学习VB才2天
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1653
专家分:0
注 册:2006-5-4
收藏
得分:0 
是啊  是啊

[GLOW=255,DeepPink,3]我的免费网盘[/GLOW]
2006-08-24 08:47
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-24 12:40
快速回复:[求助]关于类的问题?
数据加载中...
 
   



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

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