Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > Forms
Forms Forum d'entraide sur Oracle Forms
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/01/2007, 10h53   #1
Invité de passage
 
Inscription : décembre 2004
Messages : 31
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 31
Points : 4
Points : 4
Envoyer un message via MSN à lifeisgood Envoyer un message via Yahoo à lifeisgood
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
lifeisgood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2007, 11h16   #2
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
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.
__________________
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2007, 11h20   #3
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 533
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 533
Points : 6 469
Points : 6 469
Merci d'indiquer le nom du produit dans vos titres
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2007, 11h33   #4
Membre du Club
 
Inscription : novembre 2006
Messages : 190
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 190
Points : 67
Points : 67
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;
daliok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2007, 11h42   #5
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
daliok >> il ne s'agit pas de désactiver la liste elle-même mais certains éléments de son contenu.
__________________
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2007, 11h50   #6
Membre du Club
 
Inscription : novembre 2006
Messages : 190
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 190
Points : 67
Points : 67
dans ce cas tu dois charger la liste dynamiqument
Code :
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;
daliok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2007, 13h17   #7
Invité de passage
 
Inscription : décembre 2004
Messages : 31
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 31
Points : 4
Points : 4
Envoyer un message via MSN à lifeisgood Envoyer un message via Yahoo à lifeisgood
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
lifeisgood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2007, 13h53   #8
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 533
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 533
Points : 6 469
Points : 6 469
La valeur sélectionnée est tout simplement la valeur de l'item.

Code :
1
2
 
valeur := :block.list_item ;
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2007, 14h23   #9
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
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 !
__________________
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2007, 15h02   #10
Membre du Club
 
Inscription : novembre 2006
Messages : 190
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 190
Points : 67
Points : 67
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'
daliok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2007, 22h24   #11
Membre éclairé
 
Inscription : 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 : 367
Points : 367
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.
taska est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 09h23   #12
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
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.) ?
__________________
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2007, 10h41   #13
Membre éclairé
 
Inscription : 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 : 367
Points : 367
Citation:
Tu peux me décrire ta vision des choses
... faut pas oublier de passer par là :http://www.developpez.net/forums/d99612/bases-donnees/oracle/outils/forms/forms-web-site-internet-partage-pjc-beans/

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 :
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 :
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.
taska est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2007, 23h36   #14
Membre éclairé
 
Inscription : 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 : 367
Points : 367
Citation:
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 :
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 :
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 :
set_custom_property ('UTIL.BEAN',1,'LIST_ADD','NEW VALUE');
3. Ajouter des élements à la liste :
Code :
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 :
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,
taska est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2007, 10h39   #15
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 533
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 533
Points : 6 469
Points : 6 469
Ce bean est sympa mais fait double emploi avec le PJC livré dans les démos Oracle (multiselect TList)...
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2007, 18h43   #16
Membre éclairé
 
Inscription : 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 : 367
Points : 367
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,
taska est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2007, 20h54   #17
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 533
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 533
Points : 6 469
Points : 6 469
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
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h11.


 
 
 
 
Partenaires

Hébergement Web