none
¿Cómo sería la estructura si desde un UserControl abro un formulario como diálogo y quiero poder hacer referencia a los controles del UserControl? RRS feed

  • Pregunta

  • Osea tengo un control de usuario que tiene unos procedimientos que hacen referencia a unas controles de dicho USERCONTROL y desde allí abro un Formulario, a la vez desde dicho Formulario quiero acceder a los procedimientos del UserControl, como tendría que declararlo para poder hacer visibles dichos procedimientos en el formulario?

    Tengo esta estructura más o menos:

    USER CONTROL

    ....SUB Procedimiento1

    ...........Referencias a algunos controles de este UserControl

    .....FIN Procedimiento1


    ....SUB Procedimiento2

    ...........Referencias a algunos controles de este UserControl

    .....FIN Procedimiento2

    FIN USER CONTROL


    FORMULARIO

    ....Desde aqui llamo a Procedimiento 1 del UserControl

    ....Desde aqui llamo a Procedimiento 2 del UserControl

    FIN FORMULARIO



    • Editado James-2016 sábado, 5 de marzo de 2016 8:49
    sábado, 5 de marzo de 2016 8:47

Respuestas

  • "James-2016" escribió:

    > Efectivamente el Control de Usuario que estoy haciendo lo voy a insertar en
    > otros formularios, pero como parte de la funcionalidad del control de usuario
    > necesito abrir un pequeño cuadro de diálogo desde el mismo Control de Usuario,
    > con cuya interacción se deben modificar ciertos controles contenidos en el
    > tantas veces mencionado Control de Usuario (jeje).

    ¡Hombre! Podrías haber empezado por ahí y me hubieras ahorrado un buen tiempo de escritura. :-((

    Te estaría enormemente agradecido que explicaras correctamente desde un primer momento lo que deseas hacer, porque el estar dando "palos de ciego" hasta averiguar lo que realmente deseas hacer o conseguir, no me parece muy correcto que digamos.

    > En el ejemplo que pone, el formulario devuelve la clase persona, pero la clase
    > persona solo tiene datos de texto ¿se podría definir en lugar de datos de texto,
    > una instancia a controles enteros, por ejemplo a un PictureBox?

    Puse el ejemplo de la clase Persona porque tampoco se trataba de describir una clase más compleja, pero que desde luego, puedes utilizar cualquier tipo de dato admitido, incluidos controles "PictureBox enteros" si ese es tu deseo.

    > Si eso es afirmativo entonces le pediría que ponga un ejemplo pequeño de
    > cómo sería la declaración de la clase. Según yo sería:
    >
    > Public Class MiClase
    >    Public MiImagen1 As PictureBox
    >    Public MiImagen2 as PictureBox
    >    Public MiImagen3 as PictureBox
    > End Class
    >
    > (pero me parece que algo falta)

    Yo también creo que "algo falta", pero tampoco sabría decirte qué es lo que falta, porque yo tampoco sé lo que quieres que haga tu clase llamada MiClase.

    En principio te diría que comenzaras a definir la clase más o menos así:

    Public Class MiClase
    
        ' Campos de la clase
        Private image1 As PictureBox
        Private image2 As PictureBox
        Private image3 As PictureBox
    
        ' Propiedades de la clase
        Public Property MiImagen1 As PictureBox
            Get
                Return image1
            End Get
            Set(value As PictureBox)
                image1 = value
            End Set
        End Property
    
        Public Property MiImagen2 As PictureBox
            Get
                Return image2
            End Get
            Set(value As PictureBox)
                image2 = value
            End Set
        End Property
    
        Public Property MiImagen3 As PictureBox
            Get
                Return image3
            End Get
            Set(value As PictureBox)
                image3 = value
            End Set
        End Property
    
        ' Métodos de la clase
        Private Sub NombreSub()
    
            ' Ejecutar aquí lo que proceda
    
        End Sub
    
        Private Function NombreFunction() As Integer
    
            ' Ejecutar aquí lo que proceda y devolver un valor Integer
    
        End Function
    
    End Class

    Es decir, en los procedimientos internos de la clase trabajarías con los campos privados (image1, image2, image3) y devolverías los valores mediante las correspondientes propiedades públicas (MiImagen1, MiImagen2, MiImagen3). Observa que también he añadido un procedimiento Sub y otro Function para que internamente (porque son privados) ejecutes lo que proceda.

    > De no poderse de la manera anterior le pediría por favor que me de las pautas
    > para que la estructura que pongo al comienzo de la pregunta pueda acceder a
    > los procedimientos como intento hacerlo.

    ¡Vamos a ver! Sin ánimo de ofender ni que te lo tomes a mal, quiero que comprendas que esto es un FORO, donde la gente expone preguntas sobre ésta o aquella duda que tiene, y lo que se pretende es que alguien le responda con una solución al problema planteado. Pero lo que no puedes pretender, y sé que tu no lo pretendes, es que alguien te ofrezca las pautas para crear una "estructura" (me imagino que querrás decir "clase", porque en .net una "estructura" equivale a un tipo de dato por valor), y menos aún, sin saber ese alguien las pautas que te tiene que dar para satisfacer tus necesidades.

    Unas de las cosas buenas que hoy en día tiene Internet, es que efectúas una búsqueda en tu buscador preferido por algún tema que deseas conocer, como por ejemplo "Visual Basic .net definir clase", y te aparecerán multitud de enlaces a tutoriales, vídeos de YouTube y restantes artículos relacionados, por lo que tan solo tienes que "pinchar" en ellos y ver cual es el que te satisface. Pero no pidas que alguien de aquí escriba un tutorial (que sé que no lo has pedido), porque como bien creo que podrás comprender, está totalmente fuera del alcance de este foro. Si posteriormente te surge alguna duda o problema sobre algo concreto de la clase que estás definiendo, publicando el código fuente de la clase con la que estás trabajando, es cuando puedes acudir al foro para que alguien más experto te pueda aconsejar o resolver el problema.

    Lo dicho, espero que no te tomes a mal el comentario efectuado. ;-)


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.



    sábado, 5 de marzo de 2016 18:55
    Moderador

Todas las respuestas

  • "James-2016" escribió:

    > tengo un control de usuario que tiene unos procedimientos ... y desde allí abro
    > un Formulario, a la vez desde dicho Formulario quiero acceder a los procedimientos
    > del UserControl, como tendría que declararlo para poder hacer visibles dichos
    > procedimientos en el formulario?

    ¡Bueno! Me vas a disculpar, pero no voy a entrar nuevamente en el tema de la "estructura", porque sería repetir lo que ayer te comenté en la siguiente conversación:

    ¿Cómo hago las declaraciones correctas para poder reusar un procedimiento en la situación que explico?

    > ¿Cómo sería la estructura si desde un UserControl abro un formulario como diálogo
    > y quiero poder hacer referencia a los controles del UserControl?

    Ya te comenté ayer las dos maneras que tienes de actuar: una "fácil" y otra "difícil". Por tanto, me remito a dicha conversación.

    Como en el asunto de tu mensaje indicas que "abres el formulario como diálogo", me imagino que será por el comentario que hice en mi última respuesta de ayer, la cual transcribo a continuación:

    [...] En principio te diré que, aunque me has comentado algo sobre lo que hace ese UserControl, la experiencia me indica que los controles de usuario son para insertarlos en los formularios, pero no para que desde aquellos se llamen a otros formularios ajenos, salvo que el formulario abierto se utilice como un cuadro de diálogo modal que devuelva un valor al UserControl, pero por lo que me has comentado, parece que no devuelve ningún valor. [...]

    Y es en lo único en lo que voy a entrar en el día de hoy, en preguntarte si sabes lo que es un cuadro de diálogo modal que devuelva un valor a un UserControl, a otro Form, o a cualquier otra clase o módulo que lo ha abierto.

    Cómo: Mostrar formularios Windows Forms modales y no modales

    Abrir y cerrar formularios con Visual Basic .net

    Imagina que tienes un formulario donde el usuario puede introducir sus datos personales (Nombre, Fecha nacimiento, Domicilio, etc.), y el cual dispone de los típicos controles: Aceptar y Cancelar.

    Como vas a trabajar con datos personales, lo normal y habitual en estos casos sería tener definida en tu proyecto una clase del tipo Persona:

    Public Class Persona
    
        Public Property Nombre As String
        Public Property Domicilio As String
        Public Property FechaNacimiento As DateTime
    
    End Class

    Una vez que hayas diseñado adecuadamente la parte visual del formulario que actuará de cuadro de diálogo modal, pasarías a escribir el código fuente que deseas que se ejecute:

    Public Class FormModal
    
        Private m_persona As Persona
    
        Public ReadOnly Property Persona As Persona
            Get
                Return m_persona
            End Get
        End Property
    
        Private Sub btnAceptar_Click(sender As Object, e As EventArgs) Handles btnAceptar.Click
    
            ' Se ha pulsado el botón Aceptar. Creamos una nueva
            ' instancia de la clase Persona
            '
            m_persona = New Persona()
            m_persona.Nombre = txtNombre.Text
            m_persona.FechaNacimiento = dtpFechaNacimiento.Value.Date
            m_persona.Domicilio = txtDomicilio.Text
    
            ' Cerramos el formulario indicando al código cliente
            ' que se ha pulsado el botón Aceptar.
            '
            Me.DialogResult = DialogResult.OK
    
        End Sub
    
        Private Sub btnCancelar_Click(sender As Object, e As EventArgs) Handles btnCancelar.Click
    
            ' Cerramos el formulario indicando al código cliente
            ' que se ha cancelado el cuadro de diálogo.
            '
            Me.DialogResult = DialogResult.Cancel
    
        End Sub
    
    End Class

    Cuando desees mostrar éste formulario o cuadro de diálogo, lo llamarías de manera modal mediante su método ShowDialog, tal y como muestra el siguiente ejemplo:

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
            Using dlg As New FormModal()
                ' Abrimos el cuadro de diálogo.
                '
                Dim dr As DialogResult = dlg.ShowDialog()
    
                ' Comprobamos el motivo del cierre del formulario.
                If (dr = DialogResult.OK) Then
                    ' Se ha pulsado el botón Aceptar. Obtenemos
                    ' el valor de la propiedad Persona.
                    '
                    Dim persona As Persona = dlg.Persona
    
                    ' A modo de ejemplo, mostramos el nombre de la Persona
                    MessageBox.Show(persona.Nombre)
    
                Else
                    MessageBox.Show("Se ha cancelado el cuadro de diálogo.")
    
                    ' Aquí de nada sirve referenciar un objeto Persona
                    ' porque el valor de la propiedad Persona será Nothing.
                    '
                End If
    
            End Using
    
            ' Una vez cerrado el cuadro de diálogo, continuará
            ' ejecutándose el código fuente que haya a continuación
            '
            ' Resto del código.
    
        End Sub

    Es decir, el cuadro de diálogo nos estará devolviendo un valor (un objeto Persona) si se ha pulsado su botón Aceptar; en caso contrario nos devolverá un valor Nothing. Y aparte, también conocemos qué botón se ha pulsado consultando el valor de su propiedad DialogResult, la cual nos la devolverá el propio método ShowDialog.

    Y como estamos mostrando el formulario de manera modal (mediante su método ShowDialog), la ejecución del programa se detendrá hasta que se CIERRE EL FORMULARIO, cosa que no sucede si el formulario lo mostramos de manera no modal (mediante su método Show).

    También hay otros cuadros de diálogo que no devuelven valor alguno, es el caso del típico formulario Acerca de..., que lo único que nos muestra es cierta información sobre la aplicación que estamos utilizando.

    > Le explico, es que desde el control muevo el picture box a manera de un cursor
    > que va señalando cosas y lo que intento hacer es que desde el formulario he
    > implementado unos botones que al presionarlos también mueven el picturebox que
    > está en el control (dicho movimiento del picture box lo hago usando un procedimiento
    > que lo llamaría desde el control y desde el formulario)

    Si es eso lo que hace tu UserControl, sigo pensando que, a mi manera de ver estas cuestiones, entiendo que no es un buen diseño el que has implementado, porque lo habitual es que los controles se inserten en los formularios, pero no que desde un formulario que no devuelve valor alguno y que ha sido abierto por el UserControl, se ejecute un procedimiento existente en el propio UserControl, porque si ese procedimiento va a ser utilizado desde otras partes diferentes de tu aplicación, lo correcto es hacerlo compartido, declarándolo en un Module. Pero como parece ser que el dichoso procedimiento hace uso de un control PictureBox existente en el UserControl, no vas a tener más remedio que pasar la referencia a dicho PictureBox en el parámetro del procedimiento, tal y como bien creo que te lo expliqué ayer. ;-)

    Te comento que si el procedimiento existente en tu UserControl tiene un ámbito de visibilidad Public, otra opción que tienes es insertar el UserControl en el formulario, que es lo normal, y desde el formulario llamarías al procedimiento ejecutando:

         NombreUserControl.NombreProcedimiento()

    De esta manera, desde el formulario estamos ejecutando un procedimiento que existe en el UserControl, de igual manera que llamamos al método Clear, o a otro cualquiera, de un control TextBox, por poner un ejemplo de ejecutar un método público existente en un control. Es una tercera alternativa que tienes para salir del paso, que puede ser más razonable de implementar que las que te indiqué ayer. Pero insisto que esto implica insertar el control en el formulario, no al revés, como parece ser que te has "empeñado" en hacerlo. ;-)


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.








    sábado, 5 de marzo de 2016 11:08
    Moderador
  • Antes que nada gracias por responder y mencionarle que la solución que me dio anteriormente si funcionó.

    Volví a plantear la pregunta porque, como dije, aunque la estructura que me dio ayer funcionó e hizo lo que inicialmente le consulté, surgió otro inconveniente y es que me di cuenta que necesitaba hacer referencia a otros controles del ControlUser desde el cuadro de diálogo y entonces para ese nuevo escenario ya no funcionó (o eso es lo que creo, a lo mejor con una ligera modificación funciona para más controles), por lo que aún no paso ese escollo.

    -------------------------------------------------------

    Mencioné lo del cuadro de diálogo por lo que Ud. lo mencionó ayer y porque efectivamente lo abro mediante el método .showdialog(), quise ser lo más específico posible para no omitir algún detalle que vaya ser importante para la respuesta que me puedan dar y no ocurra lo que ocurrió ayer que omití indicar que hacía referencia a un control y era importante mencionarlo.

    En relación a lo que me explica de los formularios modales y no modales, tenía entendido, como explica, que los primeros detienen la ejecución hasta que se cierren y los segundos se muestran y continúan la ejecución por lo menos así es en VB6.

    Lo que no tenía claro es cómo es que el formulario modal devolvía los datos por lo que encuentro muy esclarecedor el ejemplo que pone.

    ----------------------------------------------------------

    Luego me dice:

    "Pero insisto que esto implica insertar el control en el formulario, no al revés, como parece ser que te has "empeñado" en hacerlo"

    Le doy toda la razón, quizá no me he explicado bien y no me está entendiendo del todo lo que quiero hacer, allí voy de nuevo:

    Efectivamente el Control de Usuario que estoy haciendo lo voy a insertar en otros formularios, pero como parte de la funcionalidad del control de usuario necesito abrir un pequeño cuadro de diálogo desde el mismo Control de Usuario, con cuya interacción se deben modificar ciertos controles contenidos en el tantas veces mencionado Control de Usuario (jeje).

    En otras palabras ese segundo cuadro de diálogo sería una especie de extensión o parte del Control de Usuario, sin el cual este no tendría la funcionalidad que quiero. O dicho de otro modo donde quiera que inserte el Control de Usuario (es decir en cualquier formulario que inserte el Control de Usuario), al hacer clic sobre determinado control de dicho Control de Usuario, este debe abrir a su vez un pequeño cuadro de diálogo (por eso digo que sería una especie de extensión).

    -------------------------------------------

    En el ejemplo que pone, el formulario devuelve la clase persona, pero la clase persona solo tiene datos de texto ¿se podría definir en lugar de datos de texto, una instancia a controles enteros, por ejemplo a un PictureBox?

    de manera que el formulario modal ajuste diversas propiedades del PictureBox y que lo devuelva (en este caso no a un formulario) sino al Control de Usuario que lo llamó y asignar a su vez esta instancia a un PictureBox del susodicho Control de Usuario? de ser así, entonces eso haría lo que quiero.

    Si eso es afirmativo entonces le pediría que ponga un ejemplo pequeño de cómo sería la declaración de la clase. Según yo sería:

    Public Class MiClase
        Public MiImagen1 As PictureBox
        Public MiImagen2 as PictureBox
        Public MiImagen3 as PictureBox
    End Class

    (pero me parece que algo falta)

    De no poderse de la manera anterior le pediría por favor que me de las pautas para que la estructura que pongo al comienzo de la pregunta pueda acceder a los procedimientos como intento hacerlo. Con eso habré superado esa parte que aún no logro superar.

    sábado, 5 de marzo de 2016 17:23
  • "James-2016" escribió:

    > Efectivamente el Control de Usuario que estoy haciendo lo voy a insertar en
    > otros formularios, pero como parte de la funcionalidad del control de usuario
    > necesito abrir un pequeño cuadro de diálogo desde el mismo Control de Usuario,
    > con cuya interacción se deben modificar ciertos controles contenidos en el
    > tantas veces mencionado Control de Usuario (jeje).

    ¡Hombre! Podrías haber empezado por ahí y me hubieras ahorrado un buen tiempo de escritura. :-((

    Te estaría enormemente agradecido que explicaras correctamente desde un primer momento lo que deseas hacer, porque el estar dando "palos de ciego" hasta averiguar lo que realmente deseas hacer o conseguir, no me parece muy correcto que digamos.

    > En el ejemplo que pone, el formulario devuelve la clase persona, pero la clase
    > persona solo tiene datos de texto ¿se podría definir en lugar de datos de texto,
    > una instancia a controles enteros, por ejemplo a un PictureBox?

    Puse el ejemplo de la clase Persona porque tampoco se trataba de describir una clase más compleja, pero que desde luego, puedes utilizar cualquier tipo de dato admitido, incluidos controles "PictureBox enteros" si ese es tu deseo.

    > Si eso es afirmativo entonces le pediría que ponga un ejemplo pequeño de
    > cómo sería la declaración de la clase. Según yo sería:
    >
    > Public Class MiClase
    >    Public MiImagen1 As PictureBox
    >    Public MiImagen2 as PictureBox
    >    Public MiImagen3 as PictureBox
    > End Class
    >
    > (pero me parece que algo falta)

    Yo también creo que "algo falta", pero tampoco sabría decirte qué es lo que falta, porque yo tampoco sé lo que quieres que haga tu clase llamada MiClase.

    En principio te diría que comenzaras a definir la clase más o menos así:

    Public Class MiClase
    
        ' Campos de la clase
        Private image1 As PictureBox
        Private image2 As PictureBox
        Private image3 As PictureBox
    
        ' Propiedades de la clase
        Public Property MiImagen1 As PictureBox
            Get
                Return image1
            End Get
            Set(value As PictureBox)
                image1 = value
            End Set
        End Property
    
        Public Property MiImagen2 As PictureBox
            Get
                Return image2
            End Get
            Set(value As PictureBox)
                image2 = value
            End Set
        End Property
    
        Public Property MiImagen3 As PictureBox
            Get
                Return image3
            End Get
            Set(value As PictureBox)
                image3 = value
            End Set
        End Property
    
        ' Métodos de la clase
        Private Sub NombreSub()
    
            ' Ejecutar aquí lo que proceda
    
        End Sub
    
        Private Function NombreFunction() As Integer
    
            ' Ejecutar aquí lo que proceda y devolver un valor Integer
    
        End Function
    
    End Class

    Es decir, en los procedimientos internos de la clase trabajarías con los campos privados (image1, image2, image3) y devolverías los valores mediante las correspondientes propiedades públicas (MiImagen1, MiImagen2, MiImagen3). Observa que también he añadido un procedimiento Sub y otro Function para que internamente (porque son privados) ejecutes lo que proceda.

    > De no poderse de la manera anterior le pediría por favor que me de las pautas
    > para que la estructura que pongo al comienzo de la pregunta pueda acceder a
    > los procedimientos como intento hacerlo.

    ¡Vamos a ver! Sin ánimo de ofender ni que te lo tomes a mal, quiero que comprendas que esto es un FORO, donde la gente expone preguntas sobre ésta o aquella duda que tiene, y lo que se pretende es que alguien le responda con una solución al problema planteado. Pero lo que no puedes pretender, y sé que tu no lo pretendes, es que alguien te ofrezca las pautas para crear una "estructura" (me imagino que querrás decir "clase", porque en .net una "estructura" equivale a un tipo de dato por valor), y menos aún, sin saber ese alguien las pautas que te tiene que dar para satisfacer tus necesidades.

    Unas de las cosas buenas que hoy en día tiene Internet, es que efectúas una búsqueda en tu buscador preferido por algún tema que deseas conocer, como por ejemplo "Visual Basic .net definir clase", y te aparecerán multitud de enlaces a tutoriales, vídeos de YouTube y restantes artículos relacionados, por lo que tan solo tienes que "pinchar" en ellos y ver cual es el que te satisface. Pero no pidas que alguien de aquí escriba un tutorial (que sé que no lo has pedido), porque como bien creo que podrás comprender, está totalmente fuera del alcance de este foro. Si posteriormente te surge alguna duda o problema sobre algo concreto de la clase que estás definiendo, publicando el código fuente de la clase con la que estás trabajando, es cuando puedes acudir al foro para que alguien más experto te pueda aconsejar o resolver el problema.

    Lo dicho, espero que no te tomes a mal el comentario efectuado. ;-)


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.



    sábado, 5 de marzo de 2016 18:55
    Moderador
  • Agradezco la respuesta, es lo que necesitaba, ese ejemplo para poder devolver los valores modificados.

    "Te estaría enormemente agradecido que explicaras correctamente desde un primer momento lo que deseas hacer, porque el estar dando "palos de ciego" hasta averiguar lo que realmente deseas hacer o conseguir, no me parece muy correcto que digamos."

    Disculpe si no me expliqué bien, lo que pasa que es falta de experiencia para hacer la consulta, di por sentado que el Control User era para agregarlo a otros formularios y omití información que no debí omitir, lo haré con más detalle para la próxima.

    "¡Vamos a ver! Sin ánimo de ofender ni que te lo tomes a mal, quiero que comprendas que esto es un FORO, donde la gente expone preguntas sobre ésta o aquella duda que tiene, y lo que se pretende es que alguien le responda con una solución al problema planteado. Pero lo que no puedes pretender, y sé que tu no lo pretendes, es que alguien te ofrezca las pautas para crear una "estructura" (me imagino que querrás decir "clase", porque en .net una "estructura" equivale a un tipo de dato por valor), y menos aún, sin saber ese alguien las pautas que te tiene que dar para satisfacer tus necesidades."

    Bueno sí me refería a la clase, pero también al bosquejo que puse grosso modo, esa era la consulta concreta, como le decía si lo primero funciona como le consultaba, entonces lo segundo ya no era necesario.

    Veo que respondió otra pregunta que hice sobre los archivos de recursos, cuando la revise con calma, le comento o consulto al respecto, trato de resolver esta parte primero.

    Gracias de nuevo, por todo.

    sábado, 5 de marzo de 2016 21:34