Как запретить выбор из Combo?

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Как запретить выбор из Combo?

Сообщение kreator »

Есть контрол Combo. Надо запретить редактирование. Выставил на него ReadOnly, Drop выставил в нуль. Но при селекте на него отрабатываются клавиши "вверх", "вниз". Можно ещё и это запретить? Дизейблить контрол не хотелось бы.
We are hard at work… for you. :)
gopstop2007
Полимат
Сообщения: 1810
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 24 раза
Поблагодарили: 10 раз

Как запретить выбор из Combo?

Сообщение 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
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Как запретить выбор из Combo?

Сообщение Admin »

В событии EVENT:PreAlertKey что нибудь типа

Код: Выделить всё

CASE KEYCODE()
OF UpKey 
OROF DownKey
  SETKEYCODE(0)
  CYCLE ! не уверен что нужно...
END
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Как запретить выбор из Combo?

Сообщение kreator »

Cycle нужен обязательно. Но всё равно SETKEYCODE(0) не помогает, всё равно отрабатываются эти клавиши. Буфер не очищается при этом, что-ли.
В принципе выкрутиться не проблема, но сам факт, казалось бы элементарная вещь, но по-простому не получается.
We are hard at work… for you. :)
Аватара пользователя
Aragorn
Активист
Сообщения: 113
Зарегистрирован: 11 Июль 2005, 12:40
Откуда: Москва

Как запретить выбор из Combo?

Сообщение Aragorn »

А вставка до Parent call или после? Или это вообще на TakeEvent?
-------------------------------
В истинном золоте блеска нет...
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Как запретить выбор из Combo?

Сообщение kreator »

До Parent Call в EVENT:PreAlertKey. Честно говоря логика здесь есть - перебить нажатие. Но что-то не идёт. Повторюсь, костыли подставляются всё равно. Мне удивительно, что свойство ReadOnly не логично работает в данном случае.
We are hard at work… for you. :)
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Как запретить выбор из Combo?

Сообщение Shur »

Если из combo надо сделать чёрт-те что, так надо это чёрт-те что расположить под этим комбо и скрывать (?{prop:hide}=1) и показывать (?{prop:hide}=0), когда это нужно. Без остальных извратов.
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Как запретить выбор из Combo?

Сообщение kreator »

Не чёрт-те что, а просто не дать пользователю выбор из комбо в некоторых случаях. Есть, например, ещё режим View для формы, там тоже этот параметр настраиваемый, но там закрываем глаза на это, просто дизейблим кнопку OK. В моём случае так не получается.
We are hard at work… for you. :)
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Как запретить выбор из Combo?

Сообщение Admin »

kreator писал(а): В моём случае так не получается
А что нибудь типа ?Combo{PROP:Use} = "" не прокатит ?
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Как запретить выбор из Combo?

Сообщение Shur »

Вариант с hide/unhide "для некоторых случаев" мне кажется простым и негромоздким.
Оба контрола в этом случае, разумеется, имеют USE() на одну и ту же переменную.
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Как запретить выбор из Combo?

Сообщение kreator »

Admin писал(а):А что нибудь типа ?Combo{PROP:Use} = "" не прокатит ?
Значение должно быть, его менять нельзя.
Вариант с hide/unhide "для некоторых случаев" мне кажется простым и негромоздким.
Да, ещё лучше Enable/Disable. Мне просто показалось, что эстетически нехорошо. По-научному - юзабилити хромает. Пользователь не должен задаваться вопросом - почему комбо вдруг стало не подсвеченным, к примеру, хотя он ничего не делал вроде бы, он прошёл этот комбо и пошёл дальше. А вот, если он решит возвратиться, тогда и будет задавать вопросы, но этот случай редкий совсем, представляется пока.
We are hard at work… for you. :)
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Как запретить выбор из Combo?

Сообщение Алексей- Софт-Центр »

Добрый день!
Иногда hide/unhide и т д не катит.
Так как пользователь должен видеть конкретное значение в комбо,
но его менять не может.
Я в таком случае делаю disable, немного не эстетично, но работает)
Можно еще на это место положить строковую переменную, значение которой будет видно
на месте комбо (а он hide и не забыть его еще и disable)


Алексей
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Как запретить выбор из Combo?

Сообщение Yufil »

Помнится, по Event:Selected подменял список Prop:From на пустой или на строку, содержащую ровно одно текущее значение комбы.
А заблокировать обновление в текстовом поле не проблема...
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Как запретить выбор из Combo?

Сообщение Yufil »

Ещё вроде бы Prop:Drop можно обнулить, после чего COMBO превращается в более-менее обычное Entry-поле . Но деталей, увы, не помню...
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Как запретить выбор из Combo?

Сообщение kreator »

Yufil писал(а):Помнится, по Event:Selected подменял список Prop:From на пустой или на строку, содержащую ровно одно текущее значение комбы.
А заблокировать обновление в текстовом поле не проблема...
Я примерно так и сделал пока. По Event:Selected перестраивается Комбо-очередь и в ней остаётся одна запись, текущая (либо не одна, если другое условие).
Yufil писал(а):щё вроде бы Prop:Drop можно обнулить, после чего COMBO превращается в более-менее обычное Entry-поле . Но деталей, увы, не помню...
prop:Drop обнулил, комбо срабатывает на клавиши вверх-вниз, с чего началась тема.
We are hard at work… for you. :)
Ответить