Axapta: вопрос о жизненном цикле формы - PullRequest
0 голосов
/ 03 декабря 2009

Я пытаюсь вручную вставить значок изображения в окно, вложенное в сетку.

В событии run поля еще не имеют значений. Строковый элемент управления всегда возвращает пустое значение. Есть ли лучшее место для этого кода? В .NET я бы использовал событие с привязкой к данным. Есть ли эквивалент в AX?

void run()
{
    FormStringControl s = element.control(control::ABC_Icons_FileName);
    FormWindowControl w = element.control(control::ABC_Window);
    ;
    w.imageName(s.valueStr());
    super();
}

Спасибо

1 Ответ

1 голос
/ 03 декабря 2009

Если я правильно понимаю вашу задачу, вы хотите отобразить изображение в каждой строке сетки? Тогда:

  1. Создать ImageList в form.init ():

    imageList = new ImageList(ImageList::smallIconWidth(), ImageList::smallIconHeight();
    Image image = new Image();
    ;
    image.loadImage(filename)
    imageList.add(image);
    // ...
    image.loadImage(filename-n)
    imageList.add(image);
    

    ImageList должен быть объявлен в разделе ClassDEclaration.

  2. Установите для свойства AutoDaclaration поля «Окно» в сетке значение «Да».

  3. Установить ImageList для поля окна в методе init () формы:

    MyWindow.imageList(imageList);
    
  4. В таблице, которую вы используете в форме, создайте метод отображения. Примерно так:

    display int status()
    {
       if(this.amount > 10)
           return 5;  // 5th image from image list
       else
           return 6;
    }
    
    1. Установите свойства DataSource и DataMethod для вашего оконного элемента управления:

      DataSource = DataMethod = статус

Посмотрите на форму ReqTransPo, если вам нужно больше примеров.

...