Bonjour à tous !
Je suis de retour avec une petite question toute simple...
Y-a-t-il, dans windev 9, la possibilité de cloner un objet (créé par mes soins), sans écrire moi même la méthode ?
Si oui, comment s'il vous plait ?
Bonjour à tous !
Je suis de retour avec une petite question toute simple...
Y-a-t-il, dans windev 9, la possibilité de cloner un objet (créé par mes soins), sans écrire moi même la méthode ?
Si oui, comment s'il vous plait ?
En vous remerciant, bonsoir.
Salut
J'ai déja pour ma part eu l'occasion de cloner des objets; en l'occurence des champs sur une fênetre, pour que cette dernière serve de fenetre de saisie suivant les paramètres données à l'initialisation.
par contre j'ai du implémenter une methode qui gère la place des différents champs qu'ils soient clonés ou non. Par contre fais gaffe à ne pas lier les champs avec un fichier car cela prévaudrait à les lies tous dessus. J'ai plutot joué sur le nom futur des fichiers. Je ne dis pas que ma méthode est la meilleure mais c'est tout ce que j'ai trouvé pour le faire.
exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 ChampClone(Lb,Lb..Nom+"i_i"+NumÈriqueVersChaine(l_nbChampsAffichees),0,i_YChamps) SI l_HauteurFen<(i_YChamps+l_tailleEntete) ALORS // mise a jour de la taille de la fenetre l_HauteurFen=(i_YChamps+l_tailleEntete) SI l_HauteurFen>l_HauteurMaxFen ALORS l_HauteurFen=l_HauteurMaxFen // taille fenetre maximum FIN FIN // affectation de la valeur sur le champ cloné {Lb..Nom+"i_i"+NumÈriqueVersChaine(l_nbChampsAffichees)}..Valeur=Table_Recueil_analyse.Code_analyse[i_nbChamps]
Merci, mais j'ai besoin de dupliquer un objet, pas de type champ, mais de classe !
Exemple :
puis :
Code : Sélectionner tout - Visualiser dans une fenêtre à part monObjet1, monObjet2 est un objet maClasse
J'ai trouvé une solution, mais c'est encore en cours de developpement, j'vais surement copier coller ici après coup, pour que tout le monde puisse l'utiliser ^^ (oui, j'ai fais une méthode générique, qui peut fonctionner avec toutes les classes/objets)
Code : Sélectionner tout - Visualiser dans une fenêtre à part monObjet1:Cloner(monObjet2)
En vous remerciant, bonsoir.
Quelle est ta définition de cloner un objet ?
" Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]
En faire une copie exact.
Si les membres de mon premier objet sont :
nom = "durant"
prénom = "pierre"
age = 33
Si je clone le premier objet dans le second, le second contiendra alors :
nom = "durant"
prénom = "pierre"
age = 33
(la même chose !)
En vous remerciant, bonsoir.
Qu'est-ce qui ne va pas avec la syntaxe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Ob1, Ob2 sont des objets Ob1=Ob2
" Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]
Lorsque tu détruis l'objet 2, l'objet 1 est détruit ! Puisque l'égalité assigne uniquement l'adresse de l'objet 2 à l'objet 1...
En vous remerciant, bonsoir.
Ce n'est pas ce que me renvoi mes essais.Envoyé par Romanops
ob2 est bien cloné.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 ob2 est un objet dynamique ob2 = allouer un CClient ob2:m_test="toto" ob1 = ob2 libérer ob2 Info( ob1:m_test)
ob1 étant la copie identique de ob2.
L'attribut :m_test de ob1 vaut bien "toto" lorsque l'objet ob2 est détruit.
Donc l'opérateur = effectue bien une copie de l'objet il n'affecte pas de référence...
" Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]
mhhh... Bizarre cette affaire, je me demande bien pourquoi mes tests me renvoyaient un résultat null au moment de la lecture de l'objet 2...
Je pige pas :\ J'vais voir ça !
En vous remerciant, bonsoir.
Poste un minimum de code qu'on puisse jetter un coup d'oeil ensembleEnvoyé par Romanops
" Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]
Mhh, je sais pas quoi mettre comme code, y'en a trop..., mais en gros voici ce qui se passe :
J'envoi en parametre un objet Un_Client à une fenetre qui s'ouvre en modale.
Dans cette fenêtre, j'ai un objet de même type (Un_Client) sur lequel je fais des traitements pdt toute l'excecution de la fenêtre.
Avant la sortie, je fais un test : si l'objet de la fenetre est plein, je le copie dans mon objet paramètre.
à la sortie de ma fenetre, mon objet paramètre (qui est maintenant plein, en toute logique) est en faite vide... (null) :\
PS : mon objet paramètre est un objet dynamique, mais pas l'objet de la fenetre. Je sais pas si c'est important mais voilà... ^^
En vous remerciant, bonsoir.
Donc tu fais une allocation pour l'objet paramétre dans la fenetre c'est bien cela ?
" Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]
Non, je fais l'allocation, avant de rentrer dans la fenetre...
Et dans ma fenetre, en entrée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 //On recherche un client :m_Client = allouer Un_Client //On passe en parametre l'objet client, pour que la fenetre recherche et le remplisse (sans les valeurs génériques) Ouvre(fen_rech,:m_IdEntreprise,:m_Client)
Et avant la sortie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 PROCEDURE fen_rech(p_IdEntreprise est un entier,p_Client) g_RenvoiClient est Un_Client
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Sablier(Vrai) g_trace:Trace("..... On renvoi l'id du client qui est : " + g_RenvoiClient:m_IdClient,"RECHERCHE") SI g_RenvoiClient:m_IdClient > 0 ALORS //On copie l'objet p_Client = g_RenvoiClient FIN
En vous remerciant, bonsoir.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager