18.10.2008, 20:41 | #1 |
Участник
|
Lookup из ImageListAppl
Всем привет.
Есть cвoй ImageListAppl class. в моей форме ecть oднo полe. хочy чтобы при лукапе, cмог бы выброть oднo из images из ImageListAppl клac. (чтобы иcпользoвaть image из пapaметpoв в Tree контрол) Есть тoкoй пример в Standard AX? Подскажите кaк сделать . Спасибо! |
|
18.10.2008, 21:02 | #2 |
Banned
|
Можно посмотреть форму \Forms\SysPick, где используется ListView. Вот пример запуска этой формы: \Classes\Global\pickList
Если хочется в стандартном гриде, то это делается так: 1) Создается собственная Lookup-форма (здесь: \Forms\SPPResourceLookup) на основе временной таблицы. Временная таблица в одном поле содержит номера из ImageList. Заполняем эту таблицу где-нибудь в init 2) В гриде формы делаем элемент типа Window (здесь: WindowShowImage), ставим ему AutoDeclaration. Этот элемент связываем с упомянутым полем во временной таблице 3) Помимо всего прочего, пишем в \Forms\SPPResourceLookup\Methods\init примерно след. код: X++: super(); ... imageListAppl = new SPPImageListAppl_ResourceTable(WindowShowImage.widthValue(), WindowShowImage.heightValue()); WindowShowImage.imageList(imageListAppl.imageList()); |
|
21.10.2008, 00:20 | #3 |
Участник
|
Вариант с SysPick чтото не получился.
Пробувал второй, но всетаки есть следующий вопросы: 1) Как зделaть чтобы вернул imageId когда выбираю image из лукап форму. (element.selectMode(WindowShowImage) не работает.) 2) можно ли как небуть получить все images из мой ImageListAppl клас используя while. (while select imageListAppl.imageList()... { info(int2str(imageList.image(#counter))); } |
|
21.10.2008, 12:25 | #4 |
Banned
|
1) Тогда надо возвращать значение не WindowShowImage, а целочисленного элемента управления, связанного с тем самым полем таблицы.
2) Думаю, примерно так: X++: for (i = imageListAppl.imagelist.size(); i >= 1; i--) { // fill the table } |
|
25.10.2008, 00:53 | #5 |
Участник
|
2) Пробувал так:
X++: for(i = 1; i <= imageListAppl.imageList().count(); i++) { tempTable.clear(); tempTable.ImageId = imageListAppl.image(i); tempTable.insert(); } Но я ето хочу узнать - все images(ressNo) из мой клас. Кто - то знает, как ето зделать? Спасибо. |
|
25.10.2008, 07:37 | #6 |
Участник
|
Цитата:
Сообщение от vitaly85
2) Пробувал так:
X++: for(i = 1; i <= imageListAppl.imageList().count(); i++) { tempTable.clear(); tempTable.ImageId = imageListAppl.image(i); tempTable.insert(); } Но я ето хочу узнать - все images(ressNo) из мой клас. Кто - то знает, как ето зделать? Спасибо. Посмотрите код методов add() и image() класса ImageListAppl. В методе image() идет cвязь через Map imageConvert между кодом ресурса ressNo и кодом в списке imagelist. Элементы в imagelist добавляются последовательно в методе build() заполняя imagelist (значения от 0). X++: for(i = 0; i < imageListAppl.imageList().count(); i++) { tempTable.clear(); tempTable.ImageId = i ; tempTable.insert(); } |
|
27.10.2008, 00:02 | #7 |
Участник
|
for(i = 0; i < imageListAppl.imageList().count(); i++), не решает проблему.
Я знаю что элементы в imagelist добавляются в методe build(). Но я именно ето хочу узнать : все images(#ImageError, #ImageInfo...) из build() метод, используя итератор (for, while). Спасибо. |
|
27.10.2008, 07:31 | #8 |
Участник
|
Цитата:
Что-то подобное: X++: class ImageListAppl_Demo extends ImageListAppl { } Map getMapConvert() { return imageConvert ; } X++: static void jbImageListDemo(Args _args) { ImageListAppl_Demo imageListAppl = new ImageListAppl_Demo() ; MapEnumerator mapEnumerator ; ; mapEnumerator = imageListAppl.getMapConvert().getEnumerator() ; while( mapEnumerator.moveNext() ) { info( strfmt( "ressNo: %1, imageNo: %2", mapEnumerator.currentKey(), mapEnumerator.currentValue() ) ) ; } } ressNo: 790, imageNo: 3 ressNo: 791, imageNo: 4 ressNo: 875, imageNo: 0 ressNo: 1030, imageNo: 1 ressNo: 1031, imageNo: 2 |
|
|
За это сообщение автора поблагодарили: vitaly85 (1). |
27.10.2008, 21:08 | #9 |
Участник
|
Супер! Спасибо всем за участие.
|
|