Est il possible de definir le nom d'un objet a partir d'une donnee texte reconst
Danyelk
Messages postés69Date d'inscriptionsamedi 25 décembre 2004StatutMembreDernière intervention21 août 2008
-
8 juil. 2005 à 22:31
Danyelk
Messages postés69Date d'inscriptionsamedi 25 décembre 2004StatutMembreDernière intervention21 août 2008
-
10 juil. 2005 à 18:54
Salut,
Je vais essayer d'etre le plus clair possible car pas facile a expliquer ... et c'est du vb.net
J'ai un objet (x) image nomme : Image_Test32.image
J'ai un autre objet (y) image nomme : Image_Affichage.image
Le but est d'afficher l'image x dans l'emplacement de l'image y. Jusque la aucun probleme en faisant :
Image_Affichage.image = Image_Test32.image
Le probleme est que ne connaissant pas le nom de l'image a afficher, je ne peux le savoir qu'avec un routine qui me renvoi uniquement le nom complet de l'image dans un champs texte (dans mon exemple, il me renvoi : datarenvoye = "Image_Test32")
Mais le probleme, c'est que je ne sais pas comment faire pour reattribuer la valeur renvoyee ...
J'ai essaye plusieurs solutions comme :
Image_Affichage.image = datarenvoye.image
mais bien sur erreur car datarenvoye n'est pas une image.
Alors comment faire car ne connaissant pas encore bien vb.net, je ne sais pas si deja c'est faisable et si oui comment.
Merci de votre aide.
A voir également:
Est il possible de definir le nom d'un objet a partir d'une donnee texte reconst
Salut 410374 Danyelk La propriété Name d'un controle renvoie le nom utilisé dans le code pour identifier une feuille, un contrôle, ou un objet d'accès aux données. Cette propriété est en lecture seule à l'
<OBJECT id =alink_4 type=application/x-oleobject classid=clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11></OBJECT>[javascript:alink_4.Click() exécution] ce qui signifie que tu ne peux pas lors de l'éxecution du programme modifier le nom du contrôle
Par contre il y a quelque chose que je ne comprends pas
tu as 2 contrôles image ( appellons les SOURCE et DESTINATION)
Tu veux que l'image SOURCE aille dans DESTINATION --> DESTINATION.image=SOURCE.image en Visual Basic
Ta routine dont tu parles va chercher le nom du contrôle lui-même ou le nom d'un fichier image ?
Si tu faisais ceci si renvoi nom de contrôle
if DESTINATION.name="datarenvoye" then ' teste le nom du contrôle
DESTINATION.image=SOURCE.image ' c'est celui-là : on transfère l'image
end if
Dans le cas d'un fichier image
DESTINATION.image=loadpicture(" Nom du fichier image")
J'espère avoir bien compris ton problème
Bonne prog et A+
Danyelk
Messages postés69Date d'inscriptionsamedi 25 décembre 2004StatutMembreDernière intervention21 août 2008 9 juil. 2005 à 14:00
Merci Alain.
Tu ne fais que confirmer ce que je pensais sur le nom du controle, mais je preferais en avoir la confirmation, car il aurait pu y avoir une commande x ou y qui aurait permis d'attribuer un nom de controle a partir d'un champs texte.
En fait, ce que je demandais, c'est en gros ca :
Image_Affichage.image = cmdxouy(datarenvoye).image
mais qui au lieu de prendre comme nom de controle 'cmdxouy(datarenvoye)', prendrais en fait la valeur de 'datarenvoye' pour nom de controle. (houla, je sais pas sir ce suis vraiment clair la - lolololol)
Pour repondre a ta question :
Ta routine dont tu parles va chercher le nom du contrôle lui-même ou le nom d'un fichier image ?
-> ma routine ne va rien chercher, elle crée dans une champs texte, le nom de l'image
(par ex : datarenvoye = "Image_" & nom & numero)
Sinon, je ne charge pas d'image a partir de fichier, je les tire d'un form sprites.
Si je prends ton code, ca peut fonctionner, mais je retourne dans ma question, car comme DESTINATION et SOURCE est variable, il faudrait que je crée une routine pour chaque emplacement DESTINATION et SOURCE ... irréalisable car plusieurs centaines d'images ...
Il faudrait juste que je puisse, comme expliquer plus haut, définir un chmaps texte pour un nom de controle.
Si je prends ton exemple, il faudrait que : DESTINATION.image=SOURCE.image
Ou DESTINATION et SOURCE seraient des champs texte, mais pris comme nom de controle.
La je pense que j'ai ete plus clair ;) non ?
Dans ta réponse tu écris : Si je prends ton code, ca peut fonctionner, mais je retourne dans ma question, car comme DESTINATION et SOURCE est variable, il faudrait que je crée une routine pour chaque emplacement DESTINATION et SOURCE ... irréalisable car plusieurs centaines d'images ...
Si tu utilisais pour SOURCE ET DESTINATION des groupes de contrôles : SOURCE(0),SOURCE(1),SOURCE(2),etc... et identique pour DESTINATION
C'est peut-être à étudier
Peut-être faut-il utiliser directement les API Windows ?
Salut 410374 Danyelk Je vais t'expliquer ce que sont des groupes de controles
Prend une feuille Form1
Pose dessus un contrôle image appelé FIGURE
Clicque dans le contrôle avec le bouton droit de la souris puis fais copier
Un exemplaire du contrôle est dans le pressepapier ( clipboard en anglais) de Windows
Reclicque dans la feuille mais hors du contrôle avec le bouton droit et fais coller
Un second contrôle image apparait
Vb te demande si tu veux faire un groupe de contrôles : c'est-à-dire que tous tes contrôles s'appelleront FIGURE et seront différenciés par leur index : FIGURE(0) pour le premier,FIGURE(1) pour le second,FIGURE(2) pour le troisième,etc...
Tu peux ainsi mettre 2 contrôles de même nom sur une feuille : c'est leur index qui les différencie
Lis ce qui suit pour ajouter des contrôles du même nom par programme ou pour en enlever aussi par programme : cela provient de MSDN ( la bible "Microsoft" pour leurs outils de développement)
Ajout dans un groupe de contrôles au moment de l'exécution
Les instructions Load et Unload permettent d'ajouter ou de supprimer des contrôles dans un groupe de contrôles au moment de l'exécution. Toutefois, les contrôles à ajouter doivent faire partie d'un groupe de contrôles existant. Vous devez avoir défini un contrôle au moment de la création en affectant, selon toute probabilité, la valeur 0 à sa propriété Index. Utilisez la syntaxe suivante au moment de l'exécution:
Loadobject(index%)
Unload object(index%)
Argument,
Description,
----
Object,
Nom du contrôle à ajouter ou à supprimer dans le groupe de contrôles.,
----
index%,
Valeur d'index du contrôle dans le groupe.
Lorsque vous chargez un nouvel élément dans un groupe de contrôles, la plupart des valeurs des propriétés sont copiées à partir du dernier élément existant dans le groupe (dans cet exemple, l'élément dont la valeur d'index est 0). Les valeurs des propriétés Visible, Index et TabIndex ne sont pas automatiquement reprises par les nouveaux éléments du groupe de contrôles. Vous devez donc affecter la valeur True à la propriété Visible du contrôle que vous venez d'ajouter pour que celui-ci soit visible.
Note Visual Basic génère un message d'erreur si vous tentez d'utiliser l'instruction Load avec un numéro d'index déjà utilisé dans le groupe.
Important Vous pouvez utiliser l'instruction Unload pour supprimer tout contrôle créé avec Load. En revanche, vous ne pouvez l'utiliser pour supprimer des contrôles définis au moment de la création, qu'ils fassent ou non partie d'un groupe de contrôles
Salut Danyelk Désolé mais je ne connais pas du tout VB Net car je programme en VB 6.0
Mais il me paraît tout de même bizarre que les groupes de contrôles aient disparu en VB Net
Je crois que je ne puis alors plus beaucoup t'aider
Bonne prog et A+