IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

W4 Express Java Discussion :

Une question sur les « Names » des objets.


Sujet :

W4 Express Java

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Une question sur les « Names » des objets.
    Bonjour

    J’ai une question sur les « Names » des objets.

    J’ai un formulaire dans lequel il y a plusieurs relations vers divers objets.
    L’affichage de ces relations est réalisé par leur Name (concaténation de tous les champs name='true').
    Ponctuellement et que dans ce formulaire là, je souhaiterais changer et présenter cette relation avec un autre name (d’autres champs de mon choix dans l’objet cible).
    Est-ce que cela est possible et si oui comment ?

    Merci d’avance.

    Pierre-Henri

  2. #2
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 53
    Points : 57
    Points
    57
    Par défaut
    A part faire une vue spécifique de ton formulaire et mettre le nom que tu veux à ta relation, je n'ai pas trop d'idées (le mécanisme de label s'applique partout et pas sur un seul formulaire...).

    Peut être faut il faire une autre relation, locale, dont la valeur est calculée via la classe d'interface pour être la valeur de ta relation, et quand tu valide le formulaire met à jour la valeur de ta "vraie" relation. Tu pourra ainsi mettre le nom que tu veux... Mais cette méthode ne me semble pas super propre.

    Quelqu'un a un avis ou une idée ?

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Ce n’est vraiment pas super géniale.
    Il n’y a pas d’autres solutions ?

  4. #4
    Membre habitué Avatar de Capt'n Java
    Inscrit en
    Juin 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 122
    Points : 146
    Points
    146
    Par défaut
    Bonjour,

    Tu dois pouvoir t'en sortir en implémentant l'interface LyLabelBehaviorInterface au niveau du comportement associé à ton formulaire (en général c'est le comportement associé à la classe, un héritage de LyClassBehavior).
    Pour toutes les méthodes de cette interface tu retournes null sauf pour la méthode getName(LyAreaController, LyObject).
    Là tu peux tester le type de contrôleur et le type de l'objet pour faire construire le libellé que tu veux. Par contre tu n'auras pas de mise à jour dynamique si l'un des champs que tu utilises pour construire le nom change.

  5. #5
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Merci pour cette idée, elle est bonne mais elle ne fonctionne pas dans mon cas. Je me suis mal exprimé en fin de compte l’affichage de ma relation est dans un formulaire mais dans une relation de composition. Ce qui a pour effet d’afficher les objets sous la forme d’une table. Et mes relations dont je souhaite changer le name sont dans cette liste. Lorsque l’on « implements LyLabelBehaviorInterface » cela ne produit son effet que lorsque l’objet est ouvert en consultation, mais dans la vue en liste cela ne change rien.
    Et c’est justement là que je souhaite changer ce name.

    Y a-t-il une autre interface à implémenter ?

    Merci d’avance pour cette aide précieuse.
    phd

  6. #6
    Membre habitué Avatar de Capt'n Java
    Inscrit en
    Juin 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 122
    Points : 146
    Points
    146
    Par défaut
    Si c'est dans une relation de composition multiple alors il faut que tu changes le comportement du contrôleur associé à l'action qui affiche le tableau.
    Pour ça tu définis une action qui a comme template "__setRelationTable" et tu indiques le comportement spécifique dans lequel tu auras implémenté l'interface LyLabelBehaviorInterface. Ce comportement est un LyTableBehavior.
    Ensuite dans le LyClassBehavior de la classe de ton formulaire, il y a une méthode getAction(LyConsultController, LyRelationFieldInfo, LyClassInfo) : dans cette méthode tu retournes ta nouvelle action pour ta relation et le tour est joué
    Pour être cohérent n'oublie pas de faire la même chose en consultation

  7. #7
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Points : 7
    Points
    7
    Par défaut LyLabelBehaviorInterface
    Bonjour Capt'n Java

    J’ai essayé mais malheureusement je n’ai pas réussi.
    Je passe bien dans la méthode (getName ou getLabel) mais aucun changement à l’affichage.

    Voici l’action :

    <ACTION id="Change_Relation_Affichage" template="__setRelationTable"
    behavior="campus.behavior.Change_Relation_Affichage">
    </ACTION>

    Puis ici l’extrait de son behavior :

    public class Change_Relation_Affichage extends LyTableBehavior implements
    LyLabelBehaviorInterface
    {
    .
    .
    .

    public String getLabel(LyAreaController areaController, LyObject object,
    LyFieldInfo fieldInfo, Object fieldValue) {
    // TODO Auto-generated method stub
    String Label = "getLabel";
    return Label;
    }

    public String getName(LyAreaController areaController, LyObject object) {
    // TODO Auto-generated method stub
    String Label = "getName";
    return Label;
    }
    .

    .
    .
    }

    Bon j’ai trouvé une autre solution mais si tu as une idée de la raison pour quoi ça ne marche pas ?
    Cela me permettrait de l’utiliser une prochaine fois.

    Merci.

  8. #8
    Membre habitué Avatar de Capt'n Java
    Inscrit en
    Juin 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 122
    Points : 146
    Points
    146
    Par défaut
    Tu n'as pas oublié d'indiquer ta nouvelle action dans le behavior de la classe de ton formulaire ?
    Sinon comme ça je ne vois pas trop pourquoi ça ne le fait pas
    A part passer en debug et de suivre pas à pas pour comprendre pourquoi tu ne passes pas dans ton code...
    Peut-être quelqu'un d'autre a une idée ?

Discussions similaires

  1. Une question sur les objets en VBA
    Par deubelte dans le forum Général VBA
    Réponses: 5
    Dernier message: 12/10/2007, 17h07
  2. Encore une question sur les ListBox !!
    Par SebRs dans le forum Windows
    Réponses: 3
    Dernier message: 09/05/2006, 15h29
  3. Réponses: 2
    Dernier message: 22/04/2006, 18h18
  4. une question sur les includes comportement bizard
    Par e-m.guillaume dans le forum Langage
    Réponses: 2
    Dernier message: 24/02/2006, 21h12
  5. [FLASH 8] Question sur la portée des objets.
    Par i_shinji dans le forum Flash
    Réponses: 1
    Dernier message: 02/11/2005, 17h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo