Entradas

Mostrando entradas de enero, 2010

Un poquito System.Activator

Imagen
Bueno, una vez cuando comencé a trabajar ya como ingeniero de sistemas en un entorno real, conocí algo que yo decía que tenia que existir, y era formar un menú desde la base de datos, dependiendo del usuario; pues hasta aquí todo bien, pues la forma mas lógica para mi en ese momento era agregar todas las opciones del menú a mi forma principal, y después ir preguntando si en realidad el usuario estaba habilitado a entrar a este ítem. Después cuando conocí un poco de seguridad, supe que esta forma era incorrecta, por que hacerlo de esa manera, le incitaba al usuario a que “tratara de dañar” el aplicativo de alguna forma para entrar a las opciones que el podía ver que existían pero no eran para su uso; para resolver este problema, agregaba todas las opciones al menú, después cuando iniciaba la aplicación, verificaba las opciones que el usuario tenia disponibles y las que no las eliminaba del menú. Obtuve en cierta parte el resultado de lo que necesitaba, pero aun era una mala soluc...

Opción para MDIContainer

Imagen
Opción valida para MDIContainer Un día necesite tener un form dentro de otro form y que el ultimo contuviera otros forms. Cosa que con MDI no pude hacer ya que me encontré con un error del que hable en mi post anterior . La solución la era muy fácil, solo había que estudiar un poco las propiedades de los controles de un winform. Como explique los controles tienen una propiedad llamada Controls, que no es más que una colección de controles. En la colección se pueden añadir controles incluidos los formularios, siempre y cuando la propiedad TopLevel este marcada como falsa, o sea, no sea un formulario de nivel superior. Hagamos un ejemplo práctico. En Visual Studio, creamos un proyecto de Windows, una Aplicación de Windows Forms, yo la llame MDIAlterno. Automáticamente, Visual Studio crea el formulario Form1.cs, yo le cambie el nombre a Padre.cs, por que este formulario es donde voy a alojar los demás formularios. En nuestro formulario Padre, creamos un panel, que es donde vamos...

Problemas con MDI en .Net y una pequeña solución

Hace un tiempo se me ocurrió la grandiosa idea de tener un contenedor MDI (Interfaz de Múltiples Documentos) dentro de otro; es no es mas que mostrar múltiples documentos (forms) dentro de otro form al mismo tiempo; el form principal es llamado MDIContainer, resulta que .Net no deja que un form que sea MDIContainer, sea ubicado dentro de otro MDIContainer. Si tratamos de hacer esto obtendremos la excepción “Un formulario no puede tener una interfaz MDI secundaria y una MDI primaria a la vez.”. Veámoslo de la siguiente manera, los formularios MDI se convierten en MDIParent, los formularios agregados a él, se convierten en MDIChildren. El asunto esta en que un MDIParent no puede ser a la vez un MDIChildren. Y es que es algo lógico, pasaría lo que pasa en televisión cuando una cámara filma al un televisor mostrando lo que la cámara esta filmando, este efecto no seria deseable para nuestra aplicación Windows. Investigando un poco mas (neceando), descubrí que los formularios al co...

Introducción

Desde mis inicios en la programación, por allá en los años 1998, cuando inicie con mis primeras paginas web, me he dedicado a hacer cosas que son poco comunes en el entorno de programación de un estudiante de ingeniería de sistemas, no es que yo sea un prodigio programando, pero siempre se me ocurren cosas que no son comunes dentro de lo común, o me gusta encontrarle soluciones a pequeños problemas. Cuando comencé mis estudios de Sistemas, inicie con un profesor que es un poco exigente con sus estudiantes, los que le responden le va muy bien, los que no....al fin y al cabo también. Mi eterno profesor, al cual tuve la dicha de dejarle una materia en 5 (nota perfecta). Después de eso y de trabajar varios años con él surgió una queja, he solucionado pequeños problemas que se nos han presentado cuando diseñamos software; pero acá viene el problema, los problemas que soluciono no los documento, y si pasa algún tiempo, se me olvida la forma como lo pude solucionar. Entonces este blog no es...