Чекбокс, отмечающийся программно
svnvlad
Дата: 22.10.2019 11:16:53
Нужно, чтобы чекбокс реагировал на событие нажатия мышкой, но не отождествлял это с проставлением галочки.
Есть чекбокс на форме, Readonly. Его нажимать есть права не у всех пользователей.
При нажатии проверяется, разрешенный ли это пользователь, и если да, то в базу записывается новое значение, а чекбоксу после этого программно проставляем или снимаем галку, в зависимости от нового значения, записанного в базу.
Но он так не работает. Если делаешь Readonly, то перестает реагировать на мышь вообще, соответственно событие OnClick не срабатывает.
Пробовал событие OnMouseDown, тоже что-то криво получается.
Пробовал даже извращаться, поверх чекбокса класть прозрачный TImage и весить событие на него. Но он почему-то не помещается Bring to front. При нажатии на него реагирует чекбокс. Да и не удобно это.
makhaon
Дата: 22.10.2019 11:25:57
каша в логике или в программном дизайне программы. делай чекбокс Readonly у всех пользователей, которым нельзя его нажимать. в OnClick пиши в базу данные, этого должно быть достаточно.
kealon(Ruslan)
Дата: 22.10.2019 11:31:33
svnvlad,
перед установкой просто OnClick в nil установи, а потом верни обработчик назад
svnvlad
Дата: 22.10.2019 12:02:11
kealon(Ruslan),
разобрался уже, повесил на OnMouseDown все.
svnvlad
Дата: 22.10.2019 12:06:03
makhaon |
---|
каша в логике или в программном дизайне программы. делай чекбокс Readonly у всех пользователей, которым нельзя его нажимать. в OnClick пиши в базу данные, этого должно быть достаточно. |
Там например такая вещь: Кликаешь по чекбоксу подтверждения всей ведомости, он должен проверить сначала, что подтверждена каждая строка ведомости (чекбокс строки), и если не все строки подтверждены, то состояние ведомости не меняется, а выдается сообщение "Не все строки подтверждены, сначала подтвердите все строки". Так что весить событие на OnClick не очень хорошо, т.к. там галочка сразу проставится, и ее надо будет убирать программно, опять вызовется OnClick, и так по кругу.
svnvlad
Дата: 22.10.2019 12:10:37
makhaon, и еще нюанс, перестраховка, но теоретически может возникнуть:
если записываем в базу после отметки, то не факт, что в базу данные еще записались, а галка уже стоит, пользователь думает, что записались.
У меня сначала записывается в базу, а потом уже форма перечитывается из базы и галка проставляется по факту. Если данные не записались, то там и галка не проставится.
Gerasimenko
Дата: 22.10.2019 12:14:20
svnvlad,
автор |
---|
Есть чекбокс на форме, Readonly. Его нажимать есть права не у всех пользователей. При нажатии проверяется, разрешенный ли это пользователь, и если да, то в базу записывается новое значение, а чекбоксу после этого программно проставляем или снимаем галку, в зависимости от нового значения, записанного в базу. |
Странная логика. чекбокс должен при активизации формы быть либо Enabled := False, либо Enabled := True.
goldmi45
Дата: 22.10.2019 12:17:03
svnvlad |
---|
Там например такая вещь: Кликаешь по чекбоксу подтверждения всей ведомости, он должен проверить сначала, что подтверждена каждая строка ведомости (чекбокс строки), и если не все строки подтверждены, то состояние ведомости не меняется, а выдается сообщение "Не все строки подтверждены, сначала подтвердите все строки". Так что весить событие на OnClick не очень хорошо, т.к. там галочка сразу проставится, и ее надо будет убирать программно, опять вызовется OnClick, и так по кругу. |
Кто мешает чекбокс подтверждения всей ведомости задисаблить, пока не все строки подтверждены?
svnvlad
Дата: 22.10.2019 13:21:36
Gerasimenko |
---|
svnvlad,
автор |
---|
Есть чекбокс на форме, Readonly. Его нажимать есть права не у всех пользователей. При нажатии проверяется, разрешенный ли это пользователь, и если да, то в базу записывается новое значение, а чекбоксу после этого программно проставляем или снимаем галку, в зависимости от нового значения, записанного в базу. |
Странная логика. чекбокс должен при активизации формы быть либо Enabled := False, либо Enabled := True. |
Enabled := false делает чекбокс бледным, что едва различимо, поставлена там галка ли нет.
svnvlad
Дата: 22.10.2019 13:33:35
goldmi45 |
---|
Кто мешает чекбокс подтверждения всей ведомости задисаблить, пока не все строки подтверждены? |
Можно.