necesito informacion y definición de lo que es un delegado
en .net
ejemplos de código si puede ser tb.
gracias
Emilio Pérez Egido
La Robla - León - España
http://www.miliuco.com
______________________________________________________
Un delegado es un objeto al que otros objetos ceden (delegan) la ejecución de su código. También se conocen como punteros a función con seguridad de tipos. Al instanciar un delegado, se asocia con un método de instancia o compartido de un objeto, y posteriormente, durante la ejecución, será el delegado el que se encargue de ejecutar dicho método y no el propio objeto. También se pueden asociar los delegados con procedimientos Sub o Function de módulos.
Para declarar un delegado, debemos utilizar la palabra clave Delegate, seguida del tipo de método (Sub o Function) al que posteriormente deberemos asociar el delegado; y finalmente, el nombre del delegado con la lista de parámetros y valor de retorno si es necesario. El lugar de declaración debe ser la zona de declaraciones de la clase o módulo:
' delegado sin parámetro
Public Delegate Sub VerMensaje()
' delegado con parametros
Public Delegate Sub Aviso(ByVal lsTexto As String)
' delegado de tipo function
Public Delegate Function Obtener(ByVal ldtFecha As Date) As String
Creación de delegados: en un procedimiento, declaramos una variable correspondiente al tipo del delegado. A continuación, conectamos el delegado con el procedimiento que posteriormente deberá ejecutar, empleando la palabra clave AddressOf, seguida del nombre del procedimiento. AddressOf devuelve el puntero o dirección de entrada al procedimiento, que será lo que utilice el delegado para saber la ubicación del procedimiento que debe ejecutar. Por último, para ejecutar el procedimiento al que apunta el delegado, llamaremos a su método Invoke( ):
Module Module1
Public Delegate Sub VerMensaje()
' Modo 1 -----------------------------
Sub Main()
' declarar un delegado
Dim loDelegTexto As VerMensaje
' obtener la dirección del procedimiento a ejecutar
' y asignarla al delegado
loDelegTexto = AddressOf MostrarTexto
' ejecutar el procedimiento a través del delegado
loDelegTexto.Invoke()
End Sub
' Modo 2 -----------------------------
Sub Main()
' declarar el delegado y asociar con una dirección
' o puntero a un procedimiento
Dim loDelegTexto As New VerMensaje(AddressOf MostrarTexto)
loDelegTexto.Invoke()
End Sub
' ***********************************************
' este será el procedimiento invocado (ejecutado)
' por el delegado
Public Sub MostrarTexto()
Console.WriteLine("Hola, esto es una prueba con delegados")
End Sub
End Module
______________________________________________________
"Racsus" escribió: "...necesito información y definición de lo que es un delegado en .net, ejemplos de código si puede ser tb..."
muchas gracias a jesus de antemano por su detallada
explicacion. Bien, teniendo en cuenta dicha teoria, como
aplicariamos esto al siguiente ejemplo:
Tengo una libreria botonera incrustada en un formulario.
Mediante un parametro creado en la libreria le paso el
nombre del formulario que contiene a la libreria.
Con esta información como hago para que cuando pulse un
boton se abra un formulario del proyecto que contiene a la
libreria?
gracias
>-----Mensaje original-----
>....
--
Saludos:
Jesús López
MVP Microsoft .NET
MCP SQL Server
he creado una libreria con varios botones. Dentro de esta
libreria he creado varias propiedades, una para decirle a
a la libreria en que formulario esta incrustada y el resto
para decirle a cada boton que funcion tiene que hacer.
en la mayoría de los casos lo que tiene que hacer el botón
es abrir otro formulario del proyecto(ej: nuevo,
modificar,...). Para ello le tendré que pasar el nombre
del formulario que quiero que abra; aqui esta el problema,
una vez se el nombre del formulario que ha de abrir, que
codigo utilizo para abrirlo? no me sirve el codigo:
Dim oform as new <nombre_formulario>
oform.show
no me sirve, ya que el formulario no pertenece a la
libreria. no se si me he explicado bien, sabrias ayudarme?
muchas gracias
>-----Mensaje original-----
>.
>
"SqlRanger" <sqlran...@mvps.org> wrote in message news:uWy5oY7n...@TK2MSFTNGP12.phx.gbl...