Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вызов ItemChanged
|
|||
|---|---|---|---|
|
#18+
Доброго времечка суток! У меня такая непонятная (мне) проблемка - есть поле в DW типа Date. Когда я из скрипта меняю в нём значение, не отрабатывает ItemChanged. Когда руками редактирую это поле - всё нормально! Что вы можете по этому поводу подсказать (PB 9 b 6533) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2005, 18:06 |
|
||
|
Вызов ItemChanged
|
|||
|---|---|---|---|
|
#18+
а оно и не должно отрабатывать. есть реальность, а есть Ваше искаженное представление о ней ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2005, 18:10 |
|
||
|
Вызов ItemChanged
|
|||
|---|---|---|---|
|
#18+
2Levon Прийдется ручками вызвать ItemChanged после изменения значения поля (если это необходимо). RTFM TriggerEvent (), PostEvent () etc. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2005, 18:14 |
|
||
|
Вызов ItemChanged
|
|||
|---|---|---|---|
|
#18+
Неееет! Иначе появится следующий вопрос - как передать dwo. А потом следующий вопрос - почему у меня появились memory leaks. лучше сразу свое творчество выносить в отдельную функцию и вызывать ее из itemchanged и плюс оттуда где "из скрипта меняю в нём значение". ИМХО, "встроенные" события вызывать "вручную" нельзя категорически - у человека у которого сработал breakpoint например в resize и мысли не должно возникать что это вызвано не изменениями размера окна, а вызвано кем-то откуда-то зачем-то.... то же самое касается всяческих itemchanged, editchanged, clicked и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2005, 18:25 |
|
||
|
Вызов ItemChanged
|
|||
|---|---|---|---|
|
#18+
ЗоринАндрейНеееет! Иначе появится следующий вопрос - как передать dwo. А потом следующий вопрос - почему у меня появились memory leaks. лучше сразу свое творчество выносить в отдельную функцию и вызывать ее из itemchanged и плюс оттуда где "из скрипта меняю в нём значение". ИМХО, "встроенные" события вызывать "вручную" нельзя категорически - у человека у которого сработал breakpoint например в resize и мысли не должно возникать что это вызвано не изменениями размера окна, а вызвано кем-то откуда-то зачем-то.... то же самое касается всяческих itemchanged, editchanged, clicked и т.п. Если сам проектируешь приложение - согласен, но если вопрос касается сопровождения ранее созданного творения, то проще все-таки передать параметры ИМХО :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2005, 18:28 |
|
||
|
Вызов ItemChanged
|
|||
|---|---|---|---|
|
#18+
ЗоринАндрейИМХО, "встроенные" события вызывать "вручную" нельзя категорически Абсолютно с Вами согласен! За совет с функцией - спасибо, именно так и сделаю. Повозиться, конечно, прийдётся, но что ж поделаешь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2005, 22:48 |
|
||
|
Вызов ItemChanged
|
|||
|---|---|---|---|
|
#18+
dwobject dwo1 dwo1 = dw_1.Object.youitemchngedcolumnname dw_1.event itemchanged(1, dwo1, 'youstringvalue') Туды её в качель... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2005, 20:59 |
|
||
|
Вызов ItemChanged
|
|||
|---|---|---|---|
|
#18+
voronkdwobject dwo1 dwo1 = dw_1.Object.youitemchngedcolumnname dw_1.event itemchanged(1, dwo1, 'youstringvalue') Туды её в качель... так конечно можно, но не нужно :) чтоб поменьше переписывать кода, лучше всего создать Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2005, 22:48 |
|
||
|
Вызов ItemChanged
|
|||
|---|---|---|---|
|
#18+
Выполнение AcceptText() - вызывает событие ItemChanged(), ежели конечно не вызовит событие ItemError() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2005, 07:01 |
|
||
|
Вызов ItemChanged
|
|||
|---|---|---|---|
|
#18+
to Guest_2: Не вызывает, а может вызывать. (см. хелп) В данном случае нихрена не вызывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2005, 10:19 |
|
||
|
Вызов ItemChanged
|
|||
|---|---|---|---|
|
#18+
voronk dwobject dwo1 dwo1 = dw_1.Object.youitemchngedcolumnname dw_1.event itemchanged(1, dwo1, 'youstringvalue') а где DELETE dwo1 ? и как в этом случае с памятью? не вытекает? и еще - тот кто пишет в itemchanged return 1 ожидает что сработает itemerror. и где обработка возвращаемого из itemchanged значения? и как обрабатывать return 2? Еще раз повторю - если я попал в itemchanged это должно означать что юзер какое-то поле отредактировал, а не то что кому-то лень сделать отдельную функцию/событие для обработки itemchanged в тех случаях когда оно якобы должно вызываться. alexis glinski , а весь код из ItemChanged перенести (cut-paste) в ue_ItemChanged ... логично. но я бы передавал dwo.name. весь dwo там нафик не нужен. если кроме name что-то понадобится - легко вытащить самостоятельно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2005, 16:40 |
|
||
|
Вызов ItemChanged
|
|||
|---|---|---|---|
|
#18+
я извиняюсь, меньше всего я хочу увести человека не туда куда надо, скорее всего я чего то не допонял. К Андрею: А зачем "delete"? Я декларирую dwo как локальную переменную в "window" ивенте, не в "datawindow". Нет, память не вытекает. Скрипт давно работает и нареканий не вызывает в "fileopen" ивенте. К Левону: давай (если не облом) по подробнее, откуда ты этот "itemchanged" хочеш вызывать, в каком скрипте/ивенте? Может можно: сначала "validate data", потом "SetItem", потом "Accepttext" и dw_1.TriggerEvent(Itemchanged!)? Туды её в качель... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2005, 17:11 |
|
||
|
Вызов ItemChanged
|
|||
|---|---|---|---|
|
#18+
А зачем "delete"? Я декларирую dwo как локальную переменную в "window" ивенте, не в "datawindow".сорри, не delete конечно, а DESTROY. эт то же самое в каком-то другом языке называется delete. апичатка какая разница где объявлена переменная? Вот тут есть DataWindowExpressions там где то посередине есть "Destroying Objects You Didn't Create" впрочем статья старая, может сейчас уже не так - не проверял. меньше всего я хочу увести человека не туда куда надо именно этим Вы и занимаетесь в данный момент. впрочем поздно уже Автор топика все правильно понял еще 11-го числа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2005, 19:15 |
|
||
|
Вызов ItemChanged
|
|||
|---|---|---|---|
|
#18+
ЗоринАндрей, Андрей, это уже не первая тема, в котором Вы выступаете категорически против вызова событий из скрипта. И хотя я без проблем использую такие вызовы, тем не менее с приводимыми Вами аргументами согласен. Но вот Вы предлагаете заводить новую функцию. Вопрос - а где? Можно эту функцию разместить как функцию окна. В первое время я так и делал. Но потом мне это стало неудобным. Когда dw контролов и таких функций становится много, то очень трудно определить - что к чему относится. Особенно, когда надо что-то модифицировать через каке-то время, через годик, например. А все потому, что по сути, функция должна быть методом datawindow объекта, а не окна. Но у простого dw контрола, возможности завести определенные пользователем методы нет. Для этого приходится создавать user object типа datawindow, прописывать этот метод. В результате количество объектов в проекте увеличивается, наглядность также теряется. Да и в плане системных ресурсов я думаю это обходится небесплатно. Так как же быть? Как Вы поступаете в этих случаях? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2005, 17:11 |
|
||
|
Вызов ItemChanged
|
|||
|---|---|---|---|
|
#18+
авторКак Вы поступаете в этих случаях?Долго объяснять. В разных случаях по разному. Ну если в двух словах - обработка практически вся строится на сервисах. т.е. при itemchanged, itemfocuschanged, SetItem, и т.п. уведомляются соответствующие сервисы. И в свою очередь вызывают события datawindow, изначально пустые( на жаргоне - "дырки" :-) , в которых можно прописать дополнительный код или изменить поведение сервиса (аналогично тому как работает return 1 / return 2 в itemchanged) Ну и сами сервисы часто помогают просто избежать кодирования в соответствующих event-ах. Ну например вместо проверки в itemchanged пишем в конструкторе dw control что-то типа inv_validator.of_AddRule('start_date < end_date'). Далее сервис будучи вызван из itemcganged перебирает выражения и проверяет их, по ходу дела вызывая event-ы dw_control-а srv_val_beginvalidate, srv_val_endvalidate, srv_val_validation_error и т.п. Часто повторяющиеся вещи выносим в non-visual object и вызываем из "дырок" по мере необходимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2005, 18:01 |
|
||
|
Вызов ItemChanged
|
|||
|---|---|---|---|
|
#18+
Однако, Андрей, согласитесь, приведенные решения не лежат на поверхности, и людям начинающим (и не только начинающим) совсем не очевидны. А надо какое-то с одной стороны простое, с другой стороны надежное средство. Можно также, как это предлагает в этой теме Alexis Glinski , в роли функций применять user event-ы: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2005, 12:40 |
|
||
|
|

start [/forum/topic.php?fid=15&fpage=92&tid=1338596]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 171ms |

| 0 / 0 |
