02.10.2007, 15:04 | #1 |
Мрачный тип
|
Знает ли FormDataObject о том, чьих он кровей ? :)
Есть DataSource на форме, есть у него некие поля, одно из которых расширенного типа, массив а-ля Dimension. Можно ли как-то выяснить в методах FormDataObject'а , а какому полю таблицы он принадлежит ? или на крайний случай индекс в массиве расширенного типа ?
Последний раз редактировалось TasmanianDevil; 02.10.2007 в 15:09. |
|
03.10.2007, 11:41 | #2 |
Участник
|
Цитата:
|
|
03.10.2007, 12:29 | #3 |
Мрачный тип
|
Ну перебрать все поля источника данных с получением соответсвующего FormDataObject'а можно, а но к сожалению вряд ли нужно ...
Дело в том, что задача-то конкретно и стояла, чтобы в момент исполнения переопределенного toolTip() на FormDataObject'е получить информацию о поле таблицы источника данных, относящегося к этому FormDataObject с минимальным кол-вом итераций. Пока топорно решаю Map'ом (как оказалось , у FormDataObject и нормального уникального идентификатора этого объекта в рамках источника данных просто так не найдешь, юзаю результат метода xml() в этом качестве), заполняющимся в момент инициализации источника данных. Но это - не выход, по большому счету Наверное проще вообще не трогать форму с ее источником данных, а сделать все на уровне самой таблицы и отлавливать там уже здоровенным switch'ем нужные поля... |
|
03.10.2007, 12:53 | #4 |
Участник
|
Цитата:
Сообщение от TasmanianDevil
задача-то конкретно и стояла, чтобы в момент исполнения переопределенного toolTip() на FormDataObject'е получить информацию о поле таблицы источника данных, относящегося к этому FormDataObject с минимальным кол-вом итераций. Наверное проще вообще не трогать форму с ее источником данных, а сделать все на уровне самой таблицы и отлавливать там уже здоровенным switch'ем нужные поля...
|
|
03.10.2007, 13:50 | #5 |
Участник
|
Я чё-то так и не понял, что надо.
Почему бы в tooltip-e. Не использовать this.name(). Получаете имя контрола его вызвавшего. Индекс обрезанием n-го количества символов получете. |
|
03.10.2007, 14:46 | #6 |
Мрачный тип
|
gl00mie, именно так, универсальный toolTip у определенного поля в таблице.
Именно так и поступил, на toolTipField(код поля) у таблицы остановился. Результат формируется в зависимости от значения toolTip'ствующего поля (A) и еще одного (B) в таблице. Оба поля имеют EDT-массив одинаковой размерности и toolTip() = f(A[i],B[i]). Но с этой реализацией возник следующий вопрос - а есть ли возможность по коду поля в toolTipField() однозначно определить принадлежность к множеству кодов полей-элементов EDT-массива и индекс внутри этого массива без лишних итераций перебора значений этих кодов полей в поле-массиве ? Пока склоняюсь к варианту "нет" ... miklenew, дык рад бы, но нету метода name() у экземпляра FormDataObject . |
|
03.10.2007, 16:30 | #7 |
Участник
|
Цитата:
Что делаю создаю новую таблицу. Кидаю на нею поле dimension. Создаю форму кидаю на неё таблицу. На design кидаю поля dimension с индексами. Перекрываю на таблице tooltipField. X++: public str toolTipField(fieldId _fieldId) { DictField dictField; str ret; ret = super(_fieldId); dictField = new dictField(tablenum(table4), _fieldId); info(dictField.name()); return ret; } |
|
04.10.2007, 06:21 | #8 |
Мрачный тип
|
miklenew, DictField и FormDataObject - звери разные
В приведенном Вами примере - toolTip на самой таблице и есть параметр , идентифицирующий поле . При выполнении метода toolTip на поле источника данных формы (именно на объекте типа FormDataObject у FormDataSource) - информации о поле нет никакой ни в параметрах, ни в самом объекте FormDataObject X++: FormDataObject.toolTip Run on: Called Syntax public str toolTip() |
|
|
|