С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/48: Рейтинг темы: голосов - 48, средняя оценка - 4.50
7 / 7 / 0
Регистрация: 27.01.2014
Сообщений: 28

Обработчик событий для динамически созданного массива контролов

21.07.2014, 09:59. Показов 9737. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Option Explicit
Dim WithEvents Button As CommandButton
 
Private Sub Command1_Click()
    MsgBox "Hi"
End Sub
 
Private Sub Form_Load()
    Set Button = Controls.Add("vb.CommandButton", "Command1")
    Button.Visible = 1
End Sub
Вопрос - почему при нажатии на созданную на форме кнопку не происходит событие Click ?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.07.2014, 09:59
Ответы с готовыми решениями:

Создать обработчик события для динамически созданного NumericUpDown
Приветствую. Имеется несколько динамически созданных numericupdown-оф, и пользователю нужно распределить среди них 10 очков. Подскажите...

Обработчик событий для динамически созданных контроллов
Всем привет, я столкнулся с этой проблемой, два дня назад, и до сих пор никак не могу решить эту проблему. Суть в том, что я создать...

Обработчик событий для динамически связанного запроса в подформе
Добрый день, форумчане! Суть проблемы: Есть главная форма. На ней добавлена область для подчиненной формы. При загрузке формы я...

32
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
21.07.2014, 12:34
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Антихакер32 Посмотреть сообщение
тоесть определенное имя активного контрола но с цифрой
Так не следует делать, а нужно делать так:
Visual Basic
1
If TypeOf ActiveControl Is CommandButton Then Set btn = ActiveControl
Это позволяет во-первых использовать любые имена контролам, во-вторых намного быстрей (для этого и нужна конструкция TypeOf)
0
21.07.2014, 13:07

Не по теме:

Цитата Сообщение от The trick Посмотреть сообщение
If TypeOf
а в VBA это работает? , хотелось бы там выложить чтото новенькое

0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
21.07.2014, 13:12
Цитата Сообщение от Антихакер32 Посмотреть сообщение
а в VBA это работает? , хотелось бы там выложить чтото новенькое
Это наверное тебе лучше в VBA спросить? Конечно работает, почему бы ему не работать?
0
21.07.2014, 15:05

Не по теме:

Цитата Сообщение от Антихакер32 Посмотреть сообщение
на разбирайся
Та ну нафиг. Мне проще повесится.
Цитата Сообщение от Антихакер32 Посмотреть сообщение
а в VBA это работает? , хотелось бы там выложить чтото новенькое
В этом коде должен быть пример.
У меня сейчас нет прав, чтобы скачать вложение и посмотреть.

0
21.07.2014, 15:21

Не по теме:

Цитата Сообщение от Dragokas Посмотреть сообщение
Та ну нафиг. Мне проще повесится.
я выложил рабочий пример, там все что можно было прокоментировать
я прокоментировал, там где можно было вставить коментарий, чтоб не увеличивать
размер кода, кстати а сколько на форуме дополнительных
обсуждений было именно этого калькулятора вы не заметили :)

0
21.07.2014, 15:26

Не по теме:

Цитата Сообщение от Антихакер32 Посмотреть сообщение
кстати а сколько на форуме дополнительных обсуждений было именно этого калькулятора вы не заметили
Зачем ты его сюда тогда перепостил? Какой смысл? Для него создали отдельную тему. Этот код в этой теме вообще не в тему. Что ты хотел этим показать? Я уже дал ссылку на ту тему вначале и там этот метод описывается более понятно и без лишнего кода.

0
21.07.2014, 15:27

Не по теме:

и что делать с теми, кто не любит читать...
там пример передачи активности для нужной кнопки
и без целой картины нельзя разобраться

0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
21.07.2014, 15:38

Не по теме:

Антихакер32, я простой пример Trick-а уже полчаса пытаюсь разобрать.
А твой с API-функциями без комментов мне если честно своего времени жалко.



