EIP - Complete

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
gopstop2007
Ветеран
Сообщения: 1179
Зарегистрирован: 25 Март 2009, 21:55

EIP - Complete

Сообщение gopstop2007 » 12 Январь 2019, 14:32

Список, стандартный Browse, в котором используется EIP (edit in place) только при добавлении, при изменении может быть EIP или стандартный Form.
При создании новой (EIP) записи все поля заполняются с помощью PrimeRecord, кроме одного для которого вызывается автоматически справочник и после выбора нужно записать запись. Где указать, после выбора значения из справочника, что работа с EIP завершена, при том, что все поля используемые при добавлении disable?
Спасибо за внимание.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

kreator
Ветеран
Сообщения: 3074
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

EIP - Complete

Сообщение kreator » 12 Январь 2019, 16:29

Я по старинке делаю так. В методе TakeEvent конкретного поля до Parent Call пишу:

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

case Event
             of EVENT:Selected
                                    bla-bla bla
             of EVENT:NewSelection
                                    bla-bla-bla
             of EVENT:Accepted
                                    return EditAction:Complete
end
Но это только пример, без Вашей конкретики. В каком методе у Вас справочник вызывается?
We are hard at work… for you. :)

gopstop2007
Ветеран
Сообщения: 1179
Зарегистрирован: 25 Март 2009, 21:55

EIP - Complete

Сообщение gopstop2007 » 12 Январь 2019, 16:56

Спасибо kreator, попробую.
Пока сделал примитивно, одно поле как используемое (только READ) в TakeEvent после Parent - PRESSKEY(EnterKey).
Работает вроде без проблем :)
kreator писал(а):
12 Январь 2019, 16:29
В каком методе у Вас справочник вызывается?
Справочник вызывается еще до Insert-а, если есть значение из справочника, то выполняется Insert, как вариант например:

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

GlobalRequest = SelectRecord
CustSelect()
IF custid_select 
	POST(Event:Accepted,?Insert)  
ELSE 
	Message('Не указан контрагент') ! если нажата Cancel or Close
END
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

kreator
Ветеран
Сообщения: 3074
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

EIP - Complete

Сообщение kreator » 13 Январь 2019, 14:28

gopstop2007, как-то кривовато всё. Я бы в методе TakeEvent на событие EVENT:Selected сделал бы вызов справочника и дальнейшую обработку. Если выбрано что-то из справочника, то выход с EditAction:Complete, ничего не выбрано, то - EditAction:Cancel. Ещё можно сделать в EIP поле "lookup" (Это Entry с кнопкой вызова окна справочника). Я часто пользую. пользователь при наборе в поле получает подсказку а-ля Комбо, если не находит ничего, то может вызвать справочник. Особенно удобно, если справочник "деревянный".
А так Вы искусственно провоцируете нажатие на клавишу Insert. Непонятно зачем. Как будто пользователь не нажимает сам эту клавишу. И зачем custid_select? GlobalResponse не работает?
We are hard at work… for you. :)

gopstop2007
Ветеран
Сообщения: 1179
Зарегистрирован: 25 Март 2009, 21:55

EIP - Complete

Сообщение gopstop2007 » 13 Январь 2019, 16:49

kreator писал(а):
13 Январь 2019, 14:28
gopstop2007, как-то кривовато всё. Я бы в методе TakeEvent на событие EVENT:Selected сделал бы вызов справочника и дальнейшую обработку. Если выбрано что-то из справочника, то выход с EditAction:Complete, ничего не выбрано, то - EditAction:Cancel. ....

А так Вы искусственно провоцируете нажатие на клавишу Insert. Непонятно зачем. Как будто пользователь не нажимает сам эту клавишу.
Спасибо за замечания, кривовато не отрицаю :), справочник (на IMDD) у меня вызывается до создания записи, чтобы "не дергать" лишний раз сервер (Mysql - онлайн) из-за неопытности пользователя.
И еще, сравним - создаваемая запись ждет выбор значения из справочника (варианты: в этот момент отвлекли, пропало соединение и т.п.) или
офлайн выбрано значение и запись создана автоматом? :)
Насчет клавиши Insert, она скрыта(hide) и не используется.
Если фокус на таблице и нажата горячая клавиша - пробел (space), или выбрано из меню в pop-up - Добавить, -> POST(Event:Accepted,?Insert)
Для пользователя найти клавишу Insert или тыкать мышкой на клавишу, он же не программист :D , а найти и нажать пробел объяснить минутное дело, и так уже более 10-и лет :)
kreator писал(а):
13 Январь 2019, 14:28
И зачем custid_select? GlobalResponse не работает?
для примера и меньше писать :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

kreator
Ветеран
Сообщения: 3074
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

EIP - Complete

Сообщение kreator » 13 Январь 2019, 18:54

Я в таком случае и EIP не использовал бы. Делал бы InsertRecord руками и дело с концом. Но это так, Вам, конечно, видней.
We are hard at work… for you. :)

Ответить