PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 23 → Clonage de dolonnes dans un champ Table
Clonage de dolonnes dans un champ Table
Débuté par MICHEL, 11 sep. 2018 12:46 - 5 réponses
Membre enregistré
102 messages
Posté le 11 septembre 2018 - 12:46
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.
Membre enregistré
150 messages
Posté le 11 septembre 2018 - 13:17
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
Membre enregistré
102 messages
Posté le 12 septembre 2018 - 10:09
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
Membre enregistré
102 messages
Posté le 12 septembre 2018 - 10:46
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
Membre enregistré
102 messages
Posté le 12 septembre 2018 - 17:41
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
Message modifié, 12 septembre 2018 - 17:47
Membre enregistré
102 messages
Posté le 18 septembre 2018 - 16:31
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