Page 1 sur 1

traitement valeurs sélectionnées tableau array avec view

Posté : jeu. juin 07, 2007 9:28 am
par forairinfo
Bonjour, :D

quelqu'un sait-il comment récupérer les données d'un tableau de type array lorsqu'elles sont visibles avec la méthode view :?:

Chaque élément pouvant être sélectionné, il semble logique que l'on puisse exploiter la sélection après avoir validé et fermé la fenêtre view ... :?

Si quelqu'un peut m'aider

Posté : jeu. juin 07, 2007 8:47 pm
par Côme
Bonsoir :wink:

On peut accéder aux valeurs d'un tableau soit individuellement soit par le parcours des données qu'il contient :

Code : Tout sélectionner

method pushButton(var eventInfo Event)
Var
	Tab1 array[] string
	Tab2 dynarray[] string
	s String
	I Longint
EndVar

;// Exemple avec un tableau simple indicé
;// En Opal le premier indice d'un tableau est 1 et non 0

Tab1.addLast("valeur 1")
Tab1.AddLast("valeur 2")

Tab1.view() ;// <= uniquement en lecture !

msginfo("Vue de Tab1[2]",Tab1[2])

;// Exemple avec un tableau associatif (Clé => valeur)

Tab2["Test1"] = "Ma valeur 1"
Tab2["Test2"] = "Ma valeur 2"

Tab2.view() ;// <= uniquement en lecture !

msgInfo("Vue de Tab2[Test2]",Tab2["Test2"])

;// Exemples de parcours de tableaux

msginfo("Message :","Exemple de parcours d'un tableau indicé")

;Pour un tableau indicé
For I from 1 to Tab1.size()
	msgInfo("Vue de la valeur "+StrVal(I),Tab1[I])
EndFor

msginfo("Message :","Exemple de parcours d'un tableau associatif")

;Pour un tableau associatif (dynarray en OPAL)
Foreach s in Tab2
	msgInfo("Vue du contenu de "+s,Tab2[s])
EndForEach

endMethod
Est-ce plus clair ? N'hésite pas si ce n'est pas le cas. Une bonne compréhension de l'utilisation des tableaux permet de simplifier véritablement la programmation

Posté : ven. juin 08, 2007 4:52 pm
par forairinfo
:D Merci de ta réponse Come,

mais ce n'est pas ce que j'attendais. :?

En clair, je m'interroge s'il existe un moyen de traiter les variables d'un tableau à partir de la fenêtre ouverte par la méthode View.

Je sais que l'on ne peux pas modifier les valeurs d'un tableau avec view mais peut-on les récupérer à partir de la sélection faite sous View ?

En effet, les éléments visibles à partir de View sont sélectionnables (1ere colonne), mais je ne vois pas comment traiter ces sélections.

Actuellement, lorsque je veux récupérer une variable sélectionnée d'un tableau, je suis obligé de passer soit par la création d'une fiche soit par un PopUpMenu.

Mais dans le PopUpMenu, l'on ne peut pas sélectionné plusieurs données. :shock:

Vois tu ce que je veux dire ? :D

Posté : ven. juin 08, 2007 8:16 pm
par Côme
Salut :wink:

Avec view() tu ne peux rien obtenir car OPAL est interrompu tant que la fenêtre view est ouverte (cf aide en ligne).
Pour ton souci de sélection multiple une piste rapide est d'utiliser l'objet ActiveX Liste.

Exemple :

- Tu poses un tel objet ActiveX (voir la barre d'outils "Contrôle OLE") Liste sur ta fiche et tu le nommes Test_Liste. Dans ses propriétés tu mets MultiSelect à True.
- tu poses 2 boutons sur la fiches que tu codes comme suit :

pushbutton 1 :

Code : Tout sélectionner

method pushButton(var eventInfo Event)
Var	
  T dynarray[] string
EndVar

T["un"]="Valeur 1"
T["deux"]="Valeur 2"
T["trois"]="Valeur 3"
T["quatre"]="Valeur 4"

Foreach s in T
  Test_Liste.addString(T[s])
EndForeach

endMethod
pushbutton 2 :

Code : Tout sélectionner

method pushButton(var eventInfo Event)
Var
  s string
EndVar

s = Test_Liste.GetMultiSelAsCDL()   
s.view()

endMethod
Maintenant tu exécutes la fiche tu cliques sur le bouton 1 ce qui te remplit ta liste puis tu fais une sélection multiple (avec CTRL par exemple) puis tu cliques sur le bouton 2. Ceci t'affiche une chaine contenant les indices de ta sélection, séparés par des virgules. Attention cette fois les indices commencent à zéro.

Bon test :D

Posté : sam. juin 09, 2007 1:24 am
par forairinfo
Très très bien.... :D :D

Première fois que j'utilise les activeX. :oops:

A ma décharge, jusqu'à la version 8, je n'avais pas trouvé d'aide sur les activeX.

Je constate qu'il en existe dans la version 10, dommages elle est en Anglais. :evil:

Je vais creuser de ce côté.

Merci Come. :!: :D