PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Copie de tableaux par référence et binding dans un champ table
Copie de tableaux par référence et binding dans un champ table
Débuté par Christophe PRADEL, 14 juin 2017 16:23 - 2 réponses
Membre enregistré
136 messages
Popularité : +12 (14 votes)
Posté le 14 juin 2017 - 16:23
Bonjour à tous,

Aujourd'hui, je voudrais soumettre à votre sagacité un problème que je rencontre dans l'exploitation du lien automatique d'un champ TABLE avec une variable de type "tableau d'objets"

Le contexte :

Je travaille avec une classe de base TClasseBase et des classes dérivées TClasseDeriveeA, TClasseDeriveeB, etc.

J'ai développé une fonction à laquelle on passe en paramètre un tableau "tabBase" d'objets TClasseBase, le type d'objet à créer, et divers autres paramètres.
Selon le type d'objet demandé, cette fonction remplit le tableau avec des instances d'objets TClasseDeriveeA par exemple

D'un autre côté, je veux exploiter le résultat dans un champ table.
Pour pouvoir lier les colonnes aux membres de ma classe TClasseDeriveeA, je n'ai pas pu lier le champ table directement au tableau "tabBase"

J'ai donc référencé un autre tableau "tabDeriveeA" d'objets TClasseDeriveeA dynamique que j'ai lié au champ table

Le problème

Pour alimenter le tableau tabDeriveeA, j'ai utilisé une affectation par référence : tabDeriveeA <- tabBase

J'ai pu alors en debug vérifier que le tableau tabDeriveeA apparaît bien rempli des mêmes objets que tabBase

Par contre, à l'affichage, mon champ table reste désespérément vide !
J'ai même essayé TableAffiche pour rafraîchir, mais sans succès

Si par contre j'utilise une affectation par copie (tabDeriveeA <= tabBase), alors le champ table est bien alimenté.

Le problème, c'est que je duplique les informations en gaspillant de la mémoire.

J'espère avoir été assez clair.
Si quelqu'un a une idée pour arriver à alimenter mon champ table sans dupliquer les objets et en gardant le tableau de base comme paramètre de ma fonction de remplissage...

Bon dév's

Christophe
Message modifié, 14 juin 2017 - 16:25
Membre enregistré
256 messages
Popularité : +29 (29 votes)
Posté le 14 juin 2017 - 16:52
Bonjour

Cette opération n'est pas disponible automatiquement.
Vous pouvez la faire "manuellement" grâce à une boucle pour remplir un tableau avec les références sur vos objets

tabDeriveeA est un tableau de TClasseDeriveeA dynamique
POUR TOUT x de tabBase
Ajoute(tabDeriveeA,x) // prend une référence sur l'élément, pas de copie
FIN
Membre enregistré
136 messages
Popularité : +12 (14 votes)
Posté le 14 juin 2017 - 17:36
Merci Yann pour ta réponse qui me satisfait pleinement

J'y avais pensé, mais je croyais qu'en passant pas POUR TOUT, je dupliquais les objet et non les références.

Salutations :)