2009-12-03 22 views
0

Je tente de remplir manuellement une icône d'image dans une fenêtre imbriquée dans une grille.Axapta: question sur le cycle de vie du formulaire

Dans l'événement d'exécution, les champs ne semblent pas encore contenir de valeurs. Le contrôle de chaîne renvoie toujours une valeur vide. Y a-t-il un meilleur endroit pour ce code? Dans .NET, j'utiliserais un événement databound. Y a-t-il un équivalent en AX?

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

Merci

Répondre

1

Si je comprends bien votre tâche que vous souhaitez afficher l'image dans chaque ligne de la grille? Puis:

  1. Créer ImageList dans 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 doit être déclaré dans la section ClassDEclaration.

  2. Définissez la propriété AutoDaclaration du champ Fenêtre de la grille sur "Oui".

  3. Set ImageList pour le champ de fenêtre dans la méthode init() de la forme:

    MyWindow.imageList(imageList); 
    
  4. Sur la table que vous utilisez sur la forme de créer la méthode d'affichage. Quelque chose comme ceci:

    display int status() 
    { 
        if(this.amount > 10) 
         return 5; // 5th image from image list 
        else 
         return 6; 
    } 
    
    1. Définir les propriétés DataSource et DataMethod pour le contrôle de votre fenêtre:

      DataSource = DataMethod = état

Regardez le formulaire ReqTransPo si vous avez besoin de plus d'exemples.