AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.01.2007, 14:59   #1  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
validate на элементах формы
Привет всем.
В аттаче формочка. Посмотрите, кому не лень

там 2 поля с номенклатурой - хочу, чтобы во втором требовало ввода точно такого же значения, как и в первом. (и наоборот)

validate() на контроле вообще не отрабатывает. (хотя отрабатывает, если вводить значение вручную - правда тоже с глюком)
Может это баго-фича? или known issue? Или может есть объяснение такому поведению?

Спасибо
Вложения
Тип файла: xpo FormTestValidateItemId.xpo (9.2 Кб, 469 просмотров)
Старый 12.01.2007, 15:48   #2  
Roman777 is offline
Roman777
NavAx
Аватар для Roman777
NavAx Club
 
320 / 64 (3) ++++
Регистрация: 10.02.2005
Адрес: г. Москва
Есть предположение, что метод нормально работает только тогда, когда есть его привязка к DS:
Цитата:
This method is called when the user leaves the control or saves. The method is only called if the user has made changes to the control. Override this method to validate user input.
За это сообщение автора поблагодарили: kashperuk (2).
Старый 12.01.2007, 15:52   #3  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Да, я так и предполагаю, но из приведенной цитаты этого, к сожалению (или к счастью), не следует
Старый 12.01.2007, 16:03   #4  
Roman777 is offline
Roman777
NavAx
Аватар для Roman777
NavAx Club
 
320 / 64 (3) ++++
Регистрация: 10.02.2005
Адрес: г. Москва
скорее всего это следует из части фразы
Цитата:
... or saves
Старый 12.01.2007, 16:11   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Нет, метод modified вызывается и для unbound controls при нажатии, к примеру, Ctrl + S или кнопки сохранить на панели инструментов.

Порядок исполнения методов для контрола такой:
leave (control) -> validate (control) -> modified (control) -> т.д.

Но эта информация для связанных с источником элементов формы. Для несвязанных не нашел ничего.

Не без помощи AndyD есть решение:
validate() не трогаем. Перекрываем modified():
X++:
[SIZE=2][LEFT]public boolean modified()
{
boolean ret = true;
str s;
;
s = winapi::getWindowText(this.hWnd());

if (itemIdFirst.valueStr() && s)
{
if (itemIdFirst.valueStr() !=s)
ret = checkFailed(strFmt("ItemId_1 (%1) != ItemId_2 (%2)", itemIdFirst.valueStr(), s));
}

if (ret)
ret = super();

return ret;[/LEFT]
}
[/SIZE]
Но, конечно, это обход проблемы, а не решение. Но мне подошло
Старый 12.01.2007, 16:18   #6  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Замечание.
У меня сложилось впечатление, что при автозополнении поля метод valueStr возвращает только введенную часть без автозаполенной
-------
пользуйтесь edit-методами

еще...
для связанных с источником элементов формы вызывается validate на поле DS, а не на контроле

Последний раз редактировалось Wamr; 12.01.2007 в 16:20.
За это сообщение автора поблагодарили: kashperuk (2).
Старый 12.01.2007, 16:29   #7  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Wamr Посмотреть сообщение
Замечание.
У меня сложилось впечатление, что при автозополнении поля метод valueStr возвращает только введенную часть без автозаполенной
-------
пользуйтесь edit-методами
Да, думал, но много переписывать нужно было бы.

Цитата:
Сообщение от Wamr Посмотреть сообщение
еще...
для связанных с источником элементов формы вызывается validate на поле DS, а не на контроле
validate (DS) вызывается только после modified на контроле.
Я не проверял, но так написано у Ерёменка и Шашкова.

leave (design) -> validate (design) -> modified (design) -> validate (DS) -> validateField (Table) -> modified (DS) -> modifiedField (Table)
Старый 12.01.2007, 16:34   #8  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Не - validate() на датасоурсе вызывается из modified() на контроле
__________________
Axapta v.3.0 sp5 kr2
Теги
validate, как правильно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Самостоятельные формы и формы открывающиеся из другой формы. Dima_Dima DAX: Программирование 6 19.12.2008 18:27
Создание Lookup формы Maxim Gorbunov DAX: База знаний и проекты 9 26.06.2007 16:44
Вызов формы, не модифицируя ее заголовка AndrewP DAX: Программирование 1 04.07.2003 14:20
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Динамические Lookup формы. Андрей Василюк DAX: База знаний и проекты 0 07.12.2001 07:07

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:43.