Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Передача Event из класса в форму Добавлено: 03.02.17 08:05  

Автор вопроса:  Lazy caT | ICQ: 36209244 
Здравствуйте уважаемые.

Не подскажите ли как, в VB6, можно передать событие из класса в форму?

Есть код:
Форма:


Private WithEvents UsersGroups As cGroup

Private Sub Form_Load()
    Set UsersGroups = New cGroup
    UsersGroups.Add "Вася"
    UsersGroups.Add "Петя"
    UsersGroups.Add "Дима"
    UsersGroups.Item("Петя").Status = stOnline
End Sub

Private Sub UsersGroups_Changed(ByVal uName As String)
    MsgBox uName
End Sub


и два класса
первый, cGroup:

Option Explicit

Private WithEvents CollMember As cUser

Public Event Changed(ByVal uName As String)

Private UsersArray As Collection

Public Function Add(ByVal Name As String, Optional Status As eStatus = stOffline) As cUser
    Dim objNewMember As cUser
    Set objNewMember = New cUser
    With objNewMember
        .UserName = Name
        .Status = Status
    End With
    UsersArray.Add objNewMember, Name
    Set Add = objNewMember
    Set objNewMember = Nothing
End Function

Public Function Item(IndexKey As Variant)
    Set Item = UsersArray.Item(IndexKey)
End Function

Public Sub Remove(IndexKey As Variant)
    UsersArray.Remove IndexKey
End Sub

Private Sub Class_Initialize()
    Set UsersArray = New Collection
End Sub

Private Sub Class_Terminate()
    Set UsersArray = Nothing
End Sub

Private Sub CollMember_Changed(ByVal uName As String)
    RaiseEvent Changed(uName)
End Sub


и второй, cUser:
Option Explicit
 
Public Enum eStatus
    stOffline
    stOnline
End Enum

Public Event Changed(ByVal uName As String)

Private uName As String
Private uStatus As eStatus

Public Property Get UserName() As String
    UserName = uName
End Property

Public Property Let UserName(ByVal sValue As String)
    uName = sValue
End Property

Public Property Get Status() As eStatus
    Status = uStatus
End Property

Public Property Let Status(ByVal eValue As eStatus)
    uStatus = eValue
    RaiseEvent Changed(uName)
End Property



При изменении, в форме, статуса "Пети" на stOnline, Event из cUser передается только в cGroups.

А как можно передать Event из класса cUser в форму?

Заранее спасибо.

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Lazy caT



ICQ: 36209244 

Вопросов: 7
Ответов: 7
 Профиль | | #1 Добавлено: 03.02.17 08:10
Да, забыл добавить, при добавлении в форму
  1. Private WithEvents User As cUser
и
  1. Private Sub User_Changed(ByVal uName As String)
  2.     MsgBox uName
  3. End Sub



ничего не меняется.

Ответить

Номер ответа: 2
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #2 Добавлено: 19.02.17 04:00
Private WithEvents User As New cUser
работает?

Ответить

Номер ответа: 3
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #3 Добавлено: 19.02.17 04:02
Просто вызвать User_Changed как процедуру тоже нельзя?

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам