|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.01.2012, 10:30 | #1 |
Форумчанин
Регистрация: 24.03.2010
Сообщений: 349
|
Делегаты
Есть класс ClassTextBox:
Код:
Код:
Код:
Можно ли добиться подобной функциональности средствами VBA? Пока единственная моя идея - это использовать для связи между классами стандартный модуль VBA
Нет нерешаемых задач - есть недостаток времени и данных!
|
25.01.2012, 11:49 | #2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
положите это в программый модуль:
Код:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
25.01.2012, 12:20 | #3 |
Форумчанин
Регистрация: 24.03.2010
Сообщений: 349
|
Я знаю про эту возможность. При вызове процедур из программных (стандартных) модулей данная возможность срабатывает, а вот с классами - нет.
Я пробовал так: - в UserForm задал Public MyFrame As ClassFrame - создал в классе ClassFrame процедуру bbb() - передавал в класс ClassTextBox строку: "UserForm.MyFramy.bbb" - вызывал командами Run "UserForm.MyFramy.bbb" или Call "UserForm.MyFramy.bbb" VBA ругался что "Процедура не найдена или макросы отключены"
Нет нерешаемых задач - есть недостаток времени и данных!
|
25.01.2012, 13:21 | #4 |
Форумчанин
Регистрация: 24.03.2010
Сообщений: 349
|
Вот подготовил пример для опытов
Нет нерешаемых задач - есть недостаток времени и данных!
|
25.01.2012, 14:02 | #5 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
Что значит "вызвать процедуру"?
Процедуры пишутся в стандартных модулях, и оттуда без проблем вызываются. В состав модулей класса процедуры включаются только в том случае, если они привязаны к объекту - экземпляру класса. Вот надо вам вызвать из ClassTextBoxForFrame какой-то метод объекта ClassFrame Вопрос: а какого из объектов ClassFrame? Любого? Если да, - то зачем? Чтобы вызвать метод объекта ClassTextBoxForFrame, этот объект надо сначала создать (или найти среди ранее созданных) Где код создания объекта ClassTextBoxForFrame? Создайте объект ClassTextBoxForFrame, найдите перебором родительский объект ClassFrame, - и для этого объекта и вызывайте ту процедуру. PS: Мне кажется, вы перемудрили с кодом. Лучше бы на словах описали, что есть изначально, и что надо получить. |
25.01.2012, 15:08 | #6 | |
Форумчанин
Регистрация: 24.03.2010
Сообщений: 349
|
Цитата:
Для этого я создаю класс ClassFrame, и создаю в UserForm объект это класса: Private MyFrame As ClassFrame Set MyFrame.Control = Me.Controls.Add("Forms.Frame.1", "New", True) В классе ClassFrame (в объекте MyFrame) я создаю "таблицу" из объектов класса ClassTextBoxForFrame: Private TextBoxArr() As ClassTextBoxForFrame Set TextBoxArr = New ClassTextBoxForFrame Set TextBoxArr.Control = Control.Controls.Add("Forms.TextBox .1", "Head", True) Теперь, при клике на одном из TextBox'ов, необходимо выделить цветом всю строку в таблице. Полагаю, что Вы согласитесь, что эта операция привязана к объекту MyFrame (классу ClassFrame) и должна выполняться в нём? Я пытался выполнить это действие, ловя событие _DblClick объекта ClassTextBoxForFrame и передавая данные в вышестоящий объект. Конечно, можно наплодить кучу модулей, но хотелось бы минимизировать их количество.
Нет нерешаемых задач - есть недостаток времени и данных!
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сортировка(делегаты и сбытия)! | Kami-sama | C# (си шарп) | 2 | 06.12.2011 18:18 |
Делегаты C# | sir.andrey | Помощь студентам | 3 | 21.09.2011 10:06 |
MinGW, Делегаты. | Пепел Феникса | Общие вопросы C/C++ | 14 | 28.07.2011 19:42 |
Делегаты | CaypoH | Общие вопросы .NET | 3 | 04.01.2011 05:43 |
Делегаты в MSIL | Андрей Стрелков | Общие вопросы .NET | 6 | 20.02.2009 19:17 |