|
instancier 2 objets d'une classe en même temps |
Iniciado por guest, 12,oct. 2004 17:41 - 1 respuesta |
| |
| | | |
|
| |
Publicado el 12,octubre 2004 - 17:41 |
je débute sur windev et j'ai un petit problème de programmation.
Dans une fenêtre, le clic sur un bouton crée un nouvel objet d'une classe que j'ai créée via une procédure globale. Jusque là le comportement de l'appli est correct, mais lorsque je crée un deuxième objet de la même classe (avec nom et paramètres différents) le premier objet se détruit alors que je souhaite les voir coexister...
Est-ce que quelqu'un connaitrait éventuellement les raisons ou les mauvaises déclarations qui pourraient en être la cause. |
| |
| |
| | | |
|
| | |
| |
Publicado el 12,octubre 2004 - 18:23 |
Salut yannik,
Je pense que ton problème vient de la déclaration de l'objet. Si l'objet est déclaré dans le bouton, il n'existe que dans le bouton. Pour parler en objet, le constructeur est appelé dans le bouton, puis le destructeur est appelé quand on quitte le bouton.
Pour le vérifier, ajoute une commande Trace dans le code du destructeur.
PROCEDURE Destructeur() Trace("Destructeur appelé")
La solution consistera alors à déclarer l'objet ailleurs de manière dynamique. Par exemple dans le code de la fenêtre:
MonObjet est un testclasse dynamique
dans le code du bouton
MonObjet = allouer un testclasse testclasse::dump()
Attention, avec cette méthode, il faudra aussi sans doute gérer un chainage entre les objets pour pouvoir les retrouver. Mais bon, c'est un peu complexe à décrire ici. Tu peux regarder dans la LST 56 page 24, il y a un exemple "WD8 Liste chainée" pour utiliser des listes chainées.
Pour démarrer tu peux t'inspirer de cette petite classe:
8<----------------------------------------------------------- // déclaration testclasse est une classe e1 est un entier s1 est une chaîne GLOBAL cpt est un entier FIN testclasse::cpt = 0
// ---
PROCEDURE Constructeur() ::cpt++
// ---
PROCEDURE Destructeur() Trace("Destructeur appelé") ::cpt--
// ---
PROCEDURE GLOBALE dump() Info(::cpt) 8<-------------------------------------------------------------------
Ciao Patrick wdgotcha.atspace.com |
| |
| |
| | | |
|
| | | | |
| | |
|