A veces en nuestros programas necesitamos pasar información entre
diferentes clases de nuestro proyecto, este ejemplo va dirigido a la
comunicación entre formularios, es decir que variables, arrays, tablas,
etc pasen de un form a otro mediante el uso de Interfaces, creandolas e
implementandolas según la necesidad del momento.
¿Para que necesitaríamos algo así?
Las necesidades de realizar esto son muchas y muy diversas, en este momento se me viene a la mente una muy común para mi a la hora de desarrollar y es cuando estamos en un formulario de ABM y queremos hacer un Alta nueva, por ejemplo un cliente, la ciudad podemos elejirla llamando a un formulario nuevo (llamado por ejemplo ciudades), luego de elegirla mediante doble clic u otro evento el form ciudades se cierra y se regresa al ABM con la ciudad ya seleccionada.
El ejemplo va a estar realizado en Visual Basic .Net y consta de la comunicación entre 2 formularios frmABMClientes y frmCiudades
A continuación la forma de definirlas:
Interface I
Ejemplo de interface
Implementacion en el form transmisor
En el form receptor
¿Para que necesitaríamos algo así?
Las necesidades de realizar esto son muchas y muy diversas, en este momento se me viene a la mente una muy común para mi a la hora de desarrollar y es cuando estamos en un formulario de ABM y queremos hacer un Alta nueva, por ejemplo un cliente, la ciudad podemos elejirla llamando a un formulario nuevo (llamado por ejemplo ciudades), luego de elegirla mediante doble clic u otro evento el form ciudades se cierra y se regresa al ABM con la ciudad ya seleccionada.
El ejemplo va a estar realizado en Visual Basic .Net y consta de la comunicación entre 2 formularios frmABMClientes y frmCiudades
A continuación la forma de definirlas:
Interface I
- 'Definicion de los metodos que va a contener la interface
- ' Sub PasaString(ByVal text As String)
- ' Sub PasaDataSet(ByVal text As String)
- End Interface
- 'Devolución de la informacion
- 'Dim _formInterface As IForm = CType(Me.Owner, IForm)
- '_formInterface.PasaString(TextBox1.Text)
- '
- '
- 'Implementacion en el formulario que recibe la informacion
- 'Implements IForm
- 'Public Sub CambiarTextoEnTexBox1(ByVal text As String) Implements IForm.PasaString
- ' TextBox1.Text = text
- 'End Sub
- 'Public Sub sbrActualizarCiudades(ByVal text As String) Implements IForm.PasaDataSet
- ' TextBox1.Text = text
- 'End Sub
- '
- 'Llamada al formulario del cual se necesita sacar informacion
- 'La llamada se hace desde el que la va arecibir posteriormente
- 'Entre parentesis se establece el Owner del formulario que se esta abriendo
- 'Dim _form2 As New Form2
- '_form2.Show(Me)
Ejemplo de interface
- Public Interface ComunicacionCiudadesI
- 'Definicion de los metodos que va a contener la interface
- Sub ComunicaString(ByVal Texto As String, ByVal id As String)
- Sub ComunicaDataSet(ByVal DataSet As DataSet)
- Sub ComunicaListaString(ByVal Lista As List(Of String))
- End Interface
Implementacion en el form transmisor
- If DevolverSeleccion = True Then 'Si hay que retornar
- Dim _formInterface As ComunicacionCiudadesI = _
- TryCast(Me.Owner, ComunicacionCiudadesI)
- If (Me.Owner IsNot Nothing) Then
- If (Me.Owner.GetType Is GetType(frmABMClientes)) Then
- 'Si han llamado desde el Formulario de tipo frmABMClientes
- 'Devolución de la informacion
- 'Envia el listado de ciudades actualizado
- Dim Ciudades As New CiudadesBO
- _formInterface.ComunicaDataSet(Ciudades.SelectAll())
- 'Envia la ciudad seleccionada
- _formInterface.ComunicaString( _
- dgvCiudades.Item("NOMBRE", dgvCiudades.CurrentRow.Index).Value(), _
- dgvCiudades.Item("ID", dgvCiudades.CurrentRow.Index).Value())
- End If
- End If
- End If
En el form receptor
- Public Class frmABMClientes
- 'Implementacion en el formulario que recibe la informacion
- Implements ComunicacionCiudadesI
- #Region "Implementacion de Interfaces - ComunicacionCiudadesI Members"
- 'Implementacion de todos los subs de la interface que se hereda
- 'Se usen o no hay que implementarlos igual
- Public Sub sbrActualizarCiudades(ByVal DataSet As DataSet) Implements ComunicacionCiudadesI.ComunicaDataSet
- ' Asigna el DataSource al combobox
- txtCiudad.DataSource = DataSet.Tables(0)
- txtCiudad.DisplayMember = "NOMBRE"
- txtCiudad.ValueMember = "ID"
- End Sub
- Public Sub sbrSeleccionaCiudad(ByVal texto As String, _
- ByVal codigo As String) Implements ComunicacionCiudadesI.ComunicaString
- txtCiudad.Text = texto
- txtCiudad.SelectedValue = codigo
- End Sub
- Public Sub sbrRecibeListaCiudades(ByVal Lista As List(Of String)) Implements ComunicacionCiudadesI.ComunicaListaString
- End Sub
- #End Region
0 comentarios:
Publicar un comentario