Одна browse много update form

Clarion, Clarion 7

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

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

Одна browse много update form

Сообщение gopstop2007 »

Таблица с таб-ами, в зависимости от таб-а и нажатии клавиши Update должна вызваться "нужная" Update Form.
В стандартной Browse нет возможности вклинится в execute для подстановки своих Update Form, решение только с помощью OMIT ? :cat:
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Одна browse много update form

Сообщение Yufil »

1 вариант. Напиши Update-процедуру типа Source, которая вызывает ту или иную форму, в зависимости от...
2 вариант - создать совсем пустую процедуру Dummy, которая вообще ничего не делает, поставить её в качестве формы обновления, а потом взглянуть в код и до/после вызова Dummy вставить выбор той или иной формы.

Вот, нашёл в работающем коде, нужно было вызвать процедуру testeditor или ScreenEditor в зависимости от типа записи

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

ThisWindow.Run PROCEDURE(USHORT Number,BYTE Request)
ReturnValue          BYTE,AUTO

  CODE
  ReturnValue = PARENT.Run(Number,Request)
  !-- Это я вставил 
  IF SELF.Request = ViewRecord
    ReturnValue = RequestCancelled                         ! Always return RequestCancelled if the form was opened in ViewRecord mode
  ELSE
    GlobalRequest = Request
    IF Loc:ScreenType = 'T' 
        TestEditor(1)
    ELSE
        ScreenEditor(1)  
    END 
    ReturnValue = GlobalResponse
  END
  RETURN ReturnValue 
  !--- А это сгенерировано 
  IF SELF.Request = ViewRecord
    ReturnValue = RequestCancelled                         ! Always return RequestCancelled if the form was opened in ViewRecord mode
  ELSE
    GlobalRequest = Request
    Dummy
    ReturnValue = GlobalResponse
  END
  RETURN ReturnValue
kreator
✯ Ветеран ✯
Сообщения: 4983
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 20 раз

Одна browse много update form

Сообщение kreator »

А зачем разные Update Form? Разные таблицы/файлы редактируются? Временное решение какое-то?
Было дело, я форму рисовал с несколькими закладками (активные/не активные в зависимости от условий).
А вообще метод Run для разных хитрых штук с Update Form.
А в десятке ещё заложена возможность по условию делать Update Form или EIP.
We are hard at work… for you. :)
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Одна browse много update form

Сообщение gopstop2007 »

Yufil писал(а): 26 Май 2017, 19:39 Вот, нашёл в работающем коде, нужно было вызвать процедуру testeditor или ScreenEditor в зависимости от типа записи
Спасибо Yufil, я так и вставляю с помощью OMIT , думал еще есть решение кроме этого :)
kreator писал(а): 26 Май 2017, 20:26 А зачем разные Update Form?
В зависимости от условий, наличие и скрытие дополнительных таб-ов в форме не выход, одна Update форма на два поля, другая на пол-экрана :) и потом использовать раздельные Update формы в зависимости от условий проще.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
kreator
✯ Ветеран ✯
Сообщения: 4983
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 20 раз

Одна browse много update form

Сообщение kreator »

gopstop2007 писал(а): 27 Май 2017, 8:57 одна Update форма на два поля, другая на пол-экрана
Как вариант, два поля можно в EIP редактировать. Это в шаблонах предусмотрено. Как раз, может, для таких случаев. И логика вроде бы в этом есть - зачем открывать тяжёлую форму для редактирования пары-тройки полей.
We are hard at work… for you. :)
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Одна browse много update form

Сообщение gopstop2007 »

kreator писал(а): 27 Май 2017, 9:46 Как вариант, два поля можно в EIP редактировать. Это в шаблонах предусмотрено. Как раз, может, для таких случаев. И логика вроде бы в этом есть - зачем открывать тяжёлую форму для редактирования пары-тройки полей.
я два поля для примера привел :), а например форма для перемещения и форма для розничной продажи, + форму для продажи через штрих код, + форму для планшета и т.д.... :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Одна browse много update form

Сообщение Yufil »

Тогда самый простой вариант - сделать Update Procedure типа Source и передать ей параметр каким-то образом (если шаблон допускает, то напрямую, если нет - через какую-то глобальную переменную)

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

UpdateSourceProcedure    PROCEDURE(...)
                                      Code 
                                      CASE  UpdateType
                                      OF 1 
                                         UpdateProcedure1() 
                                      OF 2 
                                         UpdateProcedure2()
                                      ....
                                      RETURN 
И никаких игрищ с OMIT
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Одна browse много update form

Сообщение gopstop2007 »

Yufil писал(а): 27 Май 2017, 11:17 Тогда самый простой вариант - сделать Update Procedure типа Source и передать ей параметр каким-то образом (если шаблон допускает, то напрямую, если нет - через какую-то глобальную переменную)
И никаких игрищ с OMIT
Спасибо Yufil, попробую для сравнения :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4615
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

Одна browse много update form

Сообщение finsoftrz »

Я тоже через source процедуру делаю. В данном случае, без параметра, анализируется тип документа и вызывается соответствующая форма. А EIP вообще никогда не использую. Формы всякими шаблонами автоматически распознаются и навешивается разный функционал (логические блокировки, логирование, распределение прав доступа и т.п.). С EIP, наверно, тоже можно что-то придумать, но для единообразия не стал заморачиваться... Когда некоторые клиенты переходили с 1С, думал, будут роптать, там при редактировании документов раньше был только EIP. Нет, не роптали, быстро привыкли, им даже удобнее показалось. Единственная хитрость, когда жмыкают по колонке в броузе, форма открывается с автоматическим позиционированием на нужное поле. Это шаблоном соответствующим обеспечивается.
C6/C11, ШВС, tps/btrieve.
Ответить