![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 11.05.2013
Сообщений: 154
|
![]()
Всем привет.
Собственно, делаю окно настроек программы, на котором очень много компонентов, и мне интересно, есть ли способ, который позволил бы выполнить какое-то действие, если хотя-бы один компонент был изменен. То есть, если пользователь изменил какое-то поле, или поставил/снял галочку и т.п., то выполняем действие... В моем случае - нужно активировать кнопку "Принять". Пока использую простой способ: в каждом компоненте в обработчике OnChange или OnClick выполняется: Код:
Подумал, может есть какой-то безболезненный и эффективный способ решения моего вопроса? Чтобы не прописывать на всю кучу компонентов одну и ту же операцию. Или может можно как-то добавить эту процедуру ко всем компонентам при открытии формы? |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
А что это даст? Кликнул например по чекбоксу, а потом еще раз, вернув в исходное состояние. Вроде изменилось, а по факту нет. И так с любым контролом. И изменилось или нет проверить можно только по завершению - сравнив исходное состояние и текущее каждого контрола
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 11.05.2013
Сообщений: 154
|
![]()
Аватар, это все не важно, т.к. обработчик кнопки "Принять" - сравнивает исходное состояние с измененными. Главное активировать кнопку при изменении любого контрола, все остальное уже сделано
![]() |
![]() |
![]() |
![]() |
#4 |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
![]() |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 11.05.2013
Сообщений: 154
|
![]()
eval, возможно в новых версиях это делается через опции, у меня Delphi 7, и такой опции нет, насколько мне известно. Да и не очень хочется лезть в какой-то мастер, или использовать какие-то сторонние компоненты. Я уверен, что вопрос можно решить проще, и не менее эффективно.
Мысли по этому поводу есть, но детали не продуманы пока. Поэтому спрашиваю, может кто такое уже делал, и может поделится опытом. |
![]() |
![]() |
![]() |
#6 |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
![]()
а тут должны догадаться какая у вас версия? или екстрасенсов на это дело подключать?
в допотопных версиях надо делать все руками, либо расписывать такойже биндинг, и тоже руками... |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 11.05.2013
Сообщений: 154
|
![]()
eval, вопрос вообще не в версии, а в способе решения задачи. Подкинули свой метод решения - хорошо, но мне он не подходит. В чем проблема?
Тему можно закрывать/удалять, с задачей разберусь самостоятельно. Всем спасибо за внимание. |
![]() |
![]() |
![]() |
#8 |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
![]()
у нас нет проблемы, она у вас
а версия к тому что от этого зависит и решение, вот в новых появился датабиндинг а в старых его нет, неужели это трудно для понимания? |
![]() |
![]() |
![]() |
#9 | |||
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]() Цитата:
Цитата:
Да геморой, но это Delphi 7 и как вы уже сказали: Цитата:
|
|||
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
В Билдере есть какой-нибудь компонент для многострочного вывода текста, аналогично Edit? | Наталия 555 | C++ Builder | 4 | 15.06.2011 13:12 |
Delphi7 поле Memo, если изменилось - выполнить действие | bad_patefa | Помощь студентам | 2 | 15.09.2010 16:15 |
Выполнить действие в указанное время | sergeiqwe | PHP | 3 | 06.05.2010 16:28 |
выполнить действие. | IVANSour | Общие вопросы Delphi | 6 | 01.02.2009 22:53 |