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

Forms Oracle Discussion :

[Forms]comment activer et désactiver les valeurs des items list


Sujet :

Forms Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 31
    Points : 28
    Points
    28
    Par défaut [Forms]comment activer et désactiver les valeurs des items list
    salut.
    je travaille avec forms9i.
    et mon probleme est le suivant.
    j'ai une item list que j'ai alimenté disons pour simplifier avec ('a','b', 'c') maintenant je voudrais savoir comment je pourrais faire en sorte dans mon programme de rendre les deux valeurs 'a' et 'b' grises cad les désactiver et aprés un certain controle les activer.


    merci

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    A ma connaissance il n'est pas possible de désactiver un élément dans une liste sous forms mais vous pouvez construire dynamiquement le contenu de la liste.
    Autrement dit, en fonction du résultat de votre test vous ajoutez ou pas ces éléments à votre liste.

  3. #3
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Merci d'indiquer le nom du produit dans vos titres

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 190
    Points : 103
    Points
    103
    Par défaut
    bonjour si j'ai bien compris

    if :nom_list in ('a','b') then set_item_property(:nom_list,enabled,property_false);
    else
    set_item_property(:nom_list,enabled,property_true);
    end if;

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    daliok >> il ne s'agit pas de désactiver la liste elle-même mais certains éléments de son contenu.

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 190
    Points : 103
    Points
    103
    Par défaut
    dans ce cas tu dois charger la liste dynamiqument
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    declare
          group_id RecordGroup;
          list_id Item :=Find_Item(nom_liste);
          status number;
          erreur varchar2(500):=nom_groupe||interrogation;
    begin 
     
          group_id :=find_group(nom_groupe);
          if id_null(group_id) then
          group_id:=Create_Group_From_Query(nom_groupe,interrogation);
          end if;
          status:=Populate_Group(nom_groupe);
          if (status<>0) then 
               message(error_text);
               erreur:=erreur||Lpad(to_char(status),8,'* ')||dbms_error_text;
               message(erreur);
         else    
               Populate_List(list_id,group_id);
    end if;
    END;

  7. #7
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 31
    Points : 28
    Points
    28
    Par défaut
    est ce que vous pourrez me donner une documenattion concernant la manipulation des list item cad comment on peut accéder à une valeur à laide de son index.
    comment on retourne la valeur de l'item choisi

  8. #8
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    La valeur sélectionnée est tout simplement la valeur de l'item.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    valeur := :block.list_item ;

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par SheikYerbouti
    La valeur sélectionnée est tout simplement la valeur de l'item
    D'ailleurs je me permets de faire une parenthèse mais je trouve étonnant qu'il n'existe pas de fonction native qui retourne l'indice de l'élément sélectionné dans une liste.
    Surtout dans la mesure où les méthodes :
    - GET_LIST_ELEMENT_LABEL
    - GET_LIST_ELEMENT_VALUE
    utilisent en argument l'indice de l'élément dans la liste.
    L'aide en ligne préconise un parcours itératif mais personnellement je trouve ça lourd et coûteux
    Etonnant !

  10. #10
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 190
    Points : 103
    Points
    103
    Par défaut
    Concernant GET_LIST_ELEMENT_LABEL et
    GET_LIST_ELEMENT_VALUE,
    j'ai une liste qui contienne 2 valeurs
    et je veux afficher la valeur et le label dans 2 champs deffirents
    pour la premiére valeur il m'affiche et pour la deusiéme il génére le message suivant 'impossible de trouver l'élément pour en retourner la valeur'

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 349
    Points : 409
    Points
    409
    Par défaut
    Citation Envoyé par Magnus
    D'ailleurs je me permets de faire une parenthèse mais je trouve étonnant qu'il n'existe pas de fonction native qui retourne l'indice de l'élément sélectionné dans une liste.
    Etonnant peut être, mais il y a toujours une solution sous Forms 9i avec un peu de java , un PJC et le tour est joué avec une JList ou une JTable par exemple ..

    JList


    CDLT.

  12. #12
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par taska
    Etonnant peut être, mais il y a toujours une solution sous Forms 9i avec un peu de java , un PJC et le tour est joué avec une JList ou une JTable par exemple
    Hum... Je n'ai commencé à intégrer des composants Java que la semaine dernière donc je ne suis pas très à l'aise avec les interactions Oracle / Java.
    Tu peux me décrire ta vision des choses plus précisément avec les contraintes que cela pourrait occasioner (dépendances vis-à-vis des composants Java, nécessité d'installer la JDK, etc.) ?

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 349
    Points : 409
    Points
    409
    Par défaut
    Tu peux me décrire ta vision des choses
    ... faut pas oublier de passer par là :http://www.developpez.net/forums/showthread.php?t=99612

    Ma vision :

    1. Rien à installer chez un client Forms 9I.
    2. Developper un PJC, créer un jar, et modifier le webcfg afin que le client le télecharge (s'il est out of date ) depuis le serveur d'application.

    Description du composant :

    Ce composant doit posséder au minimum une méthode pour remplir la liste fillList que tu pourras appeler depuis forms à partir d'une cde du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set_custom_property ('util.jlist',1,'FILL_LIST','1|2|3') ; // tu choisis ce que tu veux comme délimiteur ...
    De plus ce composant doit posséder au minimum une propriété pour de donner la valeur des élements sélectionnés. Par exemple getValues

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ret := Get_custom_property ('util.jlist',1,'GET_VALUES');
    à toi ensuite de parser la valeur retournée suivant le délimiteur que tu aurais fixé.

    Ce composant peut être une JLIST ou une JTABLE.
    Si tu as saisi le principe, rien ne t'empèche alors de créer une lov , etc ... multi-sélection et de + générique.

    CDLT.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 349
    Points : 409
    Points
    409
    Par défaut
    intégrer des composants Java
    Pour la liste multi-sélection, je peux vous proposer un petit composant développé à l'arrache dont voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    package com.td;
     
    import javax.swing.JList;
    import javax.swing.JScrollPane;
    import javax.swing.DefaultListModel;
    import java.util.StringTokenizer;
     
    import oracle.forms.handler.IHandler;
    import oracle.forms.properties.ID;
    import oracle.forms.ui.*;
    import oracle.forms.ui.VBean;
    /*
     * Forms LISTE MULTI-SELECTION
     * @author Thierry Delongeas
     */
    public class MList extends VBean  {
     
     public final static ID SET_VALUES   = ID.registerProperty("SET_VALUES");      
     public final static ID GET_SEL_VALUES   = ID.registerProperty("GET_SEL_VALUES");      
     public final static ID LIST_CLEAR   = ID.registerProperty("LIST_CLEAR");      
     public final static ID LIST_ADD     = ID.registerProperty("LIST_ADD");      
     
     private DefaultListModel dlm = new DefaultListModel();
     private JList jl = new JList(dlm);
     private JScrollPane jspl = new JScrollPane(jl);
     
     private IHandler  m_handler; 
     
        public MList() {
            super();
            this.add(jspl);
       }
     
      public void init(IHandler handler)
      { m_handler = handler;
        super.init(handler); 
        log ("________________________________________________");
        log ( m_handler.getApplet().getCodeBase().getHost() + ":" +m_handler.getApplet().getCodeBase().getPort() );
        log ( m_handler.getApplet().getParameter("serverArgs"));
        log ("________________________________________________");
      }      
     
     public boolean setProperty(ID property, Object value) {  
         if (property == SET_VALUES){ 
              dlm.clear();
              StringTokenizer st = new StringTokenizer(value.toString(),"|");
              while (st.hasMoreTokens()) { dlm.addElement(st.nextToken()); }
         } 
         if (property == LIST_ADD){ dlm.addElement(value);}
     
         return super.setProperty(property, value);
      }
     
     public Object getProperty(ID pId) {
        if (pId == GET_SEL_VALUES)  { return getSelectedItems();  }
        if (pId == LIST_CLEAR){    dlm.clear();  }
        return super.getProperty(pId);
     }
     
    private String  getSelectedItems (){
        String temp = "";
        Object[] list = jl.getSelectedValues();
        for (int i = 0; i<list.length ; i++ ){
          temp = temp + list[i].toString()+ "|";
          log (list[i].toString());
        }
        return temp;
    }
     
    private void log (String temp ){
      System.out.println (temp);
    }
     
    }
    Pour le mettre en oeuvre sous forms :

    - Créer le jar,
    - Créer un nouveau module
    - Poser un bean sur un canvas, renseigner sa classe ( ici := com.td.MList ) et utiliser ses fonctionalités

    1. Supprimer tous les éléments de la liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DECLARE
    	ret varchar2(255);
    Begin 
    	ret := get_custom_property ( 'UTIL.BEAN',1,'LIST_CLEAR');
    END;
    2. Ajouter un élément à la liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set_custom_property ('UTIL.BEAN',1,'LIST_ADD','NEW VALUE');
    3. Ajouter des élements à la liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    declare
    	strData varchar2(32767);
    begin
    	for i in 0..100 loop
    		strData := strData || 'TEST '||to_char(i,'999')||'|'; 	
    	end loop;
    	set_custom_property ('UTIL.BEAN',1,'SET_VALUES',strData);
    end;
    4. Récupérer les élements de la liste sélectionnés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Declare
    	ret varchar2(255);
    	pos	number(2) := 1;
    	oldpos number(2) :=1;
    Begin
    	ret:= get_custom_property ('UTIL.BEAN',1,'GET_SEL_VALUES');
    	loop
    		 pos := instr(ret,'|',oldpos);
    		 exit when pos = 0;
    		 message ( substr(ret,oldpos,pos-oldpos));
    		 oldpos :=pos+1;		
    	end loop;
    	message ('OK');
    End;
    .. PS : Si notre ami SheikYerbouti souhaite valider, améliorer et publier ce composant sur son site, il est évident qu'il a mon accord.

    Cordialement,

  15. #15
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Ce bean est sympa mais fait double emploi avec le PJC livré dans les démos Oracle (multiselect TList)...

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 349
    Points : 409
    Points
    409
    Par défaut
    Citation Envoyé par SheikYerbouti
    Ce bean est sympa mais fait double emploi avec le PJC livré dans les démos Oracle (multiselect TList)...
    Je suis désolé, je ne connais pas ce PJC.

    Je l'ai proposé car je n'en ai pas trouvé l'équivalence ici (JList) et pour démontrer à Magnus que le développement d'un tel composant se limitait à quelques lignes de code et n'était pas compliqué à mettre en oeuvre.

    Pour en revenir à un post que j'ai vu passer la semaine dernière, Utilisation de javabeans, le type de composant et les méthodes d'appels présentées ici, ne sont pas incompatibles avec un fonctionnement du bean de façon synchrone.

    Pour preuve, un composant que j'ai développé il y à quelques temps déja, qui permet d' imprimer un report ( BITMAP ou CHARACTER ) sur une imprimante sans intervention de l'utilisateur. Ce bean ne rend pas la main tant que l'impression n'est pas terminée( mode SYNCHRONE ). Ce bean à été développé dans le but d'imprimer, à partir du poste utilisateur un report de type PDF. Vous savez ( entre autres ) qu'il n'est pas aisé d'imprimer un report depuis un serveur ( UNIX, AIX etc ...) sur une imprimante qui ne sait parler que : PCL.

    Si ce Bean n'existe pas déja et qu'il vous interresse, n'hésitez pas ...

    Cordialement,

  17. #17
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Pour info, les démos Forms sont téléchargeables depuis la page Forms d'OTN:
    http://www.oracle.com/technology/sam...rms/index.html

    Si vous avez un bean que vous souhaitez partager, il faut le faire sur le site forms.pjc.bean:
    http://forms.pjc.bean.over-blog.com/

    Dans la rubrique "How to's" cliquez le lien : How to submit an article

Discussions similaires

  1. Récuperer les valeurs des items
    Par azazil dans le forum Forms
    Réponses: 4
    Dernier message: 16/12/2009, 11h15
  2. Réponses: 2
    Dernier message: 06/01/2009, 22h43
  3. Réponses: 0
    Dernier message: 06/10/2007, 09h49
  4. Comment dééfinir les valeurs des abscisses en Time ?
    Par marsupilami34 dans le forum Langage
    Réponses: 1
    Dernier message: 29/09/2005, 15h50
  5. [VB.NET] Choisir les valeurs des items d'un combo box?
    Par Eithelgul dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/06/2004, 10h13

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