PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → [WD22] Databinding et polymorphisme
[WD22] Databinding et polymorphisme
Débuté par Geoffrey ZIMMERMANN, 28 sep. 2018 15:42 - 2 réponses
Membre enregistré
28 messages
Popularité : +1 (1 vote)
Posté le 28 septembre 2018 - 15:42
Bonjour à tous,

Je me retrouve face à un problème. J'aimerai faire un databinding d'une propriété d'une classe fille. Je m'explique :
CMère est une classe, abstraite
PRIVÉ
m_sNom est une chaîne // Propriété générée : Nom() et Nom(Valeur est une chaine)
FIN

CEnfant est une classe
hérite de CMère
PRIVÉ
m_sPrénom est une chaîne // Propriété générée : Prénom() et Prénom( Valeur est un chaine)
FIN


Dans l'initialisation de ma fenêtre :
Procedure MaFenêtre()
gclEnfant est un objet CMère dynamique
gclEnfant = allouer un CEnfant


Bien sûr, lorsque je veux faire la liaison dans un champ, il ne trouve que la propriété de la classe CMère, donc CMère.Nom mais pas CMère.Prénom. Et c'est logique.

Par contre, j'ai testé ça:
// Initialisation de sai_prénom:
MoiMême..LiaisonFichier = ":gclEnfant.Prénom"


Là j'ai le droit à une belle erreur n° 1102:
Erreur de liaison sur le champ source <sai_prénom>.
La propriété 'Prénom' est interdite sur une variable de type 'CMère dynamique'.

Si une aimable âme peut venir à mon aide, Il serait le bien venu.

--
(\ _ /)
(='.'=)
(")-(")
Membre enregistré
2 571 messages
Popularité : +222 (260 votes)
Posté le 28 septembre 2018 - 16:54
Bonjour,

Pour moi l'erreur que tu as est tout à fait logique. Le fait d'allouer à la mère une instance d'une classe dérivée ne rajoute pas la propriété à la classe mère.

La propriété Prénom, n'existe bien que dans la classe fille.

--
Cordialement,

Philippe SAINT-BERTIN
Membre enregistré
28 messages
Popularité : +1 (1 vote)
Posté le 28 septembre 2018 - 17:48
Bonjour Philippe,

Autant pour moi, j'ai buté dessus toute la journée en pensant que je faisais comme ça dans d'autre langage, mais j'ai complétement zappé le principe de base à savoir que c'est les enfants qui hérite du parent et pas l'inverse! Je vais revoir tout ça à tête reposé.

Merci bien l'ami!

--
(\ _ /)
(='.'=)
(")-(")