powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Чекбокс, отмечающийся программно
24 сообщений из 24, страница 1 из 1
Чекбокс, отмечающийся программно
    #39879769
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно, чтобы чекбокс реагировал на событие нажатия мышкой, но не отождествлял это с проставлением галочки.
Есть чекбокс на форме, Readonly. Его нажимать есть права не у всех пользователей.
При нажатии проверяется, разрешенный ли это пользователь, и если да, то в базу записывается новое значение, а чекбоксу после этого программно проставляем или снимаем галку, в зависимости от нового значения, записанного в базу.

Но он так не работает. Если делаешь Readonly, то перестает реагировать на мышь вообще, соответственно событие OnClick не срабатывает.

Пробовал событие OnMouseDown, тоже что-то криво получается.

Пробовал даже извращаться, поверх чекбокса класть прозрачный TImage и весить событие на него. Но он почему-то не помещается Bring to front. При нажатии на него реагирует чекбокс. Да и не удобно это.
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39879776
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
каша в логике или в программном дизайне программы. делай чекбокс Readonly у всех пользователей, которым нельзя его нажимать. в OnClick пиши в базу данные, этого должно быть достаточно.
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39879782
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad,

перед установкой просто OnClick в nil установи, а потом верни обработчик назад
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39879808
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),
разобрался уже, повесил на OnMouseDown все.
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39879812
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonкаша в логике или в программном дизайне программы. делай чекбокс Readonly у всех пользователей, которым нельзя его нажимать. в OnClick пиши в базу данные, этого должно быть достаточно.
Там например такая вещь: Кликаешь по чекбоксу подтверждения всей ведомости, он должен проверить сначала, что подтверждена каждая строка ведомости (чекбокс строки), и если не все строки подтверждены, то состояние ведомости не меняется, а выдается сообщение "Не все строки подтверждены, сначала подтвердите все строки". Так что весить событие на OnClick не очень хорошо, т.к. там галочка сразу проставится, и ее надо будет убирать программно, опять вызовется OnClick, и так по кругу.
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39879815
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon, и еще нюанс, перестраховка, но теоретически может возникнуть:
если записываем в базу после отметки, то не факт, что в базу данные еще записались, а галка уже стоит, пользователь думает, что записались.
У меня сначала записывается в базу, а потом уже форма перечитывается из базы и галка проставляется по факту. Если данные не записались, то там и галка не проставится.
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39879818
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad,

авторЕсть чекбокс на форме, Readonly. Его нажимать есть права не у всех пользователей.
При нажатии проверяется, разрешенный ли это пользователь, и если да, то в базу записывается новое значение, а чекбоксу после этого программно проставляем или снимаем галку, в зависимости от нового значения, записанного в базу.

Странная логика. чекбокс должен при активизации формы быть либо Enabled := False, либо Enabled := True.
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39879820
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladТам например такая вещь: Кликаешь по чекбоксу подтверждения всей ведомости, он должен проверить сначала, что подтверждена каждая строка ведомости (чекбокс строки), и если не все строки подтверждены, то состояние ведомости не меняется, а выдается сообщение "Не все строки подтверждены, сначала подтвердите все строки". Так что весить событие на OnClick не очень хорошо, т.к. там галочка сразу проставится, и ее надо будет убирать программно, опять вызовется OnClick, и так по кругу.
Кто мешает чекбокс подтверждения всей ведомости задисаблить, пока не все строки подтверждены?
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39879883
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gerasimenkosvnvlad,

авторЕсть чекбокс на форме, Readonly. Его нажимать есть права не у всех пользователей.
При нажатии проверяется, разрешенный ли это пользователь, и если да, то в базу записывается новое значение, а чекбоксу после этого программно проставляем или снимаем галку, в зависимости от нового значения, записанного в базу.

