cabraloca
Messages postés16Date d'inscriptionmercredi 17 janvier 2007StatutMembreDernière intervention19 septembre 2008
-
4 juin 2008 à 16:19
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 2009
-
8 juin 2008 à 03:59
Bonjour,
je vais essayer d'être claire quand au problème que j'ai...
Dans une procédure je fais appel à une autre procédure de la manière suivante:
public sub Refresh(Param as string)
select case Param
case "lieu"
call GetNblieu
case "site"
call GetNbsite
case "tva"
call GetNbtva
end select
end sub
je voudrais bien ne pas avoir à faire tous ces case vu que le nom de la procédure apellée ne diffère qu'à la fin et correspond au paramètre Param...
N'y a t'il pas moyen de faire un truc du style?:
public sub Refresh(Param as string)
call GetNb
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 8 juin 2008 à 03:59
Resalut,
Dsl pour le temps, mais voici un code d'exemple pour l'utilisation des Delegates:
Private Subs As New Dictionary(Of String, [Delegate])
Private Delegate Sub GetNblieuDelegate()
Private Delegate Sub GetNbsiteDelegate()
Private Delegate Sub GetNbtvaDelegate()
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' Créations des Delegates:
Subs.Add("lieu", New GetNblieuDelegate(AddressOf GetNblieu))
Subs.Add("site", New GetNbsiteDelegate(AddressOf GetNbsite))
Subs.Add("tva", New GetNbtvaDelegate(AddressOf GetNbtva))
' Utilisation des Delegates:
Subs("site").DynamicInvoke()
Subs("tva").DynamicInvoke()
Subs("lieu").DynamicInvoke()
End Sub
Private Sub GetNblieu()
Console.WriteLine("GetNblieu")
End Sub
Private Sub GetNbsite()
Console.WriteLine("GetNbsite")
End Sub
Private Sub GetNbtva()
Console.WriteLine("GetNbtva")
End Sub
Mais bon, perso je pense que de faire un SelectCase dans une Sub reste le moyen le plus facile.
"mais je ne veux pas mettre de paramètre à la procèdure GetNb car déjà
ça ne fait que reporter le problème car les select case se retrouveront
dans cette nouvelle procédure et en plus les procédures GetNbsite,
GetNblieu et autres sont déjà créées et je ne veux pas y retoucher!!"
Bah oui mais tu n'aura plus que 1 seul Select Case. Tu ajoute cette procédure et c'est pret:
Private Sub GetNb(ByVal Param As String)
Select Case Param
Case "lieu"
GetNblieu()
Case "site"
GetNbsite()
Case "tva"
GetNbtva()
End Select
End Sub
cs_loulou69
Messages postés672Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention 2 juin 20161 4 juin 2008 à 16:39
bonjour
Ok pour
Call GetNb(Param)
Par contre les objets "lieu" , "site" et "tva" seront traités dans la fonction getNb qui risque de reporter l'instruction "select case" de la fonction Refresh à la fonction GetNb
Si un grand nombre de lignes étaient identiques dans GetNbLieu GetNbSite et GetNbTva cela d'un coté réduira le nombre de lignes totales sauf qu'au sens de la programmation objet chacun des 3 objets nécessiterait un module séparé : mesurer l'impact pour les maintenances à venir.
cabraloca
Messages postés16Date d'inscriptionmercredi 17 janvier 2007StatutMembreDernière intervention19 septembre 2008 4 juin 2008 à 17:10
merci pour vos réponses mais je ne veux pas mettre de paramètre à la procèdure GetNb car déjà ça ne fait que reporter le problème car les select case se retrouveront dans cette nouvelle procédure et en plus les procédures GetNbsite, GetNblieu et autres sont déjà créées et je ne veux pas y retoucher!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
cabraloca
Messages postés16Date d'inscriptionmercredi 17 janvier 2007StatutMembreDernière intervention19 septembre 2008 5 juin 2008 à 09:33
je parle de 7 cases (j'ai pas tout mis ici) mais c'est surtout que je dois faire ça à 5 endroits dans mon code, donc du coup ça fait tout de suite plus de case...
J'ai trouvé un début de piste avec les adressof mais je ne sais pas comment ça marche ce truc... et si c'est vraiment adapté à mon problème!!