Accéder à une propriété d'un objet depuis une fonction

Résolu
fpoix Messages postés 6 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 20 février 2006 - 4 nov. 2005 à 18:37
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 11 nov. 2005 à 11:20
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

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
8 nov. 2005 à 23:35
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
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
4 nov. 2005 à 20:12
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é
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
5 nov. 2005 à 04:04
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]
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
5 nov. 2005 à 10:56
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fpoix Messages postés 6 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 20 février 2006
7 nov. 2005 à 10:51
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 ?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 nov. 2005 à 19:34
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]
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
7 nov. 2005 à 19:55
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
0
fpoix Messages postés 6 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 20 février 2006
10 nov. 2005 à 09:23
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
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
10 nov. 2005 à 09:42
Ben si tu connais la recette du Gloubiboulga, je suis preneur !!!!

CR
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
11 nov. 2005 à 11:06
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 ;-)
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
11 nov. 2005 à 11:20
on peut mélanger avec du sel plutôt? la cuillère en bois, çà me donne des problèmes de transit^^
0
Rejoignez-nous