В стандартной Browse нет возможности вклинится в execute для подстановки своих Update Form, решение только с помощью OMIT ?
Одна browse много update form
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
gopstop2007
- Полимат
- Сообщения: 1857
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 32 раза
- Поблагодарили: 10 раз
Одна browse много update form
Таблица с таб-ами, в зависимости от таб-а и нажатии клавиши Update должна вызваться "нужная" Update Form.
В стандартной Browse нет возможности вклинится в execute для подстановки своих Update Form, решение только с помощью OMIT ?
В стандартной Browse нет возможности вклинится в execute для подстановки своих Update Form, решение только с помощью OMIT ?
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Одна browse много update form
1 вариант. Напиши Update-процедуру типа Source, которая вызывает ту или иную форму, в зависимости от...
2 вариант - создать совсем пустую процедуру Dummy, которая вообще ничего не делает, поставить её в качестве формы обновления, а потом взглянуть в код и до/после вызова Dummy вставить выбор той или иной формы.
Вот, нашёл в работающем коде, нужно было вызвать процедуру testeditor или ScreenEditor в зависимости от типа записи
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
- ✯ Ветеран ✯
- Сообщения: 5250
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 27 раз
Одна browse много update form
А зачем разные Update Form? Разные таблицы/файлы редактируются? Временное решение какое-то?
Было дело, я форму рисовал с несколькими закладками (активные/не активные в зависимости от условий).
А вообще метод Run для разных хитрых штук с Update Form.
А в десятке ещё заложена возможность по условию делать Update Form или EIP.
Было дело, я форму рисовал с несколькими закладками (активные/не активные в зависимости от условий).
А вообще метод Run для разных хитрых штук с Update Form.
А в десятке ещё заложена возможность по условию делать Update Form или EIP.
We are hard at work… for you. 
-
gopstop2007
- Полимат
- Сообщения: 1857
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 32 раза
- Поблагодарили: 10 раз
Одна browse много update form
Спасибо Yufil, я так и вставляю с помощью OMIT , думал еще есть решение кроме этогоYufil писал(а): 26 Май 2017, 19:39 Вот, нашёл в работающем коде, нужно было вызвать процедуру testeditor или ScreenEditor в зависимости от типа записи
В зависимости от условий, наличие и скрытие дополнительных таб-ов в форме не выход, одна Update форма на два поля, другая на пол-экрана
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
-
kreator
- ✯ Ветеран ✯
- Сообщения: 5250
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 27 раз
Одна browse много update form
Как вариант, два поля можно в EIP редактировать. Это в шаблонах предусмотрено. Как раз, может, для таких случаев. И логика вроде бы в этом есть - зачем открывать тяжёлую форму для редактирования пары-тройки полей.
We are hard at work… for you. 
-
gopstop2007
- Полимат
- Сообщения: 1857
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 32 раза
- Поблагодарили: 10 раз
Одна browse много update form
я два поля для примера привелkreator писал(а): 27 Май 2017, 9:46 Как вариант, два поля можно в EIP редактировать. Это в шаблонах предусмотрено. Как раз, может, для таких случаев. И логика вроде бы в этом есть - зачем открывать тяжёлую форму для редактирования пары-тройки полей.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Одна browse много update form
Тогда самый простой вариант - сделать Update Procedure типа Source и передать ей параметр каким-то образом (если шаблон допускает, то напрямую, если нет - через какую-то глобальную переменную)
И никаких игрищ с OMIT
Код: Выделить всё
UpdateSourceProcedure PROCEDURE(...)
Code
CASE UpdateType
OF 1
UpdateProcedure1()
OF 2
UpdateProcedure2()
....
RETURN -
gopstop2007
- Полимат
- Сообщения: 1857
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 32 раза
- Поблагодарили: 10 раз
Одна browse много update form
Спасибо Yufil, попробую для сравненияYufil писал(а): 27 Май 2017, 11:17 Тогда самый простой вариант - сделать Update Procedure типа Source и передать ей параметр каким-то образом (если шаблон допускает, то напрямую, если нет - через какую-то глобальную переменную)
И никаких игрищ с OMIT
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5644
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 20 раз
- Поблагодарили: 82 раза
Одна browse много update form
Я тоже через source процедуру делаю. В данном случае, без параметра, анализируется тип документа и вызывается соответствующая форма. А EIP вообще никогда не использую. Формы всякими шаблонами автоматически распознаются и навешивается разный функционал (логические блокировки, логирование, распределение прав доступа и т.п.). С EIP, наверно, тоже можно что-то придумать, но для единообразия не стал заморачиваться... Когда некоторые клиенты переходили с 1С, думал, будут роптать, там при редактировании документов раньше был только EIP. Нет, не роптали, быстро привыкли, им даже удобнее показалось. Единственная хитрость, когда жмыкают по колонке в броузе, форма открывается с автоматическим позиционированием на нужное поле. Это шаблоном соответствующим обеспечивается.
C6/C12, ШВС, tps/btrieve.
