Accéder à une propriété d'un objet depuis une fonction [Résolu]

Signaler
Messages postés
6
Date d'inscription
mardi 13 mai 2003
Statut
Membre
Dernière intervention
20 février 2006
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
Bonjour,

Quelqu'un connait-il un moyen d'accéder à la propriété d'un objet depuis une fonction sans en connaitre le nom par avance ?

Exemple (qui ne marche pas hélas) :

Sub Fixe_Propriété(Obj as Object, Propriété as string, Valeur as string)
Obj.Propriété=valeur
End sub

sub Main

Call Fixe_Propriété(Label1,"Caption","Titre")

end sub

Merci d'avance

11 réponses

Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
23
nhervagault < Et la fonction CallByName() !!!
fpoix < Utilises simplement ceci :
sub Main
CallByName Label1, "Caption", vbSet, "Titre"
end sub

de mémoire, les arguments de CallByName() sont dans cet ordre.
Juste une petite remarque : Si une erreur doit se produire durant l'appel à CallByName(), tu auras toujours le même code erreur (440) et non le code erreur qui se serait produit si tu avais directement fait l'appel demandé à CallByName(). Si cela te gènes, il y a possibilité de contourner ce souci avec une typelib. envois moi un MP si cela t'intéresses, je dois avoir cela en carton.

CR
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 123 internautes nous ont dit merci ce mois-ci

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Salut

En vb, ce n'est pas possible
En VB.net avec la reflexion du doit pouvoir le faire

Mais il me semble que tu travailles en VB6

Desolé
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
salut,
VB6, cela me semble faisable.
désolé de cette question que je trouve à éviter d'habitude, mais explique un peu le but stp, j'essaierai de donner suite. ()
@+
PCPT [AFCK]
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
En vb6 c'est si on veut faisable mais, il faut du travail.
A chaque propriete differente il y a une ligne a rajouter

Sub Fixe_Propriété(Obj as Object, Propriete as string, Valeur as string)
select case propriete
case "caption"
Obj.caption=valeur
case "width"
OBj.width = valeur
end select
End sub

il est peut etre possbile de mettre control en parametre.

Mais c"est moins propre que la reflexion en VB.NET

Bonne programmation
Messages postés
6
Date d'inscription
mardi 13 mai 2003
Statut
Membre
Dernière intervention
20 février 2006

Merci pour vos réponses
En fait mon but est de créer dynamiquement (en runtime) une interface dans laquelle on ajoute des éléments (boutons, texte, valeurs, images,...)
J'arrive à faire tout ça sans problème, la plupart des objets ont des propriétés identiques (taille, position, couleur) mais certains ont des propriétés spéciales,
Pour le moment j'ai fait une fonction avec un méga Select case comme l'explique nheragault
Mais cela ne me plait pas car je suis obligé de connaitre toutes les propriétés par avance (au moment de la compilation)
Voila un peu plus d'explications pour toi pcpt
Je suis hélas en VB6, par curiosité comment ferait-on en vb.net ?
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
salut,
à part des select case (donc reprendre chaque propriété), je ne vois pas....
par contre, pour t'éviter de faire en plus un TypeOf, tu peux mettre en tableau toutes les propriétés et juste ResumeNext.

j'ai regardé si on pouvait récupérer toutes les propriétés (même en string) en automatique, je ne trouve pas

désolé. bon courage
PCPT [AFCK]
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Salut,

En vb.net, il faut utilser la reflexion
et tu donnes la classe
et tu lui demande les propertyinfo

http://www.techheadbrothers.com/DesktopDefault.aspx?tabindex=1&tabid=7&AId=108&p=5

Voila un exemple, desole il est en c# mais le principe est le meme, il y a que les mots cles a traduire.

Voila
Messages postés
6
Date d'inscription
mardi 13 mai 2003
Statut
Membre
Dernière intervention
20 février 2006

Merci mille fois Renaud,

C'est exactement ce qu'il me fallait

A charge de revenche si d'aventure un jour je peux t'être d'une aide quelconque, il doit bien y avoir un truc que je sais et que tu ne sais pas !!!

Fabrice
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
23
Ben si tu connais la recette du Gloubiboulga, je suis preneur !!!!

CR
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
voila la recette



La recette du gloubi-boulga ? Facile !



Mais il faut bien choisir tous les ingrédients car Casimir est difficile !
Par contre, pour les quantités, c'est à vous de juger ou d'innover ...



Procurez-vous d'abord les cinq ingrédients majeurs :



- des bananes mûres à point, bien écrasées
- de la confiture de fraise
- du chocolat rapé
- de la moutarde très forte
- des saucisses de Toulouse tièdes mais crues



Puis dans un grand saladier mélangez le tout avec une cuillère en bois.



Voilà !
C'est prêt !



On peut ajouter la creme chantilly ou des anchois.



Bon appetit ;-)
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
on peut mélanger avec du sel plutôt? la cuillère en bois, çà me donne des problèmes de transit^^