Aunque la cantidad de controles y clases que nos ofrece VisualStudio2005 para utilizar en un proyecto es realmente importante y variada, es probable que en algún momento queramos crearnos un control personalizado o una clase para responder a una necesidad frecuente y particular de nuestro proyecto concreto. En mis proyectos, por ejemplo, estoy utilizando mucho un control propio creado por mí al que llamo Matchcode y que funciona de modo ligeramente parecido a como lo hacen los matchcodes en SAP.
Para el que no conozca SAP, se trata de un simple textbox que tiene que recoger un valor y que dispone de ayudas para ello. Imaginemos por ejemplo que tenemos que introducir un código de cliente en un textbox. Pues bien, con mi Matchcode si sabemos el código del cliente porque es un cliente habitual, podemos introducirlo directamente y validarlo con Enter. Pero si no lo sabemos podemos introducir cualquier parte de su nombre y pulsar F4. Entonces se nos desplegará un pop-up con todas las coincidencias encontradas. Cuando hagamos doble click en cualquiera de ellas el resultado (el código del cliente, en este caso) se trasladará al textbox original. Además, si al pulsar F4 sólo se halla una coincidencia se trasladará automáticamente al textbox sin pasar por ningún pop-up (que mostraría un único resultado y por tanto sería absurdo).
Pongo un ejemplo con imágenes que se entenderá mejor. En un formulario tengo un textbox para introducir un país. Sin embargo yo los países los tengo codificados en una tabla de países de tal manera que España es el 1, Alemania el 2, Marruecos el 3 y así… Pues bien, en el formulario tengo lo siguiente:
![]()
Sólo que en realidad eso no es un textbox sino un Matchcode. Si quiero introducir el país Marruecos y sé que tiene el código 3 simplemente escribo 3:
![]()
Y cuando pulso Enter se me valida la introducción:
![]()
Si introdujera un código que no correspondiera a ningún país simplemente se vaciaría el cuadro. Pero si lo que ocurre es que no sé que Marruecos es el 3 puedo simplemente escribir una parte del nombre:
![]()
Y al pulsar F4 veré todos los posibles resultados:

Si hago doble click sobre la fila de Marruecos validaré la introducción nuevamente:
![]()
Pues bien, como tengo creada una .dll que incluye el formulario que hace de pop-up y toda la configuración para que funcione, en cualquier nuevo proyecto sólo tengo que importar dicha .dll y acto seguido puedo utilizar tantos Matchcodes como quiera.
Para crear la .dll:
1) Al crear el nuevo proyecto en VisualBasic.NET seleccionar Biblioteca de controles de Windows o Biblioteca de clases según lo que vayamos a construir. En cualquier caso, en las propiedades del proyecto nos aparecerá que el tipo de aplicación es una Biblioteca de clases.
2) Crear todos los controles y clases que corresponda hasta que tengamos el proyecto listo.
3) Generar (Volver a generar) el proyecto y con ello obtendremos ya el archivo .dll correspondiente. Concretamente en el directorio bin\Release de nuestro proyecto.
Ya tenemos pues el archivo nombreDeNuestraLibreria.dll. Ahora para poder utilizar dicha .dll y por tanto todos los controles y clases que contenga en cualquier aplicación lo que tenemos que hacer es lo siguiente:
1) En el nuevo proyecto, ir a Proyecto (en el menú superior), seleccionar Agregar referencia, ir a la pestaña Examinar y desde allí buscar el archivo .dll correspondiente y aceptar.
2) Abrir el Cuadro de herramientas y Agregar ficha.
3) Dentro de la ficha recién creada, seleccionar Elegir elementos.
4) En el cuadro que se nos abrirá, seleccionar Examinar y buscar la .dll que hemos creado en la primera fase.
Con ello tendremos disponibles en el Cuadro de herramientas los controles que incluya la librería-biblioteca que hemos creado y seleccionado. Si no incluye controles sino que es únicamente una librería de clases, podemos ahorrarnos los pasos 2, 3 y 4.
Finalmente si queremos utilizar las clases contenidas en la .dll desde cualquier otra clase, debemos incorporar al inicio una llamada de importación:
Listos. ![]()
Quisiera saber si una vez creada una dll a partir de una clase, comopuedo hacer para poder ocuparla como un dll con otras aplicaciones como si fuera una API de windows, es posible esto, hay que cambiar algun parametro o configurar algo diferente???
Pues no sé si te servirá de algo pero… si te creas una biblioteca de clases nueva con una única clase (por hacerlo fácil en el ejemplo, después líalo lo que quieras), en esa clase le estableces la propiedad Clase COM a True y en las propiedades del propio proyecto (pestaña Compilar) marcas el checkbox de Registrar para interoperabilidad COM… y tras todo esto sigues el proceso normal (generar, ir a buscar el archivo .dll, etc) y acto seguido abres por ejemplo un archivo de Access y desde el código VBA estableces la referencia conveniente (Herramientas-Referencias) hacia esta librería que acabas de crear, puedes efectivamente utilizar esa clase y sus métodos en este caso desde Access. Imagino que desde otros entornos será algo parecido.
Me gustaria saber si dentro de SAP se puden utilizar o invocar DLL?.
Muchas gracias por la respuesta.
¿Desde ABAP? Pues no tengo ni idea, pero voy a preguntar entre excompañeros del máster a ver si alguno sabe algo…
Este enlace puede serte útil:
https://www.sdn.sap.com/irj/scn/thread?messageID=365012