PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV Mobile 2024 → Clonage de dolonnes dans un champ Table
Clonage de dolonnes dans un champ Table
Iniciado por MICHEL, set., 11 2018 12:46 PM - 9 respostas
Membro registado
299 mensagems
Popularité : +16 (16 votes)
Publicado em setembro, 11 2018 - 12:46 PM
Bonjour,

J'ai besoin de créer dynamiquement des colonnes dans un champ Table.
Ces colonnes seront appelées Col_, Lien_ et Image_ suivi d'un chiffre de séquence.
Initialement les colonnes Col_1, Lien_1 et Image_1 existent, les nouvelles sont obtenues par clonage.

J'ai donc le code suivant

POUR i = 2 _A_ LN_NbColonnes
Info("avant", TableOccurrence(ta_Menu, toColonne))
ChampClone(ta_Menu.Col_1, "Col_" + NumériqueVersChaîne(i))
ChampClone(ta_Menu.Lien_1, "Lien_" + NumériqueVersChaîne(i))
ChampClone(ta_Menu.Filler_1, "Filler_" + NumériqueVersChaîne(i))
Info("apres", TableOccurrence(ta_Menu, toColonne))
{"ta_Menu.Col_"+NumériqueVersChaîne(i)}..Visible = Vrai
{"ta_Menu.Col_"+NumériqueVersChaîne(i)}..Largeur = LN_TailleIcone
{"ta_Menu.Filler_"+NumériqueVersChaîne(i)}..Visible = Vrai
{"ta_Menu.Filler_"+NumériqueVersChaîne(i)}..Largeur = LN_TailleEcart
FIN



Sous émulateur tout fonctionne bien. Sous Android le nombre de colonnes avant et après clonage est identique, la suite du code plante et le client s'impatiente.

Si vous avez des idées je suis preneur.
Membro registado
794 mensagems
Popularité : +40 (42 votes)
Publicado em setembro, 11 2018 - 1:17 PM
Bonjour. Pendant l'exécution du code ne vous montrera aucune erreur ? Selon la documentation WM pour Android, ne prend en charge que les variables indirectes dans les variables globales.

Opérateurs indirects
Les indirections ne sont supportées que sur les variables globales.
Une indirection sur une variable locale d'un processus déclenchera une erreur "élément inconnu".

https://doc.pcsoft.fr/fr-FR/?9000108&name=Specific_features_of_applications_for_Android


Rubén
Membro registado
299 mensagems
Popularité : +16 (16 votes)
Publicado em setembro, 12 2018 - 10:09 AM
Merci

Effectivement j'ai vu des sujets de ce type sur d'autres forum
J'avais écrit ceci dans l'initialisation du projet

GLOBAL
GO_Appl est une GC_ApplType
LC_Champ est une chaîne



Je pensais que c'était suffisant
Membro registado
299 mensagems
Popularité : +16 (16 votes)
Publicado em setembro, 12 2018 - 10:46 AM
J'ai essayé de travailler à partir d'une autre approche.
Nouveau plantage :

ta_Menu[LN_Ligne,LN_Colonne] = "..."


provoque une erreur à l'exécution.
Ca devient un peu désespérant
Membro registado
299 mensagems
Popularité : +16 (16 votes)
Publicado em setembro, 12 2018 - 5:41 PM
Je reformule ma question

Pourquoi sous WinDev Mobile la ligne suivante
ta_Menu[LN_Ligne,LN_Colonne] = "..."

renvoie l'erreur
L'opérateur [] est incompatible avec le type ligne de zone répétée
Ce problème existait déjà en 2015. https://forum.pcsoft.fr/fr-FR/pcsoft.fr.windevmobile/20025-table-qui-fonctionne-sous-emulateur-windev-mobile-mais/read.awp

Donc je reformule ma première question, pourquoi ma variable LC_champ n'est-elle pas reconnue comme une variable globale alors que j'ai écrit dans l'initialisation du projet

Global
LC_Champ est une chaine

Où faut-il déclarer sinon ?

Merci d'avance
Mensagem modificada, setembro, 12 2018 - 5:47 PM
Membro registado
299 mensagems
Popularité : +16 (16 votes)
Publicado em setembro, 18 2018 - 4:31 PM
J'imagine que j'utilise une version de WinDev issue d'un piratage.
Cela expliquerait que je rencontre des problèmes qui ne surviennent nulle part ailleurs et donc que personne ne peut me répondre.

Si par hasard quelqu'un rencontrait un jour le même souci voici comment je m'en suis sorti

Je définis en variable globale de ma page un tableau dynamique. Ensuite, au lieu d'affecter directement ma table j'affecte les valeurs dans le tableau

LT_Menu est un tableau dynamique

LT_Menu = allouer un tableau [LN_NbLignes, LN_NbColonnes, 2] de chaînes
POUR TOUT LO_Noeud de LO_FluxXML.bureau sur Icône
LN_Colonne = Val(LO_Noeud.colonne)
LN_Ligne = Val(LO_Noeud.ligne)
LT_Menu[LN_Ligne, LN_Colonne, 1] = LO_Noeud.image
LT_Menu[LN_Ligne, LN_Colonne, 2] = LO_Noeud.lien
FIN


Ensuite, pour affecter le champ table j'utilise un code que je n'aurais jamais pensé écrire
SELON PN_Colonne
CAS 1 : ta_Menu.Colonne1..Largeur = PN_TailleIcone
ta_Menu.Colonne1..Visible = Vrai
ta_Menu.Colonne1[PN_Ligne] = ComplèteRep(GO_Appl.LC_CheminAppli) + "MD_Images" + fSep + LC_Image
CAS 2 : ta_Menu.Colonne3..Largeur = PN_TailleIcone
ta_Menu.Colonne3..Visible = Vrai
ta_Menu.Colonne4..Visible = Vrai
ta_Menu.Colonne3[PN_Ligne] = ComplèteRep(GO_Appl.LC_CheminAppli) + "MD_Images" + fSep + LC_Image
ETC....


et ceci 22 fois
Publicado em janeiro, 21 2019 - 4:02 PM
Bonjour,
Avez-vous du nouveau sur ce problème, j'ai le même et ne vois pas de solution....
Membro registado
299 mensagems
Popularité : +16 (16 votes)
Publicado em janeiro, 21 2019 - 5:08 PM
Ca me rassure de ne pas être le seul à rencontrer ce souci.
La solution (si on peut appeler ça ainsi) a été de faire ce que j'ai indiqué dans mon dernier post. Je ne suis pas parvenu à faire fonctionner une indirection.
Cela dit je n'ai pas essayé en version 24
Membro registado
326 mensagems
Popularité : +5 (5 votes)
Publicado em janeiro, 21 2019 - 6:15 PM
Bonsoir.

Je vous rassure aussi : ni le clonage de colonnes, ni les indirections ne fonctionnent sous android.

En version 23.
Membro registado
1 mensagem
Publicado em abril, 17 2019 - 5:24 PM
Bonjour,
moi aussi je trouve ce problème.
je veux travailler avec ChampClone pour manipuler des nouveaux boutons au niveau d'une fenêtre Android, mais il me donne l'erreur "élément inconnu" même qu'au niveau du simulateur de WM marche bien !!
Mensagem modificada, abril, 17 2019 - 5:34 PM