PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Problème pour manipuler des champs libellés dans des fenêtres internes dynamiques (iPad)
Problème pour manipuler des champs libellés dans des fenêtres internes dynamiques (iPad)
Débuté par Sebinc, 31 mai 2013 15:19 - 5 réponses
Membre enregistré
186 messages
Popularité : +5 (11 votes)
Posté le 31 mai 2013 - 15:19
Bonjour à tous,
J'ai un soucis pour manipuler des champs libellé dans une fenêtre interne dans un projet pour iPad.
Concrètement, j'ai une application qui permet d'enregistrer des commandes, ma fenêtre est coupée en 2 parties, à gauche, le menu, à droite les diverses fonctionnalités.
Le menu de gauche est en fait un champs fenêtre interne que je charge dynamiquement (ChangeFenêtreSource). Si une commande est en cours, ce menu affiche un "Panier" avec 2 libellés : Montant du panier et nombre d'articles dans le panier.

Mon problème est que même lorsque cette fenêtre est chargée, si j’affecte une valeur à un libellé l'application plante sur une erreur "Le champs est inconnu".
J'ai tout tenté, soit l'appeler NomFenetre.NomChamps, j'en suis à avoir un timer système qui tourne toutes les secondes dans la fenêtre interne elle même (pas très propre). Rien ne change.

Votre aide serait la bienvenue...

Merci
Seb
Membre enregistré
186 messages
Popularité : +5 (11 votes)
Posté le 05 juin 2013 - 14:57
Pas très inspirés amis développeurs...

Je n'arrive pas à m'en sortir Heeeeelp please !!!!
Posté le 05 juin 2013 - 16:36
Et si tu nous montrais le code qui ne fonctionne pas, qu'on ait quelque
chose pour bosser ?

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

Nouveau site web (EXPERIMENTAL) http://www.fabriceharari.eu
(Plus d'information sur http://fabriceharari.com/index_FR.html)


On 6/5/2013 6:57 AM, Sebinc wrote:
Pas très inspirés amis développeurs...

Je n'arrive pas à m'en sortir Heeeeelp please !!!!
Membre enregistré
186 messages
Popularité : +5 (11 votes)
Posté le 05 juin 2013 - 17:24
Mais bien sûr.

Donc j'ai une fenêtre FEN_Quantite qui est ouverte à partir de mon menu (OuvreFille).
C'est cette fenêtre qui essaye de multiples façon d'alimenter les champs libellés de ma fenêtre interne.

Voici donc un bout de code de cette fenêtre (je laisse volontairement 2 lignes que j'ai testée et qui ne fonctionnent pas mais je ne les lance pas toutes les 2 bien sûr).

SI FEN_Menu.FI_MenuGauche..FenêtreSource = "FI_FEN_MenuGeneralVisite" ALORS
ExécuteTraitement(FEN_Menu.FI_MenuGauche..FenêtreSource+".MajMontant", trtProcédure)
{FEN_Menu.FI_MenuGauche..FenêtreSource+".Lib_MontantPanier"} = MaCommande.p_MonRecapPanier.p_MontantPanier
FIN

Procédure MajMontant()

SI MaCommande.p_NumCommande = "" ALORS
Lib_MontantPanier = "0 €"
Lib_NbArticles = "0 article"
SINON
Lib_MontantPanier = MaCommande.p_MonRecapPanier.p_MontantPanier
Lib_NbArticles = MaCommande.p_MonRecapPanier.p_Libelle
FIN

J'espère que ça suffira...
En tout cas merci de t'en être soucié
Seb
Posté le 05 juin 2013 - 20:11
Bonjour Sébastien

je n'ai pas testé ce cas particulier, donc, ce que je vais dire est
juste une hypothèse. Toutefois, je constate que les deux lignes en
question utilisent la même logique:
>ExécuteTraitement(FEN_Menu.FI_MenuGauche..FenêtreSource+".MajMontant",
trtProcédure)
>{FEN_Menu.FI_MenuGauche..FenêtreSource+".Lib_MontantPanier"}
> = MaCommande.p_MonRecapPanier.p_MontantPanier

Dans les deux cas, tu utilise bien FEN_Menu.FI_MenuGauche pour récupérer
le nom de la fenêtre interne en cours d'utilisation. Et je suppose que
cette partie fonctionne bien. Par contre, quand tu fais l'appel à la
procédure de la fenêtre interne, tu y réfères directement par son nom de
fenetre interne, et plus par le nom du CHAMP fenetre interne...

Hors tout code situé dans la fenetre principale ne connait QUE ce champ
fenetre interne, il ne sait pas ce qu'il y a dedans...

Logiquement, il faudrait donc faire quelque chose comme
ExécuteTraitement(FEN_Menu.FI_MenuGauche+".MajMontant", trtProcédure)
ou peut être:
SNomFI is string=FEN_Menu.FI_MenuGauche..FenêtreSource
ExécuteTraitement(FEN_Menu.FI_MenuGauche+"."+sNomFI+".MajMontant",
trtProcédure)

ou équivalent

A tester en tout cas

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

Nouveau site web (EXPERIMENTAL) http://www.fabriceharari.eu
(Plus d'information sur http://fabriceharari.com/index_FR.html)



On 6/5/2013 9:24 AM, Sebinc wrote:
Mais bien sûr.

Donc j'ai une fenêtre FEN_Quantite qui est ouverte à partir de mon menu
(OuvreFille).
C'est cette fenêtre qui essaye de multiples façon d'alimenter les champs
libellés de ma fenêtre interne.

Voici donc un bout de code de cette fenêtre (je laisse volontairement 2
lignes que j'ai testée et qui ne fonctionnent pas mais je ne les lance
pas toutes les 2 bien sûr).

SI FEN_Menu.FI_MenuGauche..FenêtreSource = "FI_FEN_MenuGeneralVisite" ALORS

ExécuteTraitement(FEN_Menu.FI_MenuGauche..FenêtreSource+".MajMontant",
trtProcédure)
{FEN_Menu.FI_MenuGauche..FenêtreSource+".Lib_MontantPanier"}
= MaCommande.p_MonRecapPanier.p_MontantPanier
FIN

Procédure MajMontant()

SI MaCommande.p_NumCommande = "" ALORS
Lib_MontantPanier = "0 €"
Lib_NbArticles = "0 article"
SINON
Lib_MontantPanier = MaCommande.p_MonRecapPanier.p_MontantPanier
Lib_NbArticles = MaCommande.p_MonRecapPanier.p_Libelle
FIN

J'espère que ça suffira...
En tout cas merci de t'en être soucié
Seb
Membre enregistré
186 messages
Popularité : +5 (11 votes)
Posté le 06 juin 2013 - 09:49
Bonjour Fabrice,
Encore une fois un grand merci à toi de te soucier de mon problème.

J'ai donc mis en application tes conseils sans succès.

J'ai fait 3 essais :
SI FEN_Menu.FI_MenuGauche..FenêtreSource = "FI_FEN_MenuGeneralVisite" ALORS
ExécuteTraitement(FEN_Menu.FI_MenuGauche + ".MajMontant", trtProcédure)
FIN
Qui fait planter l'application avec un message qui dit "La procédure MajMontant est inconnue."


SI FEN_Menu.FI_MenuGauche..FenêtreSource = "FI_FEN_MenuGeneralVisite" ALORS
SNomFI est une chaîne = FEN_Menu.FI_MenuGauche..FenêtreSource
ExécuteTraitement(FEN_Menu.FI_MenuGauche+"."+SNomFI+".MajMontant", trtProcédure)
FIN
Qui fait planter l'application avec un message qui dit :
La procédure .FI_FEN_MenuGeneralVisite.MajMontant est inconnue.
Le composant '' est inconnu. Une application doit être compilée avec le composant pour pouvoir l'utiliser en exécution.

SI FEN_Menu.FI_MenuGauche..FenêtreSource = "FI_FEN_MenuGeneralVisite" ALORS
SI MaCommande.p_NumCommande = "" ALORS
{FEN_Menu.FI_MenuGauche+"."+SNomFI+".Lib_MontantPanier", indChamp} = "0 €"
{FEN_Menu.FI_MenuGauche+"."+SNomFI+".Lib_NbArticles", indChamp} = "0 article"
SINON
{FEN_Menu.FI_MenuGauche+"."+SNomFI+".Lib_MontantPanier", indChamp} = MaCommande.p_MonRecapPanier.p_MontantPanier
{FEN_Menu.FI_MenuGauche+"."+SNomFI+".Lib_NbArticles", indChamp} = MaCommande.p_MonRecapPanier.p_Libelle
FIN
FIN
J'ai essayé de manipuler les champs directement sans plus de succès...
Ça fait planter l'application avec un message qui dit "La collection de procédures 'FEN_Quantite.PROCEDURE' n'a pas encore été chargée."

Ce qui est étrange c'est que quand je fais un ChangeFenêtreSource(FEN_Menu.FI_MenuGauche, FI_FEN_MenuGeneralVisite)
Si je place à l'initialisation de la Fenêtre FI_FEN_MenuGeneralVisite l'exécution de la procédure MajMontant(), celle ci s'exécute sans soucis.

Voilà je ne sais plus quoi faire...

Merci d'avance
Seb