Voir le flux RSS

Le Blog de DSR57 - Programmation WinDev

WinDev : fonctions de sélection/désélection des champs interrupteurs V2

Noter ce billet
par , 22/09/2015 à 13h44 (1303 Affichages)
Nouvelles fonctions pour améliorer la gestion de sélection/désélection d'un champ Interrupteur par programmation V2

Contexte technique



Nom : contexteTechnique.jpg
Affichages : 1105
Taille : 27,5 Ko

Dans le premier billet WinDev : fonctions de sélection/désélection des champs interrupteurs, je mettais à disposition une collection de procédures facilitant la gestion d'un champ de type interrupteur en proposant un ensemble de possibilité pour gérer la sélection/désélection. Ces fonctions :
  • InterrupteurSelectionne
  • InterrupteurSelectionneTout
  • InterrupteurDeselectionne
  • InterrupteurDeselectionneTout

prenaient en premier paramètre le nom du champ sous forme de chaine de caractère. Depuis WinDev 19, un nouveau type de variable est disponible : Champ.
Je met à disposition une nouvelle version de ces fonctions avec ce type de variable.

Version de WinDev : 19 et supérieures

Les fonctions



Nom : c0a2b08f317e98ce65d506d9c5c934f2_large.jpeg
Affichages : 393
Taille : 9,1 Ko

InterrupteurSelectionne


Cette fonction permet de sélectionner plusieurs options d'un champ interrupteur en passant les indices en paramètres

Code WinDev : 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
 
/ Résumé : Selectionne les indices passés en paramètres
// Syntaxe :
//InterrupteurSelectionne (<pc_champ> est champ, <pt_LstIndice> est tableau)
//
// Paramètres :
//	pc_champ (champ) : Nom du champ de type interrupteur
//	pt_LstIndice (tableau) : Liste des indices à sélectionner
// Valeur de retour :
// 	Aucune
//
// Exemple :
// InterrupteurSelectionne(Int_ListeEtat,[1,3,5])
//
PROCEDURE InterrupteurSelectionne(pc_champ est un Champ,pt_LstIndice est un tableau d'entiers)
 
//----->Declaration des variables
ls_MessageErreur est une chaîne
li_interrupteurOccurrence est un entier
 
//----->Initialisation des variables
ls_MessageErreur="Vous avez appelé l'opérateur [] sur le champ %1."+RC+...
"L'indice spécifié [%2] est invalide. "+RC+...
"Les valeurs valides sont comprises entre 1 et %3 (inclus)."
 
SI ChampExiste(pc_champ..Nom) ALORS
	SI pc_champ..Type = typInterr ALORS
		//----->Initialisation des variables
		li_interrupteurOccurrence=pc_champ..Occurrence
 
		POUR li_i=1 _A_ pt_LstIndice..Occurrence
			SI pt_LstIndice[li_i] <= li_interrupteurOccurrence ALORS
				pc_champ[pt_LstIndice[li_i]]=Vrai
			SINON
				ExceptionDéclenche(3,ChaîneConstruit(ls_MessageErreur,pc_champ..NomComplet,pt_LstIndice[li_i],li_interrupteurOccurrence))
			FIN
		FIN
	SINON
		ExceptionDéclenche(2,"Le champ '"+pc_champ..NomComplet+"' n'est pas de type interrupteur")
	FIN
SINON
	ExceptionDéclenche(1,"Le champ '"+pc_champ..NomComplet+"' n'existe pas")
FIN

Exemple d'utilisation :

Code WinDev : Sélectionner tout - Visualiser dans une fenêtre à part
InterrupteurSelectionne(Int_LstOptions,[1,3,5,7])


InterrupteurSelectionneTout

Cette fonction sélectionne toutes les options du champ interrupteur passé en paramètre

Code WinDev : 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
 
// Résumé : Sélectionne toutes les options d'un champ de type interrupteur
// Syntaxe :
//InterrupteurSelectionneTout (<pc_champ> est champ)
//
// Paramètres :
//	pc_champ (champ) : Nom du champ de type interrupteur
// Valeur de retour :
// 	Aucune
//
// Exemple :
// InterrupteurSelectionneTout(Int_LstOptions)
//
PROCEDURE InterrupteurSelectionneTout(pc_champ est un Champ)
 
SI ChampExiste(pc_champ..Nom) ALORS
	SI pc_champ..Type = typInterr ALORS
		POUR li_i=1 _A_ InterrupteurOccurrence(pc_champ)
			pc_champ[li_i]=1
		FIN	
	SINON
		ExceptionDéclenche(2,"Le champ '"+pc_champ..NomComplet+"' n'est pas de type interrupteur")
	FIN
SINON
	ExceptionDéclenche(1,"Le champ '"+pc_champ..NomComplet+"' n'existe pas")
FIN

Exemple d'utilisation :

Code WinDev : Sélectionner tout - Visualiser dans une fenêtre à part
InterrupteurSelectionneTout(Int_LstOPtions)

InterrupteurDeselectionne


Cette fonction permet de désélectionner plusieurs options d'un champ interrupteur en passant les indices en paramètres

Code WinDev : 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
 
// Résumé : Déselectionne les interrupteurs des lignes passées en paramètres
// Syntaxe :
//InterrupteurDeselectionne (<pc_champ> est champ, <pt_LstIndice> est tableau)
//
// Paramètres :
//	pc_champ (champ) : Nom du champ de type interrupteur
//	pt_LstIndice (tableau) : Liste des indices à sélectionner
// Valeur de retour :
// 	Aucune
//
// Exemple :
// InterrupteurSelectionneTout(Int_option)
//
PROCEDURE InterrupteurDeselectionne(pc_champ est un Champ,pt_LstIndice est un tableau d'entiers)
 
//----->Declaration des variables
ls_MessageErreur est une chaîne
li_interrupteurOccurrence est un entier
 
//----->Initialisation des variables
ls_MessageErreur="Vous avez appelé l'opérateur [] sur le champ %1."+RC+...
"L'indice spécifié [%2] est invalide. "+RC+...
"Les valeurs valides sont comprises entre 1 et %3 (inclus)."
 
SI ChampExiste(pc_champ..NomComplet) ALORS
	SI pc_champ..Type = typInterr ALORS
		//----->Initialisation des variables
		li_interrupteurOccurrence=pc_champ..Occurrence
 
		POUR li_i=1 _A_ pt_LstIndice..Occurrence
			SI pt_LstIndice[li_i] <= li_interrupteurOccurrence ALORS
				pc_champ[pt_LstIndice[li_i]]=Faux
			SINON
				ExceptionDéclenche(3,ChaîneConstruit(ls_MessageErreur,pc_champ..NomComplet,pt_LstIndice[li_i],li_interrupteurOccurrence))
			FIN
		FIN
	SINON
		ExceptionDéclenche(2,"Le champ '"+pc_champ..NomComplet+"' n'est pas de type interrupteur")
	FIN
SINON
	ExceptionDéclenche(1,"Le champ '"+pc_champ..NomComplet+"' n'existe pas")
FIN

Exemple d'utilisation :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
InterrupteurDeselectionne(Int_LstOPtions,[1,3,7])
InterrupteurDeselectionneTout


Cette fonction désélectionne toutes les options du champ interrupteur passé en paramètre

Code WinDev : 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
 
// Résumé : Déselectionne toutes les option d'un interrupteur
// Syntaxe :
//InterrupteurDeselectionneTout (<pc_champ> est champ)
//
// Paramètres :
//	pc_champ (champ) : Nom du champ de type interrupteur
// Valeur de retour :
// 	Aucune
//
// Exemple :
// InterrupteurDeselectionneTout(Int_option)
//
PROCEDURE InterrupteurDeselectionneTout(pc_champ est un Champ)
 
SI ChampExiste(pc_champ..NomComplet) ALORS
	SI pc_champ..Type = typInterr ALORS
		POUR li_i=1 _A_ InterrupteurOccurrence(pc_champ)
			pc_champ[li_i]=0
		FIN
	SINON
		ExceptionDéclenche(2,"Le champ '"+pc_champ..NomComplet+"' n'est pas de type interrupteur")
	FIN
SINON
	ExceptionDéclenche(1,"Le champ '"+pc_champ..NomComplet+"' n'existe pas")
FIN

Exceptions



Pour plus de renseignements sur la gestion des exceptions , voir le billet initial WinDev : fonctions de sélection/désélection des champs interrupteurs

Conclusion



Par ce billet, je viens de mettre à disposition les fonctions pour améliorer la gestion par programmation du champ Interrupteur avec le type de variable Champ. N'hésitez pas à me faire part de vos retours pour améliorer, compléter la liste de ces fonctions.
A voir, si PC-Soft intégrera ces propositions dans une future version de son EDI.

Envoyer le billet « WinDev : fonctions de sélection/désélection des champs interrupteurs V2 » dans le blog Viadeo Envoyer le billet « WinDev : fonctions de sélection/désélection des champs interrupteurs V2 » dans le blog Twitter Envoyer le billet « WinDev : fonctions de sélection/désélection des champs interrupteurs V2 » dans le blog Google Envoyer le billet « WinDev : fonctions de sélection/désélection des champs interrupteurs V2 » dans le blog Facebook Envoyer le billet « WinDev : fonctions de sélection/désélection des champs interrupteurs V2 » dans le blog Digg Envoyer le billet « WinDev : fonctions de sélection/désélection des champs interrupteurs V2 » dans le blog Delicious Envoyer le billet « WinDev : fonctions de sélection/désélection des champs interrupteurs V2 » dans le blog MySpace Envoyer le billet « WinDev : fonctions de sélection/désélection des champs interrupteurs V2 » dans le blog Yahoo

Mis à jour 03/08/2016 à 12h49 par dsr57

Catégories
WinDev , Fonctions

Commentaires

  1. Avatar de dsr57
    • |
    • permalink
    Bonjour à tous ,

    Suite à un signalement de dysfonctionnement dans les procédures :
    • InterrupteurSelectionne ;
    • InterrupteurDeselectionne.

    Je vous informe de la correction de celles-ci, le code présent dans ce billet prend en compte ces corrections.

    Le problème se situait aux lignes de tests sur les occurences
    Code WinDev : Sélectionner tout - Visualiser dans une fenêtre à part
    SI pt_LstIndice[li_i] < li_interrupteurOccurrence ALORS

    Merci au développeur anonyme pour ce retour

    Bon dev à tous
  2. Avatar de jerbas
    • |
    • permalink
    Comment je peux faire pour ajouter dans le fichier de données tout mes options sélectionnées de mon champ INT_
    càd avec la fonction: EcranversFichier et faire également FichierVersEcran, pour faire apparaitre mes options que j'avais sélectionnées

    J'ai fais une Appli à la quel on aura la possibilité de sélectionné plusieurs mois avec le champs INTERRUPTEUR...

    Cordial...