Funcion Friend? Como Funciona?

Iniciado por ranslsad, 8 Diciembre 2007, 16:49 PM

0 Miembros y 1 Visitante están viendo este tema.

ranslsad

Hola amigos, mirando un codigo vi como un estilo de funcion que ponia "Friend Function blabla()
Bueno, probando cosas con esta funcion, vi que en su propio proyecto esa funcion se repetia como un timer interval 1...
Pero cuando yo pongo esa misma funcion en otro proyecto no se repite :S
Hay que llamarla y solo se repite una vez..
Me gustaria saber porque es eso y com funciona esa funcion..
Desde ya, Gracias!

Salu2

Ranslsad

FaiF (A¥åHøRå)

FUENTE: http://www.elguille.info/vb/vb6/tiposDefinidos.htm
CitarUn procedimiento declarado como Friend es "casi" público, pero sólo dentro del propio proyecto, ya que si realmente fuesen públicos podrían ser accesible desde otro proyecto, cosa que no ocurre con los procedimientos "amigos"...

Osea que se usan de igual forma que los ejemplos mostrados para usar en un módulo BAS, salvo que en lugar de declararse como Public se declaran como Friend, además en un módulo de clase NO se puede declarar un Tipo Definido de forma pública, siempre tienen que ser Privados.

Por tanto las funciones quedarían así:

Friend Function Edad2(elColega As tColega) As Long
    'Devuelve la edad del colega que se ha pasado como parámetro
    'y actualiza la fecha de modificación.

    Dim tEdad As Long

    tEdad = Year(Now) - elColega.AñoNac
    elColega.Modificado = Now

    Edad2 = tEdad
End Function


Friend Function NuevoColega2( _
        ByVal sNombre As String, ByVal lngAñoNac As Long, _
        ByVal sEmail As String, ByVal sUrl As String) As tColega
    'Devuelve un elemento del tipo tColega,
    'que es el declarado en el módulo BAS.
    'Se usan los datos pasados como parámetro

    'Usamos una variable temporal para asignar los datos
    Dim tmpColega As tColega

    With tmpColega
        .Nombre = sNombre
        .AñoNac = lngAñoNac
        .email = sEmail
        .Url = sUrl
        .Modificado = Now
    End With

    'Devolver el dato
    NuevoColega2 = tmpColega
End Function

Para usarlo desde un formulario habría que hacerlo así:

'
'Declaración de la clase de prueba
Private m_colega As ctestUDT


'En el Form_Load:

    'Creamos el objeto...
    Set m_colega = New ctestUDT


    'Crear un par de colegas para tenerlos en el listBox

    'Es conveniente que antes de hacer el Redim Preserve
    'el array esté ya dimensionado...
    'ya que he leido en algún sitio que puede dar ERROR
    numColegas = numColegas + 1
    ReDim Preserve variosColegas(0 To numColegas)
    'Usando el método de la clase:
    variosColegas(numColegas) = _
                        m_colega.NuevoColega2( _
                        "Guille", 1957, "mensaje@elguille.info", _
                        "http://www.elguille.info/")


            'Usamos el método de la clase
            Label1(5) = " Edad:" & m_colega.Edad2(variosColegas(queColega)) & " tacos"


'Mostrar el colega número "i"

        With variosColegas(i)
            List1.AddItem .Nombre & vbTab & .AñoNac & vbTab & _
                          .email & vbTab & _
                          Left$(.Url & Space$(64), 64) & vbTab & _
                          Format$(.Modificado, "dd/mmm/yyyy hh:mm:ss")
        End With

SKL (orignal)

son funciones que solo funcionan dentro de un modulo o una clase

ranslsad

ok grax por la info ;)

PD: ya estan los iconhos navideños :o :D :rolleyes:

Salu2 :P

Ranslsad ;)