53989600 formularios mdi con visual net

Upload: fer-hilton-gm

Post on 06-Jul-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    1/72

    Formularios de interfaz múltiple (MDI)

    Aplicaciones de estilo SDI

    Una aplicación de tipo o estilo SDI (Single Document Interface), Interfaz de Documento Sencillo,

    está compuesta fundamentalmente de un único formulario, a tra!s del cual, el usuario realiza todala interacción con el programa" #omo e$emplos de este tipo de aplicación tenemos el %loc de &otaso la #alculadora de 'indos"

    Un programa SDI puede tener más de un formulario, aunue no sea algo *a+itual" #uando esoocurre, los formularios se e$ecutan independientemente, sin un elemento contenedor ue losorganice"

    Aplicaciones de estilo MDI

    Una aplicación de tipo o estilo MDI (Multiple Document Interface), Interfaz de Documento

    Múltiple, se compone de un formulario principal, tam+i!n denominado formulario MDI, ue actuarácomo contenedor de otros formularios (documentos) a+iertos durante el transcurso del programa,denominados formularios *i$os o secundarios MDI" #omo e$emplos de este tipo de aplicacióntenemos oeroint o Access"

    A diferencia de lo ue ocurr-a en ersiones anteriores de .%, un formulario MDI admite los mismoscontroles ue un formulario normal, aunue dada su orientación de formulario contenedor, serecomienda limitar los controles en un MDI a los estrictamente necesarios" /l menú es el e$emplomás identificatio de control idóneo para un formulario MDI, 0a ue a tra!s de sus opciones, podremos a+rir los formularios *i$os de la aplicación"

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    2/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    Seguidamente descri+iremos el proceso de creación de un pro0ecto ue contenga un formulario MDI0 dos formularios *i$os, as- como el comportamiento de estos últimos cuando son a+iertos dentrodel formulario padre MDI" /ste e$emplo tiene el nom+re MDIru, 0 se de+e *acer clic a u - paraacceder al mismo"

    Una ez creado el nueo pro0ecto, cam+iaremos el nom+re del formulario por defecto a

    frmrincipal" ara conseguir ue este formulario tenga el comportamiento de un contenedor MDI,de+emos asignar el alor 1rue a su propiedad IsMdi#ontainer" 1am+i!n de+emos esta+lecer a esteformulario como inicial en las propiedades del pro0ecto"

    A*ora pasaremos a la creación de los formularios *i$os del MDI" /l primero, frm#arta, permite laescritura en un 1e5t%o5 multil-nea, cu0o contenido podremos gra+ar a un arc*io en disco" 6aFigura789 muestra esteformulario"

    Figura 789" Formulario *i$o de MDI para escri+ir un te5to largo"

    /l código del +otón ue realiza la gra+ación del te5to lo podemos er en el #ódigo fuente :8;"De+emos importar el espacio de nom+res S0stem"I4, 0a ue en esta clase del formulario *acemosuso de los tipos File 0 Stream'riter"

      <

      

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    3/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

      7

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    4/72

    2 3rupo /ID4S ??" Formularios de inter f az múltiple (MDI)

    /l otro formulario *i$o, frmInfo, muestra la fec*a 0 *ora actual@ esta última es actualizada a tra!sdel control 1imer tmr1iempo" .er la Figura 787"

    Figura 787" Formulario *i$o de MDI para mostrar fec*a 0 *ora actuales"

    /l #ódigo fuente :8 muestra las instrucciones ue se e$ecutan en el eento 1icB del control 1imer"

      <  

    #ódigo fuente :8

    /l siguiente paso consiste en crear un menú para poder a+rir los formularios *i$os a tra!s de susopciones" .er Figura 78?"

    Figura 78?" Menú del formulario MDI"

    /n las opciones #arta e Información del menú, instanciaremos un o+$eto del formulariocorrespondiente, teniendo en cuenta ue para conseguir ue dic*os formularios se comporten como*i$os del MDI, de+emos asignar a su propiedad Mdiarent, la instancia actual del formulario en

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    5/72

    2 3rupo /ID4S ??" Formularios de inter f az múltiple (MDI)

    e$ecución, es decir, Me" .eamos este punto en el #ódigo fuente :88"

    =>?

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    6/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

      <  

      

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    7/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    #reación de menús de tipo .entana, en formularios MDI

    /s pro+a+le ue el lector *a0a o+serado, en algunas aplicaciones 'indos de tipo MDI, uee5iste en la +arra de menús de la entana principal, un menú con el nom+re .entana o 'indo

    (depende del

    =>:

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    8/72

    2 3rupo /ID4S ??" Formularios de inter f az múltiple (MDI)

    idioma del programa), ue nos muestra los nom+res de los formularios *i$os a+iertos, permiti!ndonos cam+iar de formulario actio al seleccionar una de esas opciones"

    /n nuestras aplicaciones MDI tam+i!n podemos disponer de un menú de este tipo, aCadiendo unanuea opción al menú principal del formulario MDI, 0 asignando a su propiedad Mdi6ist el alor 1rue"

    Adicionalmente, 0 para darle un aspecto más profesional a este menú, podemos aCadir losMenuItem correspondientes a la organización de los formularios *i$os en #ascada, Mosaicoorizontal, etc" ara organizar los formularios a+iertos en la aplicación en alguno de estos modos,de+eremos e$ecutar el m!todo 6a0outMdi( ) del formulario MDI, pasándole como parámetro uno delos alores correspondiente a la enumeración Mdi6a0out" /l #ódigo fuente E>> muestra lasopciones correspondientes a la organización en cascada 0 en mosaico *orizontal de nuestro e$emplo"

      <  

      <  

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    9/72

    2 3rupo /ID4S ??" Formularios de inter f az múltiple (MDI)

    =>E

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    10/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    %loueo de opciones de menú en formularios MDI

    /n la aplicación de e$emplo ue estamos desarrollando, podemos a+rir tantas copias de losformularios *i$os como necesitemos"

    especto al formulario ue nos permite escri+ir un te5to para gra+ar a un arc*io, es útil poder tener arios formularios de este tipo, 0a ue podemos tra+a$ar con diersos arc*ios a la ez"

    Del formulario *i$o ue muestra la fec*a 0 *ora actual sin em+argo, tener más de una copia no parece algo mu0 lógico, 0a ue se trata simplemente de disponer de una información isualizada, 0repetirla a tra!s de la apertura de arios formularios iguales no tiene muc*o sentido"

    ara conseguir ue de un determinado formulario *i$o sólo podamos a+rir una instancia, de+emos*acer dos cosasG en primer lugar, en el manipulador de eento correspondiente a la opción de menúue a+re dic*o formulario, asignaremos False a la propiedad 1rue de la mencionada opción demenú" .eámoslo en el #ódigo fuente E>9"

      <

      

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    11/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

      

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    12/72

    2 3rupo /ID4S ??" Formularios de inter f az múltiple (MDI)

      

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    13/72

    2 3rupo /ID4S ??" Formularios de inter f az múltiple (MDI)

    =>;

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    14/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    #omportamiento &o Modal (Modeless) de for mular ios

    Un formulario de comportamiento no modal, permite el li+re cam+io de foco entre el resto deformularios de la aplicación"

    Una clara muestra la *emos isto en el pro0ecto de e$emplo realizado durante los últimos apartadosdel te5to" /n dic*a aplicación, pod-amos a+rir arios formularios *i$os dentro del formulario MDI principal, 0 pasar de uno a otro sin restricciones"

    4tra caracter-stica de los formularios no modales reside en ue una ez creados 0 isualizados, elresto del código de la aplicación continúa su e$ecución" .er #ódigo fuente E>:"

      <'   

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    15/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    =>

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    16/72

    2 3rupo /ID4S ??" Formularios de inter f az múltiple (MDI)

      

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    17/72

    2 3rupo /ID4S ??" Formularios de inter f az múltiple (MDI)

     +tnAceptar, 0 en #ancel%utton asignaremos +tn#ancelar"

    Finalmente, en el eento de la opción de menú ue a+re este formulario modal, correspondiente afrmrincipal, aCadiremos, tras la llamada a S*oDialog( ), el código ue compro+ará el resultadode la e$ecución del formulario de diálogo" .er el #ódigo fuente E>;"

    =>8

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    18/72

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    19/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    Figura 78;" Formulario modal de diálogo en e$ecución"

    =9>

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    20/72

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    21/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    AlloFull4pen" #ontiene un alor lógico ue permite *a+ilitar 0 des*a+ilitar el +otón uemuestra el con$unto de colores personalizados del cuadro de diálogo de selección de colores"

    Al seleccionar en el formulario, la opción de menú #olor, e$ecutaremos el #ódigo fuente E> uenos permitirá, utilizando el control dlg#olor, de tipo #olorDialog, elegir un color 0 aplicarloa la propiedad %acB#olor, del control 1e5t%o5"

      <  

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    22/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    =97

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    23/72

    2 3rupo /ID4S ??" Formularios de inter f az múltiple (MDI)

    eento Appl0 de este control de diálogo, en el ue podremos escri+ir el código necesario para aplicar la nuea fuente seleccionada"

    Al seleccionar en el formulario la opción de menú Fuente, e$ecutaremos el #ódigo fuente E>8 uenos permitirá, utilizando el control dlgFuente, de tipo FontDialog, elegir un tipo de letra, 0 aplicarloa la propiedad Font del control 1e5t%o5@ con la particularidad de ue el cam+io de letra lo *aremos

    tanto al pulsar el +otón Aceptar, como Aplicar del cuadro de diálogo"

      <"  

      

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    24/72

    2 3rupo /ID4S ??" Formularios de inter f az múltiple (MDI)

    Figura ?>>" #uadro de diálogo del sistema para selección de tipo de letra"

    =9?

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    25/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    SaeFileDialog

    /ste control muestra el cuadro de diálogo del sistema, mediante el ue escri+imos un nom+re dearc*io, 0 elegimos un directorio, so+re el cual gra+aremos información"

    /s importante precisar ue el control no se ocupa del proceso de gra+ación de datos@ su cometido esel permitirnos naegar por la estructura del sistema de arc*ios del euipo, 0 la selección de unnom+re para el arc*io a gra+ar"

    /ntre las propiedades del control, podemos destacar lassiguientes"

    1itle" #ontiene una cadena con el t-tulo ue aparecerá en el cuadro de diálogo"

    InitialDirector0" uta inicial ue mostrará el control al a+rirse"

    Filter" #adena con el tipo de arc*ios ue mostrará el cuadro de diálogo al naegar por elsistema de arc*ios" /l formato de esta cadena es el siguienteG &om+reArc*io

    ("/5tensión)N"/5tensión@ pudiendo situar arios filtros separados por el carácter de +arraertical ( N )"

    FilterInde5"  &úmero ue corresponde a alguno de los tipos de arc*io esta+lecidos en la propiedad Filter"

    File&ame" &om+re del arc*io en el ue se realizará la escritura

    Default/5t" #adena con la e5tensión por defecto a aplicar so+re el nom+re del arc*io"

    #*ecBFile/5ists" .alor lógico ue nos permite compro+ar si el arc*io so+re el ue amos agra+ar 0a e5iste"

    .alidate&ames" .alor lógico ue compro+ará si el nom+re de arc*io proporcionado contiene caracteres especiales, es decir, si se trata de un nom+re álido"

    Al seleccionar en el formulario la opción de menú 3ra+ar, e$ecutaremos el #ódigo fuente E9>, uenos permitirá, utilizando el control dlg3ra+ar, de tipo SaeFileDialog, seleccionar el nom+re de unarc*io, 0 gra+ar el 1e5t%o5 del formulario so+re el mismo, mediante un Stream'riter"

      <  

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    26/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

      

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    27/72

    2 3rupo /ID4S ??" Formularios de inter f az múltiple (MDI)

     

    6a Figura ?>9 muestra el cuadro de dialogo de gra+ación de arc*io"

    Figura ?>9" #uadro de diálogo para la gra+ación de arc*ios"

    4 penFileDialog/ste control muestra el cuadro de diálogo del sistema, mediante el ue seleccionamos un arc*io para poder a+rirlo posteriormente, 0 realizar so+re el mismo operaciones de lecturaLescritura"

    Al igual ue en el control anterior, la lectura 0 escritura de información es algo ue de+eremosrealizar por código, una ez ue *a0amos elegido el arc*io mediante este cuadro de diálogo

    6as propiedades de este control son prácticamente las mismas ue las de SaeFileDialog, conalgunas e5cepciones como las siguientes"

    Multiselect" #ontiene un alor lógico, ue nos permitirá la selección de múltiples arc*ios"

    S*oead4nl0" ermite mostrar la casilla de erificación para mostrar los arc*ios desólo lectura"

    ead4nl0#*e5" ermite o+tener 0 esta+lecer el alor para la casilla de erificación de sólolectura del cuadro de diálogo"

    Al seleccionar en el formulario la opción de menú A+rir, e$ecutaremos el #ódigo fuente E99, ue nos permitirá, utilizando el control dlgA+rir, de tipo 4penFileDialog, seleccionar un arc*io e5istente, 0 pasar su contenido al 1e5t%o5 del formulario, utilizando un Streameader"

    =9E

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    28/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

      <  

      

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    29/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    Figura ?>7" #uadro de diálogo de apertura de arc*ios"

    =9=

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    30/72

    Formularios dependientes 0 controlesaanzados

    Formularios dependientes 0 fi$os en primer planoUn formulario dependiente, tam+i!n denominado oned form, consiste en un formulario ue esa+ierto por otro, denominado formulario dueCo (oner form), permaneciendo am+os a+iertos, sinue el formulario dependiente reuiera ser cerrado, en el caso de ue necesitemos pasar el foco alformulario dueCo"

     &o necesitamos ir mu0 le$os para encontrar un e$emplo de este tipo de formularios, en el propioID/ de .isual Studio tenemos muc*os casos" /n la entana del editor de código, cuando a+rimos laentana de +úsueda de te5to tecleando J#16 O FK, uedan am+as isi+les en todo momento,aunue no efectuemos ninguna +úsueda 0 el foco lo tengamos en el editor de código" /n este caso,la entana %uscar es dependiente de la entana del editor de código" .er Figura ?>?"

    /ste comportamiento en los formularios contrasta claramente con el ue tienen los formularios de

    diálogo, en los cuales, *asta ue no es cerrado el diálogo, no podemos retornar el foco a la entanaue a+rió el diálogo"

    /n ersiones anteriores de .%, conseguir un formulario con tal funcionamiento era una ardua tarea,ue reuer-a de conocimientos so+re el AI de 'indos@ sin em+argo, el nueo motor deformularios de la plataforma "&/1, nos permite a tra!s de una serie de propiedades, ue laconfiguración de formularios dependientes sea un tra+a$o realmente fácil 0 rápido de conseguir"

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    31/72

    Figura ?>?" /ditor de código de .isual Studio con entana de +úsueda"

    or otra parte, un formulario fi$o en primer plano, tam+i!n denominado topmost form, consiste enun formulario ue siempre aparece en primer plano respecto al resto de formularios de la aplicación"Se trata de una ligera ariación de comportamiento respecto al formulario dependiente@ mientras ueeste último, en algunas ocasiones puede ser tapado por otros formularios del programa, unformulario topmost siempre permanece isi+le en primer plano"

    ara ilustrar el modo de creación 0 funcionamiento de este tipos de formularios, se acompaCa el pro0ecto de e$emplo FormDependiente (*acer clic a u -  para acceder al e$emplo), del uecomentaremos los pasos principales para su creación"

    Una ez creado este pro0ecto, eliminaremos su formulario por defecto, 0 aCadiremos el formulariofrmrincipal, ue configuraremos como contenedor MDI, 0 al ue aCadiremos un menú ue nos permitirá a+rir un formulario *i$o para escri+ir un te5to, 0 otro de diálogo para mostrar un literal" 6aFigura ?>: muestra esta entana MDI de la aplicación"

    Figura ?>:" Formulario MDI para el e$emplo con formularios dependientes"

    =9

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    32/72

    2 3rupo /ID4S ?:" Formularios dependientes 0 controles aanzados

    /l siguiente paso consistirá en crear el formulario frm#arta, ue utilizaremos para a+rir losformularios dependientes ue crearemos posteriormente en este pro0ecto" 6a Figura ?>E muestraeste formulario"

    Figura ?>E" Formulario para escri+ir un te5to 0 a+rir formularios dependientes"

    /l #ódigo fuente E97 muestra el código del menú de frmrincipal ue instancia este o+$eto 0 lomuestra como formulario *i$o del MDI"

      <  

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    33/72

    2 3rupo /ID4S ?:" Formularios dependientes 0 controles aanzados

    frm#arta"

    =98

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    34/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    Figura ?>=" Formulario dependiente frm%uscar"

      <  

      <

    #ódigo fuente E9?

    odemos eliminar la asociación entre un formulario propietario 0 uno dependiente mediante elm!todo emoe4nedForm( ) en el formulario propietario" /sto no uiere decir ue el formulariodependiente sea eliminado, simplemente se elimina su dependencia con respecto al propietario"

    /n lo ue respecta al código de frm%uscar, al pulsar su +otón %uscar, +uscamos el contenido delcontrol t5t%uscar en el formulario propietario frm#arta"

    Si la +úsueda tiene !5ito, seleccionamos el te5to encontrado dentro del propietario" 6a propiedad4ner del formulario nos deuele una referencia del propietario, mientras ue para manipular loscontroles de dic*o propietario, realizaremos un moldeado de tipo o t0pe casting so+re 4ner utilizando la función #10pe( ) (o+sere el lector de nueo, la enorme potencia ue encierra estafunción)"

    Además mostramos una etiueta en el formulario dependiente, ue sólo se isualizará al localizar elte5to@ cuando olamos a escri+ir de nueo te5to a +uscar, se ocultará dic*a etiueta" /l #ódigofuenteE9: muestra los m!todos de frm%uscar ue llean a ca+o estasla+ores"

      <"  

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    35/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

      

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    36/72

    2 3rupo /ID4S ?:" Formularios dependientes 0 controles aanzados

      

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    37/72

    2 3rupo /ID4S ?:" Formularios dependientes 0 controles aanzados

    Figura ?>;" Formulario propietario 0 dependiente en funcionamiento"

    Un formulario dependiente, aunue se muestra en todo momento encima de su propietario, puedeser ocultado por otro formulario de la aplicación" ara demostrarlo, aCadiremos al pro0ecto elformulario frmDatosUsuario, ue se mostrará como cuadro de diálogo, isualizando un 6a+el en suinterior" .er Figura ?>"

    =79

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    38/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    Figura ?>" Formulario frmDatosUsuario"

    /l código de la opción de menú de frmrincipal ue a+re este formulario se muestra en el#ódigo fuente E9E"

      <  

    Figura ?>8" Formulario de diálogo ocultando parte del formulario dependiente"

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    39/72

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    40/72

    2 3rupo /ID4S ?:" Formularios dependientes 0 controles aanzados

    ara lograr ue un formulario se muestre en todo momento por encima del resto de formularios dela aplicación, *emos de asignar el alor 1rue a su propiedad 1opMost@ o+tenemos de esta manera,un formulario con estilo de isualización fi$o en primer plano"

    Ilustraremos este particular aCadiendo un nueo formulario al pro0ecto, con el nom+refrmoner#olor, en el ue asignaremos a su propiedad 1opMost el alor 1rue" .er la Figura ?9>"

    Figura ?9>" Formulario de estilo 1opMost"

    /l #ódigo fuente E9= muestra el código del +otón #olor de frm#arta, en el ue se crea unformulario frmoner#olor 0 se isualiza"

      <  

    6a e5plicación a este modo de proceder la encontramos dentro del código del formulariodependiente@ en donde aCadimos dic*o formulario, a la lista de formularios dependientes del propietario, utilizando la propiedad 4ner de la clase +ase Form" /sto tiene el mismo efecto ueusar el m!todo Add4nedForm( )" /l #ódigo fuente E9; muestra el constructor de la clasefrmoner#olor, en donde lleamos a ca+o esta operación"

      <   

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    41/72

    2 3rupo /ID4S ?:" Formularios dependientes 0 controles aanzados

    =7?

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    42/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    "  

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    43/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    =7:

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    44/72

    2 3rupo /ID4S ?:" Formularios dependientes 0 controles aanzados

      

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    45/72

    2 3rupo /ID4S ?:" Formularios dependientes 0 controles aanzados

      

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    46/72

    2 3rupo /ID4S ?:" Formularios dependientes 0 controles aanzados

      

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    47/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

     

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    48/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    =7=

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    49/72

    2 3rupo /ID4S ?:" Formularios dependientes 0 controles aanzados

    #uando escri+imos código de alidación empleando estos miem+ros de la clase #ontrol *emos detener presente el comportamiento, a eces no mu0 intuitio, del sistema de alidación paracontroles en los formularios 'indos"

    Figura ?97" .alidación de un control"

    #omo *emos mencionado anteriormente, cuando la propiedad #auses.alidation de un controlcontiene 1rue, al reci+ir el foco dic*o control, se proocará el eento de alidación para el controlue aca+a de perder el foco" ero si pasamos el foco a un control en el ue #auses.alidationcontiene False, la alidación no se producirá so+re el control ue aca+a de perder el foco"

    /sto lo podemos compro+ar mu0 fácilmente so+re nuestro pro0ecto de e$emplo, asignando alcontrol t5tFec*a el alor False en su #auses.alidation" A partir de a*ora, cuando estemos situadosen el control t5tImporte, si este no contiene un número, se producirá la alidación si pasamos elfoco a t5t&om+re, pero no se alidará si pasamos a t5tFec*a"

    #ontroles aanzados

    6os controles del #uadro de *erramientas del ID/ tratados *asta el momento, son los ue podr-amos considerar +ásicos o estándar en todas las aplicaciones@ no o+stante, esta entana de*erramientas dispone de otra serie de controles aanzados o adicionales, ue si +ien, no sonimprescindi+les para conseguir la funcionalidad elemental del programa, siren como un magn-ficocomplemento a la *ora de dotar a nuestras aplicaciones de un interfaz de usuario plenamenteoperatio"

    /n los siguientes apartados desarrollaremos un pro0ecto con el nom+re #ontrolAanzado (*acer clic a u -  para acceder a este e$emplo), a tra!s del cual, realizaremos una descripción general de

    algunos de estos controles adicionales 0 su modo de uso"

    #omo primer paso en este pro0ecto, eliminaremos el formulario por defecto, aCadiendo acontinuación uno nueo con el nom+re frmrincipal, al ue daremos la caracter-stica MDI mediantela propiedad IsMdi#ontainer" /n este formulario crearemos un menú con un con$unto de opcionesgeneralesG A+rir, 3uardar, Salir, etc"

    =7;

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    50/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    Image6ist

    /ste control actúa como repositorio de imágenes, del ue se alimentarán otros controles delformulario ue necesiten mostrar gráficos en su interior"

    Una ez aCadido este control en el formulario, se situará en el panel de controles especiales deldiseCador, 0 *aciendo clic en su propiedad Images, se a+rirá la entana de la Figura ?9?, en la ue podremos aCadir 0 uitar las imágenes ue an a formar parte de la lista del control, as- como er enel panel complementario, la información so+re cada imagen asignada"

    Figura ?9?" .entana de administración de imágenes del control Image6ist"

    6as imágenes ue insertamos en el control tienen un tamaCo por defecto, en el caso de uenecesitemos modificarlo, e5pandiremos la propiedad ImageSize en la entana de propiedades 0asignaremos nueos alores en 'idt* 0 eig*t"

    4tra enta$a de este control es ue nos permite manipular las imágenes por código, por e$emplo, para aCadir nueas imágenes, de+emos usar el m!todo Add( ) de su propiedad Images, comomuestra el #ódigo fuente E79"

      <+55-.  

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    51/72

    2 3rupo /ID4S ?:" Formularios dependientes 0 controles aanzados

    1ool%ar 

    /ste control representa la +arra de *erramientas o +otones de acceso rápido ue facilitan al usuario lae$ecución de los procesos principales del programa, eitándole la naegación por el menúdel formulario"

    Al ser di+u$ado, este control ueda acoplado a la parte superior del formulario" Despu!s de ponerlet+r%arra como nom+re, asignaremos a su propiedad Image6ist, el control de ese mismo tipo ueaca+amos de crear@ esto nos permitirá asignar los gráficos de la lista a los +otones ue a0amoscreando en el 1ool%ar" ara esta+lecer el tamaCo de los +otones de la +arra utilizaremos la propiedad%uttonSize de este control"

    Seguidamente *aremos clic en la propiedad %uttons, ue a+rirá una entana con la colección de +otones de la +arra, en la ue podremos crear 0 configurar dic*os +otones" .er Figura ?9:"

    Figura ?9:" /ditor de +otones del control 1ool%ar"

    #ada +otón en un 1ool%ar es un o+$eto de tipo 1ool%ar%utton, del ue podemos destacar lassiguientes propiedades"

    1e5t" #adena con el te5to ue muestra el +otón"

    ImageInde5" /n el caso de asociar el 1ool%ar con un control Image6ist, en esta propiedadasignamos para un +otón una de las imágenes del Image6ist, indicando el número de ordende la imagen"

    St0le" ermite esta+lecer el estilo del +otónG de pulsación@ separador@ o de tipodesplega+le, ue a+re un su+con$unto de opciones"

    =78

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    52/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    Dr o pDonMenu"  Si asociamos el +otón con una opción de la +arra de menú delformulario, 0 configuramos su estilo como DropDon%utton, al pulsar el +otón desplega+le,se mostrarán las opciones de menú@ el efecto será el mismo ue si *u+i!ramos desplegadodirectamente el menú del formulario"

    6a Figura ?9E muestra la entana principal de la aplicación con la +arra de *erramientas

    Figura ?9E" Formulario con 1ool%ar"

    Una ez terminado el diseCo del 1ool%ar, de+emos codificar su eento %utton#licB, ue será proocado cada ez ue se pulse un +otón de la +arra" Dentro del procedimiento de este eento,compro+aremos u! +otón *a sido pulsado 0 e$ecutaremos las acciones oportunas" /l #ódigofuenteE77 muestra este eento" 1anto el +otón A+rir como la opción de menú del mismo nom+re realizanla misma tarea, por lo ue llaman al m!todo A+rirArc*io( ), ue es uien realmente muestra elformulario necesario"

      <  

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    53/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

      <   

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    54/72

    2 3rupo /ID4S ?:" Formularios dependientes 0 controles aanzados

      <  

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    55/72

    2 3rupo /ID4S ?:" Formularios dependientes 0 controles aanzados

    =?9

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    56/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    /ntre las propiedades destaca+les de un o+$eto anel podemos mencionar las siguientes"

    %orderSt0le" Muestra el panel con efecto resaltado, *undido o normal"

    Icon" ermite asociar un icono al panel"

    AutoSize" #on esta propiedad podemos conseguir ue el panel se redimensione a$ustándosea su contenido o ue tenga un tamaCo fi$o"

    /n este e$emplo, *emos aCadido dos paneles a la +arra de estado del formulario" /n uno mostramosun te5to fi$o@ mientras ue en el otro, isualizamos la *ora actual a tra!s de un o+$eto 1imer ue ponemos en marc*a en el eento 6oad del formulario" .eamos los m!todos implicados, en el#ódigo fuente E7:"

      <  

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    57/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    Figura ?9;" Formulario con Status%ar"

    =?7

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    58/72

    2 3rupo /ID4S ?:" Formularios dependientes 0 controles aanzados

    Finalizada la creación del Status%ar, aCadiremos al pro0ecto un formulario con el nom+refrmDatosersonal, en el di+u$aremos un con$unto de nueos controles ue iremosdescri+iendo seguidamente"

    Date1imeicBer 

    /ste control permite la selección e introducción de fec*as en una ca$a de te5to con capacidadese5tendidas, o +ien mediante un calendario desplega+le ue se mostrará al pulsar el +otón dee5pansión ue contiene" .er Figura ?9"

    Figura ?9" #ontrol Date1ime,icBer"

    ara modificar la fec*a en el cuadro de te5to, de+emos situarnos en la parte a modificar de la fec*a 0teclear el nueo alor, o +ien, con las flec*as de dirección arri+aLa+a$o, cam+iar esa parte de lafec*a" Si e5pandimos el calendario, podremos realizar la selección de un modo más gráfico"

    or defecto el control muestra la fec*a actual, pero con la propiedad 1e5t podemos cam+iar la fec*a por código, cosa ue *acemos al cargar el formulario, asignando una fec*a distinta de la actual" .er 

    #ódigo fuente E7E"

      <  

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    59/72

    2 3rupo /ID4S ?:" Formularios dependientes 0 controles aanzados

    =??

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    60/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

      <  

    Increment"  &úmero en el ue se incrementará el alor del control cuando pulsemos sus +otones o teclas de dirección"

    InterceptArro(Qe0s" ermite ue las flec*as de dirección arri+aLa+a$o tengan el mismoefecto ue si pulsamos los +otones para incrementar o disminuir, de este control"

    Ma5imum, Minimun" #ontienen los l-mites superior e inferior en cuanto al número ue podrá contener el control"

    1e5tAlign" ermite alinear el número dentro la ca$a de te5to del control"

    UpDonAlign" ermite situar los +otones del control a la izuierda o derec*a de la ca$a dete5to ue contiene el alor"

    /ntre los eentos de ue dispone este control, .alue#*anged se produce cada ez ue cam+ia elalor del control, de modo ue en este caso, amos a cam+iar el color de fondo en función delnúmero ue contenga" .eamos el #ódigo fuente E7;"

      <  

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    61/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

      

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    62/72

    2 3rupo /ID4S ?:" Formularios dependientes 0 controles aanzados

      <  

    #ódigo fuente E7

    6a Figura ?7> muestra el control dud#ategor-a, de este tipo al ser utilizado en el formulario" /nel caso de ue necesitemos los alores ordenados, asignaremos 1rue a su propiedad Sorted"

    Figura ?7>" #ontrol DomainUpDon"

    Mont*#alendar 

    /ste control muestra en modo gráfico un calendario por el ue podemos desplazarnos paraseleccionar una fec*a" /l control Date1imeicBer utiliza internamente un Mont*#alendar paramostrar su calendario desplega+le"

    or defecto se isualiza un mes, pero si asignamos a su propiedad #alendarDimensions un o+$etoSize, podemos e5pandir el tamaCo del calendario para ue muestre arios meses" /l #ódigo fuente

    E78 muestra el código de un +otón del formulario mediante el ue cam+iamos el tamaCo del

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    63/72

    2 3rupo /ID4S ?:" Formularios dependientes 0 controles aanzados

    calendario"

      <  

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    64/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

      

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    65/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    =?=

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    66/72

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    67/72

    2 3rupo /ID4S ?:" Formularios dependientes 0 controles aanzados

      

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    68/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

      

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    69/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    1ales iconos suelen utilizarse por aplicaciones ue permanecen ocultas, 0 al *acer clic derec*oso+re su icono en este panel, aparece un menú conte5tual ue permite mostrar la aplicación"

    /n nuestro caso amos a utilizar este control para e$ecutar 0 parar la calculadora del sistemaempleando la clase rocess, comentada en un apartado anterior"

    =?

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    70/72

    2 3rupo /ID4S ?:" Formularios dependientes 0 controles aanzados

    Despu!s de agregar un control de este tipo al formulario, asignaremos un icono a su propiedad Icon0 una cadena a su propiedad 1e5t, ue será mostrada al situar el ratón encima de este control entiempo de e$ecución"

    #rearemos despu!s un menú conte5tual con las opciones A+rir 0 #errar, ue asignaremos a la propiedad #onte5tMenu del control &otif0Icon"

    ara poder controlar la calculadora de 'indos cuando est! en e$ecución, declararemos unaaria+le de tipo rocess a niel de la clase" Al e$ecutar la calculadora mediante el m!todo Start( ) dela clase rocess, o+tendremos un o+$eto de dic*o tipo, ue pasaremos a esta aria+le, 0 nos permitirá posteriormente, cerrar el proceso en el ue se está e$ecutando la calculadora mediante elm!todo Qill()" .eamos esta parte en el #ódigo fuenteE?:"

      <   

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    71/72

    2 3rupo /ID4S ?:" Formularios dependientes 0 controles aanzados

    Figura ?7:" #ontrol &otif0Icon en el panel de iconos del sistema de la +arra de tareas"

    =?8

  • 8/17/2019 53989600 Formularios MDI Con Visual Net

    72/72

    rogramación con .isual %asic "&/1 2 3rupo /ID4S

    #omo puede compro+ar el lector, la clase rocess ampl-a enormemente nuestra capacidadde manipulación de los procesos del sistema"