EIP - запрет/разрешение редактирования полей по условию
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- morkovin
- Ветеран
- Сообщения: 935
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
- Контактная информация:
EIP - запрет/разрешение редактирования полей по условию
C9.0 ABC
В броусе в режиме EIP надо запретить или разрешить редактирование нескольких полей в зависимости от значения другого поля. В стандартном шаблоне нет фичи "разрешать EIP по условию". В какой эмбед можно(нужно) вставить это условие ?
В броусе в режиме EIP надо запретить или разрешить редактирование нескольких полей в зависимости от значения другого поля. В стандартном шаблоне нет фичи "разрешать EIP по условию". В какой эмбед можно(нужно) вставить это условие ?
WBR, morkovin
-
- ✯ Ветеран ✯
- Сообщения: 5160
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: EIP - запрет/разрешение редактирования полей по условию
В EditClass есть свойство ReadOnly. По-моему то, что надо. А присваивать надо, наверное там, где вычисляется это условие.
Есть ещё вариант, железно работающий, но идеологически неправильный. На событие EVENT:Selected в методе TakeEvent до ParentCall делать проверку на условие и в случае невыполнение делать return EditAction:Forward. Но в этом случае нужно ещё отслеживать возможную комбинацию клавиш SHIFT-TAB.
Есть ещё вариант, железно работающий, но идеологически неправильный. На событие EVENT:Selected в методе TakeEvent до ParentCall делать проверку на условие и в случае невыполнение делать return EditAction:Forward. Но в этом случае нужно ещё отслеживать возможную комбинацию клавиш SHIFT-TAB.
We are hard at work… for you. 

- morkovin
- Ветеран
- Сообщения: 935
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
- Контактная информация:
Re: EIP - запрет/разрешение редактирования полей по условию
Спасибо! Действительно, в классе EIP Field Manager for Browse .... MyFieldВ EditClass есть свойство ReadOnly. По-моему то, что надо. А присваивать надо, наверное там, где вычисляется это условие
в методе Init, после ParentCall вставляем нужный код :
IF MAI:Vid=xx THEN
SELF.SetReadOnly(True)
END
и всё работает.
P.S. Эх, шаблончик бы подправить, чтобы ручками не вставлять(у меня две группы полей по 31(ну типа дни месяца)).
WBR, morkovin
-
- ✯ Ветеран ✯
- Сообщения: 5160
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: EIP - запрет/разрешение редактирования полей по условию
В EditManagerClass есть свойство EQ, это очередь с сыылками на классы редактируемых объектов (поле Control). Можно в цикле по этой очереди (думаю, после инициализации Manager'а где-то) присвоить это свойство, типа так:
Попробуй. Я не проверял.
Код: Выделить всё
loop i#=1 to records(self.EQ)
get(self.EQ,i#)
if
self.EQ.Control.SetReadOnly(True)
else
self.EQ.Control.SetReadOnly(False)
end
end
We are hard at work… for you. 

- Игорь Столяров
- Ветеран движения
- Сообщения: 8031
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
EIP - запрет/разрешение редактирования полей по условию
К сожалению не работает для полей SPIN в EIP ....
Но успех можно развить: просто прерываем по условию (If FlagNoEdit then Return.)
метод EditInPlace::BAS:MyField.Init ДО PARENT.Init(FieldNumber,ListBox,UseVar)
Спасибо за идею !

Make Clarion Great Again ! 
-
- ✯ Ветеран ✯
- Сообщения: 5160
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
EIP - запрет/разрешение редактирования полей по условию
SPIN вообще прикольный контрол относительно ReadOnly. И без EIP такая же хрень. Кажется (могу, если надо, уточнить) проблема решается принудительной установкой нижней и верхней границы (prop:Range, оба свойства должны быть равны значению).Игорь Столяров писал(а):К сожалению не работает для полей SPIN в EIP ....
We are hard at work… for you. 

- Игорь Столяров
- Ветеран движения
- Сообщения: 8031
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
EIP - запрет/разрешение редактирования полей по условию
В контексте использования в EIP - это жесть.

Вроде поле для изменения открывается и изменить нельзя. Юзеры задолбят.
Уж лучше совсем его не открывать на изменение (можно добавить сообщение почему низя изменять).
Make Clarion Great Again ! 
-
- ✯ Ветеран ✯
- Сообщения: 5160
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
EIP - запрет/разрешение редактирования полей по условию
Вообще жесть и без EIP с точки зрения программирования. Но, по-моему, есть ещё красивый вариант и, кажется, здесь обсуждался. EIP-менеджер формирует очередь полей, которые нужно редактировать. Можно после этого формирования принудительно удалить ненужные.Игорь Столяров писал(а):В контексте использования в EIP - это жесть.
We are hard at work… for you. 

- Игорь Столяров
- Ветеран движения
- Сообщения: 8031
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
EIP - запрет/разрешение редактирования полей по условию
Это без проблем - выключить редактирование полей несложно.
Здесь задача именно запрета редактирования по условию.
Есть общий список сотрудников. Возраст мальчиков - можно менять, возраст девочек - не можно. И т.д.

Make Clarion Great Again ! 
-
- ✯ Ветеран ✯
- Сообщения: 5160
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
EIP - запрет/разрешение редактирования полей по условию
Типа, если при редактировании в EIP одного столбца выбран мальчик, то редактирование другого столбца не возможно?Игорь Столяров писал(а):Есть общий список сотрудников. Возраст мальчиков - можно менять, возраст девочек - не можно. И т.д.
We are hard at work… for you. 

- Игорь Столяров
- Ветеран движения
- Сообщения: 8031
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
EIP - запрет/разрешение редактирования полей по условию
Можно и так, будет работать. Т.е. зависимость возможности редактирования поля от типа записи в списке.
В моем примере пол сотрудника определяет возможность изменения его возраста.
Make Clarion Great Again ! 
-
- ✯ Ветеран ✯
- Сообщения: 5160
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
EIP - запрет/разрешение редактирования полей по условию
Я в таком случае вешал в методе TakeEvent() на событие Selected нередактируемого поля выход из процедуры со значением EditAction:Forward или EditAction:Backward или EditAction:Complete. Не очень красиво, согласен.
We are hard at work… for you. 

- Игорь Столяров
- Ветеран движения
- Сообщения: 8031
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
EIP - запрет/разрешение редактирования полей по условию
Спасибо ! Оказывается все просто: включаем / выключаем поля редактирования EIP вообще как душе угодно.
Хошь при инициализации, хошь по условию, любые типы полей EIP. Полное управление полями ввода EIP ...
Пипец, куда я раньше смотрел ? Столько крови это класс EIP уже выпил ...

Make Clarion Great Again ! 