|
|
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
Нужно, чтобы чекбокс реагировал на событие нажатия мышкой, но не отождествлял это с проставлением галочки. Есть чекбокс на форме, Readonly. Его нажимать есть права не у всех пользователей. При нажатии проверяется, разрешенный ли это пользователь, и если да, то в базу записывается новое значение, а чекбоксу после этого программно проставляем или снимаем галку, в зависимости от нового значения, записанного в базу. Но он так не работает. Если делаешь Readonly, то перестает реагировать на мышь вообще, соответственно событие OnClick не срабатывает. Пробовал событие OnMouseDown, тоже что-то криво получается. Пробовал даже извращаться, поверх чекбокса класть прозрачный TImage и весить событие на него. Но он почему-то не помещается Bring to front. При нажатии на него реагирует чекбокс. Да и не удобно это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 11:16 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
каша в логике или в программном дизайне программы. делай чекбокс Readonly у всех пользователей, которым нельзя его нажимать. в OnClick пиши в базу данные, этого должно быть достаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 11:25 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
svnvlad, перед установкой просто OnClick в nil установи, а потом верни обработчик назад ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 11:31 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), разобрался уже, повесил на OnMouseDown все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 12:02 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
makhaonкаша в логике или в программном дизайне программы. делай чекбокс Readonly у всех пользователей, которым нельзя его нажимать. в OnClick пиши в базу данные, этого должно быть достаточно. Там например такая вещь: Кликаешь по чекбоксу подтверждения всей ведомости, он должен проверить сначала, что подтверждена каждая строка ведомости (чекбокс строки), и если не все строки подтверждены, то состояние ведомости не меняется, а выдается сообщение "Не все строки подтверждены, сначала подтвердите все строки". Так что весить событие на OnClick не очень хорошо, т.к. там галочка сразу проставится, и ее надо будет убирать программно, опять вызовется OnClick, и так по кругу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 12:06 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
makhaon, и еще нюанс, перестраховка, но теоретически может возникнуть: если записываем в базу после отметки, то не факт, что в базу данные еще записались, а галка уже стоит, пользователь думает, что записались. У меня сначала записывается в базу, а потом уже форма перечитывается из базы и галка проставляется по факту. Если данные не записались, то там и галка не проставится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 12:10 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
svnvlad, авторЕсть чекбокс на форме, Readonly. Его нажимать есть права не у всех пользователей. При нажатии проверяется, разрешенный ли это пользователь, и если да, то в базу записывается новое значение, а чекбоксу после этого программно проставляем или снимаем галку, в зависимости от нового значения, записанного в базу. Странная логика. чекбокс должен при активизации формы быть либо Enabled := False, либо Enabled := True. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 12:14 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
svnvladТам например такая вещь: Кликаешь по чекбоксу подтверждения всей ведомости, он должен проверить сначала, что подтверждена каждая строка ведомости (чекбокс строки), и если не все строки подтверждены, то состояние ведомости не меняется, а выдается сообщение "Не все строки подтверждены, сначала подтвердите все строки". Так что весить событие на OnClick не очень хорошо, т.к. там галочка сразу проставится, и ее надо будет убирать программно, опять вызовется OnClick, и так по кругу. Кто мешает чекбокс подтверждения всей ведомости задисаблить, пока не все строки подтверждены? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 12:17 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
Gerasimenkosvnvlad, авторЕсть чекбокс на форме, Readonly. Его нажимать есть права не у всех пользователей. При нажатии проверяется, разрешенный ли это пользователь, и если да, то в базу записывается новое значение, а чекбоксу после этого программно проставляем или снимаем галку, в зависимости от нового значения, записанного в базу. Странная логика. чекбокс должен при активизации формы быть либо Enabled := False, либо Enabled := True. Enabled := false делает чекбокс бледным, что едва различимо, поставлена там галка ли нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 13:21 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
goldmi45Кто мешает чекбокс подтверждения всей ведомости задисаблить, пока не все строки подтверждены? Можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 13:33 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
svnvladEnabled := false делает чекбокс бледным, что едва различимо, поставлена там галка ли нет.Зато четко видно, что элемент неактивный и тыкать в него бессмысленно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 14:16 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
svnvlad Так что весить событие на OnClick не очень хорошо, т.к. там галочка сразу проставится, и ее надо будет убирать программно, опять вызовется OnClick, и так по кругу. Установка Checked из программы не вызывает OnClick, что весьма логично. Т.ч. проблемы топика не вижу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 14:25 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
Можно просто создать потомка от класса и придать ему дивную расскраску. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2019, 14:30 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
svnvladНужно, чтобы чекбокс реагировал на событие нажатия мышкой, но не отождествлял это с проставлением галочки. Есть чекбокс на форме, Readonly. Его нажимать есть права не у всех пользователей. Просто замени чекбокс на кнопку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2019, 10:39 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
svnvladGerasimenkosvnvlad, пропущено... Странная логика. чекбокс должен при активизации формы быть либо Enabled := False, либо Enabled := True. Enabled := false делает чекбокс бледным, что едва различимо, поставлена там галка ли нет. сделай у чекбокса изменяемый кэпшн: включено и отключено (свои надписи, конечно). мы у себя кое-где так меняем, удобно и надежно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2019, 11:41 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
svnvladkealon(Ruslan), разобрался уже, повесил на OnMouseDown все.А если я на твой чекбокс перемещусь через клавишу Tab, а затем нажму пробел. Что будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2019, 12:05 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
Василий 2svnvlad Так что весить событие на OnClick не очень хорошо, т.к. там галочка сразу проставится, и ее надо будет убирать программно, опять вызовется OnClick, и так по кругу. Установка Checked из программы не вызывает OnClick, что весьма логично.Да ты что, а проверить пробовал? :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2019, 12:06 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
Квейд, хм, да, действительно, вызывает. Что нелогично :D Тем не менее: 1) Отмена установки Checked в True по внешнему условию вполне отрабатывает 2) Можно при желании добраться и до property TButtonControl.ClicksDisabled ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2019, 14:48 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
Состояние Enabled:=false для того и придумано, чтобы те кому не нужно не тыкали куда не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2019, 14:50 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
Оно не очень удобно, т.к. в затемненном контроле плохо воспринимается его текущее наполнение. Плюс исключается возможность при тыке вывести дружелюбную поясняющую мессагу. Мне лично много нервов стоили моменты, когда в навороченной софтине какой-нибудь пункт меню или контрол отключен, и хрен знает что ему не нравится. Ступор, кидание тапка в монитор, проклятия в адрес разрабов и гугление. Всего этого можно избежать, вместо отключения выводя поясняющую надпись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2019, 16:25 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
Василий 2Оно не очень удобно, т.к. в затемненном контроле плохо воспринимается его текущее наполнение. Плюс исключается возможность при тыке вывести дружелюбную поясняющую мессагу. Мне лично много нервов стоили моменты, когда в навороченной софтине какой-нибудь пункт меню или контрол отключен, и хрен знает что ему не нравится. Ступор, кидание тапка в монитор, проклятия в адрес разрабов и гугление. Всего этого можно избежать, вместо отключения выводя поясняющую надпись. Хинты туда не завезли? Или поясняющие лейблы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2019, 16:26 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
svnvladНужно, чтобы чекбокс реагировал на событие нажатия мышкой, но не отождествлял это с проставлением галочки. Есть чекбокс на форме, Readonly. Его нажимать есть права не у всех пользователей. При нажатии проверяется, разрешенный ли это пользователь, и если да, то в базу записывается новое значение, а чекбоксу после этого программно проставляем или снимаем галку, в зависимости от нового значения, записанного в базу. Держи, всё уже придумано до нас: https://forum.sources.ru/index.php?showtopic=354304 :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2019, 17:55 |
|
||
|
Чекбокс, отмечающийся программно
|
|||
|---|---|---|---|
|
#18+
wadmanХинты туда не завезли? Или поясняющие лейблы? Хинты на дизейбленный контрол? Ну сам попробуй)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2019, 11:40 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39879922&tid=2038912]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 494ms |

| 0 / 0 |
