FONCTION FRIEND

Résolu
Signaler
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
-
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
-
Salut,

je connaissait les :
Private Sub
Public Sub

Je viens de voir dans une source :
Friend Sub

Et là ???? Je pige pas ! Quelle peut bien être la différence avec les deux autres ?

Il faut dire que j'ai jamais pris de bouquin sur VB, je comprend son fonctionnement au fur et à mesure en lisant des codes, donc j'en apprend tout les jours.

La seule chose que j'ai compris, en faisant des test, c'est qu'on ne peut s'en servir dans un module, et elle ressemble à un fonction Private car on ne peut l'appelée si elle n'est pas dans la même feuille.

Enfin, si quelqu'un à une réponse un peu plus claire, elle est la bienvenue.

Bonne prog
++

3 réponses

Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
28
Voici ce que dit le MSDN sur "Friend"

Propriétés et méthodes Friend

Outre le fait de les déclarer en tant que Public et Private, vous pouvez également déclarer les propriétés et les méthodes en tant que Friend. Pour les autres objets de votre projet, les membres Friend s'apparentent aux membres Public, comme s'ils appartenaient à l'interface d'une classe, ce qui n'est pas le cas.

Dans les composants ActiveX que vous pouvez créer à l'aide des Éditions Professionnelle et Entreprise de Visual Basic, les membres Friend jouent un rôle important. Ils ne font en fait pas partie de l'interface d'un objet et ne sont pas accessibles aux programmes qui utilisent les objets du composant. Mais les membres sont visibles de tous les autres objets du composant et permettent donc une communication interne en toute sécurité au sein du composant.

Important   Les membres Friend ne faisant pas partie de l'interface publique d'un objet, ils ne sont pas accessibles par liaison tardive, c'est-à-dire par l'intermédiaire de variables déclarées comme As Object. Pour utiliser des membres Friend, vous devez déclarer les variables avec des liaisons précoces ; en d'autres termes, comme As classname.

Les projets EXE Standard ne peuvent pas être des composants ActiveX, car leurs modules de classe ne peuvent pas être Public ; ils ne peuvent donc pas être utilisés par d'autres applications. Par conséquent, toutes les communications entre les objets d'un projet EXE Standard sont privées et les membres Friend deviennent inutiles.

Cependant, les membres Friend présentent une fonctionnalité particulièrement utile. Ne faisant pas partie d'une interface ActiveX, ils peuvent servir à transmettre des types définis par l'utilisateur entre les objets sans les exposer publiquement. Supposez, par exemple, que vous disposiez du type défini par l'utilisateur suivant dans un module standard :

Public Type udtDemo

   intA As Integer
   lngB As Long
   strC As String
End Type

Vous pouvez définir la variable privée et les membres Friend suivants dans Class1 : 

Private mDemo As udtDemo

Friend Property Get Demo() As udtDemo
   Demo = mDemo
End Property

' Remarquez que udtDemo doit être transmis par
' référence.
Friend Property Let Demo(NewDemo As udtDemo)
   mDemo = NewDemo
End Property

Friend Sub SetDemoParts(ByVal A As Integer, _
      ByVal B As Long, ByVal C As String)
   mDemo.intA = A
   mDemo.lngB = B
   mDemo.strC = C
End Sub

Public Sub ShowDemo()
   MsgBox mDemo.intA & vbCrLf _
   & mDemo.lngB & vbCrLf & mDemo.strC
End Sub

Note   Lorsque vous transmettez des types définis par l'utilisateur en tant qu'arguments de procédure Sub, Function et Property, vous devez les transmettre par référence (ByRef est la valeur par défaut pour les arguments de procédure).

Vous pouvez par conséquent écrire les lignes de code suivantes pour utiliser Class1 :

Private Sub Command1_Click()
   Dim c1A As New Class1
   Dim c1B As New Class1
   c1A.SetDemoParts 42, 1138, "Bonjour"
   c1B.Demo = c1A.Demo
   c1B.ShowDemo
End Sub

La fenêtre de message affichera 42, 1138 et « Bonjour ».

Note   Les procédures Friend ne faisant pas partie d'une interface de classe, elles ne sont pas incluses lorsque vous utilisez l'instruction Implements pour implémenter plusieurs interfaces, comme indiqué dans la section « Polymorphisme ».

Pour plus d'informations   sur l'utilisation des membres Friend dans les composants, reportez-vous à la section « Communications privées entre les objets » du chapitre « Principes généraux de création des composants » du Guide des composants.


Christophe R.
3
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
74
En gros, une fonction ou une propriété en Friend, n'est accessible que par ses amis....

tu t'en sert surtout dans le développement de Classes, ou de controles persos.... ca permet d'avoir des membres accessibles depuis les autres fonctions du projet, sans y donner toutefois accès a l'utilisateur final...
0
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
1
Ok,
merci à tous les deux tout n'est pas clair mais je commence à comprendre.

Bonne prog
++
0