Подскажите, каким образом можно найти и переопределить обработчики событий стандартных контролов(например, кнопки Сохранить)?
Возможно ли изменить их стиль?
По сути это две задачи:
1) Изменить стиль (BasePageV2CSS)
2) Изменить обработчики (метод onCardAction, который вызывается при нажатии на кнопку "Сохранить")
Где задаётся обработчик событий элементов карточки редактирования сервиса, в случае, если в свойствах невизуальных компонентов этого сервиса явно не задан Dataset? Попробовал добавить обработчик dlDataOnDatasetDataChange(DataField) на событие OnDatasetDataChange невизуального компонента dlData - не работает (обработчик не вызывается).
Алексей, если Вам нужно событие OnDatasetDataChange - то разумеется у Вас должен быть датасет, чтобы сработало это событие.
Если он явно не указан в дизайнере окна, скорее всего он инициализируется на OnPrepare событии окна:
Дмитрий,
а правильно ли я понял, что при привязке датасета к даталинку события датасета вызывают обработчики событий даталинка, из которых уже вызываются обработчики событий датасета?
К сожалению, всё осталось по-прежнему, обработчик dlDataOnDatasetDataChange(DataField) на событие OnDatasetDataChange невизуального компонента dlData - не вызывается.
а правильно ли я понял, что при привязке датасета к даталинку события датасета вызывают обработчики событий даталинка, из которых уже вызываются обработчики событий датасета?
Дмитрий, нет, сначала срабатывают обработчики события DataLink'a, если конечно датасет ему присвоен, и обработчики событий определены.
Затем срабатывают события самого сервиса датасета.
Они - независимы.
Алексей, я так и не понял, у Вас получилось добиться отработки события?
Указать датасет невизуально довольно тонкий процесс (это означает вы хотите сделать один грид и одну карточку редактирования для нескольких похожих сущностей, иначе легче указать датасет сразу), посмотрите в качестве примера окна wnd_OfferingDetailEdit и wnd_OfferingsDetailTreeArea и их скрипты.
Эти окна предназначены для продуктов в счетах, документах и договорах. Можно заметить, что там привязка датасета идет не в карточке, а перед открытием карточки, т.е. в гриде.
"Олейник Дмитрий" написал: Алексей, я так и не понял, у Вас получилось добиться отработки события?
Дмитрий, нет, не получилось.
Давайте, я опишу ситуацию поподробнее.
Я создал новую пользовательскую карточку редактирования.
Вот такую: http://www.community.terrasoft.ru/forum/topic/9879#comment-44071
Сейчас мне нужно блокировать/разблокировать соответствующие поля ввода (поля, определяющие размер скидки) в зависимости от выбранного "радиобуттона" (относительное или абсолютное значение скидки).
Формы раздела (гриды, воркспейсы, карточки редактирования), в котором находится новый воркспейс, не имеют явного задания в свойствах невизуальных компонентов Dataset-ов.
Моя новая пользовательская форма (карточка редактирования wnd_SetDiscountInInvoice) также не имеет явной привязки датасета.
Алексей, я так предполагаю, что датасет в Вашей форме вообще не нужен, а на кнопку ОК у вас отрабатывается какой-то скрипт, да?
Так почему бы не повесить блокировку/разблокировку полей на события OnClick на радиобатонах?
Алексей, согласен с Александром - если у Вас в картчоке не используется привязка в данным (нет датасета), зачем использовать событие OnDatasetDataChange?
Используйте событие контролов...
"Алейник Алексей Вадимович" написал:или это ирония?
это ирония
В общем, "радиобатон" (батон? радио? брр) radiobutton нельзя привязать к полю датасета\даталинка, поэтому, что бы вы с ним ни делали, событие dlDataOnDatasetDataChange, как и любые другие события для dlData, не произойдет.
Поэтому воспользуйтесь советом Александра Сазанова:
"Сазанов Александр Владимирович" написал:повесить блокировку/разблокировку полей на события OnClick на радиобатонах
Сударь, ну мы же не тех. документацию пишем, соответственно я счел вполне уместным употребить такой жаргон. Искренне прошу меня извинить, господа, если я вас чем-то обидел.