Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2022, 22:35   #1
cybernewbie
Пользователь
 
Регистрация: 01.10.2022
Сообщений: 63
По умолчанию

Как установить чужой CheckBox в состояние Checked=true?
Проверяю состояние так:
Код:
 if SendMessage(fFDchb0,BM_GETCHECK,0,0)=BST_UNCHECKED then
   showmessage('Не нажато');
Заранее благодарю за помощь

Так пробовал, не работает:
Код:
  if SendMessage(fFDchb0,BM_GETCHECK,0,0)=BST_UNCHECKED then
   SendMessage(fFDchb0,BM_SETCHECK,wParam(BST_CHECKED),0)
Или я что то не так делаю?

Последний раз редактировалось BDA; 02.10.2022 в 14:29.
cybernewbie вне форума Ответить с цитированием
Старый 01.10.2022, 23:13   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Попробуйте так
Код:
if SendMessage(fFDchb0,BM_GETCHECK,0,0)=BST_UNCHECKED then
   SendMessage(fFDchb0, WM_LBUTTONDOWN, 0, $10001);
macomics вне форума Ответить с цитированием
Старый 01.10.2022, 23:23   #3
cybernewbie
Пользователь
 
Регистрация: 01.10.2022
Сообщений: 63
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
Попробуйте так
К сожалению не сработало
cybernewbie вне форума Ответить с цитированием
Старый 01.10.2022, 23:42   #4
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Тогда так
Код:
if SendMessage(fFDchb0,BM_GETCHECK,0,0)=BST_UNCHECKED then
   SendMessage(fFDchb0, BM_CLICK, 0, 0);

Последний раз редактировалось macomics; 01.10.2022 в 23:45.
macomics вне форума Ответить с цитированием
Старый 02.10.2022, 00:31   #5
cybernewbie
Пользователь
 
Регистрация: 01.10.2022
Сообщений: 63
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
Тогда так
Проверил, у меня была ошибка в имени класса, большое спасибо.
Цитата:
Сообщение от macomics Посмотреть сообщение
if SendMessage(fFDchb0,BM_GETCHECK,0,0 )=BST_UNCHECKED then
SendMessage(fFDchb0, BM_CLICK, 0, 0);
Этот вариант сработал корректнее всего, тогда как после остальных, чтобы выключить checkbox, нужно было нажимать 2 раза.

Большое спасибо за помощь
cybernewbie вне форума Ответить с цитированием
Старый 02.10.2022, 01:08   #6
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Потому, что BM_CLICK отправляет окну два сообщения WM_LBUTTONDOWN, а после WM_LBUTTONUP.
macomics вне форума Ответить с цитированием
Старый 02.10.2022, 02:44   #7
cybernewbie
Пользователь
 
Регистрация: 01.10.2022
Сообщений: 63
По умолчанию

Да, получается некорректно работает только bm_SetCheck, хотя возможно это сообщение, просто добавляет отметку в checkbox, и никакого нажатия не происходит. И в итоге визуально состояние checked=true, но по факту оно false, и поэтому чтобы убрать отметку, нажимать надо 2 раза, 1 раз устанавливаем (хотя уже установлена), 2 раз убираем. Хотя возможно я ошибаюсь.
cybernewbie вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TCheckBox[x].Checked = Подсчет количества Checked := True; XerSon Общие вопросы Delphi 6 26.04.2018 17:48
надо активировать процедуру только когда RadioButton8.Checked=true Донцов Компоненты Delphi 3 06.06.2016 01:09
Проверка состояние checkbox scalpel PHP 2 25.03.2013 13:45
Передать состояние CheckBox Shouldercannon Общие вопросы Delphi 3 19.03.2012 23:25
CheckBox. Как проверить состояние Шуримар Microsoft Office Access 5 17.01.2012 10:22