|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Как отключить все Checkbox'ы на форме? |
|
Delphi - Как отключить все Checkbox'ы на форме?
|
Пользователь Сообщения: 132 |
Профиль | Отправить PM | Цитировать У меня на форме стоит около 800 Chekbox'ов - вопрос,как можно отключить их по нажатию одной кнопки?
Сперва пошел обычным путем,каждый чекбокс писал отдельно и уже через 20 чекбоксов мне это начало надоедать.Подкините мне функцию для снятия и для включения этих чекбоксов ?! А то 800 строчек да и еще писать одно и тоже,это уже перебор |
|
------- Отправлено: 00:09, 06-06-2009 |
Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать Цитата R.M.L:
Мне на ум приходит только вариант,если идентификаторы ваших чекбоксов прописать таким образом,чтобы все их можно было перебрать простым инкрементом в цикле.Тогда в цикле можно вызывать GetDlgItem и SendMessage с параметрами BM_SETCHECK, BST_UNCHECKED,и после делать инкремент идентификатора,тем самым переходя на следующий контрол. ADD. Сейчас подумал,что можно поиграться с функцией FindWindowEx,и возможно это даст результат(неуверен,ибо сам не пробовал). Второй параметр функции - hwndChildAfter: Handle to a child window. The search begins with the next child window in the Z order. Это значит,что можно сперва вне цикла получить описатель первого чекбокса,сделать с ним всё,что нужно,а потом войти в цикл и начать вызывать ту же FindWindowEx,передавая ей в качестве второго параметра возращённый ею же результат.Каждый раз. Однако повторю,что это не проверено мною на практике,поэтому может быть ошибочным. |
|
------- Последний раз редактировалось DillerInc, 06-06-2009 в 14:23. Отправлено: 13:16, 06-06-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 132
|
Профиль | Отправить PM | Цитировать Цитата DillerInc:
Я думаю здесь все дело в массивах - просто тип массива выдает ошибку я сегодня пробовал так finctuion UncheckedAll (Unchecked:Tcheckbox):tcheckbox; var Unchecked:Array of Array [1..800] of TCheckbox; дальше не мыслью как ... |
|
------- Отправлено: 16:22, 06-06-2009 | #3 |
Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать R.M.L, Дельфя затуманила ваш разум.Бросайте её как можно скорее.Серьёзно.
Моя догадка насчёт функции FindWindowEx похоже оказалась верной.Прилагаю свой исходник на ассемблере и скомпилированный файл.Изучайте. |
------- Отправлено: 22:26, 06-06-2009 | #4 |
Ветеран Сообщения: 1133
|
Профиль | Отправить PM | Цитировать Цитата DillerInc:
Мне она нравится, но о вкусах не спорят... Я конечно понимаю, что асм как библия для программирования, но пока для меня это как высшая математика... Цитата R.M.L:
|
|||
------- Отправлено: 00:43, 07-06-2009 | #5 |
Пользователь Сообщения: 132
|
Профиль | Отправить PM | Цитировать Цитата DillerInc:
Я из вашего кода понял только вызов библиотек и переменные на чекбоксы.Остальное как ежик в тумане ) Цитата Serega:
Я не программист и работаю совсем в иной сфере,вот и время от времени у меня возникают такие вопросы на которых у меня нет хоть 30 процентного ответа.Честно скажу,такой метод я бы никогда не узнал если не ваш исходник.Мой друган с первого звонка че та намикал про циклы While Repeat то я искал выход через массив обектов.Ок спасибо , отальное доделаю сам - на первом чекб. галочка осталась. |
||
------- Отправлено: 07:19, 07-06-2009 | #6 |
Ветеран Сообщения: 1133
|
Профиль | Отправить PM | Цитировать Цитата R.M.L:
|
|
------- Отправлено: 07:38, 07-06-2009 | #7 |
Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать Цитата R.M.L:
Цитата R.M.L:
Цитата R.M.L:
|
|||
------- Отправлено: 11:58, 07-06-2009 | #8 |
Пользователь Сообщения: 132
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 21:44, 07-06-2009 | #9 |
Ветеран Сообщения: 1133
|
Профиль | Отправить PM | Цитировать Цитата R.M.L:
Цитата R.M.L:
Цитата DillerInc:
mozgabyte, вы создайте, свою тему, больше шансов получить помощь... |
|||
------- Отправлено: 00:59, 08-06-2009 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
как проверить, выбран ли System.Windows.Forms.CheckBox или нет? | alexey_a | AutoIt | 2 | 13-11-2009 12:39 | |
[решено] Как узнать изменено ли значение checkbox | malev | AutoIt | 5 | 21-10-2009 13:40 | |
Delphi - Как создать кнопку на форме | VovanZ | Программирование и базы данных | 4 | 23-05-2009 17:42 | |
[решено] Как проверить Checkbox, как в Input писать только определенные символы | leprecon | AutoIt | 4 | 21-05-2009 23:02 | |
Delphi - [решено] Delphi | Как сделать, чтобы в дочерней форме... | Madmech | Программирование и базы данных | 8 | 30-09-2006 18:56 |
|