|
| Iniciado por Simon, 03,ene. 2019 15:54 - 20 respuestas |
| |
| | | |
|
| |
Miembro registrado 15 mensajes |
|
| Publicado el 03,enero 2019 - 15:54 |
Bonjour à toutes et à tous,
J'ai migré un projet WD23 vers WD24 et j'ai depuis une erreur en clonant des onglets :
Que s'est-il passé ? L'indice spécifié 2 est invalide. Les valeurs valides pour le champ ONG_Menu sont comprises entre 1 et 2.
Code erreur : 10015 Niveau : erreur fatale
Dump de l'erreur du module 'wd240obj.dll' (24.0.191.15).
Donc l'indice 2 est invalide, il doit être compris entre 1 et 2... si quelqu'un a une petite idée du problème, alors que tout fonctionnait à la perfection en v23.
Merci par avance pour votre aide.Mensaje modificado, 03,enero 2019 - 15:55 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 15 mensajes |
|
| Publicado el 03,enero 2019 - 16:34 |
| Petite précision, cette erreur n'apparaît pas en "GO", seulement en lançant l'exécutable... |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.330 mensajes |
|
| Publicado el 03,enero 2019 - 16:55 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 15 mensajes |
|
| Publicado el 03,enero 2019 - 18:29 |
Bonsoir Daryl,
Oui bien sûr, aucun changement. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.330 mensajes |
|
| Publicado el 03,enero 2019 - 21:26 |
Salut Simon,
As-tu déjà essayé de créer un nouvel onglet (qui remplace celui qui est existant) ?
Sinon, peux-tu mettre le code que tu utilises quand tu clone l'onglet ?
A+ Daryl
-- http://www.concept4u2.com |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 15 mensajes |
|
| Publicado el 04,enero 2019 - 09:05 |
Re Daryl,
Aucun changement en remplaçant l'onglet existant. A savoir que je construis des volets d'onglets dynamiquement pour y charger des fenêtres internes, donc il y en a de partout dans mes applications. Car ce sont bien toutes mes applications qui sont HS maintenant...
Voici la procédure en question, l'erreur faisant référence à cette ligne
{psSource} = nNbOnglet
Procedure PG_OngletOuvre(psLibelle est une chaîne, psSource est une chaîne, psCible est une chaîne)
nNbOnglet est un entier i est un entier y est un entier = -1
nNbOnglet = {psSource}..Occurrence
POUR i = 1 À nNbOnglet SI {psSource}[i]..Libellé = psLibelle ALORS y = i FIN FIN
SI y <> -1 ALORS {psSource} = y SINON nNbOnglet++ ChampClone({psSource}[1],psLibelle) ChangeFenêtreSource({psSource}[nNbOnglet].CFI_Interne,psCible) {psSource}[nNbOnglet].CFI_Interne..Hauteur = {psSource}[1].CFI_Interne..Hauteur {psSource}[nNbOnglet].CFI_Interne..Largeur = {psSource}[1].CFI_Interne..Largeur {psSource}[nNbOnglet]..Visible = Vrai {psSource} = nNbOnglet FIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 120 mensajes |
|
| Publicado el 04,enero 2019 - 10:32 |
Pas de réponse directe à ton problème, mais pour les indirections, pense à optimiser ton code en spécifiant le type d'objet concerné.
Il te suffit pour cela de remplacer
{psSource}
{psSource,indChamp}
Cela accélère vraiment les traitements faisant appel à beaucoup d'indirections |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.330 mensajes |
|
| Publicado el 04,enero 2019 - 15:12 |
Salut Simon,
Champclone() te renvoi le nouveau champ créé. Hors tu ne l'utilise pas dans ton code. (même si dans les versions antérieur de Windev cela fonctionne, j'aurais tendance à dire que c'est pas la bonne formule) 
Comme Lionel te l'as dit, il faut toujours indicé les indirections c'est beaucoup plus rapide puisque qu'il ne doit plus tester tout les types pour trouver le bon
Essaie plutôt ceci
Procedure PG_OngletOuvre(psLibelle est une chaîne, psSource est une chaîne, psCible est une chaîne)
i est un entier y est un entier = -1 xChamp est un Champ
POUR i = 1 _À_ { psSource, indChamp }..Occurrence SI { psSource, indChamp }[i]..Libellé ~= psLibelle ALORS y = i SORTIR FIN FIN
SI y > 0 ALORS { psSource, indChamp } = y SINON xChamp <- ChampClone({ psSource, indChamp }[1], psLibelle) xChamp..Hauteur = { psSource, indChamp }[1].CFI_Interne..Hauteur xChamp..Largeur = { psSource, indChamp }[1].CFI_Interne..Largeur ChangeFenêtreSource(xChamp.CFI_Interne, psCible) xChamp..Visible = Vrai DonneFocus(xChamp) FIN
A+ Daryl
-- http://www.concept4u2.com |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 15 mensajes |
|
| Publicado el 04,enero 2019 - 16:46 |
Merci pour ton retour Daryl,
Il subsiste un problème sur le DonneFocus() :
Aucun champ n'est référencé par la variable 'xChamp'. Utilisez l'opérateur '<-' pour référencer un champ.Mensaje modificado, 04,enero 2019 - 16:46 |
| |
| |
| | | |
|
| | |
| |
| Publicado el 04,enero 2019 - 16:54 |
Bonjour
si je comprends bien Daryl; il vaut mieux pour des champs clonés par ex d'un champ MODEL ne plus chercher à produire des zones MODEL01,MODEL02,MODEL03 et les travailler avec des sortes de {"MODEL"+numeriqueverschaine(i,"02d",indChamp}
mais utiliser des MODEL[1],MODEL[2], MODEL[3]
??
valable qq soit le produit ? Webdev et Windev Mobile ?
Merci de ta réponse.
-- Roumegou Eric
--- Cet email a fait l'objet d'une analyse antivirus par AVG. http://www.avg.com |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.330 mensajes |
|
| Publicado el 05,enero 2019 - 10:12 |
Salut Simon,
Et si tu remplace le DonneFocus(xChamp) par ceci, qu'est-ce que ça donne
{ psSource, indChamp } = { psSource, indChamp }..Occurrence
@Eric,
Désolé mais j'ai pas compris ta question  Ici Simon utilises des onglets, c'est pour cela qu'il y a des indices, mais si je clone un champ de saisie je n'utiliserais pas d'indice. Mais peut-être que ce n'est pas de cela que tu voulais parler ?
A+ Daryl
-- http://www.concept4u2.com |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 15 mensajes |
|
| Publicado el 07,enero 2019 - 11:27 |
Re Daryl,
Hélas non, j'ai déjà testé "{ psSource, indChamp } = { psSource, indChamp }..Occurrence" ce week-end mais j'ai la même erreur. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 14 mensajes |
|
| Publicado el 07,enero 2019 - 12:38 |
Bonjour Simon,
Peux-tu essayer de remplacer le code qui donne l'erreur par : {psSource}..valeur = nNbOnglet
Florence |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 15 mensajes |
|
| Publicado el 07,enero 2019 - 14:46 |
Bonjour Florence,
Je retombe sur l'erreur initiale :
L'indice spécifié 2 est invalide. Les valeurs valides pour le champ ONG_Menu sont comprises entre 1 et 2. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 15 mensajes |
|
| Publicado el 14,febrero 2019 - 14:53 |
Bonjour à toutes et à tous,
Le problème persiste malgré l'update 1 54h... Si quelqu'un a d'autres pistes à explorer pour l'erreur "Utilisez l'opérateur '<-' pour référencer un champ", je suis preneur. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 15 mensajes |
|
| Publicado el 14,marzo 2019 - 10:36 |
Le problème persiste toujours avec l'update 54t
Que s'est-il passé ? L'indice spécifié 2 est invalide. Les valeurs valides pour le champ ONG_Menu sont comprises entre 1 et 2.
Code erreur : 10015 Niveau : erreur fatale
Dump de l'erreur du module 'wd240obj.dll' (24.0.191.15).
Après mon : xChamp <- ChampClone({ psSource, indChamp }[1], psLibelle)
J'ai ajouté : SI xChamp = Null ALORS ToastAffiche("champ cloné vide !", toastCourt,cvMilieu,chCentre,OrangePastel) RETOUR FIN
xChamp tombe toujours à NULL quoi que je fasse...Mensaje modificado, 14,marzo 2019 - 10:38 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 197 mensajes |
|
| Publicado el 14,marzo 2019 - 11:00 |
Bonjour
j'utilise dans notre appli des onglets dynamiques avec fenêtre interne.
Pourquoi utiliser champClone au lieu de OngletOuvre? |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 15 mensajes |
|
| Publicado el 14,marzo 2019 - 11:38 |
Je n'utilise pas OngletOuvre car nos applications existaient bien avant l'apparition des onglets dynamiques. Il n'est pas envisageable de tout recoder et de passer en onglets dynamiques car PC Soft nous sort une erreur venue de nul part, l'indice 2 invalide alors que l'indice doit être compris entre 1et 2, j'aimerai comprendre. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 120 mensajes |
|
| Publicado el 14,marzo 2019 - 17:26 |
Bonjour, Ton post original date de début janvier 2019. Que dit le Support Technique depuis cette date ? pas de retour ? pas de changement avec la version 54t ? |
| |
| |
| | | |
|
| | |
| |
| Publicado el 14,marzo 2019 - 20:06 |
//------------------------------------------------------------------------------ //L'exemple de Daryl ne fonctionne pas car xChamp est de type "Volet d'onglet" après clonage //xChamp est un Champ ////La propriété Hauteur n'existe pas sur le champ... // xChamp..Hauteur = {psSource, indChamp}[1].CFI_Interne..Hauteur // xChamp..Largeur = {psSource, indChamp}[1].CFI_Interne..Largeur // ChangeFenêtreSource(xChamp.CFI_Interne, psCible) // xChamp..Visible = Vrai // DonneFocus(xChamp) //------------------------------------------------------------------------------ //Cet exemple fonctionne avec Windev 24 //PG_OngletOuvre("Volet " + DonneIdentifiant(), ONG_1..nom, "FI_TOOLBAR_2") //PG_OngletOuvre("Volet " + DonneIdentifiant(), ONG_1..nom, "FI_TOOLBAR_3")
PROCÉDURE PG_OngletOuvre(LOCAL psLibelle est une chaîne,... LOCAL psSource est une chaîne,... LOCAL psCible est une chaîne)
i est un entier y est un entier = -1 POUR i = 1 _À_ {psSource, indChamp}..Occurrence SI {psSource, indChamp}[i]..Libellé ~= psLibelle ALORS y = i SORTIR FIN FIN
SI y > 0 ALORS {psSource, indChamp} = y SINON ChampClone({psSource, indChamp}[1], psLibelle)
soit N = {psSource, indChamp}..Occurrence
ChangeFenêtreSource({psSource, indChamp}[N].CFI_Interne, psCible) {psSource, indChamp} = N FIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 15 mensajes |
|
| Publicado el 15,marzo 2019 - 08:05 |
Un énorme merci Christian, ta solution fonctionne à la perfection 
Pour information j'ai testé hier de tout convertir en onglets dynamiques, mais le système d'alias est trop peu pratique car je n'ai pas besoin de pouvoir déplacer ou détacher des volets. Au passage j'ai remarqué plein de bugs sur les onglets dynamiques : clignotements au clic, volets impossible à masquer via IHM il faut gruger en mettant des images dessus, les accès aux champs avec 3 niveaux d'imbrication des FI se complique... pas au point
Je reste donc sur mon ancien système grâce à toi, sujet clos pour ma part. |
| |
| |
| | | |
|
| | | | |
| | |
|