alicvb
Messages postés134Date d'inscriptionvendredi 19 mars 2004StatutMembreDernière intervention 6 juin 2007
-
5 déc. 2004 à 13:39
alicvb
Messages postés134Date d'inscriptionvendredi 19 mars 2004StatutMembreDernière intervention 6 juin 2007
-
6 déc. 2004 à 19:30
Voilà, j'aimerais pouvoir passer une fonction ou procédure en paramètre d'une autre fonction ou procédure.
Je m'explique avec un exemple :
sub AjouterControle (texte as string, Even_Click as ????)
dim lb as new label
lb.text = texte
addhandler lb.click, address of even_click
end sub
Comme vou l'aurez compris, la question se trouve dans les ????
J'ai essayé object, mais c'est refusé par le addhandler
J'ai vaguement vu qu'il y aurait peut-être des possibilités du coté des delegate.... mais j'ai rien compris !
alicvb
Messages postés134Date d'inscriptionvendredi 19 mars 2004StatutMembreDernière intervention 6 juin 20071 5 déc. 2004 à 18:38
Merci labout d'avoir essayé de répondre.
Malheureusement je me suis mal exprimé et ce que tu me proposes ne me semble pas convenir.
Alors je m'explique plus longuement.
Je veux pouvoir charger dynamiquement différents controles sur une form en fonction d'une liste (c'est pour une barre d'outils).
J'ai une classe qui gère les barres d'outils.
Depuis ma form, lors du load :
'Je charge ma classe Barre_Outils
dim BO as new Cl_BarreOutils
'Je charge tous les controles possibles et leurs évenements
BO.ajouterControle("Ouvrir",????????)
BO.ajouterControle("Fermer",????????)
de plus, sur ma form, j'ai les événements pour chaque bouton possible
Public sub Ouvrir_Click(sender as object, e as system.eventargs)
......
End sub
Public sub Fermer_Click(sender as object, e as system.eventargs)
......
End sub
........................
Ce que je voudrait, c'est pouvoir référencer mon sub "Ouvrir_Click" à l'endroit des ???????
Comme ça dans ma classe Barre_Outils, si le fichier de préférence me dit qu'il faut afficher le bouton Ouvrir, je le créé et je configure l'événement comme il faut.
Oulàlà, plus j'explique plus je m'embrouille...
Pour résumer en d'autres mots, je cherche comment faire référnece à une procédure dans une variable. (c'est plus clair?)
Enfin Bref, si vous avez lu jusque ici, c'est déjà pas mal !!!
Si en plus vous aviez une piste, alors là ....
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200620 5 déc. 2004 à 19:18
Salut,
Comme tu dis c l'embrouille mais si ça peut t'aider, voilà un ex en VB6 :
Private Sub Form_Load()
Resultat addition(2, 5)
End Sub
Function addition(a As Integer, b As Integer) As Integer
addition = a + b
End Function
Sub Resultat(r As Integer)
MsgBox r
End Sub
Explik : Dans le Form_Load j'appelle la procédure Resultat à laquelle je passe en paramètre la function addition.
A toi d'adapter ça.
@+
Cordialement, CanisLupus
Vous n’avez pas trouvé la réponse que vous recherchez ?
alicvb
Messages postés134Date d'inscriptionvendredi 19 mars 2004StatutMembreDernière intervention 6 juin 20071 5 déc. 2004 à 20:17
Merci de te pencher sur mon cas CanisLupus,
Mais il me semble que dans ton exemple, tu passe plutot le résultat de l'addition à la fonction résultat...
Tu ne passe donc pas pas une fonction en paramètre, mais un résultat.
Or dans mon cas, il faut que j'associe un événement d'un controle créé dynamiquement à sa procédure d'évennement. donc je ne peux me contenter de passer le résultat en paramètre...
Sauf si je m'abuse (ce qui est fort possible...)
Je l'admet, c'est pas une question facile, ni courante... et je suis même pas sur que ce soit possible avec VB.NEt (c'est possible avec le c++ et les pointeur de fonction)...