EIP - запрет/разрешение редактирования полей по условию

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
morkovin
Ветеран
Сообщения: 935
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 9 раз
Поблагодарили: 4 раза
Контактная информация:

EIP - запрет/разрешение редактирования полей по условию

Сообщение morkovin »

C9.0 ABC
В броусе в режиме EIP надо запретить или разрешить редактирование нескольких полей в зависимости от значения другого поля. В стандартном шаблоне нет фичи "разрешать EIP по условию". В какой эмбед можно(нужно) вставить это условие ?
WBR, morkovin
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Re: EIP - запрет/разрешение редактирования полей по условию

Сообщение kreator »

В EditClass есть свойство ReadOnly. По-моему то, что надо. А присваивать надо, наверное там, где вычисляется это условие.
Есть ещё вариант, железно работающий, но идеологически неправильный. На событие 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 - запрет/разрешение редактирования полей по условию

Сообщение morkovin »

В EditClass есть свойство ReadOnly. По-моему то, что надо. А присваивать надо, наверное там, где вычисляется это условие
Спасибо! Действительно, в классе EIP Field Manager for Browse .... MyField
в методе Init, после ParentCall вставляем нужный код :

IF MAI:Vid=xx THEN
SELF.SetReadOnly(True)
END
и всё работает.
P.S. Эх, шаблончик бы подправить, чтобы ручками не вставлять(у меня две группы полей по 31(ну типа дни месяца)).
WBR, morkovin
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Re: EIP - запрет/разрешение редактирования полей по условию

Сообщение kreator »

В 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 - запрет/разрешение редактирования полей по условию

Сообщение Игорь Столяров »

morkovin писал(а): Действительно, в классе EIP Field Manager for Browse .... MyField в методе Init, после ParentCall вставляем нужный код
К сожалению не работает для полей SPIN в EIP ....
Но успех можно развить: просто прерываем по условию (If FlagNoEdit then Return.)
метод EditInPlace::BAS:MyField.Init ДО PARENT.Init(FieldNumber,ListBox,UseVar)

Спасибо за идею ! :)
Make Clarion Great Again ! 😎
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

EIP - запрет/разрешение редактирования полей по условию

Сообщение kreator »

Игорь Столяров писал(а):К сожалению не работает для полей SPIN в EIP ....
SPIN вообще прикольный контрол относительно ReadOnly. И без EIP такая же хрень. Кажется (могу, если надо, уточнить) проблема решается принудительной установкой нижней и верхней границы (prop:Range, оба свойства должны быть равны значению).
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

EIP - запрет/разрешение редактирования полей по условию

Сообщение Игорь Столяров »

kreator писал(а): принудительной установкой нижней и верхней границы (prop:Range, оба свойства должны быть равны значению).
В контексте использования в EIP - это жесть. :)
Вроде поле для изменения открывается и изменить нельзя. Юзеры задолбят.
Уж лучше совсем его не открывать на изменение (можно добавить сообщение почему низя изменять).
Make Clarion Great Again ! 😎
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

EIP - запрет/разрешение редактирования полей по условию

Сообщение kreator »

Игорь Столяров писал(а):В контексте использования в EIP - это жесть.
Вообще жесть и без EIP с точки зрения программирования. Но, по-моему, есть ещё красивый вариант и, кажется, здесь обсуждался. EIP-менеджер формирует очередь полей, которые нужно редактировать. Можно после этого формирования принудительно удалить ненужные.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

EIP - запрет/разрешение редактирования полей по условию

Сообщение Игорь Столяров »

kreator писал(а): Можно после этого формирования принудительно удалить ненужные.
Это без проблем - выключить редактирование полей несложно.
Здесь задача именно запрета редактирования по условию.
Есть общий список сотрудников. Возраст мальчиков - можно менять, возраст девочек - не можно. И т.д. :)
Make Clarion Great Again ! 😎
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

EIP - запрет/разрешение редактирования полей по условию

Сообщение kreator »

Игорь Столяров писал(а):Есть общий список сотрудников. Возраст мальчиков - можно менять, возраст девочек - не можно. И т.д. :)
Типа, если при редактировании в EIP одного столбца выбран мальчик, то редактирование другого столбца не возможно?
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

EIP - запрет/разрешение редактирования полей по условию

Сообщение Игорь Столяров »

kreator писал(а): если при редактировании в EIP одного столбца выбран мальчик, то редактирование другого столбца не возможно
Можно и так, будет работать. Т.е. зависимость возможности редактирования поля от типа записи в списке.
В моем примере пол сотрудника определяет возможность изменения его возраста.
Make Clarion Great Again ! 😎
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

EIP - запрет/разрешение редактирования полей по условию

Сообщение kreator »

Я в таком случае вешал в методе TakeEvent() на событие Selected нередактируемого поля выход из процедуры со значением EditAction:Forward или EditAction:Backward или EditAction:Complete. Не очень красиво, согласен.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

EIP - запрет/разрешение редактирования полей по условию

Сообщение Игорь Столяров »

kreator писал(а): В EditManagerClass есть свойство EQ, это очередь с сыылками на классы редактируемых объектов (поле Control).
Спасибо ! Оказывается все просто: включаем / выключаем поля редактирования EIP вообще как душе угодно.
Хошь при инициализации, хошь по условию, любые типы полей EIP. Полное управление полями ввода EIP ...
Пипец, куда я раньше смотрел ? Столько крови это класс EIP уже выпил ... :(
Make Clarion Great Again ! 😎
Ответить