Страница 1 из 2
Как запретить выбор из Combo?
Добавлено: 20 Апрель 2015, 13:07
kreator
Есть контрол Combo. Надо запретить редактирование. Выставил на него ReadOnly, Drop выставил в нуль. Но при селекте на него отрабатываются клавиши "вверх", "вниз". Можно ещё и это запретить? Дизейблить контрол не хотелось бы.
Как запретить выбор из Combo?
Добавлено: 20 Апрель 2015, 16:14
gopstop2007
может так, в NewSelection или (TakeNewSelection) в зависимости от версии клариона
1. подстановка в момент выбора
Код: Выделить всё
IF Read
?MyPictField{PROP:ScreenText} = CLIP(MyPictField)
FDCB4.TakeNewSelection(?MyPictField)
END
2. выставлять значение при выходе из комбо
Код: Выделить всё
IF Read
MyFieldDrop = MyField
IF Access:MyFileDrop.TryFetch(MyKeyDrop) = Level:Benign
?MyPictField{PROP:ScreenText} = CLIP(MyPictField)
FDCB4.TakeNewSelection(?MyPictField)
POST(EVENT:Accepted, ?MyPictField)
END
END
Как запретить выбор из Combo?
Добавлено: 20 Апрель 2015, 16:15
Admin
В событии EVENT:PreAlertKey что нибудь типа
Код: Выделить всё
CASE KEYCODE()
OF UpKey
OROF DownKey
SETKEYCODE(0)
CYCLE ! не уверен что нужно...
END
Как запретить выбор из Combo?
Добавлено: 21 Апрель 2015, 10:31
kreator
Cycle нужен обязательно. Но всё равно SETKEYCODE(0) не помогает, всё равно отрабатываются эти клавиши. Буфер не очищается при этом, что-ли.
В принципе выкрутиться не проблема, но сам факт, казалось бы элементарная вещь, но по-простому не получается.
Как запретить выбор из Combo?
Добавлено: 21 Апрель 2015, 10:45
Aragorn
А вставка до Parent call или после? Или это вообще на TakeEvent?
Как запретить выбор из Combo?
Добавлено: 21 Апрель 2015, 10:54
kreator
До Parent Call в EVENT:PreAlertKey. Честно говоря логика здесь есть - перебить нажатие. Но что-то не идёт. Повторюсь, костыли подставляются всё равно. Мне удивительно, что свойство ReadOnly не логично работает в данном случае.
Как запретить выбор из Combo?
Добавлено: 21 Апрель 2015, 14:33
Shur
Если из combo надо сделать чёрт-те что, так надо это чёрт-те что расположить под этим комбо и скрывать (?{prop:hide}=1) и показывать (?{prop:hide}=0), когда это нужно. Без остальных извратов.
Как запретить выбор из Combo?
Добавлено: 21 Апрель 2015, 15:08
kreator
Не чёрт-те что, а просто не дать пользователю выбор из комбо в некоторых случаях. Есть, например, ещё режим View для формы, там тоже этот параметр настраиваемый, но там закрываем глаза на это, просто дизейблим кнопку OK. В моём случае так не получается.
Как запретить выбор из Combo?
Добавлено: 21 Апрель 2015, 15:22
Admin
kreator писал(а): В моём случае так не получается
А что нибудь типа ?Combo{PROP:Use} = "" не прокатит ?
Как запретить выбор из Combo?
Добавлено: 21 Апрель 2015, 15:26
Shur
Вариант с hide/unhide "для некоторых случаев" мне кажется простым и негромоздким.
Оба контрола в этом случае, разумеется, имеют USE() на одну и ту же переменную.
Как запретить выбор из Combo?
Добавлено: 21 Апрель 2015, 16:51
kreator
Admin писал(а):А что нибудь типа ?Combo{PROP:Use} = "" не прокатит ?
Значение должно быть, его менять нельзя.
Вариант с hide/unhide "для некоторых случаев" мне кажется простым и негромоздким.
Да, ещё лучше Enable/Disable. Мне просто показалось, что эстетически нехорошо. По-научному - юзабилити хромает. Пользователь не должен задаваться вопросом - почему комбо вдруг стало не подсвеченным, к примеру, хотя он ничего не делал вроде бы, он прошёл этот комбо и пошёл дальше. А вот, если он решит возвратиться, тогда и будет задавать вопросы, но этот случай редкий совсем, представляется пока.
Как запретить выбор из Combo?
Добавлено: 21 Апрель 2015, 17:16
Алексей- Софт-Центр
Добрый день!
Иногда hide/unhide и т д не катит.
Так как пользователь должен видеть конкретное значение в комбо,
но его менять не может.
Я в таком случае делаю disable, немного не эстетично, но работает)
Можно еще на это место положить строковую переменную, значение которой будет видно
на месте комбо (а он hide и не забыть его еще и disable)
Алексей
Как запретить выбор из Combo?
Добавлено: 21 Апрель 2015, 23:59
Yufil
Помнится, по Event:Selected подменял список Prop:From на пустой или на строку, содержащую ровно одно текущее значение комбы.
А заблокировать обновление в текстовом поле не проблема...
Как запретить выбор из Combo?
Добавлено: 22 Апрель 2015, 10:15
Yufil
Ещё вроде бы Prop:Drop можно обнулить, после чего COMBO превращается в более-менее обычное Entry-поле . Но деталей, увы, не помню...
Как запретить выбор из Combo?
Добавлено: 22 Апрель 2015, 10:20
kreator
Yufil писал(а):Помнится, по Event:Selected подменял список Prop:From на пустой или на строку, содержащую ровно одно текущее значение комбы.
А заблокировать обновление в текстовом поле не проблема...
Я примерно так и сделал пока. По Event:Selected перестраивается Комбо-очередь и в ней остаётся одна запись, текущая (либо не одна, если другое условие).
Yufil писал(а):щё вроде бы Prop:Drop можно обнулить, после чего COMBO превращается в более-менее обычное Entry-поле . Но деталей, увы, не помню...
prop:Drop обнулил, комбо срабатывает на клавиши вверх-вниз, с чего началась тема.