|
22.09.2017, 13:51 | #1 |
Участник
|
https://community.dynamics.com/ax/b/...n-time-ax-2012
Извиняюсь, если не увидел повторы. Но этого способа вроде бы нигде в смежных темах не встретил. Если линк умрёт, просто оставлю здесь кусок кода на память... Метод enter() контрола, у которого нужно укоротить лукап, путём скрытия элементов. Работает на гридах и с полями, типа BaseEnum без необходимости подмены поля edit-методом и дальнейшими танцами вокруг перекрытия lookup() .... X++: public void enter() { super(); this.delete(enum2str(BankDocumentType::LetterOfGuarantee)); this.delete(enum2str(BankDocumentType::ImportCollection)); } |
|
|
За это сообщение автора поблагодарили: Jorj (1), olesh (1), trud (5), Weez (2), Ace of Database (3), Zabr (5), miaa (1), Dynamics365Eng (1). |
02.10.2017, 12:47 | #2 |
Участник
|
Цитата:
https://community.dynamics.com/ax/b/...n-time-ax-2012
Извиняюсь, если не увидел повторы. Но этого способа вроде бы нигде в смежных темах не встретил. Если линк умрёт, просто оставлю здесь кусок кода на память... Метод enter() контрола, у которого нужно укоротить лукап, путём скрытия элементов. Работает на гридах и с полями, типа BaseEnum без необходимости подмены поля edit-методом и дальнейшими танцами вокруг перекрытия lookup() .... А вот если выдернуть значение из середины например LetterOfCredit (enumValue = 1), то при выборе значения начинаются чудеса. Происходит сдвиг и при выборе например LetterOfGuarantee (enumValue = 2) на деле выбирается значение 1, а при выборе ImportCollection (3) выбирается значение 2. Имхо, вышеприведенный метод нужно использовать аккуратно, а лучше совсем не использовать |
|
02.10.2017, 14:10 | #3 |
Участник
|
Соглашусь отчасти. Если элементы с конца - всё идеально. и никакой доработки не нужно вообще. Почему бы и не использовать?
Если элемент один (или группа элементов подряд) посреди списка, наверное всё ещё имеет смысл - в gotFocus() подменить this.setEditText() и в modified() записывать в поле всё со сдвигом с нужного элемента. Ну а если писать что-то универсальное на любое количество элементов в любом месте списка - то тут соглашусь - лучше не надо... |
|
02.10.2017, 14:40 | #4 |
Участник
|
Цитата:
Ну а насчет перекрыть и подправить... Оно конечно можно, но это опять же с бубном плясать. |
|
03.10.2017, 07:00 | #5 |
Участник
|
На форме можно сделать стандартными средствами, обсуждалось несколько позже начала данного топика.
Есть класс SysFormEnumComboBox: X++: /// The class facilitates work with a form combobox control, representing an enum, /// when only some of the enum values are allowed. |
|
|
За это сообщение автора поблагодарили: trud (6). |
04.10.2017, 12:13 | #6 |
Участник
|
Цитата:
Сообщение от mdanko2000
На форме можно сделать стандартными средствами, обсуждалось несколько позже начала данного топика.
Есть класс SysFormEnumComboBox: X++: /// The class facilitates work with a form combobox control, representing an enum, /// when only some of the enum values are allowed. |
|
04.10.2017, 13:06 | #7 |
Участник
|
Коли уж зашла речь про бубны, то еще один вариант ограничить выборку значений enum - SysLookup::lookupEnum(). Второй параметр метода - контейнер с исключаемыми значениями.
Для использования этого метода требуется создавать текстовое поле/edit-метод/calculated field (вобщем FormStringControl) и соответственно прописывать сохранение значений в поле с enum. В гриде оно кстати работает. В общем - куда ни плюнь - без шаманства никак |
|
Теги |
baseenum, lookup filter, шаманство |
|
|