Странная логика. чекбокс должен при активизации формы быть либо Enabled := False, либо Enabled := True.
Enabled := false делает чекбокс бледным, что едва различимо, поставлена там галка ли нет.
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39879890
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldmi45Кто мешает чекбокс подтверждения всей ведомости задисаблить, пока не все строки подтверждены?
Можно.
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39879922
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladEnabled := false делает чекбокс бледным, что едва различимо, поставлена там галка ли нет.Зато четко видно, что элемент неактивный и тыкать в него бессмысленно
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39879934
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad Так что весить событие на OnClick не очень хорошо, т.к. там галочка сразу проставится, и ее надо будет убирать программно, опять вызовется OnClick, и так по кругу.
Установка Checked из программы не вызывает OnClick, что весьма логично. Т.ч. проблемы топика не вижу
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39879937
Ivan Yar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно просто создать потомка от класса и придать ему дивную расскраску.
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39880792
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladНужно, чтобы чекбокс реагировал на событие нажатия мышкой, но не отождествлял это с проставлением галочки.
Есть чекбокс на форме, Readonly. Его нажимать есть права не у всех пользователей.

Просто замени чекбокс на кнопку.
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39880826
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladGerasimenkosvnvlad,

пропущено...


Странная логика. чекбокс должен при активизации формы быть либо Enabled := False, либо Enabled := True.
Enabled := false делает чекбокс бледным, что едва различимо, поставлена там галка ли нет.
сделай у чекбокса изменяемый кэпшн: включено и отключено (свои надписи, конечно). мы у себя кое-где так меняем, удобно и надежно.
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39880856
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladkealon(Ruslan),
разобрался уже, повесил на OnMouseDown все.А если я на твой чекбокс перемещусь через клавишу Tab, а затем нажму пробел. Что будет?
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39880858
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2svnvlad Так что весить событие на OnClick не очень хорошо, т.к. там галочка сразу проставится, и ее надо будет убирать программно, опять вызовется OnClick, и так по кругу.
Установка Checked из программы не вызывает OnClick, что весьма логично.Да ты что, а проверить пробовал? :))
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39880995
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квейд, хм, да, действительно, вызывает. Что нелогично :D
Тем не менее:
1) Отмена установки Checked в True по внешнему условию вполне отрабатывает
2) Можно при желании добраться и до property TButtonControl.ClicksDisabled
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39880998
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Состояние Enabled:=false для того и придумано, чтобы те кому не нужно не тыкали куда не нужно.
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39881071
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оно не очень удобно, т.к. в затемненном контроле плохо воспринимается его текущее наполнение. Плюс исключается возможность при тыке вывести дружелюбную поясняющую мессагу. Мне лично много нервов стоили моменты, когда в навороченной софтине какой-нибудь пункт меню или контрол отключен, и хрен знает что ему не нравится. Ступор, кидание тапка в монитор, проклятия в адрес разрабов и гугление. Всего этого можно избежать, вместо отключения выводя поясняющую надпись.
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39881072
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2Оно не очень удобно, т.к. в затемненном контроле плохо воспринимается его текущее наполнение. Плюс исключается возможность при тыке вывести дружелюбную поясняющую мессагу. Мне лично много нервов стоили моменты, когда в навороченной софтине какой-нибудь пункт меню или контрол отключен, и хрен знает что ему не нравится. Ступор, кидание тапка в монитор, проклятия в адрес разрабов и гугление. Всего этого можно избежать, вместо отключения выводя поясняющую надпись.
Хинты туда не завезли? Или поясняющие лейблы?
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39881145
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladНужно, чтобы чекбокс реагировал на событие нажатия мышкой, но не отождествлял это с проставлением галочки.
Есть чекбокс на форме, Readonly. Его нажимать есть права не у всех пользователей.
При нажатии проверяется, разрешенный ли это пользователь, и если да, то в базу записывается новое значение, а чекбоксу после этого программно проставляем или снимаем галку, в зависимости от нового значения, записанного в базу.
Держи, всё уже придумано до нас: https://forum.sources.ru/index.php?showtopic=354304 :)
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39881434
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanХинты туда не завезли? Или поясняющие лейблы?
Хинты на дизейбленный контрол? Ну сам попробуй))
...
Рейтинг: 0 / 0
Чекбокс, отмечающийся программно
    #39881441
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2wadmanХинты туда не завезли? Или поясняющие лейблы?
Хинты на дизейбленный контрол? Ну сам попробуй))
Это не проблема для программиста.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Чекбокс, отмечающийся программно
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]