|
![]() |
#1 |
Гость
|
SysRecordInfo
Подскажите пожалуйста как вызывается эта форма SysRecordInfo?
где указываются параметры вызова? |
|
![]() |
#2 |
Участник
|
X++: switch (common.tableId) { case tableNum(PurchTable): // таблица закупок break; case tableNum(PurchLine): // строки закупок break; default: break; }
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#3 |
Программер
|
Наверное неправильно выразился.
Если открывать паспорт записи через контекстное меню, то оно правильно выводит информацию о записи, на которой у нас стоит курсор. Если сделать вызов паспорта записи через обычный пункт меню, то даже если у нас курсор будет стоять на строке закупки, информация выведется по самой закупке. |
|
![]() |
#4 |
Программер
|
Кажется дело в методе docCursor(). Если форма вызывается из контекстного меню, то этот метод возвращает нужную запись, а если форма вызывается по кнопке, тогда берется запись первого источника данных. Почему так?
|
|
![]() |
#5 |
Участник
|
Возможно на MenuItem не указано свойство dataSource?
Именно эта строка (которая указана), будет передана как вызывающая |
|
![]() |
#6 |
Программер
|
На MenuItem dataSource не указывается, потому как их может быть два, и надо чтобы запись бралась именно текущего.
|
|
![]() |
#7 |
Участник
|
А "обычный пункт меню" - это МЕНЮ->КОМАНДА->ПАСПОРТ ЗАПИСИ? У меня в нем все работает нормально
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#8 |
Участник
|
Почти у каждого элемента на форме есть свойство DataSource, а если оно пусто, то работает некое соглашение об умолчании ...
C уважением, itfs. |
|
![]() |
#9 |
Участник
|
Ну а что вы тогда хотите, по умолчанию подставляется главный датасорс
Попробуйте по clicked MenuItem - закоментить супер и вызывать этот же MenuItem программно с указанием того датасорса который вам нужен в главный момент И что значит из текущего - текущий есть и в том и в том гриде (active) |
|
![]() |
#10 |
Участник
|
Цитата:
Сообщение от kashperuk
Ну а что вы тогда хотите, по умолчанию подставляется главный датасорс
Попробуйте по clicked MenuItem - закоментить супер и вызывать этот же MenuItem программно с указанием того датасорса который вам нужен в главный момент
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#11 |
Участник
|
Цитата:
Сообщение от AndyD
Не поможет. Ядро устанавливает датасоурс до вызова Clicked()
А заодно и вопрос: Цитата:
Сообщение от AndyD
Не поможет. Ядро устанавливает датасоурс до вызова Clicked()
|
|
![]() |
#12 |
Программер
|
Обычный пункт меню, это просто меню добавленное в форму. Или можно просто кнопку добавить.
|
|
![]() |
#13 |
Программер
|
2 Kashperuk: текущий, грубо говоря куда мы последний раз мышью тыкнули
![]() 2 itfs: соглашение не нужно, нужно чтобы текущий ![]() При этом надо обойтись без программирования в форме. Т.е. просто кнопку вызова добавить и все. На крайний случай можно на методах кнопки попрограммировать. Но чтобы эти методы были общими. Последний раз редактировалось vasiliy; 03.07.2006 в 15:24. |
|
![]() |
#14 |
Участник
|
Пока в голову приходит только одно решение, как определить именно тот датасорс, по кторому кликнули последним - по переходу к контролу (onEnter) - какую-то переменную (boolean firstDataSource) делать true или false, в зависимости от того, какой датасорс кликнули. А потом по clicked кнопки вызывать MenuItem с тем, который последний кликнули.
(можно попробовать это на active datasource повесить - но не уверен что сработает) |
|
![]() |
#15 |
Программер
|
Цитата:
Сообщение от kashperuk
Пока в голову приходит только одно решение, как определить именно тот датасорс, по кторому кликнули последним - по переходу к контролу (onEnter) - какую-то переменную (boolean firstDataSource) делать true или false, в зависимости от того, какой датасорс кликнули. А потом по clicked кнопки вызывать MenuItem с тем, который последний кликнули.
(можно попробовать это на active datasource повесить - но не уверен что сработает) |
|
![]() |
#16 |
Роман Долгополов (RDOL)
|
Цитата:
Сообщение от vasiliy
Это опять же для каждого случая надо программировать, а хотелось бы общий механизм на все формы.
![]() |
|
![]() |
#17 |
Программер
|
Цитата:
Сообщение от db
Общий механизм для всех форм есть и вызвыается через контекстное меню на любой записи
![]() ![]() |
|
![]() |
#18 |
Программер
|
X++:
public void mouseEnter(int _x, int _y, int _button, boolean _Ctrl, boolean _Shift) { formDataSource fds; ; fds = element.docCursor().dataSource(); super(_x, _y, _button, _Ctrl, _Shift); this.dataSource(fds.id()); } Пока сделал так. На методе самой кнопки ![]() |
|
![]() |
#19 |
Участник
|
Цитата:
Сообщение от kashperuk
А откуда ты это знаешь? В смысле, как определил?
Или закоментарить super() в clicked() и подставить X++: info(element.objectSet().name()); Цитата:
Сообщение от vasiliy
Пока сделал так. На методе самой кнопки
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#20 |
Программер
|
Цитата:
Сообщение от AndyD
А если пользователь зловредный окажется и будет пользоваться клавиатурой? ![]() |
|