none
Como llamar a un procedimiento de otra clase?

    Question

  • Yo he armado una clase frmTabla, con 3 clases botones basicos, botones navegacion y la clase GrabarSalir (que esta invisible) en un formulario.

    En mi clase botones basicos en hay un boton nuevo(nuevo registro), en este caso cuanod se hace click en el boton nuevo, debe hacer visible la instanciade clase GrabarSalir (se llama "Esvisible")mostrado en la sgte imagen, donde no aparece el procedimiento que ya cree, ver imagen

    Y miren el codigo donde cree el procedimiento para hacer visible la isntancia de clase grabarsalir

    Public Class GrabarSalir
        'Public Event Esvisible As EventHandler
        Public Event EsInvisible As EventHandler
        Private Sub btnGrabar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGrabar.Click
        End Sub
        Private Sub btnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalir.Click
        End Sub
        Private Sub Esvisible()
            Me.btnGrabar.Visible = True
            Me.btnSalir.Visible = True
            'GrabarSalir1.btnGrabar.Visible = True
            'GrabarSalir1.btnSalir.Visible = True
        End Sub
    End Class

    Muestro el proyecto en imagen ver en el explorador de soluciones, mi pregunta es, como llamo desde la clase botones basicos, boton nuevo , a un procedimiento llamado es Visiblede  otra clase GrabarSalir? Gracias por la respuesta

    Wednesday, October 31, 2012 8:47 PM

Answers

  • Para llamar a un procedimiento, metodo, propiedad, etc..., de una clase, lo primero es instaciar la clase, y luego que a lo que llame sea PUBLICO. Si el método es privado,entonces solo es accesible por la propia clase, pero no por quien la use.

    Te pongo un ejemplo:

    Public Class Class1
      Sub New()
        'inicializamos lo que sea
      End Sub
      Public Sub haceAlgo()
        'hace cosas
      End Sub
    
      Private Sub noPuedesAcceder()
        'hace cosas
      End Sub
    End Class
    
    Public Class class2
      Private llamandoAClaseClass1 As Class1
    
      Sub New()
        llamandoAClaseClass1 = New Class1
        'esto si:
        llamandoAClaseClass1.haceAlgo()
    
        'esto no es posible:
        llamandoAClaseClass1.noPuedesAcceder() 'me marca error
      End Sub
    End Class


    Wednesday, October 31, 2012 9:30 PM

All replies

  • pero GrabarSalir como accede a btnGrabar y btnSalir ? eso esta muy raro

    quizas si usaras el AddHandler para adjuntar el evento dinamicamente seria uan cosa, pero como lo planteas no lo veo correcto

    esa clase deberia exponer metodo y evento propios pero nucna acceder a lso ya existentes, si haces

    Private Sub btnGrabar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGrabar.Click

    Dim obj As New GrabarSalir()

    AddHandler obj.Grabar, Addressof obj_Grabar

    obj.Grabar() End Sub

    Public Sub obj_Grabar(...)

    'resto del codigo

    End Sub

    pero todo esto estaria en frmTabla

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Wednesday, October 31, 2012 9:04 PM
  • Podrías probar creando una variable de tipo la clase que deseas invocar que sea Pública

    Luego esa variable.Nombre de lo que deseas invocar ya debería funcionar

    Wednesday, October 31, 2012 9:06 PM
  • Para llamar a un procedimiento, metodo, propiedad, etc..., de una clase, lo primero es instaciar la clase, y luego que a lo que llame sea PUBLICO. Si el método es privado,entonces solo es accesible por la propia clase, pero no por quien la use.

    Te pongo un ejemplo:

    Public Class Class1
      Sub New()
        'inicializamos lo que sea
      End Sub
      Public Sub haceAlgo()
        'hace cosas
      End Sub
    
      Private Sub noPuedesAcceder()
        'hace cosas
      End Sub
    End Class
    
    Public Class class2
      Private llamandoAClaseClass1 As Class1
    
      Sub New()
        llamandoAClaseClass1 = New Class1
        'esto si:
        llamandoAClaseClass1.haceAlgo()
    
        'esto no es posible:
        llamandoAClaseClass1.noPuedesAcceder() 'me marca error
      End Sub
    End Class


    Wednesday, October 31, 2012 9:30 PM
  • Gracias,esta bien, lo que me faltaba era hacer mi procedimiento publico

    Public Sub Esvisible()
            Me.btnGrabar.Visible = True
            Me.btnSalir.Visible = True
            'GrabarSalir1.btnGrabar.Visible = True
            'GrabarSalir1.btnSalir.Visible = True
    End Sub

    Thursday, November 01, 2012 11:31 PM
  • pero GrabarSalir como accede a btnGrabar y btnSalir ? eso esta muy raro

    quizas si usaras el AddHandler para adjuntar el evento dinamicamente seria uan cosa, pero como lo planteas no lo veo correcto

    esa clase deberia exponer metodo y evento propios pero nucna acceder a lso ya existentes, si haces

    Private Sub btnGrabar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGrabar.Click

    Dim obj As New GrabarSalir()

    AddHandler obj.Grabar, Addressof obj_Grabar

    obj.Grabar() End Sub

    Public Sub obj_Grabar(...)

    'resto del codigo

    End Sub

    pero todo esto estaria en frmTabla

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Hola Leandro, si bien es cierto ya me sale lo que queria hacer, queria explicarte que mediante el evento de click de el boton nuevo, llamo a un procedimiento de otra clase qeu es GrabarSalir, tu quieres decir que debo crear un evento en grabar salir para manejar el procedimento EsVisible????, no fue necesario y funciona, pero aun asi deberia crear un evento en la clase Grabar Salir que tome la llamada de la otra clase botones basicos donde esta el botonEvento?, Me interesa tu opinion,mira son 2 clases diferentes aqui la imagen , el de en medio es botones basicos, el de abajo es la clase GrabarSalir, si tuvieras un ejemplo te agradeceria en qeu una clase llame el metodo de otra, te agradeceria

    Thursday, November 01, 2012 11:41 PM