Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Много "нового", а как "управиться"? / 15 сообщений из 15, страница 1 из 1
04.01.2007, 18:40
    #34237320
Al_666
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Много "нового", а как "управиться"?
Вопрос собственно:
- Если на форме предполагается разместить неопределённое (на момент создания кода) количество контролов (пусть CommandButton будет), то как ловить события этих "новичков".

Тут народ описывает ситуации когда известно сколько должно создаться контролов и пишут события этих ещё не созданных кнопок заранее. Не писать же мне события CommandButton999_Click по порядку , а если и так, то вдруг надо будет 1000 -ый создать .

Весь этот кошмар в Excel.VBA произойти должен. Уже перерыл кучу информации, но народ как-то VBA игнорит.
...
Рейтинг: 0 / 0
04.01.2007, 21:11
    #34237539
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Много "нового", а как "управиться"?
Al_666,
VBA или VB - в данном случае всё равно. Надо написать класс-оболочку для контрола, где контрол описан с WithEvents, плюс класс-коллекцию таких оболочек, который будет "принимать на себя" события от оболочек, и транслировать их (события) на уровень выше (передавая идентификатор или ссылку на объект-источник события), классу, в котором уже класс-коллекция описана с WithEvents. Для Excel таковым классом может быть лист или книга. Подробнее здесь.
...
Рейтинг: 0 / 0
09.01.2007, 15:47
    #34243224
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Много "нового", а как "управиться"?
Бенедикт +

И еще:
Желательно весь код создания и размещения на форме контрола разместить в классе CMyItem из примера Бенедикта. И обращаться к контролам через класс-оболочку. Это поможет избежать дублирования кода.
...
Рейтинг: 0 / 0
09.01.2007, 15:56
    #34243260
dvim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Много "нового", а как "управиться"?
А чем не нравится ControlArray - стандартно, просто и быстро....
...
Рейтинг: 0 / 0
09.01.2007, 16:11
    #34243322
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Много "нового", а как "управиться"?
dvimА чем не нравится ControlArray - стандартно, просто и быстро....Нет ее в VBA.
...
Рейтинг: 0 / 0
09.01.2007, 16:24
    #34243374
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Много "нового", а как "управиться"?
dvim,
как Worobjoff ужЕ заметил, это на MSForms.UserForm Control Array не организуешь.

WorobjoffЖелательно весь код создания и размещения на форме контрола разместить в классе CMyItem из примера Бенедикта. И обращаться к контролам через класс-оболочку. Это поможет избежать дублирования кода.
Worobjoff, в моём примере реализация CMyItem может быть недоступна программисту - в данном случае в роли CMyItem выступает MSForms.CommandButton. Класс-оболочка - это CMyItemNotifier. Впрочем, я уверен, что это описка. Но люди могут запутаться. :beer:
...
Рейтинг: 0 / 0
09.01.2007, 17:35
    #34243670
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Много "нового", а как "управиться"?
Бенедикт, может быть я не внимательно ваш пример прочитал.
Вообще-то я попытался предупредить от дублирования функционала.
Новички в ООП обычно делают такую ошибку:
Ведут параллельно иерархию классов и иерархию форм. Вместо того чтобы завернуть все в классы и работать только с ними.
...
Рейтинг: 0 / 0
10.01.2007, 09:25
    #34244557
marvan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Много "нового", а как "управиться"?
Может стоит ещё раз подумать - это явный косяк архитектуры Al_666Если на форме предполагается разместить неопределённое (на момент создания кода) количество контролов
...
Рейтинг: 0 / 0
10.01.2007, 10:19
    #34244718
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Много "нового", а как "управиться"?
marvanМожет стоит ещё раз подумать - это явный косяк архитектуры Al_666Если на форме предполагается разместить неопределённое (на момент создания кода) количество контролов
Ничего подобного, видимо это просто гибкая система, которая выстраивается динамически по описанию из БД.
...
Рейтинг: 0 / 0
10.01.2007, 13:50
    #34245595
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Много "нового", а как "управиться"?
Melkiades marvanМожет стоит ещё раз подумать - это явный косяк архитектуры Al_666Если на форме предполагается разместить неопределённое (на момент создания кода) количество контролов
Ничего подобного, видимо это просто гибкая система, которая выстраивается динамически по описанию из БД.И делают эту систему в Excel.VBA ? Тогда это явный косяк архитектуры мозга.

А автор, похоже, уже забил на эту проблему.
...
Рейтинг: 0 / 0
10.01.2007, 14:25
    #34245759
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Много "нового", а как "управиться"?
AntonariyА автор, похоже, уже забил на эту проблему.
А мы и без него развлекаемся .
...
Рейтинг: 0 / 0
10.01.2007, 22:24
    #34247099
Al_666
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Много "нового", а как "управиться"?
Про архитектуру мозга очень понравилось, но ИМХО это решают на форумах психиатров - не гоже кухарке государством управлять...
А касательно решения вопроса - ответ найден, но!!!
Есть ещё один вопрос:
- если кнопку или фрейм на форме создать можно и отлавливать их события тоже оказывается не сложно, то создать Label с WithEvents - нет возможности, однако, если события Label_Click() существуют, то как быть с метками?

- Нужно создать Label RealTime и поймать событие Click.
...
Рейтинг: 0 / 0
11.01.2007, 10:51
    #34247777
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Много "нового", а как "управиться"?
Как решил проблему, если не секрет?
...
Рейтинг: 0 / 0
11.01.2007, 11:32
    #34248003
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Много "нового", а как "управиться"?
Al_666Есть ещё один вопрос:
- если кнопку или фрейм на форме создать можно и отлавливать их события тоже оказывается не сложно, то создать Label с WithEvents - нет возможности, однако, если события Label_Click() существуют, то как быть с метками?Private WithEvents sss As MSForms. Label 'О, чудо!
...
Рейтинг: 0 / 0
11.01.2007, 11:36
    #34248026
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Много "нового", а как "управиться"?
"Чудо", кстати, объясняется просто: в библиотеке Excel есть скрытый класс Label, а библиотека Excel в списке подключённых библиотек стоит раньше Microsoft Forms. Проверить можно по нажатию F2 и включению опции "Show Hidden Members". Мораль всё та же: полностью квалифицируйте имена объектных типов.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Много "нового", а как "управиться"? / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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