|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.03.2011, 01:48 | #1 |
Пользователь
Регистрация: 07.03.2010
Сообщений: 12
|
Динамическое создание объектов и задание событий
Задача:Создание динамической формы и всех объектов на ней, по заранее заданным критериям, которые берутся к примеру из файла.
т.е. в файле задаем все объекты и их свойства, загружаем в прогу, она создает форму и объекты. с этим особых напрягов нет, в инете полно статей и мануалов. Проблема вот в чем. как динамически создавать события для динамически созданных объектов? В инете нашел только, как прикрутить уже заранее созданное событие к динамически созданному объекту, а если мне нужно что бы код в событии был всегда разным? довольно странно создавать 100 кнопок и использовать для него 1 заранее созданное событие. все 100 кнопок будут делать 1 и ту же функцию(( а если заранее для всех 100 кнопок прописывать событие, то и динамическое создание просто не к чему, потому что придется руками прописать все 100 событий для каждой кнопки( 0о пример того что нашел в инете: Код:
т.е. если я в процедуру ButtonsDown засуну что то типа ShowMessage('ОЛОЛО'); по нажатию на любую из 5и динамически созданных кнопок будет появлятся мессага "ОЛОЛО" . это как то странно 0о либо я чего то не догнал 0о ________ Код нужно оформлять по правилам: тегом [CODE]..[/СODE] (это кнопочка с решёточкой #) Не забывайте об этом! Модератор. Последний раз редактировалось Serge_Bliznykov; 15.03.2011 в 02:01. |
15.03.2011, 02:08 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Да. Это так.
Но, если Вы внимательно посмотрите на процедуру обработки нажатия ButtonsDown, то увидите, что в неё передаётся параметер: Sender: TObject Этот Sender - это и есть так кнопка, на которую произведено нажатие. Ну а дальше - Вам решать, что с этим делать. Можно отобразить имя кнопки. Код:
И ещё один маленький хинт... У кнопки есть такое свойство, как Tag. По сути это просто Integer. Можно при создании кнопки туда что-то записывать (например, тот же счётчик I) - просто числовое поле удобнее анализировать в коде процедуры обработки, чем строковое имя кнопки.. Надеюсь, сумел объяснить... |
15.03.2011, 02:13 | #3 | |
Пользователь
Регистрация: 07.03.2010
Сообщений: 12
|
Цитата:
единственное решение которое идет в голову довольно топорно. Сделать 1 событие и в него загнать условную структуру типа: Код:
к примеру если баттон1 то id=1 и будет выполнятся шоумессадж, если баттон2 то в едит запишется "ололо", это по сути тоже самое что задать все события заранее, но запехнув их так сказать в одно место. вообще задача стоит в том, что бы событие так же создавалось динамически. Последний раз редактировалось TreadProblem; 15.03.2011 в 02:16. |
|
15.03.2011, 03:03 | #4 | |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
Так вам и много обработчиков плохо, и один обработчик тоже плохо.
Есть ещё такой оператор case, чтобы не плодить условия: PHP код:
Цитата:
Если код есть, ваша задача просто связать его с нужными событиями у нужных контролов. Можно даже динамически указывать имена методов в вашем файле (как это делается в .dfm) и через RTTI находить их адреса: PHP код:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
|
15.03.2011, 08:26 | #5 |
кривокодер ;)
Форумчанин
Регистрация: 20.06.2008
Сообщений: 707
|
ХЗ кто как, а я обработчики событий решал всегда через тэги контролов...
Код:
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид} |
15.03.2011, 11:26 | #6 | |
Подтвердите свой е-майл
Регистрация: 19.12.2010
Сообщений: 808
|
Вы абсолютно правы, но ТС "заказал" нечто с искусственным разумом:
Цитата:
Ну что ж - флаг ему в руки. З.Ы. Немножко дополню. Если временно нужно вообще отменить обработчик, то делаем так: Код:
Последний раз редактировалось asmodey1; 15.03.2011 в 13:39. |
|
15.03.2011, 11:50 | #7 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
15.03.2011, 16:42 | #8 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
хотел пройти мимо "молча", но не смог...
Цитата:
|
|
15.03.2011, 16:55 | #9 |
Участник клуба
Регистрация: 07.07.2007
Сообщений: 1,518
|
Хе-хе, ТС не знает как событие к кнопке прикрутить, а вы ему предлагаете VBScript, RemObjects. PaxCompiler в самый раз будет.
|
15.03.2011, 17:57 | #10 |
кривокодер ;)
Форумчанин
Регистрация: 20.06.2008
Сообщений: 707
|
В самый раз будет толкнуть ТС на осознание событий (что они из себя представляют), а не на ПаксКомпайлер Ну и совместно с этим пинком показать примеры...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид} |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамическое создание объектов | Костян Пират | Общие вопросы Delphi | 12 | 24.05.2011 18:39 |
Динамическое создание объектов | panda88 | Общие вопросы Delphi | 4 | 24.01.2010 18:16 |
Динамическое задание событий | Mutagena | Помощь студентам | 6 | 08.01.2010 23:22 |
Динамическое создание событий | Fandaret | Общие вопросы Delphi | 4 | 14.05.2009 04:20 |
Динамическое создание объектов | LepihinMS | Общие вопросы Delphi | 18 | 05.07.2007 23:31 |