Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Классы и Public WithEvents / 5 сообщений из 5, страница 1 из 1
11.02.2006, 11:04:12
    #33538664
MVS_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Классы и Public WithEvents
Excel VBA
Убедительно прошу помочь. Все что я мог сделал. Но квалифицированного советника у меня нет.
Создал класс с именем OBFlexGrid
В нем:
Public WithEvents FlexBox As MSFlexGrid
Public WithEvents Layer As MSForms.frame
Public WithEvents Text_box As MSForms.TextBox

Из этих трех объектов, при объявлении в Форме нового объекта OBFlexGrid методом этого класса Add создается элемент управления, которым можно управлять методами и свойствами, описанными в этом же классе. Все это работает.
Но раз все WithEvents обьявлени как Public, то они видны извне. А когда их объявляю как Private, то оно ни видны в самом модуле класса. Что и как нужно сделать, чтобы извне виделись только мои методы и свойства? И вообще правилно ли это у меня организовано.
На всякий случай приведу фрагмент кода в модуле класса OBFlexGrid. 'обявление и метод Add
Option Explicit
Public WithEvents FlexBox As MSFlexGrid
Public WithEvents Layer As MSForms.frame
Public WithEvents Text_box As MSForms.TextBox

Public FlexGROUP As New OBFlexGrid

Public Sub Add(Form As Object, Left As Integer, Top As Integer, Width As Integer, Height As Integer)
With Form
Set FlexGROUP.FlexBox = .Controls.Add("MSFlexGridLib.MSFlexGrid.1")
Set FlexGROUP.Layer = .Controls.Add("Forms.Frame.1")
Set FlexGROUP.Text_box = FlexGROUP.Layer.Controls.Add("Forms.TextBox.1")

FlexGROUP.Layer.BackColor = &HC0FFFF
FlexGROUP.Text_box.BackColor = &HC0FFFF
FlexGROUP.Text_box.SpecialEffect = fmSpecialEffectFlat
FlexGROUP.Layer.SpecialEffect = fmSpecialEffectFlat
FlexGROUP.Text_box.Top = -0.5
FlexGROUP.Text_box.Left = -2.5
FlexGROUP.Layer.Visible = False

FlexGROUP.FlexBox.BackColorSel = &HFF8080
FlexGROUP.FlexBox.Left = Left
FlexGROUP.FlexBox.Top = Top
FlexGROUP.FlexBox.Width = Width
FlexGROUP.FlexBox.Height = Height
FlexGROUP.FlexBox.AllowUserResizing = flexResizeColumns
End With
End Sub
И далее остатние методы и свойства…
...
Рейтинг: 0 / 0
13.02.2006, 09:00:06
    #33539899
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Классы и Public WithEvents
Не совсем понятна цель сего, и в каких модулях что находится.
Попробую ответить основываясь на своих догадках.
1. Если ваш класс создается для динамической подгрузки контролов и их отображения, то доступ к переменным ссылающимся на контролы надо ограничить с помощью свойств.
Код: plaintext
1.
2.
3.
4.
Dim WithEvents m_FlexBox As MSFlexGrid
...
Public Property Get FlexBox As MSFlexGrid
   Set FlexBox = m_FlexMox
end property
2. Объявление FlexGROUP: Вы ссылаетесь на имя переменной из модуля класса. Это делать нельзя. Не получится. Надо так:
Set FlexGROUP.Text_box = Me.Layer.Controls.Add("Forms.TextBox.1")
...
Рейтинг: 0 / 0
13.02.2006, 09:01:50
    #33539901
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Классы и Public WithEvents
Worobjoff2. Объявление FlexGROUP: Вы ссылаетесь на имя переменной из модуля класса. Это делать нельзя. Не получится. Надо так:
Set FlexGROUP.Text_box = Me.Layer.Controls.Add("Forms.TextBox.1")Ну вот сам же и сделал описку:
Set Me.Text_box = Me.Layer.Controls.Add("Forms.TextBox.1")
...
Рейтинг: 0 / 0
13.02.2006, 09:07:02
    #33539912
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Классы и Public WithEvents
Да, и еще:
Если вы все же сделаете с помощью свойств эти контролы "ReadOnly", то устанавливать ссылку надо будет пользуясь именем переменной а не свойства.
...
Рейтинг: 0 / 0
13.02.2006, 13:34:50
    #33540750
MVS_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Классы и Public WithEvents
Worobjoff , все понял.
Класс создается для динамической подгрузки контролов и их отображения.
Из ваших ответов принцип понял и уже использую. Спасибо!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Классы и Public WithEvents / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]