FONCTION FRIEND [Résolu]

bouv 1424 Messages postés mercredi 6 août 2003Date d'inscription 29 juin 2011 Dernière intervention - 23 juil. 2004 à 07:53 - Dernière réponse : bouv 1424 Messages postés mercredi 6 août 2003Date d'inscription 29 juin 2011 Dernière intervention
- 23 juil. 2004 à 18:20
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
++
Afficher la suite 

3 réponses

Meilleure réponse
crenaud76 4172 Messages postés mercredi 30 juillet 2003Date d'inscription 9 juin 2006 Dernière intervention - 23 juil. 2004 à 08:45
3
Merci
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.

Merci crenaud76 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 23 juil. 2004 à 08:45
0
Merci
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...
bouv 1424 Messages postés mercredi 6 août 2003Date d'inscription 29 juin 2011 Dernière intervention - 23 juil. 2004 à 18:20
0
Merci
Ok,
merci à tous les deux tout n'est pas clair mais je commence à comprendre.

Bonne prog
++

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.