The trick, я попробовал твой код без класса. И да, без фокуса событие контрола не работает, если имеются другие контролы на форме.
______________
Мне он не совсем понравился тем, что если я добавлю другие контролы, то тогда понадобится добиваться переназначать ссылку на активный контрол не только при btn_LostFocus, а и при потере фокуса и со всех остальных видов контролов.

На счет примера в этой теме. Ты создаешь коллекцию классов. За каждым контролом установлено свое событие. Каким образом здесь может иметь место потеря фокуса?
Я также создал несколько других видов контролов. Продемонстрированный тобою класс работает в этих условиях.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
21.07.2014, 15:45
Цитата Сообщение от Dragokas Посмотреть сообщение
The trick, я попробовал твой код без класса. И да, без фокуса событие контрола не работает, если имеются другие контролы на форме.
Да так и будет, но ты можешь добавить еще одну WithEvents переменную того типа контрола, который размещен на форме и в LostFocus'е присваивать уже 2-м переменным в зависимости от типа контрола.
Цитата Сообщение от Dragokas Посмотреть сообщение
За каждым контролом установлено свое событие внутри класса. Каким образом здесь может иметь место потеря фокуса?
Там другой принцип, там не имеет значения фокус - контрол по-любому будет генерировать событие и оно будет обработано. У тебя множество объектов вызывают метод одного конкретного объекта - этим и достигается обработка одной формой множества контролов.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
21.07.2014, 15:50
Цитата Сообщение от The trick Посмотреть сообщение
Там другой принцип, там не имеет значения фокус - контрол по-любому будет генерировать событие и оно будет обработано. У тебя множество объектов вызывают метод одного конкретного объекта - этим и достигается обработка одной формой множества контролов.
А... вот и я о том, что здесь фокус не будет влиять.
0
21.07.2014, 15:53

Не по теме:

Цитата Сообщение от Dragokas Посмотреть сообщение
А твой с API-функциями без комментов
там всеравно ничего из заявленных API использоваться не будет
так-как стоят условия #If Manifest Then 'Часть кода для реализация стиля Windows
так-что это можно удалить если вы не используете стили, все это для красоты

0
7 / 7 / 0
Регистрация: 27.01.2014
Сообщений: 28
21.07.2014, 15:53  [ТС]
Жесть! Хочу литеру по всем этим тонкостям и нюансам а то чем больше вникаешь тем больше лес и в итоге все становится непонятно... Например что есть TypeOf, что есть WithEvents и вообще все...
1
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
21.07.2014, 15:54
Цитата Сообщение от Dragokas Посмотреть сообщение
по заявленным словам
Эти слова относились к этому способу, т.к. ТС выбрал именно его насколько я понял.
В примере с классом фокус не имеет значения
Цитата Сообщение от The trick Посмотреть сообщение
Там другой принцип, там не имеет значения фокус - контрол по-любому будет генерировать событие и оно будет обработано. У тебя множество объектов вызывают метод одного конкретного объекта - этим и достигается обработка одной формой множества контролов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.07.2014, 15:54
Помогаю со студенческими работами здесь

Обработчик событий нескольких контролов?
Вообще-то я программирую на Delphi, а тут понадобилось сделать проект на VBA в Excel и обнаружилось, что я не представляю, как назначить...

Обработчик события динамически созданного контрола
Есть событие контрола panel_MouseMove, panel динамически создан и поэтому при создании он ссылается на это событие. В этом событие можно...

Обработчик нажатия динамически созданного класса
Допустим есть список в котором есть класс one,при нажатии на который в консоль выводится его имя и происходит смена класса на two. В...

Обработчик события для массива динамических контролов
Как создать сразу для всего массива динамически созданных контролов один одинаковый обработчик события? //В цикле picbox.Click += new...

Обработчик событий динамически созданных кнопок
Уважаемые форумчане, помогите студентам! У нас есть функция, которая создает количество кнопок, равное количеству файлов в папке ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru