Indirection
Animateur WDF
Inscrit:
22/11/2002 11:40
De Toulon
Post(s): 126
Bonjour
C'anonyme qui à réussi à trouver le temps de ce connecter


Voilà le souci d'aujourd'hui.

J'ai un un certains nombre de champs à rendre visibles
Ces champs sont noté Rub_TVATx1 Rub_TVATx2 Rub_TVATx3 et ainsi de suite

Ce bout de code est coinsé dans une boucle Niteration

// On rend les champs visibles
P_ChampVisible("Rub_TVATx"+Niteration)

Mais mon souci c'est que j'ai une erreur dans la procédure

Erreur à la ligne 3 du traitement Procédure locale P_ChampVisible.
Propriété interdite

PROCEDURE P_ChampVisible(P_champ)
// but >> Rendre un champ invisible
P_champ..Visible=Vrai

Il semblerait que les "" qui entourent mon parametre pose souci.

Si vous avez des idées je suis preneur

William

Contribution le : 18/02/2004 09:47
_________________
Vous pouvez me joindre
william at wdforge.org

ou sur Msn

joindreWilliam at hotmail.com en instantanée
......
Créer un fichier PDF de la contribution Imprimer


Re: Indirection
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Voici a quoi doit ressemble ta procédure:
Cette procedure permet de rendre tout objet visible ou invisible selon la valeur passée à la procédure
Un champ ou meme un groupe de champs.
Cette procédure utilise l'indirection

Code de la procédure
P_ObjetVisible(P_Objet,pEtat)
{P_Objet}..Visible=pEtat


Appel de la procédure
P_ObjetVisible("Rub_TVATx"+Niteration,Vrai)


Contribution le : 18/02/2004 10:01
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Indirection
Animateur WDF
Inscrit:
22/11/2002 11:40
De Toulon
Post(s): 126
Bonjour
je teste tout de suite avec les {}
je n'ai pas besoin de faire passer l'état en param car s'il ne sont pas dans la boucle ils restent invisbles

Merci

William

Contribution le : 18/02/2004 10:16
Créer un fichier PDF de la contribution Imprimer


Re: Indirection
Animateur WDF
Inscrit:
22/11/2002 11:40
De Toulon
Post(s): 126
Chat marche je n'ai plus l'erreur.
Merci
William

Contribution le : 18/02/2004 10:17
Créer un fichier PDF de la contribution Imprimer


Re: Indirection
Animateur WDF
Inscrit:
22/11/2002 11:40
De Toulon
Post(s): 126
Re

Encore une question.
Je n'ai pas réussi a me mettre à la POO non pas que le concept m'échappe mais la rédaction sous WD me pose souci.

Si le coeur vous en dit je suis preneur

Voici tout mon code pour faire ce que je voulais

C'est pour une facture ou devis mais le client veut avoir le détail de TVA. il peut en avoir plusieurs sur le meme corps

Pour cela j'ai stocké le tva en base avec des séparateurs "/"

Si on pouvait m'aider dans la rédaction des différents éléments constructeur, méthodes et autres se serait bien pour que je puisse me faire les dents.

Cordialelement
William

Dans l'état j'ai mis

// Exemple de tva stocké en base 19.6=2.458194/5.5=5.21327/

// Nbr de TVA
NnbrTVA=ChaîneOccurrence(Req_Facture.TvaLigne,"/")

// Lecture du premier
P_PostionTvaMt(Req_Facture.TvaLigne,1,1,PositionOccurrence(Req_Facture.TvaLigne,"/",1),1)
POUR Niteration=2 A NnbrTVA
// Extract, les champs sont mis a jour par une procedure en cascade
// Remise à zero pour assurer
CTVAMt="";cTVATx="";NrechEgale="";NRechFin=""
P_PostionTvaMt(Req_Facture.TvaLigne,Niteration,NRechDebut,PositionOccurrence(Req_Facture.TvaLigne,"/",Niteration),Niteration)
FIN // pour Niteration=1 à NnbrTVA

// calcul du montant de TVA sur toutes les TVA
// il y a 5 champs pour le moment, mais on pourrait faire passe en param
// On met le champs à zéro pour eviter les cumuls
Rub_TotalTVA=0
POUR Niteration=1 A 5
Rub_TotalTVA+={"Rub_TVAVal"+Niteration}
FIN // Pour Niteration=1 à 5

Les procédures sont les suivantes
PROCEDURE P_PostionTvaMt(P_donnee,P_rang,P_deb,p_fin,P_iteration)
// But >> rechercher la partie qui contient le tx et le montant
// 19.6=2.458194/5.5=5.21327/
NRechFin=PositionOccurrence(Req_Facture.TvaLigne,"/",P_rang)

// Position du "="
NrechEgale=F_PositionEgale(P_donnee,P_deb)
// On extrait le Tx TVA
cTVATx=P_donnee[[P_deb A NrechEgale-1]]
// On extrait le montant
CTVAMt=P_donnee[[NrechEgale+1 A p_fin-1]]

// On prévoit p_deb le retour sur cette procédure
NRechDebut=p_fin+1

//// On rend les champs visibles
P_ChampVisible("Rub_TVATx"+P_iteration)
P_ChampVisible("Rub_TVAVal"+P_iteration)

// On assigne les valeurs
P_ChampsValeur("Rub_TVATx"+P_iteration,cTVATx)
P_ChampsValeur("Rub_TVAVal"+P_iteration,CTVAMt)

PROCEDURE F_PositionEgale(p_donner,P_Debut)

// but >> recbercher la position du Egale
//NrechEgale=Position(Req_Facture.TvaLigne,"=",P_debut)
RENVOYER Position(p_donner,"=",P_Debut)

PROCEDURE P_ChampVisible(P_champ)
// but >> Rendre un champ invisible
{P_champ}..Visible=Vrai


PROCEDURE P_ChampsValeur(P_champ,P_valeur)
// but >> assigner la valeur à un champ
{P_champ}=P_valeur


Contribution le : 18/02/2004 11:42
Créer un fichier PDF de la contribution Imprimer


Re: Indirection
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Bonjour,

Nous publions ces dossiers et documentation a titre d'information mais aussi d'exemple...

Voici donc des exemples illustré de classes.
- cZO mini classe pour les validations automatique de Zones Obligatoires.
- cIni classe plus complexe pour la gestion des INI.

Le portage en classe de votre code devrait ne pas poser de problème. Merci au passage de lire l'aide en ligne sur le sujet.

Bon courage.

Contribution le : 18/02/2004 12:06
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


Re: Indirection
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Salut William,

Un début d' ébauche

//*** Déclaration de cTVA ***
cTVA est une classe
 mTabTVATaux est un tableau de 0 réels        //Tableau de taux de TVA
 mTabTVAMontant est un tableau de 0 réels     //Il faut peut être utiliser un monétaire
 mNbrLignes est un entier                     //Nombre de ligne
FIN

//*** Methdode meth_TVALignesAffecte ***
PROCEDURE meth_TVALignesAffecte(pValeur est une chaîne)
sUneLigne est une chaîne
sUnTaux est une chaîne
sunMontant est une chaîne
i est un entier

SI SansEspace(pValeur) = "" ALORS RETOUR //ne fait rien si pvaleur est vide
SI Droite(pValeur) <> "/" ALORS pValeur = "/" //on rajoute / en fin si il n'existe pas
:mNbrLignes = ChaîneOccurrence (pValeur,"/")//On récupère le nombre de ligne
Dimension(:mTabTVATaux,:mNbrLignes)//On redimensionne le tableau 
Dimension(:mTabTVAMontant,:mNbrLignes)//On redimensionne le tableau

BOUCLE	//Pour lire toutes les lignes
 i++
 sUneLigne = ExtraitChaîne (pValeur,i,"/")//On récupère une ligne
 SI SansEspace(sUneLigne) = "" ALORS SORTIR //Si on a plus de lignes alors on sort
 sUnTaux = ExtraitChaîne(sUneLigne,1,"=") //On récupère le taux de la tva
 sunMontant = ExtraitChaîne(sUneLigne,2,"=") //On récupère le montant
 :mTabTVATaux[i] = Val(sUnTaux)
 :mTabTVAMontant[i] = Val(sunMontant)
FIN

//*** meth_TVALignesAffecte ***
PROCEDURE meth_TVALignesAffecte(pValeur est une chaîne)
sUneLigne est une chaîne
sUnTaux est une chaîne
sunMontant est une chaîne
i est un entier

SI SansEspace(pValeur) = "" ALORS RETOUR //ne fait rien si pvaleur est vide
SI Droite(pValeur) <> "/" ALORS pValeur += "/" //on rajoute / en fin si il n'existe pas
:mNbrLignes = ChaîneOccurrence(pValeur,"/") //On récupère le nombre de ligne
Dimension(:mTabTVATaux,:mNbrLignes) //On redimensionne le tableau 
Dimension(:mTabTVAMontant,:mNbrLignes) //On redimensionne le tableau

BOUCLE	//Pour lire toutes les lignes
 i++
 sUneLigne = ExtraitChaîne(pValeur,i,"/")//On récupère une ligne
 SI SansEspace(sUneLigne) = "" ALORS SORTIR //Si on a plus de lignes alors on sort
 sUnTaux = ExtraitChaîne(sUneLigne,1,"=")//On récupère le taux de la tva
 sunMontant = ExtraitChaîne(sUneLigne,2,"=") //On récupère le montant
 :mTabTVATaux[i] = Val(sUnTaux)
 :mTabTVAMontant[i] = Val(sunMontant)
FIN

//*** meth_GetTotalTVA ***
PROCEDURE meth_GetTotalTVA()
nMontantTVA est un réel
i est un entier

SI :mNbrLignes = 0 ALORS RENVOYER 0
POUR i = 1 A :mNbrLignes
 nMontantTVA += :mTabTVAMontant[i]
FIN
RENVOYER nMontantTVA

//*** meth_MAJChamps ***
PROCEDURE meth_MAJChamps(pPrefixeChampsTaux est une chaîne, pPrefixChampsMontant est une chaîne)
i est un entier

POUR i = 1 A :mNbrLignes
 {pPrefixeChampsTaux+i}..Visible = Vrai
 {pPrefixeChampsTaux+i}..Valeur = :mTabTVATaux
 {pPrefixChampsMontant+i}..Visible = Vrai
 {pPrefixChampsMontant+i}..Valeur = :mTabTVAMontant
FIN


Pour utiliser cette classe
TVA est un objet cTVA 

TVA:meth_TVALignesAffecte(Req_Facture.TvaLigne)
TVA:meth_MAJChamps("Rub_TVATx", "Rub_TVAVal")


Contribution le : 19/02/2004 01:30
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Indirection et POO
Animateur WDF
Inscrit:
22/11/2002 11:40
De Toulon
Post(s): 126
Waou!!!
Grand merci drcharly93

Je regarde et je vous tiens au courant.
Par contre encore une question. Je me la pose en pensant à une classe télécharger ici, pour les champs obligatoire.

Le fonctionnement de cette classe semble simple mais comment la mettre en pratique??

Dois-je la construire à chaque lancememnt de la fenêtre et la détruire à la fermeture? et si ce n'est pas le cas comment faire la différence si je fais appel plusieurs fois à cette classe dans la cas de plusieurs fenêtres ouvertes en même temps??

je crois que c'est ce qu'on nomme les instances?? Bref un nom
En même temps que je tape je vois une ligne de code
TVA est un objet Ctva si j'avais une deuxième fenêtre il suffirait de mettre TVA2 est un objet Ctva C ça??

Merci encore

William

Contribution le : 19/02/2004 08:03
Créer un fichier PDF de la contribution Imprimer


Re: Indirection et POO
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Citation :
Le fonctionnement de cette classe semble simple mais comment la mettre en pratique??

Dois-je la construire à chaque lancememnt de la fenêtre et la détruire à la fermeture? et si ce n'est pas le cas comment faire la différence si je fais appel plusieurs fois à cette classe dans la cas de plusieurs fenêtres ouvertes en même temps??

cZo est à déclarer globale à chaque fenêtre ,il s'agit là de l'application de la portée des variable.
Comme l'indique la documentation l'instance est à déclarer dans l'init de la fenêtre utilisatrice...
// Déclarations de Mafanêtre
GLOBAL
oZO est un cZO // crée une instance pour la fenêtre
...
// init d'un champ de la fenêtre
oZO:Ajoute(MoiMeme..Nom) // Utilise une méthode de l'instance.

Le fait d'avoir une instance pour chaque fenêtre leur permet d'avoir leur propre liste de zone (membre m_cZO)... et donc de ne pas mélanger les listes de zone obligatoires dans un objet global au projet...

Pour votre classe, effectivement il faut l'instancier pour l'exploiter... l'instance est alors une variable dont il faut configurer la portée en fonction de l'utilisation (locale, globale fenêtre, globale projet).
oTVA est un cTVA // instanciation
...
oTVA:Méthode(paramètre) // utilisation de l'instance

Contribution le : 19/02/2004 09:02
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


Re: Indirection et POO
Animateur WDF
Inscrit:
22/11/2002 11:40
De Toulon
Post(s): 126
Re
Ok donc mon raisonnement était juste
grand merci pour votre aide et moi je continue à gratter de mon coté

je sens que ce que j'avais lu va être juste.
Une fois gouté à la POO on ne peut plus s'en passer

William

Contribution le : 19/02/2004 09:07
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2