Copier l'ensemble des propriétés d'objets entre deux forms

Résolu
cs_JGD Messages postés 48 Date d'inscription vendredi 17 janvier 2003 Statut Membre Dernière intervention 6 décembre 2012 - 27 mai 2009 à 19:32
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 - 28 mai 2009 à 11:06
Bonjour,
J'ai 2 forms avec les mêmes objets (mêmes noms). Une fois la première Form complétée, je souhaite ouvrir la deuxième form et que l'ensemble des propriétés des différents objets de la form1 passent dans la form2. Vu le nombre important d'objets et surtout de propriétés, j'espère ne pas devoir écrire manuellement Form2.Label1.Text=Form1.Label1.Text, Form2.Label1.Top=Form1.Label1.Top, ...
Existe-t-il une méthode très simple pour débutants parce que les seules solutions que j'ai trouvées sur le site sont du chinois pour moi.
Merci d'avance.

GIGADEP

3 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
27 mai 2009 à 21:00
Bonsoir,

Je pense que toutes les solutions que tu pourras trouvés passeront vers un appel à tes contrôles, même si tu passe par une boucle en manipulant les collections de contrôles de ton formulaire, ceci te fera saisir du code pour chaque propriétés de contrôles (Me.Control(0).Text = Form2.Control(0).Text, mais aussi .BackColor, .ForeColore, si ces propriétés on une importance dans ton application)

La question que je me pose c'est surtout l'utilité d'une telle chose ? Ouvrir une deuxième feuille avec les mêmes controles que la premèire et surtout avec les mêmes propriétés, à quoi cela peut bien t'être utile ? Oriente toi peut être vers une autre organisation des formulaires/ou de ton application.

Explique nous le fonctionnement de ton projet, peut être que que l'on pourra t'aiguiller vers une solution mieux adapté..

Mayzz.
3
cs_JGD Messages postés 48 Date d'inscription vendredi 17 janvier 2003 Statut Membre Dernière intervention 6 décembre 2012
28 mai 2009 à 09:54
Bonjour,

Tout d'abord, merci pour ta réponse rapide.
J'ai essayé quelque chose qui ressemble à ce que tu me proposes:
Public

Sub AfficheObjets(
ByVal Obj
AsObject)Obj.top Form1.Obj.top: Obj.left Form1.Obj.left ...........

End
SubMais ça ne marche pas car vb ne reconnait pas Obj dans la fauille Form1. Dans mon idée, je n'avais plus qu'à lancer cette procédure pour chaque objet, ce qui m'aurait un peu facilité la tâche.
Ancien utilisateur occasionnel de VB6, je suis déjà dérouté par l'absence d'index dans la version 2008. J'aurais aimé pouvoir traiter tous mes labels à l'aide d'une boucle, ce qui m'aurait fait gagner du temps, mais apparemment ce n'est plus possible (ou alors je ne sais pas comment).

Mon problème, c'est que j'ai créé une Form pour créer un exercice (avec plusieurs questions). Cette forme contient plus de 300 objets (soit environ un trentaine d'objets par question). Une fois que l'utilisateur a positionné et complété les objets, je voudrais qu'il saisisse les réponses et le nombre de points à chaque question. Mais je n'ai plus assez de place sur la Form. Donc j'aurais voulu afficher une autre Form qui n'affiche que les objets d'une seule question à la fois afin que l'utilisateur ait la place pour saisir les réponses et les points affectés à la question. Ensuite, il n'aurait qu'à cliquer sur un bouton suivant pour que cette Form affiche les objets de la question n°2, etc.

Voila. J'espère avoir été clair car ce que j'essaye de faire n'est pas facile à expliquer en quelques mots.

GIGADEP
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
28 mai 2009 à 11:06
Je vois,
Il y a plusieurs façons de traiter ton problème. Ca m'a l'air assez simple mais je manque de détails. Je ne sais pas au juste quels sont les types utilisés pour tes réponses (TextBox String ou Integer, CheckBox Boolean, RadioButton = Integer, NumericUpDoww = Integer ou Long), je ne sais pas si je me fait bien comprendre. 

Je ne sais pas non plus comment tu t'y prend pour gérer tes questions, le plus simple, serait de faire un projet en deux parties. La première te servirait à saisir tes question avec le type de réponses et les stocker dans une source de données (que ce soit un simple texte, un fichier xml, ou une base de données...), la seconde, extrata les données du fichier et les affichera en conséquence.

Je te rassure, en maitrisant bien vb 2008, ce genre de projet ne demande pas énnormément de travail. vb 2008 est consu pour cela, facilité la création d'application bureautique, en vb 6, il faudrait des heures de codage pour disposer les contrôles correctement sur la feuille lors de sa création.

Ce que je te propose c'est de m'envoyer ta source, pour que je puisse étudier ton projet et te proposer une solution, soir même te renvoyer un exemple.

Je te laisse mon mail : [mailto:contact@mayzzsoft.com contact@mayzzsoft.com]

Mayzz.
0
Rejoignez-nous