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

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

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

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

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

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

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


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