Ответить на сообщение
Вернуться к теме
Вы отвечаете на сообщение:
ник: osmor Попробую: Сначала класс.
'внутренняя переменная соответствующая свойству Button 'WithEvents указывает что будут обрабатываться события данного объекта (в нашем случает это кнопка) Dim WithEvents m_bt As VB.CommandButton 'внутренняя переменная соответствующая свойству OwnerForm в нем будет сохраняться форма содержащая кнопку Dim m_OwnerForm As Form 'описание процедуры для получения значения свойства, она будет вызываться всякий раз когда кода будет попытка считать значение 'свойства т.е. ЭкземплярКласса.Button 'будет возвращено значение сохраненное в переменной m_bt 'кстати на мой взгляд здесь ошибка 'вместо Set bt = m_bt должно быть 'Set button = m_bt Public Property Get Button() As VB.CommandButton Set bt = m_bt End Property 'описание процедуры для ПРИСВОЕНИЯ значения свойству, она будет вызываться всякий раз когда кода будет попытка присвоить 'свойству значение ' т.е. Set ЭкземплярКласса.Button = me.Кнопка0 'в этом случае переданное значение будет сохранено в переменной m_bt Public Property Set Button(bt As VB.CommandButton) Set m_bt = bt End Property 'то же самое но для свойства OwnerForm Public Property Get OwnerForm() As Form Set OwnerForm = m_OwnerForm End Property Public Property Set OwnerForm(frm As Form) Set m_OwnerForm = frm End Property 'процедура которая выполнится при возникновении события Click нашено объекта который мы описали как WithEvents Private Sub m_bt_Click() Select Case m_bt.Tag Case "#" Unload m_OwnerForm Case Else MsgBox "O, Yes! " & m_bt.Caption, vbInformation End Select End Sub
Option Explicit 'объявляем переменную (массив) на уровне формы, в нем будет сохраняться экземпляры нашего клаccа 'если объявить переменную в процедуре то переменная разрушиться сразу после окончания процедуры, а нам нужно что бы она 'жила пока открыта форма Dim m_bt() As Object Private Sub Form_Load() Dim bt As Object, i As Integer, cl As Object 'при загрузке формы определяем размер массива для сохранения экземпляров класса ReDim m_bt(2) 'для всех элементов массива For i = 0 To UBound(m_bt) ' на форме создаем кнопку в именем btИндексВМАссиве Set bt = Controls.Add("VB.CommandButton", "bt" & i) 'делаем ее видимой bt.Visible = True 'позиционируем кнопку bt.Move (ScaleWidth - bt.Width) / 2, bt.Height * (i + 1) 'создаем экземпляр класса clsBT Set cl = New clsBT ' говорим что свойство Button в созданном ЭКЗЕМПЛЯРЕ класса будет равно 'созданной кнопке Set cl.Button = bt 'если это последний элемент массива, то у него будет другая подпись и свойство TAG If i = UBound(m_bt) Then bt.Tag = "#" bt.Caption = "Close" ' присваиваем свойство OwnerForm в этом ЭКЗЕМПЛЯРЕ класса равным текущей форме Set cl.OwnerForm = Me Else bt.Caption = "Button " & i + 1 End If 'добавляем созданный экземпляр класса в массив Set m_bt(i) = cl Next i End Sub
Ваше имя:
Пароль:
Сообщение:
Прикрепить:
Для вставки смайлов в текст щелкните по значку.