Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
Parte 1: Introduccin al Desarrollo de
Aplicaciones con Visual Basic
Qu es Visual Basic? Visual Basic es un ambiente gr!ico de desarrollo de aplicaciones para el sistema operati"o #icroso!t $indo%s& 'as aplicaciones creadas con Visual Basic estn basadas en ob(etos ) son mane(adas por e"entos& Visual Basic se deri"a del lengua(e Basic* el cual es un lengua(e de programacin estructurado& +in embargo* Visual Basic emplea un modelo de programacin mane(ada por e"entos& 'as Aplicaciones Procedurales ,n las aplicaciones tradicionales o procedurales* es la aplicacin -uien controla -ue porciones de cdigo se e(ecuta* ) la secuencia en -ue este se e(ecuta& 'a e(ecucin de la aplicacin se inicia con la primera l.nea de cdigo* ) sigue una ruta prede!inida a tra"s de la aplicacin* llamando procedimientos seg/n sea necesario& 'as Aplicaciones #ane(adas por ,"entos ,n las aplicaciones mane(adas por e"entos* la e(ecucin no sigue una ruta prede!inida& ,n "e0 de esto* se e(ecutan di!erentes secciones de cdigo en respuesta a e"entos& 'os e"entos se desencadenan por acciones del usuario* por mensa(es del sistema o de otras aplicaciones& 'a secuencia de e"entos determina la secuencia en -ue el cdigo se e(ecuta& ,s por esto -ue la ruta -ue sigue el cdigo de la aplicacin es di!erente cada "e0 -ue se e(ecuta el programa& 1na parte esencial de la programacin mane(ada por e"entos es el escribir cdigo -ue responda a los posibles e"entos -ue pueden ocurrir en una aplicacin& Visual Basic !acilita la implementacin del modelo de programacin mane(ada por e"entos& Qu es un ob(eto? 2ada !ormulario 3"entana4* men/ o control -ue se crea con Visual Basic es un mdulo autocontenido llamado objeto. 'os blo-ues bsicos de construccin de una aplicacin con Visual Basic son los ob(etos& 2ada ob(eto tiene un con(unto de caracter.sticas ) un comportamiento de!inido 3propiedades, mtodos y eventos) -ue lo di!erencian de otros tipos de ob(eto& ,n otras palabras* un ob(eto !ormulario 5a sido dise6ado para cumplir determinada !uncin en una aplicacin* ) no es lo mismo -ue un ob(eto men/& Propiedades ,l con(unto de datos -ue describen las caracter.sticas de un ob(eto se le conoce como sus propiedades. Para un !ormulario tenemos por e(emplo* las propiedades BackColor 3color de !ondo4* Height 3altura4& Algunas propiedades no solo determinan el aspecto -ue tiene el ob(eto* sino -ue adems pueden determinar su comportamiento7 por e(emplo* la propiedad MaButton establece si el !ormulario tendr o no el botn Maximizar. 'a presencia o ausencia de este botn determinar si el !ormulario se puede o no ma8imi0ar& Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales 1 1 Formulario&;ombre<=!rm,ntrada= Formulario&>.tulo<=Bien"enidos a :estin ) +istemas= Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic #todos 'os mtodos son un con(unto de procedimientos -ue permiten -ue un ob(eto e(ecute una accin o tarea sobre s. mismo& Por e(emplo* para un !ormulario tenemos el mtodo Hide -ue 5ar -ue el !ormulario se oculte7 o el mtodo !ho" -ue 5ar -ue el !ormulario se "uel"a a mostrar& ,"entos 1n evento es una accin -ue es reconocida por el ob(eto& 1n e"ento ocurre 3se dispara4 como resultado de la interaccin del usuario con el ob(eto& >ambin puede dispararse debido a la e(ecucin de cdigo 3sentencias4 o como resultado de la interaccin de otro ob(eto con el ob(eto de poseedor del e"ento& Para un !ormulario tenemos por e(emplo7 el e"ento #oad -ue se dispara cuando se carga el !ormulario7 o el e"ento Click para un botn de comando* se dispara cuando se 5ace clic sobre l& Qu papel cumplen las propiedades* mtodos ) e"entos? >oda aplicacin necesita una inter!a0 de usuario* la parte "isual a tra"s de la cual el usuario interact/a con la aplicacin& 'os blo-ues bsicos de construccin de una inter!a0 de usuario son los !ormularios ) los controles& Visual Basic utili0a tcnicas de programaci$n visual para dise6ar las aplicaciones& Para dise6ar esta "entana 3Formulario4* del con(unto de ob(etos de Visual Basic seleccionamos un ob(eto tipo %ormulario 3Form4& 'uego a la propiedad &ombre 3;ame4 le asignamos el "alor 'rm(ntrada) a la propiedad *+tulo le asignamos el "alor Bienvenidos a ,esti$n y !istemas. Dentro del !ormulario se colocan los controles& Para -ue el usuario pueda ingresar un dato 3por e(emplo* la contrase6a4 colocamos en la "entana un control tipo Cuadro de *eto 3>e8tBo847 a continuacin establecemos su propiedad &ombre en ttContrase-a, ) su propiedad .ass"ordChar es un ? 3asterisco4 para -ue el dato ingresado sea reempla0ado por asteriscos slo en la pantalla* para -ue no se pueda "isuali0ar& Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales @ @ 2uadro&;ombre<=t8t2ontrase6a= 2uadro&Pass%ord25ar<=?= Botn&;ombre<=cmdIngresar= Botn&>.tulo<=Ingresar= Botn&;ombre<=cmd'impiar= Botn&>.tulo<='impiar= (vento Hacer/Click 2uadro&t8t1suario&>e8to<== 2uadro&t8t2ontrase6a&>e8to<== 2uadro&t8t1suario&,stablecer,n!o-ue34 Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic Para obtener el botn Ingresar seleccionamos un control tipo Bot$n de Comando 32ommandButton4* ) lo colocamos en la "entana& 'uego cambiamos sus propiedades7 a la propiedad &ombre le asignamos cmd0ngresar, ) a la propiedad *+tulo le asignamos 0ngresar. +e desea -ue cuando el usuario 5aga clic en el botn #impiar, se borre cual-uier dato -ue el usuario 5a)a ingresado en los Cuadros de *eto, ) -ue el punto de insercin se ubi-ue en el cuadro tt1suario. Para -ue esto ocurra debemos programar el e"ento Hacer/Click del botn de comando cmd#impiar. ,l e"ento debe e(ecutar dos sentenciar para cambiar la propiedad *eto de cada uno de los cuadros de te8to* ) luego in"ocar al mtodo (stablecer(n'o2ue3) del cuadro de te8to tt1suario. ,l ,ntorno Integrado de Desarrollo 3ID,4 2uando se inicia Visual Basic* se crea un pro)ecto nue"o con un !ormulario& ,l ID, de Visual Basic consta de los siguientes elementos: Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales A A Barra de #en/s ) Barra de Berramientas Dise6ador de !ormularios ,8plorador de Pro)ectos 2uadro de Berramientas Ventana de 2digo Ventana de Propiedades Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic Barra de Mens Presenta los comandos -ue se usan para traba(ar con Visual Basic& Adems de los men/s estndar 4rchivo, (dici$n, Ver, Ventana y 4yuda, contiene otros men/s para tener acceso a !unciones espec.!icas de programacin* como .royecto, %ormato o 5epuraci$n. Barra de Herramientas Permite un acceso directo 3solo un clic4 a muc5as de las operaciones ms !recuentes utili0adas durante el desarrollo de aplicaciones& Cuadro de Herramientas 2ontiene todos los ob(etos ) controles -ue se pueden a6adir a los !ormularios para crear aplicaciones& Diseador de Formularios Funciona como una "entana en la -ue se puede personali0ar el dise6o de la inter!a0 de usuario 3"entana4 de una aplicacin& Explorador de Proyectos 'ista de los arc5i"os 3!ormularios* mdulos* etc&4 del pro)ecto actual& 1n .royecto es una coleccin de arc5i"os -ue utili0a para construir una aplicacin& entana de Propiedades 'ista los "alores de las propiedades del !ormulario o control seleccionado -ue pueden ser modi!icados durante el dise6o del !ormulario o control& entana de C!digo Funciona como un editor para escribir el cdigo 3sentencias4 de la aplicacin& Cbtencin de A)uda del +istema Visual Basic proporciona una "ariedad de recursos para a)udarle a encontrar la in!ormacin -ue necesite cuando se encuentre traba(ando dentro del entorno de desarrollo& "yuda en l#nea Visual Basic proporciona una amplia a)uda en l.nea& ,l arc5i"o de A)uda contiene muc5o cdigo de e(emplo -ue se puede copiar directamente a una aplicacin& 'a a)uda de Visual Basic es sensible al conte8to& Para emplear la a)uda sensible al conte8to en la "entana de cdigo* escriba la palabra para la cual desea in!ormacin* ) luego presione %6& Por e(emplo* si desea in!ormacin acerca de la sentencia 7pen* escriba 7pen ) presione F1& $i%ros en Pantalla Adems de la a)uda sensible al conte8to* el 2D9DC# de Visual Basic inclu)e una "ersin en l.nea de la documentacin impresa para Visual Basic& Para acceder a los 'ibros en Pantalla* 5aga clic en #ibros en .antalla dentro del men/ 4yuda de Visual Basic& $a entana de C!digo 'a "entana o editor de cdigo de Visual Basic proporciona de manera automtica in!ormacin rele"ante a medida -ue se ingresa cdigo& Por e(emplo* si se escribe el nombre de un control* seguido de un punto* las propiedades ) mtodos para ese control sern mostrados automticamente en un cuadro de lista& 'uego se puede escoger la propiedad o mtodo deseado para completar la sentencia& Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales E E Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic 2uando se ingresa el nombre de una !uncin en la "entana de cdigo* Visual Basic automticamente proporciona el !ormato o sinta8is de la !uncin& 2mo se a6aden controles al !ormulario? Para a6adir controles a un !ormulario tenemos dos mtodos: M&todo ' >eniendo el cuadro de Berramientas o un Formulario "isible, 5aga doble clic en el control -ue desea a6adir en el Cuadro de Herramientas( los controles se ubican en el centro del !ormulario* uno encima de otro* luego 5a) -ue mo"erlos a la posicin deseada dentro del !ormulario& M&todo ) 1& Baga clic sobre el control en el 2uadro de Berramientas& @& 1bi-ue el puntero del #ouse 3una cru04 sobre el !ormulario en la es-uina superior i0-uierda donde desea colocar el control& A& Dealice un clic sostenido mientras arrastra el puntero a la es-uina superior derec5a donde colocar el control& E& +uelte el botn del #ouse& ,stos cuatro pasos se repiten con cada control -ue desea a6adir al !ormulario& >erminolog.a de Visual Basic 2on!orme traba(e con Visual Basic* necesitar estar !amiliari0ado con los siguientes trminos: *rmino 5e'inici$n >iempo de dise6o ,s el momento en el -ue se constru)e la aplicacin& >iempo de e(ecucin ,s el momento en el cual e(ecutamos e interactuamos con la aplicacin como lo 5ar.a el usuario& Formulario 1n !ormulario sir"e como una "entana -ue puede personali0ar como la inter!a0 de su aplicacin o como un cuadro de dilogo -ue usa para obtener in!ormacin del usuario& 1n !ormulario puede e8istir indi"idualmente o puede ser"ir como un documento dentro de una inter!a0 de documento m/ltiple 3#DI4 *rmino 5e'inici$n 2ontroles Depresentacin gr!ica de ob(etos tales como botones* cuadros de lista* cuadros de edicin* etc&* con los -ue el usuario interact/a para proporcionar in!ormacin a la aplicacin& Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales F F Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic Cb(etos 1n trmino general usado para describir todos los !ormularios ) controles -ue !orman parte de la aplicacin& Propiedades 'os "alores de un ob(eto* tales como tama6o* t.tulo* color* etc& #todos 'as acciones -ue un ob(eto puede reali0ar sobre s. mismo& ,"entos +on acciones reconocidas por un !ormulario o control& 'os e"entos ocurren a medida -ue el usuario interact/a con los ob(etos de la aplicacin& Programacin controlada por e"entos 2uando un programa es controlado por e*entos( usted escribe cdigo -ue se e(ecuta en respuesta a e"entos in"ocados por el usuario& Di!iere de la programaci!n procedural( en la cual el programa comien0a en la primera l.nea de cdigo ) sigue un !lu(o de!inido llamando procedimientos cuando es necesario& 'a programacin controlada por e"entos es la esencia de las inter!aces gr!icas de usuario7 el usuario acciona ) el cdigo responde& Qu es un pro)ecto? 2uando desarrolla una aplicacin* Visual Basic crea un arc5i"o especial llamado 4rchivo de .royecto para administrar todos los dems arc5i"os de la aplicacin& ,l 4rchivo de .royecto es simplemente una lista de todos los arc5i"os ) ob(etos asociados con el pro)ecto* as. como in!ormacin sobre las opciones del entorno& ,sta in!ormacin se actuali0a cada "e0 -ue se guarda el pro)ecto& >odos los arc5i"os ) ob(etos tambin se pueden compartir con otros pro)ectos& 1n pro)ecto est compuesto por los siguientes arc5i"os: *ipo de archivo (tensi$n 5escripci$n Pro)ecto &"bp Deali0a el seguimiento de todos los componentes de la aplicacin& Formulario &!rm &!r8 Inclu)e el !ormulario* los ob(etos sobre el !ormulario ) el cdigo -ue se e(ecuta cuando ocurre un e"ento en el !ormulario& #dulo estndar &bas 2ontiene procedimientos !ub ) %unction -ue pueden ser in"ocados por cual-uier !ormulario u ob(eto sobre el !ormulario& 3opcional4 *ipo de archivo (tensi$n 5escripci$n 2ontroles Personali0ados &oc8 2ontroles adicionales a los controles estndar proporcionados por #icroso!t u otras empresas& 3opcional4 #dulo de clase &cls 2ontiene la de!inicin de clase* mtodos ) propiedades de un nue"o tipo de ob(eto& 3opcional4 Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales G G Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic Decursos &res 2ontiene in!ormacin binaria usada por la aplicacin& +on usados generalmente cuando se crean programas para m/ltiples lengua(es& 3opcional4 2uando 5a completado todos los arc5i"os del pro)ecto puede con"ertir el pro)ecto en un arc5i"o e(ecutable 3&e8e4& Nota: Con las ediciones Pro+esional y Empresarial de isual Basic tam%i&n puede crear otro tipo de arc,i*os e-ecuta%les, como arc,i*os .ocx y .dll. Pasos para crear una aplicacin ,l proceso de creacin de una aplicacin Visual Basic puede descomponer en una serie de siete pasos& 1& 2rear la inter!a0 de usuario 1sted crea una inter!a0 dibu(ando controles ) ob(etos sobre un !ormulario& A !in de 5acer -ue su cdigo sea ms !cil de leer ) depurar* debe luego asignar nombres a los ob(etos usando con"enciones de nombres estndar& @& ,stablecer las propiedades de los ob(etos de la inter!a0 'uego de a6adir ob(etos al !ormulario* se establece las propiedades de los ob(etos& Puede establecer "alores iniciales )a sea usando la "entana de propiedades en tiempo de dise6o o escribiendo cdigo para modi!icar las propiedades en tiempo de e(ecucin& A& ,scribir cdigo para los e"entos 'uego de establecer las propiedades iniciales para el !ormulario ) cada ob(eto* a6ada el cdigo -ue se e(ecutar en respuesta a los e"entos& 'os e"entos ocurren cuando di!erentes acciones ocurren sobre un control u ob(eto& Por e(emplo* clic es un e"ento -ue puede ocurrir para un botn de comando& E& :uardar el pro)ecto 2uando crea el pro)ecto* aseg/rese de darle un nombre usando el comando ,uardar .royecto como del men/ 4rchivo. :uarde su pro)ecto !recuentemente con!orme a6ada cdigo& Al guardar un pro)ecto se guardan cada !ormulario ) mdulo de cdigo en el pro)ecto& F& Probar ) depurar la aplicacin 2on!orme a6ada cdigo al pro)ecto* puede usar el comando 0niciar en la Barra de Berramientas para e(ecutar su aplicacin ) "er su comportamiento& >ambin puede usar las 5erramientas de depuracin para "eri!icar errores ) modi!icar cdigo& G& 2rear un arc5i"o e(ecutable Al completar su pro)ecto* crear un arc5i"o e(ecutable usando el comando ,enerar 8.ee del men/ 4rchivo. Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales H H Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic H& 2rear una aplicacin de instalacin Debido a -ue su arc5i"o e(ecutable depende de otros arc5i"os* tales como el arc5i"o en tiempo de e(ecucin de Visual Basic 3VbrunFIIA@&dll4* algunos arc5i"os C2J ) arc5i"os D'' adicionales re-ueridos por la aplicacin o por los controles Acti"eJ& 2on"enciones para los nombres de los ob(etos 'os ob(etos deben lle"ar nombres con un pre!i(o co5erente -ue !acilite la identi!icacin del tipo de ob(eto& A continuacin se o!rece una lista de con"enciones recomendadas para algunos de los ob(etos permitidos poro Visual Basic& *ipo de control .re'ijo (jemplo Panel AD pnl pnl:rupo Botn animado ani aniBu0n 2asilla de "eri!icacin c5K c5K+lo'ectura 2uadro combinado* cuadro lista desplegable cbo cboIngls Botn de comando cmd cmd+alir Dilogo com/n dlg dlgArc5i"oAbrir 2omunicaciones com comFa8 2ontrol de datos dat datBiblio 2uadro combinado enla0ado a datos dbcbo dbcbo'engua(e 2uadr.cula enla0ada a datos dbgrd dbgrdDesultado2onsulta 2uadro de lista enla0ado a datos dblst dblst>ipo>area 2uadro de lista de directorios dir dirCrigen 2uadro de lista de unidades dr" dr"Destino 2uadro de lista de arc5i"os !il !ilCrigen Formulario !rm !rm,ntrada #arco !ra !ra'engua(e #edidor gau gau,stado :r!ico gra graIngresos 2uadr.cula grd grdPrecios Barra de despla0amiento 5ori0ontal 5sb 5sbVolumen Imagen 3Image4 img imgIcono ,stado de tecla Ke) Ke)#a)/sculas ,ti-ueta lbl lbl#s(A)uda '.nea lin linVertical *ipo de control .re'ijo (jemplo 2uadro de lista lst lst2digoDePol.tica #ensa(e #API mpm mpm,n"iar#s( +esin #API mps mps+esin #2I mci mciV.deo Formulario #DI secundario mdi mdi;ota #en/ mnu mnuArc5i"oAbrir #+ Fle8 :rid msg msg2lientes #+ >ab mst mstPrimero Acti"eJ ole oleBo(aDe>raba(o ,s-uema out outDiagramaDeCrg Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales L L Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic Pen Bedit bed bed;ombre Pen Bedit 5ed 5edFirma >ra0o de pluma inK inK#apa Imagen 3Picture4 pic picV:A 2lip de imagen clp clpBarraDeBerramientas In!orme rpt rpt:anancias>rimestre1 Forma s5p s5p2.rculo 2uadro de n/mero spn spnPginas 2uadro de te8to t8t t8tApellido 2ronmetro tmr tmrAlarma Arriba9aba(o upd updDireccin Barra de despla0amiento "ertical "sb "sbVelocidad 2ontrol desli0ante sld sld,scala 'ista de imgenes ils ils>odoslosIconos Vista de rbol tre treCrgani0acin Barra de 5erramientas tlb tlbAcciones >ab+trip tab tabCpciones Barra de estado sta staFec5aBora 'ista l"% l"%,ncabe0ados Barra de progreso prg prg2argarArc5i"o Dic5>e8Bo8 rt! rt!In!orme Pre!i(os sugeridos para men/s 'as aplicaciones suelen usar muc5os controles de men/* lo -ue 5ace /til tener un con(unto /nico de con"enciones de nombres para estos controles& 'os pre!i(os de controles de men/s se deben e8tender ms all de la eti-ueta inicial Mmnu=* agregando un pre!i(o adicional para cada ni"el de anidamiento* con el t.tulo del men/ !inal en la /ltima posicin de cada nombre& ,n la tabla siguiente 5a) algunos e(emplos& !ecuencia del t+tulo del men9 &ombre del controlador del men9 Arc5i"o Abrir mnuArc5i"adorAbrir Arc5i"o ,n"iar correo mnuArc5i"o,n"iar2orreo !ecuencia del t+tulo del men9 &ombre del controlador del men9 Arc5i"o ,n"iar !a8 mnuArc5i"o,n"iarFa8 Formato 2arcter mnuFormato2arcter A)uda 2ontenido mnuA)uda2ontenido 2uando se usa esta con"encin de nombres* todos los miembros de un grupo de men/s determinado se muestran uno (unto a otro en la "entana Propiedades de Visual Basic& Adems* los nombres del control de men/ documentan claramente los elementos del men/ a los -ue estn ad(untos& Formularios Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales N N Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic ,l !ormulario es el principal medio de comunicacin entre el usuario ) la aplicacin& 'os usuarios interact/an con los controles sobre el !ormulario para ingresarle datos ) obtener resultados& Propiedades BacK2olor 2olor de !ondo del !ormulario& Border+t)le ,stilo del borde del !ormulario& 2aption >e8to en la barra de t.tulo del !ormulario& 2ontrolBo8 >rueOFalse& Determina si tiene o no el cuadro de control& ,nabled >rueOFalse& Determina si est 5abilitado para responder a las acciones del usuario& Icon Icono -ue se muestra cuando el !ormulario est minimi0ado& 'e!t ) >op 1bicacin del !ormulario& #a8Button >rueOFalse& Determina si tiene o no el botn Maximizar. #inButton >rueOFalse& Determina si tiene o no el botn Minimizar. ;ame ;ombre del !ormulario& $indo%+tate ,stado inicial del !ormulario 3normal* ma8imi0ado o minimi0ado4 E*entos Acti"ate Ccurre cuando el !ormulario se con"ierte en la "entana acti"a& 2licK Ccurre cuando 5ace clic sobre el !ormulario& Deacti"ate Ccurre cuando el !ormulario de(a de ser la "entana acti"a& 'oad Ccurre cuando se carga un !ormulario& 1nload Ccurre cuando un !ormulario est a punto de descargarse& M&todos Bide Cculta el !ormulario& De!res5 Actuali0a el contenido del !ormulario& +etFocus 'e entrega el en!o-ue al !ormulario& +5o% Bace "isible el !ormulario& Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales 1I 1I Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic 2ontroles Bsicos 2on los controles* los usuarios pueden operar ) obtener los resultados de una aplicacin& Puede a6adir controles a un !ormulario seleccionando la 5erramienta adecuada del Cuadro de Herramientas. ,ntre los controles ms comunes a utili0ar en una aplicacin tenemos: ,ti-ueta 3'abel4* 2uadro de >e8to 3>e8tBo84 ) Botn de 2omando 32ommandButton4& Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales 11 11 2ontrol ,ti-ueta 2ontrol 2uadro de >e8to 2ontrol Botn de 2omando Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic 2ontrol ,ti-ueta 3'abel4 +e utili0a para mostrar te8to -ue el usuario no puede modi!icar& :eneralmente para identi!icar otros controles en el !ormulario o para mostrar instrucciones al usuario& Propiedades Alignment Alineacin del te8to dentro del control& Auto+i0e >rueOFalse& Determina si el tama6o del control se a(usta automticamente al te8to -ue contiene& 2aption >e8to -ue muestra el control& ;ame ;ombre del control& Font ,stablece la !uente* estilo ) tama6o para el te8to del control& 2ontrol 2uadro de >e8to 3>e8tbo84 +e utili0a para -ue el usuario le proporcione datos a la aplicacin o para -ue la aplicacin le de"uel"a la in!ormacin al usuario& ,l te8to -ue se muestra en el control puede ser cambiado por el usuario& Propiedades ,nabled >rueOFalse& ,stablece un "alor -ue determina si el control puede responder a e"entos generados por el usuario& Font ,stablece la !uentes* estilo ) tama6o para el te8to del control& 'ocKed >rueOFalse& Determina si es posible modi!icar el te8to en el control& #a8'engt5 ,stablece la longitud m8ima permitida para el te8to en el control& #ulti'ine ,stablece si el control puede aceptar m/ltiples l.neas de te8to& ;ame ;ombre del control& Pass%ord25ar 2arcter utili0ado para ocultar el te8to -ue realmente contiene el control& >e8t >e8to -ue realmente contiene ) muestra el control& Visible ,stablece si el control ser "isible para el usuario& E*entos 25ange Ccurre cuando cambia el te8to -ue contiene el control& :otFocus Ccurre cuando el control recibe el en!o-ue& Pe)Do%n Ccurre cuando el usuario presiona una tecla mientras el control tiene el en!o-ue& 'ostFocus Ccurre cuando el control pierde el en!o-ue& M&todos De!res5 Actuali0a el te8to del control& +etFocus #ue"e el en!o-ue al control& 2ontrol Botn de 2omando 32ommandbutton4 Permite -ue la aplicacin inicie* interrumpa o termine un proceso& Propiedades 2ancel >rueOFalse& ,stablece si el botn se comportar como el botn cancelar en el !ormulario ) se in"ocar su e"ento Click cada "e0 -ue se presione la tecla (!C& Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales 1@ 1@ Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic 2aption ,stablece el te8to -ue muestra el botn& De!ault >rueOFalse& ,stablece si el botn se comportar como el botn predeterminado en el !ormulario& Font ,stablece la !uente* estilo ) tama6o para el te8to del control& ;ame ;ombre del botn& Visible >rueOFalse& ,stablece si el botn ser "isible para el usuario& E*entos 2licK Ccurre cuando se 5ace clic sobre el botn& M&todos +etFocus #ue"e el en!o-ue al botn& ,stableciendo Propiedades Al dise6ar la inter!ase de usuario de una aplicacin Visual Basic* se deben establecer la propiedades para los controles 3ob(etos4 creados& Esta%leciendo Propiedades en .iempo de Diseo Algunas propiedades pueden ser establecidas en tiempo de dise6o& Para establecer estas propiedades se emplea la "entana de propiedades& Para acceder a la "entana de propiedades* oprima en botn secundario del ratn sobre un ob(eto* ) luego 5aga clic en .ropiedades& >ambin se puede obtener el mismo resultado seleccionado el ob(eto ) luego presionando %:& +i selecciona "arios ob(etos a la "e0 ) accede a la "entana de propiedades* slo se mostrarn las propiedades -ue son comunes para todos los controles seleccionados& 2ual-uier cambio -ue se 5aga a una propiedad ser aplicada a todos los controles& Esta%leciendo Propiedades en .iempo de E-ecuci!n ,n tiempo de e(ecucin* se puede escribir cdigo para establecer u obtener el "alor de una propiedad& 'a siguiente l.nea de cdigo establece a negrita la !uente de un cuadro de te8to llamado t8tData& txtData.Font.Bold = True ' Establece el texto a negrita ,ste cdigo establece la propiedad *et del cuadro de te8to t8tData txtData.Text = "Hola mundo" 'Establece el valor del texto +i se omite el nombre de la propiedad* se establece la propiedad predeterminada del control& 'a propiedad predeterminada de un cuadro de te8to es la propiedad *et& 'a propiedad predeterminada de una eti-ueta es la propiedad Caption& 'as siguientes l.neas de cdigo establecen las propiedades predeterminadas te8t ) caption de un cuadro de te8to ) de una eti-ueta& txtData = "Se establece la propiedad Text del cuadro de texto" lblData = "Se establece la propiedad Caption de la etiueta" /%teniendo Propiedades en .iempo de E-ecuci!n Puede emplear el siguiente cdigo para obtener el "alor de una propiedad en tiempo de e(ecucin& Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales 1A 1A Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic Dim s!ombre as String s!ombre = txt!ame.Text Procedimientos de ,"ento Visual Basic in"oca automticamente procedimientos de e"ento en respuesta a acciones del teclado* del ratn o del sistema& Por e(emplo* los botones de comando tienen un procedimiento de e"ento 2licK& ,l cdigo -ue se escriba en el procedimiento de e"ento 2licK es e(ecutado cuando el usuario 5aga clic en un botn de comando& Para abrir la "entana de cdigo* 5aga doble clic en el control o !ormulario* 5aga clic en la orden C$digo del men/ Ver. 2ada control tiene un con(unto !i(o de procedimientos de e"ento& 'os procedimientos de e"ento para cada control son mostrados en un cuadro de lista despegable en la "entana de cdigo& ,l siguiente cdigo muestra el procedimiento de e"ento 2licK para un botn de comando llamado cmdCP& "rivate Sub cmd#$%Clic&'( )sgBox "Hola" End Sub Crden de >abulacion de los 2ontroles ,l orden de tabulaci$n es el orden en -ue un usuario se mue"e de un control a otro pulsando la tecla >ab& Por omisin* el orden de tabulacin es igual al orden en -ue se 5an colocado los controles en el !ormulario& Para cambiar el orden de tabulacin de los controles de un !ormulario* estable0ca el "alor de la propiedad *ab0nde de cada control& ,l "alor de esta propiedad "a desde I 5asta n91* siendo n el n/mero de controles -ue tiene el !ormulario& 0uitar un control del orden de ta%ulaci!n ;ormalmente* presionando la tecla >ab en tiempo de e(ecucin pasamos de un control a otro en el orden de tabulacin establecido& Podemos -uitar un control del orden de tabulacin si establecemos su propiedad *ab!top en %alse. 1n control cu)a propiedad *ab!top se 5a establecido en %alse sigue manteniendo su posicin en el orden de tabulacin actual* aun-ue el control es saltado al ir de un control a otro con la tecla >ab& Nota: $os controles 1ue no pueden o%tener en+o1ue( al igual 1ue los controles desacti*ados o in*isi%les( no tienen la propiedad TabIndex y no est2n incluidos en el orden de ta%ulaci!n. Cuando el usuario presiona .a%( estos controles son ignorados. >ecla de Acceso Dapido a un 2ontrol +i el control tiene la propiedad Caption, se le puede asignar una tecla de acceso rpido para seleccionar el control ) de esta manera el control recibir el en!o-ue cada "e0 -ue se oprima 4#* ; *eclade4cceso& Para especi!icar la tecla de acceso rpido debe resaltar un carcter de la cadena en la propiedad Caption colocando delante de este el s.mbolo MQ=. Por e(emplo si el "alor de la propiedad Caption es la cadena 1suario, ) se desea de!inir la tecla s como la de acceso rpido* deber Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales 1E 1E Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic establecer la propiedad Caption de la siguiente manera: 1<suario. ,l te8to del control se "er as. 1suario& Algunos controles* tales como el control Cuadro de *eto, no tiene la propiedad Caption. Para crear una tecla de acceso para esos controles: 1& 2olo-ue un control (ti2ueta cerca de otro control& @& ,stable0ca la propiedad Caption del control (ti2ueta para contener la tecla de acceso apropiada& A& ,stable0ca para el control (ti2ueta un "alor de orden de tabulacin menor en una unidad -ue el de otro control& 2uando pulse 4#* ; *eclade4cceso del control (ti2ueta* el en!o-ue se mo"er 5acia el otro control debido a -ue el control (ti2ueta no puede recibir el en!o-ue& Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales 1F 1F Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic Parte @: #ane(o de Formularios #odulos de Formulario 2ada !ormulario en su aplicacin tiene un mdulo de !ormulario asociado* estos son guardados con una e8tensin de arc5i"o FD# ) contienen: 'os "alores de las propiedades para el !ormulario ) sus controles& Declaracin de "ariables en el mbito del !ormulario& Procedimientos de e"ento ) procedimientos generales en el mbito del !ormulario& Nota: $as descripciones gr2+icas de un +ormulario y los controles so%re el +ormulario son almacenados en +ormato %inario en un arc,i*o con extensi!n F34. #odulos ,stndar 'os mdulos estndar pueden contener cdigo -ue es com/n a "arios !ormularios en su aplicacin& ,ste cdigo es por omisin p/blico* lo cual signi!ica -ue !cilmente compartido con otros mdulos de cdigo* tales como un mdulo de !ormulario& ,stos mdulos contienen declaraciones de procedimientos* tipos ) "ariables& ;o pueden almacenar procedimientos de e"ento por -ue no contienen ob(etos& 'a Ventana de 2odigo C!digo es un trmino general para todas las sentencias Visual Basic -ue usted escribe en una aplicacin: procedimientos de e"ento ) procedimientos generales& ,l cdigo en Visual Basic se escribe en la "entana de 2digo& ,l editor de te8to es solo un editor A+2II con colores para di!erenciar las palabras cla"es en el cdigo -ue escribe& 'a entana de C!digo se usa para escribir* mostrar ) editar el cdigo de su aplicacin& Puede abrir una "entana de cdigo por cada mdulo de su aplicacin* de modo -ue puede !cilmente copiar ) pegar entre ellos& Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales 1G 1G 'ista de Cb(etos 'ista de ,"entos Botn Ver Procedimiento Botn Ver #dulo Barra de Di"isin Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic 'a Ventana de Cdigo contiene: El Cuadro $ista de /%-etos #uestra el nombre del ob(eto seleccionado& Baga clic en la !lec5a a la derec5a del cuadro Cb(eto para mostrar una lista de todos los ob(etos asociados con el !ormulario& El Cuadro $ista de E*entos #uestra todos los e"entos reconocidos para el !ormulario o control mostrado en el cuadro Cb(eto& 2uando seleccionamos un e"ento* en la "entana de cdigo se muestra el procedimiento de e"ento asociado con ese e"ento& $a Barra de Di*isi!n Desde el men/ entana puede e(ecutar el comando Di*idir para di"idir la "entana de cdigo en dos partes* cada una de las cuales se despla0a separadamente& Puede entonces "er di!erentes partes de su cdigo al mismo tiempo& 'a in!ormacin -ue aparece en el cuadro Cb(eto ) Procedimiento se re!iere al cdigo en la parte -ue tiene el en!o-ue& ,l mismo comando utili0ado para di"idir la "entana puede utili0arlo para cerrar una de sus partes o tambin lo puede 5acer arrastrando la barra de di"isin 5acia la parte superior o in!erior de la "entana& El Bot!n er Procedimiento ,stablece -ue en la "entana de cdigo se edite un procedimiento a la "e0& El Bot!n er M!dulo Completo ,stablece -ue en la "entana de cdigo se tenga acceso a todos los procedimientos* separados por una l.nea separadora uno de otro& ,ditando 2digo 1se las caracter.sticas de edicin de Visual Basic para -ue su cdigo sea ms !cil de leer& 5angr#a 1se la sangr.a para di!erenciar partes de su cdigo* tales como estructuras repetiti"as ) condicionales& Para aplicar sangr.a a una seccin de sentencias de un cdigo use la tecla *ab o el comando 4plicar sangr+a del men/ (dici$n& +e !orma similar* !hi't R *ab o el comando 4nular sangr+a del men/ (dici$n -uitar una sangr.a a las l.neas seleccionadas& Veamos el siguiente e(emplo: "rivate Sub cmd*ngresar%Clic&'( *+ ,en'Trim'txt-suario((=. T/en txt-suario.SetFocus Else*+ ,en'Trim'txtContrase0a((=. T/en txtContrase0a.SetFocus Else*+ txtContrase0a = 123"S4 T/en )sgBox 1,a clave ingresada es correcta4 -nload )e Else )sgBox 1,a clave ingresada no es v5lida4 txtContrase0a.SelStart=. txtContrase0a.Sel,engt/= ,en'Trim'txtContrase0a(( Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales 1H 1H 6pta = )sgBox'"7Est5 seguro de eliminar a este cliente8"9 % vb:uestion ; vb<es!o9 "Con+irmaci=n"( Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic txtContrase0a.SetFocus End *+ End Sub Car2cter de Continuaci!n de $#nea ,l carcter subra)ado 3S4 es el carcter de continuacin de l.nea* ) se usa para di"idir una sentencia en m/ltiples l.neas& ,sto 5ace -ue la sentencia sea ms !cil de leer por-ue est contenida totalmente dentro de la "entana de cdigo en lugar de e8tenderse mas all de sus l.mites& ,l carcter de continuacin de l.nea se coloca luego de un espacio de la sentencia* como se muestra en el siguiente e(emplo: )sgBox ",a clave ingresada no es v5lida"9 % vb#$#nl> ; vbExclamation9 % ")ensa?e" Comentarios ,l a6adir documentacin ) comentarios a su cdigo permite comprender me(or lo -ue 5ace el cdigo& ,sto tambin a)uda a comprender el cdigo si necesita "ol"er a re"isarlo en alguna !ec5a posterior& 1n comentario se inicia con el carcter apstro!e 3T4* de modo -ue todo el te8to -ue contin/e a este carcter ser ignorado en la e(ecucin de la aplicacin& Veamos el siguiente e(emplo: "rivate Sub cmd,impiar%Clic&'( 'Este procedimiento limpia la ventana de identi+icaci=n txt-suario.Text = "" ',impia el cuadro de texto -suario txtContrase0a.Text = "" ',impia el cuadro de texto Contrase0a txt-suario.SetFocus ' )ueve el en+oue al cuadro de texto -suario End Sub 2uadro de #ensa(e ) de ,ntrada 1na de las !ormas ms simples de obtener in!ormacin para ) desde el usuario es utili0ando las !unciones MagBo e 0npuBo respecti"amente& Funci!n MsgBox67 'os cuadros de mensa(e o!recen un modo simple ) rpido de consultar a los usuarios por in!ormacin simple o para permitirles tomar decisiones sobre el camino -ue su programa debe tomar& Puede usar esta !uncin para mostrar di!erentes tipos de mensa(e ) botones con los cuales el usuario da una respuesta& Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales 1L 1L Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic %ormato #sgBo83 prompt U* buttonsV U* title V U* 5elp!ile* conte8tV 4 ,' !ormato de la !uncin #sgBo8 consta de los siguientes argumentos: Parte Descripcin Prompt De-uerido& ,8presin de cadena -ue representa el mensa(e en el cuadro de dilogo& 'a longitud m8ima de prompt es de apro8imadamente 1I@E de caracteres* seg/n el anc5o de los caracteres utili0ados& +i prompt consta de ms de una l.nea* puede separarlos utili0ando un carcter de retorno de carro 325r31A4 4 o un carcter de a"ance de l.nea 325r31I4 4* o una combinacin de caracteres de retorno de carro 9 a"ance de l.nea 325r31A ) 25r31I4 4 entre cada l.nea ) la siguiente& Buttons Cpcional& ,8presin numrica -ue corresponde a la suma de los "alores -ue especi!ican el n/mero ) el tipo de los botones -ue se pretenden mostrar* el estilo de icono -ue se "a a utili0ar* la identidad del botn predeterminado ) la modalidad del cuadro de mensa(es& +i se omite este argumento* el "alor predeterminado para buttons es I& >itle Cpcional& ,8presin de cadena -ue se muestra en la barra de t.tulo del cuadro de dilogo& +i se omite title* en la barra de t.tulo se coloca el nombre de la aplicacin& Belp!ile Cpcional& ,8presin de cadena -ue identi!ica el arc5i"o de A)uda -ue se utili0a para proporcionar a)uda interacti"a en el cuadro de dilogo& +i se especi!ica 5elp!ile* tambin se debe especi!icar conte8t& 2onte8t Cpcional& ,8presin numrica -ue es igual al n/mero de conte8to de A)uda asignado por el autor al tema de A)uda correspondiente& +i se especi!ica conte8t* tambin se debe especi!icar 5elp!ile& Valores ,l argumento buttons puede asumir los siguientes "alores: Constante Valor Descripcin VbCPCnl) I #uestra solamente el botn Aceptar& VbCP2ancel 1 #uestra los botones Aceptar ) 2ancelar& VbAbortDetr)Ignore @ #uestra los botones Anular* Deintentar e Ignorar& VbWes;o2ancel A #uestra los botones +.* ;o ) 2ancelar& VbWes;o E #uestra los botones +. ) ;o& VbDetr)2ancel F #uestra los botones Deintentar ) 2ancelar& Vb2ritical 1G #uestra el icono de mensa(e cr.tico& VbQuestion A@ #uestra el icono de pregunta de ad"ertencia& Constante Valor Descripcin Vb,8clamation EL #uestra el icono de mensa(e de ad"ertencia& VbIn!ormation GE #uestra el icono de mensa(e de in!ormacin& VbDe!aultButton1 I ,l primer botn es el predeterminado& VbDe!aultButton@ @FG ,l segundo botn es el predeterminado& VbDe!aultButtonA F1@ ,l tercer botn es el predeterminado& Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales 1N 1N Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic VbDe!aultButtonE HGL ,l cuarto botn es el predeterminado& VbApplication#odal I Aplicacin modal7 el usuario debe responder al cuadro de mensa(es antes de poder seguir traba(ando en la aplicacin actual& Vb+)stem#odal EING +istema modal7 se suspenden todas las aplicaciones 5asta -ue el usuario responda al cuadro de mensa(es& ,l primer grupo de "alores 3I a F4 describe el n/mero ) el tipo de los botones mostrados en el cuadro de dilogo7 el segundo grupo 31G* A@* EL* GE4 describe el estilo del icono* el tercer grupo 3I* @FG* F1@* HGL4 determina el botn predeterminado ) el cuarto grupo 3I* EING4 determina la modalidad del cuadro de mensa(es& 2uando se suman n/meros para obtener el "alor !inal del argumento buttons* se utili0a solamente un n/mero de cada grupo& Nota8 Estas constantes las especi+ica isual Basic. Por tanto( el nom%re de las mismas puede utilizarse en cual1uier lugar del c!digo en *ez de sus *alores reales. Valores devueltos Constante Valor Descripcin VbCK 1 Aceptar Vb2ancel @ 2ancelar VbAbort A Anular VbDetr) E Deintentar VbIgnore F Ignorar VbWes G +. Vb;o H ;o Nota: 5i desea omitir algn argumento( de%e incluir el delimitador de coma correspondiente o utilizar argumentos con nom%re. (jemplos Str)sg = "7Desea continuar8" Estilo = vb<es!o ; vbExclamation ; vbDe+aultButton@ StrTitulo = "6esponda" 6pta = )sgBox'str)sg9 Estilo9 StrTitulo ( *+ 6pta= vb<es T/en AAAAAAAAAAA AAAAAAAAAAA Else AAAAAAAAAAA AAAAAAAAAAA End *+ Str)sg = "7Desea continuar8" iEstilo = vb<es!o ; vbExclamation ; vbDe+aultButton@ StrTitulo = "6esponda" i6pta = )sgBox' "romptB=str)sg9 TitleB= StrTitulo9 ButtonsB= iEstilo ( Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales @I @I strCodigo = *nputBox'"*ngrese el c=digo del cliente a buscarB"9 % "BCsueda"9 "C,*...D"( Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic *+ i6pta= vb<es T/en AAAAAAAAAAA AAAAAAAAAAA Else AAAAAAAAAAA AAAAAAAAAAA End *+ Funci!n InpuBox67
'a !uncin InputBo8 muestra un mensa(e en un cuadro de dilogo* espera -ue el usuario escriba un te8to o 5aga clic en un botn ) de"uel"e un tipo +tring con el contenido del cuadro de te8to& %ormato InputBo83 prompt U* titleV U* de!aultV U* 8posV U*)posV U* 5elp!ile* conte8tV 4 ,l !ormato de la !uncin InpuBo8 consta de los siguientes argumentos con nombre: Parte Descripcin Prompt De-uerido& ,8presin de cadena -ue se muestra como mensa(e en el cuadro de dilogo& 'a longitud m8ima de prompt es de apro8imadamente de 1I@E caracteres* seg/n el anc5o de los caracteres utili0ados& +i prompt consta de ms de una l.nea* puede separarlos utili0ando un carcter de retorno de carro 325r31A44* un carcter de a"ance Parte Descripcin de l.nea 325r31I44 o una combinacin de los caracteres de retorno de carro X a"ance de l.nea 325r31A4 ) 325r31I44 entre cada l.nea ) la siguiente& >itle Cpcional& ,8presin de cadena -ue se muestra en la barra de t.tulo del cuadro de dilogo& +i omite title* en la barra de t.tulo se coloca el nombre de la aplicacin& De!ault Cpcional& ,8presin de cadena -ue se muestra en el cuadro de te8to como respuesta predeterminada& +i omite de!ault* se muestra el cuadro de te8to "ac.o& Jpos Cpcional& ,8presin numrica -ue especi!ica* la distancia en sentido 5ori0ontal entre el borde i0-uierdo del cuadro de dilogo ) el borde i0-uierdo de la pantalla& +i se omite 8pos* el cuadro de dilogo se centra 5ori0ontalmente& Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales @1 @1 Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic Wpos Cpcional& ,8presin numrica -ue especi!ica* la distancia en sentido 5ori0ontal entre el borde i0-uierdo del cuadro de dilogo ) el borde i0-uierdo de la pantalla& +i se omite )pos* el cuadro de dilogo se coloca apro8imadamente un tercio de la altura de la pantalla* desde el borde superior de la misma& Belp!ile Cpcional& ,8presin de cadena -ue identi!ica el arc5i"o de A)uda -ue se utili0ar para proporcionar a)uda interacti"a para el cuadro de dilogo& +i se especi!ica 5elp!ile* tambin deber especi!icar conte8t& 2onte8t Cpcional& ,8presin numrica -ue es el n/mero de conte8to de A)uda asignado por el autor al tema de A)uda correspondiente& +i se especi!ica conte8t* tambin deber especi!icarse 5elp!ile& Comentarios +i el usuario 5ace clic en Cancelar* la !uncin de"uel"e una cadena de caracteres de longitud cero 3M=4& Nota: 5i desea omitir algunos argumentos( de%e incluir el delimitador de coma correspondiente o utilizar argumentos con nom%re. 2onstantes Prede!inidas Visual Basic reconoce cierta cantidad de constantes prede!inidas -ue pueden se usadas en cual-uier parte de su cdigo en lugar de "alores numricos& Puede 5acer -ue su cdigo sea ms !cil de leer ) escribir mediante el uso de estas constantes& Adems* los "alores de estas constantes pueden cambiar en "ersiones posteriores de Visual Basic* su uso permitir -ue su cdigo sea compatible& Por e(emplo* la propiedad =indo"!tate de un !ormulario puede aceptar las siguientes constantes: Constante Valor 5escripci$n Vb;ormal I ;ormal Vb#inimi0ed 1 #inimi0ado Vb#a8imi0ed @ #a8imi0ado Por e(emplo* para establecer el estado del !ormulario 'rm(ntrada en ma8imi0ado* la sentencia ser.a: +rmEntrada.EindoFState = vb)aximiGed #ane(o de Formularios ;ormalmente la inte!a0 de una aplicacin est compuesta por "arios !ormularios& 2uando Visual Basic inicia la aplicacin* automticamente se muestra el !ormulario de arran-ue* mientras -ue los otros !ormularios deben ser mostrados ) ocultados a tra"s de cdigo& ,l mtodo o !uncin usado depende de lo -ue deseamos 5acer& *area Mtodo o 0nstrucci$n 2argar un !ormulario en memoria* pero 1se la sentencia #oad* o 5aga re!erencia a una sin mostrarlo propiedad o control sobre el !ormulario& 2argar o mostrar el !ormulario& 1se el mtodo !ho"& #ostrar un !ormulario cargado& 1se el mtodo !ho". Ccultar u !ormulario 1se el mtodo Hide. Ccultar un !ormulario ) descargarlo de 1se la sentencia 1nload. Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales @@ @@ Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic memoria& M&todo 5,o9 #uestra un !ormulario& +i el !ormulario no est cargado al momento de e(ecutar el mtodo +5o%* Visual Basic lo cargar automticamente& %ormato ;ombreDelFormulario&+5o% (jemplo FrmEntrada.S/oF 5entencia $oad 2arga un !ormulario a la memoria* pero no lo muestra& %ormato 'oad ;ombreDelFormulario (jemplo ,oad FrmEntrada E*ento $oad ,l e"ento #oad ocurre cuando el !ormulario es cargado en la memoria& ,sto sucede cuando se usa la sentencia #oad* o cuando se in"oca el mtodo !ho" ) el !ormulario a/n no est cargado en memoria& ;ormalmente* este e"ento se utili0a para establecer algunas propiedades del !ormulario* los controles -ue se encuentran en l* o "ariables a ni"el del !ormulario& (jemplos> "rivate Sub Form%,oad'( +rm*ngreso.,e+t = 'Screen.Eidt/ A +rm*ngreso.Eidt/( H @ +rm*ngreso.Top = 'Screen.Heig/t A +rm*ngreso.Heig/t( H @ End Sub "rivate Sub Form%,oad'( txt-suario.Text="" txtContrase0a.Text="" cmd*ngresar.Enabled=False End Sub Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales @A @A Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic M&todo Hide Cculta un !ormulario* pero no lo descarga de memoria& %ormato ;ombreDelFormulario&Bide (jemplo> +rm*ngreso.Hide 5entencia :nload Descarga un !ormulario de memoria %ormato 1nload ;ombreDelFormulario Comentarios 'a descarga de un !ormulario puede ser necesario o con"eniente en a-uellos casos en los -ue la memoria utili0ada se necesite para alguna otra tarea o cuando sea necesario restablecer las propiedades a sus "alores originales& Antes de descargar un !ormulario se e(ecuta el e"ento 1nload 3Form_Unload. +i establece el argumento Cancelar a *rue en este e"ento* no se descargar el !ormulario& !ugerencia 1se la palabra Me para re!erirse al !ormulario actual& Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales @E @E Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic (jemplo I Descarga el +ormulario actual "rivate Sub cmdCerrarAClic& ' ( -nload )e End Sub E*ento :nload Ccurre cuando un !ormulario est a punto de descargarse& ,ste e"ento se desencadena por-ue un usuario cierra el !ormulario mediante el comando Cerrar del men/ Control o una sentencia 1nload. ,l parmetro Cancelar, es un entero -ue determina si el !ormulario es descargado& +i Cancelar es I* el !ormulario se descarga& ,stablecer Cancelar a cual-uier "alor distinto de cero impide -ue el !ormulario sea descargado& (jemplo "rivate Sub Form%-nload'Cancel 2s *nteger( Dim i6pta 2s *nteger i6pta = )sgBox'17Esta seguro de cerrar la ventana849 % Jb<es!o ; vb:uestion9 1)ensa?e4( *+ i6pta = vb!o T/en Cancel = True End *+ End Sub Formularios #odales ) ;o #odales 1n !ormulario -ue se abre como !odal* no permite -ue el usuario interact/e con otros !ormularios de la misma aplicacin 5asta -ue no sea cerrado& 1n !ormulario -ue se abre como No !odal* permite al usuario cambiar a otros !ormularios de la misma aplicacin sin -ue los primeros sean cerrados& ,l argumento "stilo del mtodo #$o% determina si el !ormulario se abre como !odal o No !odal& (jemplos ' Cargar el +ormulario +rm*ngreso % como )odal +rmEntrada.S/oF vb)odal 'Cargar el +ormulario % +rm*ngreso como !o )odal +rmEntrada.S/oF vb)odaless Finali0acin de una Aplicacin +e puede !inali0ar la e(ecucin de la aplicacin descargando el /ltimo !ormulario de la aplicacin o usando la sentencia "nd& 'a sentencia "nd termina la e(ecucin de la aplicacin ) descarga todos los !ormularios& 2uando !inali0a su aplicacin con la sentencia (nd no se desencadena ning/n e"ento de los !ormularios& (jemplos Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales @F @F 'ista de men/s Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic I Descarga el +ormulario actual "rivate Sub cmdCerrarAClic& ' ( -nload )e End Sub I FinaliGa la aplicaci=n "rivate Sub cmdFinaliGarAClic& ' ( End End Sub ,l ,ditor de men/s ,sta 5erramienta permite crear men/s personali0ados para la aplicacin ) de!inir sus propiedades& Para ingresar* estando en tiempo de dise6o* 5aga clic en el men/ Herramientas ) luego en la orden (ditor de Men9s o en el botn e-ui"alente de la barra de 5erramientas estndar& Nota: Para poder ingresar el editor de mens no de%e encontrarse en la *entana de c!digo. /pciones del cuadro de di2logo Parte Descripcin 2aption 'e permite escribir el nombre del comando o del men/ -ue desea -ue apare0ca en la barra de men/s o en un men/& +i desea crear una barra separadora en el men/* escriba un /nico guin 394 en el cuadro 2aption& Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales @G @G Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic Parte Descripcin Para dar al usuario acceso a tra"s del teclado a un elemento del men/* escriba el signo Q delante de una letra& ,n tiempo de e(ecucin* esta letra aparecer subra)ada 3el signo Q no ser "isible4 ) el usuario tendr acceso al men/ o al comando si presiona las teclas 4#* ) la correspondiente a la letra subra)ada& +i necesita -ue apare0ca en el men/ el signo Q* deber escribir dos signos Q consecuti"os& ;ame 'e permite escribir un nombre de control para el elemento del men/& ,l nombre de control es un identi!icador -ue slo se utili0a para tener acceso al elemento del men/ en el cdigo* no aparece en ning/n men/& Inde8 'e permite asignar un "alor numrico -ue determina la posicin del control en una matri0 de controles& ,sta posicin no tiene ninguna relacin con la ubicacin del control en la pantalla& +5ortcut 'e permite seleccionar una tecla de mtodo abre"iado para cada comando& Belp2onte8tID 'e permite asignar un "alor numrico /nico para el Id& de conte8to& ,ste "alor se utili0a para encontrar el tema de A)uda apropiado en el arc5i"o de A)uda identi!icado mediante la propiedad BelpFile& ;egotiatePosition 'e permite seleccionar la propiedad ;egotiatePosition del men/& ,sta propiedad determina si el men/ aparece o no en un !ormulario contenedor ) cmo aparece& 25ecKed 'e permite 5acer -ue apare0ca inicialmente una marca de "eri!icacin a la i0-uierda de un elemento del men/& +e utili0a normalmente para indicar si una opcin de alternar est acti"ada o no& ,nabled 'e permite seleccionar si el elemento del men/ debe responder a e"entos& Desacti"e esta opcin si desea -ue el elemento del men/ no est disponible ) apare0ca atenuado& Visible 'e permite 5acer -ue un elemento apare0ca en el men/& $indo%'ist Determina si el control del men/ contiene una lista de !ormularios secundarios #DI abiertos en una aplicacin #DI& Flec5a a la derec5a Pasa el men/ seleccionado a un ni"el in!erior cada "e0 -ue 5ace clic en el botn& Puede crear 5asta cuatro ni"eles de submen/s& Flec5a a la i0-uierda Pasa el men/ seleccionado a un ni"el superior cada "e0 -ue 5ace clic en el botn& Puede crear 5asta cuatro ni"eles de submen/s& Flec5a arriba 2ada "e0 -ue se 5ace clic en este botn* el elemento seleccionado del men/ se mue"e 5acia arriba una posicin dentro del mismo ni"el de men/& Flec5a aba(o 2ada "e0 -ue se 5ace clic en este botn* el elemento seleccionado del men/ se mue"e 5acia aba(o una posicin dentro del mismo ni"el de men/& 'ista #en/s ,s un cuadro de lista -ue muestra en orden (err-uico todos los elementos del men/& 'os elementos de los submen/s aparecen indentados para indicar su ubicacin o su ni"el en la (erar-u.a& +iguiente +elecciona la l.nea siguiente& Insertar Inserta una l.nea en el cuadro de lista* inmediatamente encima de la l.nea actualmente Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales @H @H Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic Parte Descripcin seleccionada& ,liminar ,limina Borra la l.nea actualmente seleccionada& Aceptar 2ierra el ,ditor de men/s ) aplica todos los cambios e!ectuados en el /ltimo !ormulario seleccionado& ,l men/ est disponible en tiempo de dise6o* pero si selecciona un men/ en la !ase de dise6o* se abre la "entana 2digo para el e"ento 2lic de ese men/ en lugar de e(ecutarse el cdigo del e"ento& 2ancelar 2ierra el ,ditor de men/s ) cancela todos los cambios& A6adiendo 2ontroles Adicionales al 2uadro de Berramientas ,l 2uadro de Berramientas contiene los controles intr.nsecos o estndar de Visual Basic& ,s posible ampliar el cuadro de 5erramientas a6adiendo controles Acti"eJ& 'a edicin pro!esional de Visual Basic proporciona controles Acti"eJ adicionales& >ambin es posible comprar controles Acti"eJ a terceras partes& Para a6adir un control Acti"eJ al cuadro de 5erramientas 5aga lo siguiente: 1& ,n el men/ .royecto* 5aga clic en Componentes& Visual Basic mostrar el cuadro de dilogo Componentes& @& ,n la !ic5a Controles* 5aga clic en el control -ue desea incluir* ) luego 5aga clic en 4ceptar& Visual Basic a6adir el control al cuadro de 5erramientas& El control .oolBar 1n control *oolbar contiene una coleccin de ob(etos Button utili0ados para crear una barra de 5erramientas asociada a una aplicacin& Comentarios ;ormalmente* una barra de 5erramientas contiene botones -ue corresponden a elementos de men/ de una aplicacin* proporcionando una inter!a0 gr!ica al usuario -ue le permite tener acceso a las !unciones ) comandos empleados con ms !recuencia en esa aplicacin& ,l control *oolbar le permite crear barras de 5erramientas agregando ob(etos Button a una coleccin Buttons7 cada ob(eto Button puede tener te8to opcional o una imagen* proporcionados por un control 0mage#ist asociado& Puede mostrar una imagen en un botn con la propiedad 0mage o mostrar te8to con la propiedad Caption* o ambos* para cada ob(eto Button& ,n tiempo de dise6o puede agregar ob(etos Button al control utili0ando la .?gina de propiedades del control >oolbar& ,n tiempo de e(ecucin* puede agregar o -uitar botones de la coleccin Buttons mediante los mtodos 4dd ) @emove& Para programar el control *oolbar* agregue cdigo al e"ento ButtonClick para -ue responda al botn seleccionado& >ambin puede determinar el comportamiento ) la apariencia de cada ob(eto Button mediante la propiedad !tyle& Por e(emplo* si a cuatro botones se les asigna el estilo Button,roup* slo se podr presionar uno de ellos ) al menos uno estar siempre presionado& 'a !acilidad de uso se me(ora considerablemente programando descripciones *ool*ip*et de cada ob(eto Button& Para mostrar in!ormacin sobre 5erramientas* la propiedad !ho"*ips debe establecerse a >rue& Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales @L @L Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic El Control Image$ist 1n control 0mage#ist contiene una coleccin de ob(etos #ist0mage* a cada uno de los cuales se puede 5acer re!erencia mediante su .ndice o su cla"e& ,l control 0mage#ist no est concebido para utili0arlo en solitario* sino como punto de almacenamiento central para proporcionar cmodamente imgenes a otros controles& Comentarios Puede usar el control 0mage#ist con cual-uier control -ue asigne un ob(eto .icture a una propiedad .icture& ,s posible agregar imgenes de di!erentes tama6os al control 0mage#ist* pero todas se a(ustan al mismo tama6o& ,l tama6o de los ob(etos de #ist0mage est determinado por uno de los siguientes "alores: ,l "alor de las propiedades 0mage=idth ) 0mageHeight antes de agregar alguna imagen& 'as dimensiones de la primera imagen agregada& ;o 5a) ninguna limitacin en cuanto al tama6o de la imagen* pero el n/mero total de imgenes -ue se puede cargar est limitado por la cantidad de memoria disponible& Durante el dise6o del programa puede agregar imgenes mediante la !ic5a ,eneral del cuadro de dilogo .ropiedades del control 0mage#ist& ,n tiempo de e(ecucin puede agregar imgenes mediante el mtodo 4dd para la coleccin #ist0mages& Nota8 $os controles Toolbar e Image&ist +orman parte del grupo de controles "cti*e4 adicionales Microso+t ;indo9s Common Controls <.= 6arc,i*o C/MC.$>)./C47. Para usarlos en su aplicaci!n de%e agregar el arc,i*o C/MC.$>)./C4 al proyecto. Cuando distri%uya su aplicaci!n( instale el arc,i*o C/MC.$>)./C4 en la carpeta 5ystem o 5ystem>) 6en plata+ormas con ;indo9s ?.7 de Microso+t ;indo9s del usuario. Inter!a0 de #/ltiples Documentos 3#DI X #ultiple Document Inter!ase4 El /%-eto MDIForm 1n !ormulario #DI es una "entana -ue act/a como !ondo de una aplicacin ) es el contenedor de !ormularios -ue tienen su propiedad #DI25ild establecida a >rue& Para crear un ob(eto #DIForm* eli(a 4gregar 'ormulario M50 en el men/ .royecto* luego de agregarlo tenga en cuenta lo siguiente: 1na aplicacin slo puede tener un ob(eto #DIForm* pero "arios !ormularios secundarios #DI& +i un !ormulario secundario #DI tiene men/s* la barra de men/s del !ormulario secundario reempla0ar automticamente a la barra de men/s del ob(eto #DIForm cuando el !ormulario secundario #DI est acti"o& 1n !ormulario secundario #DI minimi0ado se mostrar como un icono en el #DIForm& 1n ob(eto #DIForm slo puede contener controles #enu ) PictureBo8* ) controles personali0ados -ue tengan una propiedad Align& Para colocar otros controles en un #DIForm* puede dibu(ar un cuadro de imagen en el !ormulario ) despus dibu(ar otros controles dentro del cuadro de imagen& Puede utili0ar el mtodo Print para mostrar te8to en un cuadro de imagen de un #DIForm* pero no puede usar este mtodo para mostrar te8to en el #DIForm propiamente dic5o& 1n ob(eto #DIForm no puede ser modal& 'os !ormularios secundarios #DI se dise6an de !orma independiente del #DIForm* pero siempre estn contenidos en el #DIForm en tiempo de e(ecucin& Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales @N @N Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic Formulario secundario MDI 1n !ormulario contenido dentro de un !ormulario #DI en una aplicacin con inter!a0 de m/ltiples documentos 3#DI4& Para crear un !ormulario secundario* estable0ca su propiedad #DI25ild a >rue& Propiedad MDIC,ild De"uel"e o establece un "alor -ue indica si un !ormulario debe mostrarse como !ormulario secundario #DI dentro de un !ormulario #DI& ,s de slo lectura en tiempo de e(ecucin& 'os "alores admitidos para la propiedad #DI25ild son: Valor 5escripci$n >rue ,l !ormulario es #DI secundario ) se mostrar dentro del !ormulario #DI primario& False 3Predeterminado4 ,l !ormulario no es #DI secundario& Comentarios 1tilice esta propiedad al crear una aplicacin con inter!a0 de m/ltiples documentos 3#DI4& ,n tiempo de e(ecucin* los !ormularios -ue tengan establecida a >rue esta propiedad se mostrarn dentro de un !ormulario #DI& 'os !ormularios #DI secundarios pueden ma8imi0arse* minimi0arse ) despla0arse* siempre dentro del !ormulario #DI primario& 2uando traba(e con !ormularios #DI secundarios* tenga en cuenta lo siguiente: ,n tiempo de e(ecucin* cuando un !ormulario #DI secundario se ma8imi0a* su t.tulo se combina con el del !ormulario #DI primario& ,n tiempo de dise6o* los !ormularios #DI secundarios se muestran de la misma !orma -ue el resto ) slo se mostrarn dentro del !ormulario primario en tiempo de e(ecucin& ,l icono de un !ormulario #DI secundario en la "entana Pro)ecto es distinto de los iconos de otros tipos de !ormularios& 'os !ormularios #DI secundarios no pueden ser modales& ,l entorno operati"o #icroso!t $indo%s controla el tama6o ) la posicin iniciales de los !ormularios #DI secundarios* a menos -ue los estable0ca espec.!icamente en el procedimiento de e"ento 'oad& +i se 5ace re!erencia a un !ormulario #DI secundario antes de cargar el !ormulario #DI primario* ste se cargar automticamente& +in embargo* si se 5ace re!erencia al !ormulario #DI primario antes de cargar un !ormulario #DI secundario* el !ormulario #DI secundario no se cargar& Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales AI AI Parte A: >ipos De Datos* 2onstantes ) Variables >ipos de Datos 1n tipo de dato determina la naturale0a del dominio de "alores -ue puede tomar una "ariable* las operaciones en -ue puede participar ) el espacio de memoria -ue necesita& 'a tabla siguiente muestra los tipos de datos* inclu)endo el tama6o de almacenamiento ) el inter"alo& *ipo de 5ato *ama-o de 4lmacenamiento @ango B)te 1 b)te I a @FF Boolean @ b)tes >rue o False Integer @ b)tes 9A@&HGL a A@&HGH 'ong 3entero largo4 E b)tes 9@&1EH&ELA&GEL a @&1EH&ELA&GEH +ingle 3coma !lotanteO precisin simple4 E b)tes 9A*EI@L@A,AL a 91*EI1@NL,9EF para "alores negati"os7 1*EI1@NL,9 EF a A*EI@L@A,AL para "alores positi"os Double 3coma !lotanteO precisin doble4 L b)tes 91*HNHGNA1AELG@A@,AIL a 9E*NEIGFGEFLE1@EH,9A@E para "alores negati"os7 E*NEIGFGEFLE1@EH,9A@E a 1*HNHGNA1AELG@A@,AIL para "alores positi"os 2urrenc) 3entero a escala4 L b)tes 9N@@&AAH&@IA&GLF&EHH*FLIL a N@@&AAH&@IA&GLF&EHH*FLIH Decimal 1E b)tes RO9 HN&@@L&1G@&F1E&@GE&AAH&FNA&FEA&NFI&AAF sin punto decimal7 RO9 H*N@@L1G@F1E@GEAAHFNAFEANFIAAF con @L posiciones a la derec5a del signo decimal7 el n/mero ms pe-ue6o distinto de cero es RO9 I*IIIIIIIIIIIIIIIIIIIIIIIIII1 Date L b)tes 1 de enero de 1II a A1 de Diciembre de NNNN Cb(ect E b)tes 2ual-uier re!erencia a tipo Cb(ect +tring 3longitud "ariable4 1I b)tes R longitud de la cadena Desde I a @&III millones +tring 3longitud !i(a4 'ongitud de la cadena Desde 1 a GF&EII apro8imadamente Variant 3con n/meros4 1G b)tes 2ual-uier "alor numrico 5asta el inter"alo de un tipo Double Variant 3con caracteres4 @@ b)tes R longitud de la cadena ,l mismo inter"alo para un tipo +tring de longitud "ariable& De!inido por el usuario 3utili0ando >)pe4 ;/mero re-uerido por los elementos ,l inter"alo de cada elemento es el mismo -ue el inter"alo de su tipo de datos Nota: $as matrices de cual1uier tipo de datos re1uieren )= %ytes de memoria m2s cuatro %ytes para cada dimensi!n de matriz( m2s el nmero de %ytes 1ue ocupan los propios datos. Por e-emplo( los datos de una matriz unidimensional 1ue constan de cuatro elementos de datos tipo Integer de dos %ytes cada uno( ocupan oc,o %ytes. $os oc,o %ytes 1ue re1uieren los datos m2s los )@ %ytes Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales A1 A1 necesarios para la matriz suman un re1uisito total de memoria de >) %ytes para dic,a matriz. :n tipo ariant 1ue contiene una matriz re1uiere ') %ytes m2s 1ue la matriz por s# sola. Con*ertir tipos de datos Visual Basic proporciona "arias !unciones de con"ersin -ue puede utili0ar para con"ertir "alores de tipos de datos espec.!icos& Por e(emplo* para con"ertir un "alor a Currency, utilice la !uncin Ccur> "ago"orSemana = Ccur '/oras K "ago"orHora( 'a siguiente tabla muestra las !unciones de con"ersin: %unciones de Conversi$n Convierten una epresi$n en 2bool Boolean 2b)te B)te 2cur 2urrenc) 2date Date 2Dbl Double 2int Integer 2'ng 'ong 2+ng +ingle 2+tr +tring 2"ar Variant 2V,rr ,rror Nota: $os *alores 1ue se pasan a una +unci!n de con*ersi!n de%en ser *2lidos para el tipo de dato de destino o se producir2 un error. Por e-emplo( si intenta con*ertir un tipo &ong en un Integer( el tipo de &ong de%e de estar en el inter*alo *2lido del tipo de dato Integer. Variables 'as "ariables se utili0an para almacenar "alores temporalmente durante la e(ecucin de una aplicacin& 'as "ariables tienen un nombre 3la palabra -ue utili0a para re!erirse al "alor -ue contiene la "ariable4 ) un tipo de dato 3-ue determina la clase de dato -ue la "ariable puede almacenar4& "lmacenamiento y recuperaci!n de datos en *aria%les 1tilice una sentencia de asignacin para reali0ar clculos ) asignar el resultado a una "ariable: #an0anaVendidas < 1I T +e pasa el "alor 1I a la "ariable #an0anasVendidas < #an0anasVendidas R 1 Cbser"e -ue el signo igual del e(emplo es un operador de asignacin* no un operador de igualdad7 el "alor '( se asigna a la "ariable ManAanasVendidas. Declaraci!n de aria%les Declarar una "ariable es decirle al programa algo de antemano& +e declara una "ariable mediante la instruccin 5im, proporcionando un nombre a la "ariable* seg/n la siguiente sinta8is: Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales A@ A@ 5im nombre9"ariable U4s tipoV 'as "ariables -ue se declaran en un procedimiento mediante la sentencia 5im slo e8isten mientras se e(ecuta el procedimiento& 2uando termina el procedimiento* desaparece el "alor de la "ariable& Adems* el "alor de una "ariable de un procedimiento es local a dic5o procedimiento7 es decir* no puede tener acceso a una "ariable de un procedimiento desde otro procedimiento& ,stas caracter.sticas le permiten utili0ar los mismos nombres de "ariables en distintos procedimientos sin preocuparse por posibles con!lictos o modi!icaciones accidentales& ,l nombre de una "ariable debe cumplir con los siguientes re-uisitos: Debe comen0ar con una letra& ;o puede incluir un punto o un carcter de declaracin de tipo 3Y*Q*Z*[*\*]4& ;o debe e8ceder de @FF caracteres& Debe ser /nica en el mismo alcance* -ue es el inter"alo desde el -ue se puede 5acer re!erencia a la "ariable: un procedimiento* !ormulario* etc& 'a clusula opcional 4s tipo de la sentencia 5im le permite de!inir el tipo de dato o de ob(eto de la "ariable -ue "a a declarar& 'os tipos de datos de!inen el tipo de in!ormacin -ue almacena la "ariable& Algunos e(emplos de tipos de datos son !tring, 0nteger ) Currency. 'as "ariables tambin pueden contener ob(etos de Visual Basic u otras aplicaciones& Algunos e(emplos de tipos de ob(eto de Visual Basic* o clases* son Cb(ect* Form1 ) >e8tBo8& Ba) otras !ormas de declarar "ariables: Declarar una "ariable en la seccin Declaraciones de un mdulo de !ormulario* estndar o de clase* en "e0 de un procedimiento* 5ace -ue la "ariable est disponible para todos los procedimientos del mdulo& Declarar una "ariable mediante la palabra cla"e .ublic 5ace -ue est accesible para toda la aplicacin& Declarar una "ariable local mediante la palabra cla"e !tatic conser"a su "alor aun-ue termine el procedimiento& Declaraci!n Impl#cita ;o tiene por -u declarar una "ariable antes de utili0arla& Por e(emplo* podr.a escribir una !uncin donde no 5iciera !alta declarar *empVal antes de utili0arla: Function 6aLG 'num( TempJal = 2bs 'num( 6aLG = Sr'TempJal( End Function Visual Basic crea automticamente una "ariable con ese nombre* -ue puede utili0ar como si la 5ubiera declarado e8pl.citamente& Aun-ue es cmodo* puede pro"ocar errores sutiles en el cdigo si se e-ui"oca de nombre de "ariable& Por e(emplo* suponga -ue 5a escrito esta !uncin: Function 6aLG 'num( TempJal = 2bs 'num( 6aLG = Sr 'TemJal( End Function Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales AA AA A primera "ista* parece igual& Pero como se 5a escrito errneamente la "ariable *empVal en la tercera l.nea* la !uncin de"ol"er siempre cero& 2uando Visual Basic encuentra un nombre nue"o* no puede a"eriguar si realmente desea declarar una "ariable nue"a o simplemente 5a escrito de !orma errnea una "ariable e8istente* por lo -ue crea una "ariable nue"a con ese nombre& Declaraci!n Expl#cita Para e"itar problemas al e-ui"ocarse de nombre en las "ariables* puede con!igurar Visual Basic para -ue le a"ise siempre -ue encuentre un nombre -ue no se 5a)a declarado e8pl.citamente como una "ariable& Para declarar "ariables de !orma e8pl.cita: Inclu)a esta sentencia en la seccin Declaraciones Aenerales del mdulo de clase* de !ormulario o estndar: #ption Explicit 9 o bien 9 ,n el men/ Herramientas, eli(a 7pciones* 5aga clic en la !ic5a (ditor ) acti"e la opcin 5eclaraci$n de variables re2uerida. ,sto inserta automticamente la sentencia 7ption (plicit en los mdulos nue"os* pero no en los )a creados* por lo -ue tendr -ue agregar manualmente 7ption (plicit a los mdulos e8istentes en el pro)ecto& +i 5ubiera tenido e!ecto dic5a instruccin en el mdulo de !ormulario o mdulo estndar -ue contiene la !uncin @a+A, Visual Basic 5abr.a reconocido >empVal ) >emVal como "ariables no declaradas ) 5abr.a generado errores para ambas& Deber.a* por tanto* declara e8pl.citamente >empVal: Function 6aLG 'num( Dim TempJal TempJal = 2bs 'num( 6aLG = Sr 'TemJal( End Fuction "lcance de las aria%les ,l alcance de una "ariable de!ine en -u partes del cdigo son reconocidas& 2uando declara una "ariable en un procedimiento* slo el cdigo de dic5o procedimiento puede tener acceso o modi!icar el "alor de la "ariable7 tiene un alcance local al procedimiento& A "eces* sin embargo* se necesita utili0ar una "ariable con un alcance ms general* como a-uella cu)o "alor est disponible para todos los procedimientos del mismo mdulo o incluso para todos los procedimientos de toda la aplicacin& Visual Basic le permite especi!icar el alcance de una "ariable cuando la declara& (stablecido el alcance de las variables Dependiendo de cmo se declara* una "ariable tiene como alcance un procedimiento 3local4 o un mdulo& 4lcance .rivado .9blico ;i"el de procedimiento 'as "ariables son pri"adas ;o es aplicable& ;o Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales AE AE al procedimiento donde se puede declarar "ariables declaran& p/blicas dentro de un procedimiento& ;i"el de mdulo 'as "ariables son pri"adas 'as "ariables estn al mdulo donde se disponibles para todos declaran& los mdulos& aria%les utilizadas en un procedimiento 'as "ariables al ni"el de procedimiento slo se reconocen en el procedimiento en el -ue se 5an declarado& +e las conoce tambin como "ariables locales& +e declaran mediante las palabras cla"e 5im o !tatic. Por e(emplo: Dim intTemp 2s *nteger 9 o bien 9 Static intContador 2s *nteger 'os "alores de "ariables locales declaradas con !tatic e8isten mientras se e(ecuta la aplicacin* mientras -ue las "ariables declaradas con 5im slo e8isten mientras se e(ecuta el procedimiento& aria%les utilizadas en un m!dulo De !orma predeterminada* una "ariable al ni"el de mdulo est disponible para todos los procedimientos del mdulo* pero no para el cdigo de otros mdulos& 2ree "ariables al ni"el de mdulo declarndolas con la palabra cla"e .rivate en la seccin 5eclaraciones ,enerales al principio del mdulo& Por e(emplo: "rivate intTemp 2s *nteger Al ni"el de mdulo* no 5a) di!erencia entre .rivate ) 5im, pero es pre!erible usar .rivate por-ue contrasta con .ublic ) 5ace -ue el cdigo sea ms !cil de comprender& aria%les utilizadas por todos los m!dulos Para 5acer -ue una "ariable al ni"el de mdulo est disponible para otros mdulos* utilice la palabra cla"e .ublic para declararlas& 'os "alores de las "ariables p/blicas estn disponibles para todos los procedimientos de la aplicacin& Al igual -ue todas las "ariables al ni"el del mdulo* las "ariables p/blicas se declaran en la seccin 5eclaraciones ,enerales al principio del mdulo& Por e(emplo: "ublic intTemp 2s *nteger Nota: ?o puede declarar *aria%les p%licas en un procedimiento( s!lo en la secci!n Declaraciones )enerales de un m!dulo. 2onstantes A menudo "er -ue el cdigo contiene "alores constantes -ue reaparecen una ) otra "e0& C puede -ue el cdigo dependa de ciertos n/meros -ue resulten di!.ciles de recordar 3n/meros -ue* por s. mismos* no tienen un signi!icado ob"io4& ,n estos casos* puede me(orar muc5o la legibilidad del cdigo ) !acilitar su mantenimiento si utili0a constantes& 1na constante es un nombre signi!icati"o -ue sustitu)e a un n/mero o una cadena -ue no Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales AF AF "ar.a& Aun-ue una constante recuerda ligeramente a una "ariable* no puede modi!icar una constante o asignarle un "alor nue"o como ocurre con una "ariable& Ba) dos or.genes para las constantes: 2onstantes intr*nsecas o de'inidas por el sistema proporcionadas por Visual Basic& 'as constantes simblicas o de'inidas por el usuario se declaran mediante la instruccin Const. Creaci!n de sus propias constantes 'a sinta8is para declarar una constante es la siguiente: B.ublicC.rivateD Const nombreSconstante U4s tipoV E e8presin ,l argumento nom%reBconstante es un nombre simblico "lido 3las reglas son las mismas -ue para crear nombres de "ariable4 ) expresi!n est compuesta por constantes ) operadores de cadena o numricos7 sin embargo* no puede utili0ar llamadas a !unciones en expresi!n& 1na instruccin Const puede representar una cantidad matemtica o de !ec5a ) 5ora: Const con"i = M.DNDOP@QOMORPSP "ublic Const con)ax"lanetas 2s *nteger = P Const conFec/aSalida = TDHDHPOT +e puede utili0ar tambin la instruccin Const para de!inir constantes de cadena: "ublic Const conJersion = 1 .S.D..24 Const con!ombreClave = 1Enigma4 Puede colocar ms de una declaracin de constante en una /nica l.nea si las separa con comas: "ublic Const con"i=M.DN9 con)ax"lanetas=P9 con"ob)undial=QE;.P A menudo* la e8presin del lado derec5o del signo igual 3 < 4 es un n/mero o cadena literal* pero tambin puede ser una e8presin -ue d como resultado un n/mero o una cadena 3aun-ue la expresi!n no puede contener llamadas a !unciones4& Puede incluso de!inir constantes en trminos de constantes pre"iamente de!inidas: Const con"i@ = con"i K @ 1na "e0 -ue de!ina las constantes* puede colocarlas en el cdigo para 5acerlo ms legible& Por e(emplo: Static SistemaSolar 'D To con)ax"lanetas( *+ num"ersonas U con"op)undial T/en Exit Sub "lcance de las constantes de+inidas por el usuario 1na instruccin Const tiene igual alcance -ue una declaracin de "ariable ) se le aplican las mismas reglas: Para crear una constante -ue slo e8ista en un procedimiento* declrela dentro del procedimiento& Para crear una constante disponible para todos los procedimientos de un mdulo* pero no para el cdigo -ue est !uera del mdulo* declrela en la seccin 5eclaraciones ,enerales del mdulo& Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales AG AG Para crear una constante disponible en toda la aplicacin* declare la constante en la seccin 5eclaraciones ,enerales de un mdulo estndar ) colo-ue delante de Const la palabra cla"e .ublic. ;o se pueden declarar las constantes p/blicas en un mdulo de clase o de !ormulario& E*itar re+erencias circulares 2omo es posible de!inir constantes en trminos de otras constantes* deber tener cuidado para no establecer un ciclo o re!erencia circular entre dos o ms constantes& +e produce un ciclo cuando se tienen dos o ms constantes p/blicas* cada una de las cuales est de!inida en !uncin de la otra& Por e(emplo: 'En el )=dulo DB "ublic Const con2 = conB K @ ' Disponible en toda la aplicaci=n 'En el )=dulo @B "ublic Const conB = con2 H @ ' Disponible en toda la aplicaci=n +i se produce un ciclo* Visual Basic generar un error cuando intente e(ecutar la aplicacin& ;o puede e(ecutar el cdigo 5asta -ue resuel"a la re!erencia circular& Para e"itar la creacin de un ciclo* restrin(a todas las constantes p/blicas a un /nico mdulo o* al menos* al menor n/mero posible de mdulos& 2on"enciones para ;ombres de 2onstantes ) Variables 'as "ariables se deben de!inir siempre con el menor alcance posible& 'as "ariables globales 3p/blicas4 pueden 5acer lgica de una aplicacin mu) di!.cil de entender& 'as "ariables globales tambin 5acen ms di!.cil mantener ) "ol"er a usar el cdigo& ,n Visual Basic las "ariables pueden tener el alcance siguiente: 4lcance 5eclaraci$n Visible en ;i"el de procedimiento 5im o !tatic en el ,l procedimiento en el Procedimiento* -ue est declarada +ubprocedimiento o Funcin 4lcance 5eclaraci$n Visible en ;i"el de mdulo .rivate en la seccin >odos los procedimientos Declaraciones Aenerales del mdulo de !ormulario de un mdulo de o de cdigo !ormulario o de cdigo 3&!rm* &bas4 :lobal .ublic en la seccin ,n toda de aplicacin Declaraciones Aenerales de un mdulo de cdigo 3&bas4 ,n una aplicacin de Visual Basic* las "ariables globales se deben usar slo cuando no e8ista ninguna otra !orma cmoda de compartir datos entre !ormularios& 2uando 5a)a -ue usar "ariables globales* es con"eniente declararlas todas en un /nico mdulo agrupadas por !unciones ) dar al mdulo un nombre signi!icati"o -ue indi-ue su !inalidad* como P/blicas& Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales AH AH 1na prctica de codi!icacin correcta es escribir cdigo modular siempre -ue sea posible& Por e(emplo* si la aplicacin muestra un cuadro de dilogo* colo-ue todos los controles ) el cdigo necesario para e(ecutar la tarea del dilogo en un /nico !ormulario& ,sto a)uda a tener cdigo de la aplicacin organi0ado en componentes /tiles ) minimi0a la sobrecarga en tiempo de e(ecucin& A e8cepcin de las "ariables globales 3 -ue no se deber.an pasar4* los procedimientos ) !unciones deben operar slo sobre los ob(etos -ue se les pasan& Pre+i-os de alcance de *aria%les A medida -ue aumenta el tama6o del pro)ecto* tambin aumenta la utilidad de reconocer rpidamente el alcance de las "ariables& ,sto se consigue escribiendo un pre!i(o de alcance de una letra delante del pre!i(o de tipo* sin aumentar demasiado la longitud del nombre de las "ariables& 4lcance .re'ijo (jemplo :lobal g gstr;ombre1suario ;i"el de mdulo m mblnProgresoDel2lculo 'ocal del Procedimiento ;inguno dblVelocidad 1na "ariable tiene alcance glo%al si se declara como .ublic en un mdulo estndar o en un mdulo de !ormulario& 1na "ariable tiene alcance de ni*el de m!dulo si se declara como .rivate en un mdulo estndar o en un mdulo de !ormulario* respecti"amente& Nota: $a co,erencia es crucial para usar esta t&cnica de +orma producti*aC el corrector de sintaxis de isual Basic no interceptar2 las *aria%les de ni*el de m!dulo 1ue comience con DpE. Constantes ,l nombre de las constantes se debe escribir en ma)/sculas ) min/sculas* con la letra inicial de cada palabra en ma)/sculas& Aun-ue las constantes estndar de Visual Basic no inclu)en in!ormacin de tipo de datos ) el alcance de una constante& Para los nombres de constantes* se deben seguir las mismas normas -ue para las "ariables& Por e(emplo: mint)5x,ista-suario I ,Lmite de entradas m5ximas para la I lista de usuarios I 'valor entero9 local del m=dulo( gstr!ueva,Lnea I Car5cter de nueva lLnea I 'cadena9 global de la aplicaci=n( aria%les Declarar todas las "ariables a5orra tiempo de programacin por-ue reduce el n/mero de errores debidos a nombres de "ariables errados 3por e(emplo* a;ombre1suario>mp !rente a s;ombre1suario>mp !rente a s;ombre1suario>emp4& ,n la !ic5a (ditor del cuadro de dilogo 7pciones* acti"e la opcin 5eclaraci$n de variables re2uerida. 'a instruccin 7ption (plicit re-uiere -ue declare todas las "ariables del programa de Visual Basic& 'as "ariables deben lle"ar un pre!i(o para indicar su tipo de datos& Cpcionalmente* ) en especial para programas largos* el pre!i(o se puede ampliar para indicar el alcance de la "ariable& Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales AL AL .ipos de datos de *aria%les 1se los siguientes pre!i(os para indicar el tipo de datos de una "ariable& *ipo de datos .re'ijo (jemplo Boolean bln bln,ncontrado B)te b)t b)tDatosImagen Cb(eto 2ollection col col$idgets 2urrenc) cur curIngresos Date 3>ime4 dtm dtmInicio Double dbl dbl>olerancia ,rror err err;/mDeCrden Integer int int2antidad 'ong lng lngDistancia Cb(ect ob( ob(Acti"o +ingle sng sng#edia +tring str str;ombreF De!inido por el usuario udt udt,mpleado Variant "nt "nt25ecK+um ?om%res descripti*os de *aria%les y procedimientos ,l cuerpo de un nombre de "ariable o procedimiento se debe escribir en ma)/sculas ) min/sculas ) debe tener la longitud necesaria para describir su !uncionalidad& Adems* los nombres de !unciones deben empe0ar con un "erbo* como Iniciar;ombre#atri0 o 2errarDilogo& Para nombres -ue se usen con !recuencia o para trminos largos* se recomienda usar abre"iaturas estndar para -ue los nombres tengan una longitud ra0onable& ,n general* los nombres de "ariables con ms de A@ caracteres pueden ser di!.ciles de leer en pantalla V:A& 2uando se usen abre"iaturas* 5a) -ue asegurarse de -ue sean co5erentes en toda la aplicacin& Alterar aleatoriamente entre 2nt ) 2ontar dentro de un pro)ecto pro"oca una con!usin innecesaria& .ipos de+inidos por el usuario ,n un pro)ecto grande con muc5os tipos de!inidos por el usuario* suele ser /til dar a cada uno de estos tipos un pre!i(o de tres caracteres& +i estos pre!i(os comien0an con Mu=* ser !cil reconocerlos cuando se est traba(ando con tipos de!inidos por el usuario& Por e(emplo* Mucli= se podr.a usar como pre!i(o para las "ariables de un tipo 2liente de!inido por el usuario& >ipos Adicionales de Variables 3egistros o Estructuras +on tipos de datos de!inidos por el usuario& ,s bsicamente un con(unto de "arios datos de tipos elementales agrupados ba(o una denominacin com/n& Debe declararse en la seccin 5eclaraciones ,enerales de un mdulo& +e usa la palabra reser"ada *ype. Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales AN AN !intais .ype ?om%reDel?ue*o.ipo ?om%reDelElemento' "s .ipoDato ?om%reDelElemento) "s .ipoDato ?om%reDelElemento> "s .ipoDato ... ... End .ype (jemplo T>pe 6egEmpleado EmpC=digo 2s *nteger Emp!ombre 2s String K N. EmpCargo 2s String K DO End T>pe "rreglo de aria%les 1n arreglo es una coleccin de elementos del mismo tipo con un nombre com/n& 'os elementos son identi!icados por el nombre com/n ) un .ndice& !intais Dim ?om%reDel"rreglo6 Dimensi!n'( Dimensi!n)( ... 7 "s .ipoDeDato Visual Basic soporta 5asta GI dimensiones& Al declarar las dimensiones se puede indicar un solo n/mero* en cu)o caso se entiende -ue dic5a dimensin "a de cero 5asta el n/mero indicado& >ambin es posible indicar e8pl.citamente el inicio ) trmino de la dimensin& (jemplo Dim ,istaD '@.( 2s *nteger ' @D elementos9 del . al @. Dim ,ista@ 'D to @.( 2s *nteger ' @. elementos9 del D al @. Dim Tabla 'D to D.9 D to @.( 2s String ' Tabla de D. x @. "rreglos Din2micos Ba) situaciones en las cuales se desea usar un arreglo* pero al momento del dise6o no se sabe sus dimensiones& Para este tipo de situaciones Visual Basic permite declaraciones de arreglos del siguiente modo: Dim x ' ( 2s *nteger ... ... 6edim x 'lst,ista.,istCount( Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales EI EI 2uando se redimensiona un arreglo* los "alores almacenados anteriormente se pierden* por-ue cada elemento es reiniciali0ado con cero o null dependiendo del tipo de dato del elemento& +i se desea preser"ar los "alores debemos usar la palabra cla"e .reserve en la sentencia de redimensionamiento& 6edim "reserve x ' int!CmeroDeElementos ( CP,DADCD,+ "ritm&ticos ^ ,8ponenciacin ? #ultiplicacin O Di"isin Di"isin entera #od Desiduo entero 3,(m: A #od B4 R +uma - Desta Q 2oncatenacin de cadenas Comparaci!n < Igual _` Distinto #enor -ue _< #enor o igual `< #a)or o igual 'iKe 2ompara dos cadenas ? 2ero o ms caracteres 3,(m: cad 'iKe Mma?=4 ? 2ual-uier carcter \ 2ual-uier d.gito 3I9N4 UlistaV cual-uier carcter en lista UalistaV cual-uier carcter -ue no esta en lista Is 1sado para comparar dos "ariables de re!erencia a ob(etos $!gicos And MW= lgico Cr MC= lgico Jor MC= ,8clusi"o ;ot ;egacin Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales E1 E1 Parte E: ,structuras de 2ontrol ,structuras de 2ontrol 'as estructuras de control le permiten controlar el !lu(o de e(ecucin del programa& >enemos dos tipos de estructuras de control: ,structuras de decisin ,structuras de bucle Estructuras de Decisi!n 'os procedimientos de Visual Basic pueden probar condiciones )* dependiendo de los resultados* reali0ar di!erentes operaciones& ,ntre las estructuras de decisin -ue acepta Visual Basic se inclu)en las siguientes: I+....,en I+....,en...Else 5elect Case 0'...*hen 1se la estructura 0'...*hen para e(ecutar una o ms instrucciones basadas en una condicin& Puede utili0ar la sinta8is de una l.nea o un blo-ue de "arias l.neas: I+ condici!n T$en 5entencias I+ condici!n T$en 5entencias "nd I+ Condicin normalmente es una comparacin* pero puede ser cual-uier e8presin -ue d como resultado un "alor numrico& Visual Basic interpreta este "alor como *rue o %alse7 un "alor numrico cero es %alse ) se considera *rue cual-uier "alor numrico distinto de cero& +i condicin es *rue, Visual Basic e(ecuta todas las sentencias -ue siguen a la palabra cla"e *hen. Puede utili0ar sinta8is de una l.nea o de "arias l.neas para e(ecutar una sentencia basada en una condicin* los siguientes dos e(emplos son e-ui"alentes: *+ cualuierFec/a V !oF T/en CualuierFec/a = !oF *+ cualuierFec/a V !oF T/en CualuierFec/a = !oF End *+ Cbser"e -ue el !ormato de una /nica l.nea de 0'...*hen no utili0a la instruccin (nd 0'. +i se desea e(ecutar ms de una l.nea de cdigo cuando condicin sea *rue, debe utili0ar la sinta8is de blo-ue de "arias l.neas 0'...*hen...(nd 0'.
*+ cualuierFec/a V !oF T/en Parte E: ,structuras de control 9 Dann) A& #atta :on0ales Parte E: ,structuras de control 9 Dann) A& #atta :on0ales E@ E@ CualuierFec/a = !oF TimerD.Enabled = False I Desactiva el control Timer. End *+ *+ c/&2lumno-!*.Jalue=D T/en txtCosto = Format 'txtCostoK..S.94Fixed4( txtC=digo.Enabled = True End *+ 0'...*hen...(lse 1tilice un blo-ue 0'...*he...(lse para de!inir "arios blo-ues de sentencias* uno de los cuales se e(ecutar: I+ condici!n' T$en F%lo1ue de sentencias 'G ,"lseI+ condici!n) T$en F%lo1ue de sentencias )GG ... ,"lse F%lo1ue de sentencias nGG "nd I+ Visual Basic e"al/a primero condici$n6. +i es %alse* Visual Basic procede a e"aluar condici$nF ) as. sucesi"amente* 5asta -ue encuentre una condicin *rue. 2uando encuentra una condicin *rue, Visual Basic e(ecuta el blo-ue de instrucciones correspondientes ) despus e(ecuta el cdigo -ue sigue a (nd 0'. Cpcionalmente* puede incluir un blo-ue de instrucciones (lse, -ue Visual Basic e(ecutar sin ninguna de las condiciones es *rue. 0'...*hen...(lse0' es un caso especial de 0'...*hen...(lse. Cbser"e -ue puede tener cual-uier n/mero de clusula (lse0' o ninguna& Puede incluir una clusula (lse sin tener en cuenta si tiene o no clusula (lse0'. Por e(emplo* la aplicacin podr.a reali0ar distintas acciones dependiendo del control en -ue se 5a)a 5ec5o clic de una matri0 de controles de men/: "rivate Sub mnuCut%Clic& '*ndex 2s *nteger( *+ *ndex = . T/en I Comando Cortar Cop>2ctiveControl I ,lama a procedimientos generales Clear2ctiveControl Else*+ *ndex = D T/en I Comando Copiar Cop>2ctiveControl Else*+ *ndex = @ T/en I Comando Borrar Clear2ctiveControl Else I Comando "egar "aste2ctiveControl End *+ End Sub Parte E: ,structuras de control 9 Dann) A& #atta :on0ales Parte E: ,structuras de control 9 Dann) A& #atta :on0ales EA EA *+ Clave-suario=4DS*4 T/en I "ermite al usuario entrar al sistema ... ... Else I )ostrar un mensa?e advirtiendo error en la clave ... ... End *+ "rivate Sub DeterminaCondici=n ' ( *+ Jal 'txt"romedio( U=DM T/en txtCondici=n = 12probado4 Else*+ Jal 'txt"romedio( U= D. T/en txtCondici=n = 12sistente4 Else txtCondici=n = 1Desaprobado4 End *+ End Sub Cbser"e -ue siempre puede agregar ms clusulas (lse0' a la estructura 0'...*hen. +in embargo* esta sinta8is puede resultar tediosa de escribir cuando cada (lse0' compara la misma e8presin con un "alor distinto& Para estas situaciones* puede utili0ar la estructura de decisin !elect Case. !elect Case Visual Basic proporciona la estructura !elect Case como alternati"a a 0'...*hen...(lse para e(ecutar selecti"amente un blo-ue de sentencias entre "arios blo-ues& 'a sentencia !elect Case o!rece posibilidades similares a la instruccin 0'...*hen...(lse, pero 5ace -ue el cdigo sea ms legible cuando 5a) "arias opciones& 'a estructura !elect Case !unciona con una /nica e8presin de prueba -ue se e"al/a una "e0 solamente* al principio de la estructura& Visual Basic compara el resultado de esta e8presin con los "alores de cada Case de la estructura& +i 5a) una coincidencia* e(ecuta el blo-ue de sentencias asociado a ese Case> #elec Case expresi!nBprue%a ,Case listaBexpresiones' F%lo1ue de sentencias 'GG ,Case listaBexpresiones) F%lo1ue de sentencias )GG . . . ,Case "lse F%lo1ue de sentencias nGG "nd #elect 2ada lista_expresiones es una lista de uno a ms "alores& +i 5a) ms de un "alor en una lista* se separan los "alores con comas& 2ada blo-.e de sentencias contiene cero o ms instrucciones& +i ms de un Case coincide con la e8presin de prueba* slo se e(ecutar el blo-ue de instrucciones asociado Parte E: ,structuras de control 9 Dann) A& #atta :on0ales Parte E: ,structuras de control 9 Dann) A& #atta :on0ales EE EE con la primera coincidencia& Visual Basic e(ecuta las instrucciones de la clusula 3opcional4 Case (lse si ning/n "alor de la lista de e8presiones coincide con la e8presin de prueba& Por e(emplo* suponga -ue agrega otro comando al men/ (dici$n en el e(emplo 0'...*hen...(lse. Podr.a agregar otra clusula (lse0' o podr.a escribir la !uncin con !elect Case> "rivate Sub mnuCut%Clic& '*ndex 2s *nteger( Select Case *ndex Case . I Comando Cortar Cop>2ctiveControl I ,lama a procedimientos generales Clear2ctiveControl Case D I Comando copiar. Cop>2ctiveControl Case @ I Comando borrar. Clear2ctiveControl Case M I Comando "egar. "aste2ctiveControl Case Else +rmFind.S/oF I )uestra el cuadro de I di5logo Buscar. End Select End Sub Select Case Tipo-suario Case 1Supervisor4 I "roporciona al usuario privilegios de Supervisor ... ... Case 1-suario4 I "roporciona al usuario privilegios de -suario ... ... Case Else I "roporciona al usuario privilegio de invitado ... ... End Select Cbser"e -ue la estructura !elect Case e"al/a una e8presin cada "e0 -ue al principio de la estructura& Por el contrario* la estructura 0'...*hen...(lse puede e"aluar una e8presin di!erente en cada sentencia (lse0'. +lo puede sustituir una esructura 0'...*hen...(lse con una estructura !elect Case si la intruccin 0' ) cada instruccin (lse0' e"al/a la misma e8presin& Parte E: ,structuras de control 9 Dann) A& #atta :on0ales Parte E: ,structuras de control 9 Dann) A& #atta :on0ales EF EF 7tros (jemplos *+ Jentas U D..... T/en strDscto = Format '..D.9 1Fixed4( Else*+ Jentas U O.... T/en strDscto = Format '...O9 1Fixed4( Else strDscto = Format '...@9 1Fixed4( End *+ Select Case Cantidad Case D sngDscto = ... Case @9 M sngDscto = ...O Case N To Q sngDscto = ..D. Case Else sngDscto = ..@. End Select int6pta = )sgBox '13uarda cambios antes de salir4 9 vb<es!o( Select Case int6pta Case vb<es 3uardarCambios -nload )e Case vb!o -nload )e End Select Estrucuras de 3epeticion 'as estructuras de repeticin o bucle le permiten e(ecutar una o ms l.neas de cdigo repetidamente& 'as estructuras de repeticin -ue acepta Visual Basic son: Do&&&'oop For&&&;e8t For ,ac5&&&;e8t 5o...#oop 1tilice el bucle 5o para e(ecutar un blo-ue de sentencias un n/mero inde!inido de "eces& Ba) algunas "ariantes en la sentencia 5o...#oop, pero cada una e"al/a una condicin numrica para determinar si Parte E: ,structuras de control 9 Dann) A& #atta :on0ales Parte E: ,structuras de control 9 Dann) A& #atta :on0ales EG EG contin/a la e(ecucin& 2omo ocurre con 0'...*hen, la condicin debe ser un "alor o una e8presin -ue d como resultado %alse 3cero4 o *rue 3distinto de cero4& ,n el siguiente e(emplo de 5o...#oop, las sentencias se e(ecutan siempre ) cuando condicin sea *rue> Do /$ile condici!n 5entencias &oop 2uando Visual Basic e(ecuta este bucle 5o, primero e"al/a condicin. +i condicin es %alse 3cero4* se salta todas las sentencias. +i es *rue 3distinto de cero4 Visual Basic e(ecuta las sentencias* "uel"e a la instruccin 5o =hile ) prueba la condicin de nue"o& Por tanto* el bucle se puede e(ecutar cual-uier n/mero de "eces* siempre ) cuando condicin sea distinta de cero o *rue. ;unca se e(ecutan las sentencias si condicin es %alse inicialmente& Por e(emplo* este procedimiento cuenta las "eces -ue se repite una cadena destino dentro de otra cadena repitiendo el bucle tantas "eces como se encuentre la cadena de destino: Function ContarCadenas 'cadenalarga9 destino( Dim posici=n9 contador posici=n = D Do E/ile *nStr 'posici=n9 cadenalarga9 destino( posici=n = *nStr 'posici=n9 cadenalarga9 destino(;D contador = contador ; D ,oop ContarCadenas = contador End Function +i la cadena destino no est en la otra cadena* 0n!tr de"uel"e I ) no se e(ecuta el bucle& Ctra "ariante de la instruccin 5o...#oop e(ecuta las sentencias primero ) prueba la condicin despus de cada e(ecucin& ,sta "ariacin garanti0a al menos una e(ecucin de sentencias: Do 5entencias &oop /$ile condici!n Ba) otras dos "ariantes anlogas a las dos anteriores* e8cepto en -ue repiten el bucle siempre ) cuando condicin sea %alse en "e0 de *rue. Hace el bucle cero o m?s veces Hace el bucle al menos una veA Do Until condici!n Do 5entencias 5entencias &oop &oop Until condici!n Parte E: ,structuras de control 9 Dann) A& #atta :on0ales Parte E: ,structuras de control 9 Dann) A& #atta :on0ales EH EH %or...&et 'os bucles 5o !uncionan bien cuando no se sabe cuntas "eces se necesitar e(ecutar las sentencias del bucle& +in embargo* cuando se sabe -ue se "a a e(ecutar las sentencias un n/mero determinado de "eces* es me(or elegir el bucle %or...&et. A di!erencia del bucle 5o, el bucle %or utili0a una "ariable llamada contador -ue incrementa o reduce su "alor en cada repeticin del bucle& 'a sinta8is es la siguiente: For contador H iniciar To +inalizar F#tep incrementoG 5entencias Next FcontadorG 'os argumentos contador, iniciar, 'inaliAar e incremento son todos numricos& Nota: El argumento incremento puede ser positi*o o negati*o. 5i incremento es positi*o( iniciar de%e ser menor o igual 1ue +inali0ar o no se e-ecutar2n las sentencias del %ucle. 5i incremento es negati*o( iniciar de%e ser mayor o igual 1ue +inali0ar para 1ue se e-ecute el cuerpo del %ucle. 5i no se esta%lece #tep, el *alor predeterminado de incremento es '. Al e(ecutar el bucle %or, Visual Basic: 1& ,stablece contador al mismo "alor -ue iniciar. @& 2omprueba si contador es ma)or -ue +inali0ar. +i lo es* Visual Basic sale del bucle& 3+i incremento es negati"o* Visual Basic comprueba si contador es menor -ue +inali0ar.4 A& ,(ecuta las sentencias. E& Incrementa contador en 1 o en incremento, si se especi!ic& F& Depite los pasos @ a E& ,ste cdigo imprime los nombres de todas las !uentes de pantalla disponibles: "rivate Sub FormAClic& ' ( Dim * 2s *nteger For i = . To Screen.FontCount "rint Screen.Fonts 'i( !ext End Sub %or (ach...&et ,l bucle %or (ach...&et es similar al bucle %or...&et, pero repite un grupo de sentencia por cada elemento de una coleccin de ob(etos o de una matri0 en "e0 de repetir las sentencias un n/mero especi!icado de "eces& ,sto resulta especialmente /til si no se sabe cuntos elementos 5a) en la coleccin& Be a-u. la sinta8is del bucle %or (ach...&et> For "ac$ elemento In grupo 5entencias Next elemento Por e(emplo* el siguiente procedimiento !ub abre la base de datos Biblio&mdb ) agrega el nombre de cada tabla a un cuadro de lista& Sub ,istTableDe+s ' ( Dim ob?Db 2s Database Parte E: ,structuras de control 9 Dann) A& #atta :on0ales Parte E: ,structuras de control 9 Dann) A& #atta :on0ales EL EL Set ob?Db = #penDatabase'"cBH2rc/ivos de programaHDevstudioH" W % "vbHbiblio.mdb"9 True9 False( For Eac/ TableDe+ *n ob?Db.TableDe+s ' ( ,istD.2dd*tem TableDe+.!ame !ext TableDe+ End Sub >enga en cuenta las restricciones siguientes cuando utilice %or (ach...&et> Para las colecciones* elemento slo puede ser una "ariable Variant, una "ariable 7bject genrica o un ob(eto mostrado en el ,8aminador de ob(etos& Para las matrices* elemento slo puede ser una "ariable Variant. ;o puede utili0ar %or (ach...&et con una matri0 de tipos de!inidos por el usuario por-ue un Variant no puede contener un tipo de!inido por el usuario& ,l siguiente e(emplo 5abilita todos los C.adro de Texto del !ormulario> "rivate Sub )odoEdici=n ' ( Dim control For Eac/ control *n +ormD.Controls *+ T>pe#+ control *s TextBox T/en Control.Enabled = True End *+ !ext control End Sub 5alida de una Estructura de Control 'a instruccin (it le permite salir directamente de un bucle %or o de un bucle 5o. 'a sinta8is de la sentencia (it es sencilla: (it %or puede aparecer tantas "eces como sea necesario dentro de un bucle %or ) (it 5o puede aparecer tantas "eces como sea necesario dentro de un bucle 5o> For contador H iniciar To +inalizar F#tep incrementoG F%lo1ue sentenciasG F"xit ForG F%lo1ue sentenciasG Next FcontadorG Do FI/$ile J UntilK condici!nG F%lo1ue de sentenciasG F"xit DoG F%lo1ue de sentenciasG &oop Do F%lo1ue de sentenciasG F"xit DoG F%lo1ue de sentenciasG &oop FI/$ile J UntilK condici!nG (it %or ) (it 5o son mu) /tiles )a -ue* algunas "eces* resulta apropiado salir inmediatamente de un bucle sin reali0ar ms iteraciones o sentencias dentro del bucle& Parte E: ,structuras de control 9 Dann) A& #atta :on0ales Parte E: ,structuras de control 9 Dann) A& #atta :on0ales EN EN 2uando utilice la instruccin (it para salir de un bucle* el "alor de la "ariable contador di!iere* dependiendo de cmo 5a)a salido del bucle: 2uando termina un bucle* la "ariable contador contiene el "alor del l.mite superior ms el paso& 2uando sale de un bucle prematuramente* la "ariable contador conser"a su "alor seg/n las reglas usuales del alcance& 2uando sale antes del !inal de una coleccin* la "ariable contador contiene &othing si se trata de un tipo de dato 7bject ) (mpty si es un tipo de dato Variant. Parte E: ,structuras de control 9 Dann) A& #atta :on0ales Parte E: ,structuras de control 9 Dann) A& #atta :on0ales FI FI Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 2ontrol #arco 3Frame4 ,ste control permite agrupar otros controles para darle ma)or !uncionalidad a la inter!a0& 'os controles Botones de 7pci$n necesariamente tienen -ue estar agrupados por el control Marco. Para agrupar controles* dibu(e primero el control #arco )* a continuacin* dibu(e los controles dentro de #arco& Propiedades 2aption >.tulo de marco& ,nabled Determina si est 5abilitado para responder a las acciones del usuario& ;ame ;ombre del control& Visible Determina si el Marco ) los controles -ue contiene estn "isibles o no& 2ontrol 2asilla de Veri!icacin 325ecKBo84 'as casillas de "eri!icacin se utili0an para proporcionar al usuario opciones de tipo +iO;o o VerdaderoOFalso& 2uando el usuario selecciona una opcin 3acti"a la casilla4* aparece una marca de "eri!icacin 34 dentro de la casilla& Propiedades 2aption Descripcin -ue acompa6a a la casilla& ,nabled >rueOFalse& Determina si est 5abilitado para responder a las acciones del usuario& ;ame ;ombre del control& Value I X 1nc5ecKed 3Vac.o* no marcado4 1 X 25ecKed 3#arcado4 @ X :ra)ed 3:ris* Inde!inido4 Visible Determina si la casilla est "isible o no& E*entos 2licK Ccurre cuando el usuario 5ace clic sobre la casilla& 2ontrol Botn de Cpcin 3CptionButton4 Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales F1 F1 ,stos controles se utili0an para -ue el usuario seleccione una opcin de un grupo opciones& 'a opcin seleccionada tiene un punto en el centro& Propiedades 2aption Descripcin -ue acompa6a a la opcin& ,nabled >rueOFalse& Determina si est 5abilitado para responder a las acciones del usuario& ;ame ;ombre del control& Value >rueOFalse* marcado o no marcado& Visible >rueOFalse& Determina si el botn est "isible o no& E*entos 2licK Ccurre cuando el usuario 5ace clic sobre el botn& Arreglo de 2ontroles 2uando creamos un arreglo de controles* todos los controles -ue !orman el arreglo deben tener el mismo nombre 3Propiedad ;ame4* la propiedad 0nde establece el .ndice de cada control en el arreglo* esta propiedad comien0a desde I& 1n arreglo de controles es un grupo de controles -ue comparten el mismo: >ipo de ob(eto ;ombre del control Procedimientos de e"ento C!digo m2s +2cil de escri%ir y mantener 'os arreglos de controles 5ace -ue el cdigo sea ms !cil de escribir ) mantener debido a -ue solo escribe un solo procedimiento de e"ento para todos los controles pertenecientes al arreglo* el parmetro 0nde del procedimiento de e"ento determina desde -ue control ocurri el e"ento& Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales F@ F@ C!digo m2s e+iciente 'os arreglos de controles 5acen -ue el cdigo sea ms e!iciente ) me(oran el rendimiento de la aplicacin debido a -ue usa menos recursos del sistema -ue los controles indi"iduales& LC!mo se crea un arreglo de controlesM 'uego de crear ) establecer el nombre del primer control* tiene dos alternati"as: Mtodo 6 1& 2opiar el primer control al portapapeles& @& 'uego pegar el control de portapapeles en el !ormulario& Visual Basic le preguntar si desea crear un arreglo de controles& A& Depita el paso @ 5asta completar el arreglo& Mtodo F 1& Dibu(e el siguiente control ) estable0ca su nombre igual al del primer control& Visual Basic le preguntar si desea crear un arreglo de controles& @& Depita el paso 1 5asta completar el arreglo& (jemplo 'a inter!a0 mostrada tiene un arreglo de controles para seleccionar el reporte* el procedimiento de e"ento es el mismo para cual-uier elemento del arreglo& ,l cdigo para el e"ento clic es: "rivate Sub opt6eporte%Clic&'*ndex 2s *nteger( Select Case *ndex Case .9 D +ra6ango.Enabled = False lblDesde.Enabled = False lblHasta.Enabled = False txtDesde.Enabled = False txtHasta.Enabled = False Case @ +ra6ango.Enabled = True lblDesde.Enabled = True Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales FA FA CptDeporte314 CptDeporte3I4 CptDeporte3@4 lblHasta.Enabled = True txtDesde.Enabled = True txtHasta.Enabled = True txtDesde.SetFocus End Select End Sub 2ontrol Barra de Despla0amiento Barra de Despla0amiento Bori0ontal 3B+crollBar4 Barra de Despla0amiento Vertical 3V+crollBar4 +on usuados con !recuencia para permitir rpidos despla0amientos a tra"s de una lista grande de items& Por e(emplo: arc5i"os* indicadores de posicin actual de una escala de "alores* indicadores de "olumen en un sistema de audio& Propiedades 'arge25ange De 1 a A@HGH& 2antidad de cambio cuando el usuario 5ace clic en el despla0amiento largo& #a8 #8imo "alor de despla0amiento cuando el botn se encuentra en la posicin ms alta& Valor predeterminado: A@HGH& #in #.nimo "alor del despla0amiento cuando el botn se encuentra en la posicin ms ba(a& Valor predeterminado: I& ;ame ;ombre ddel control& +mall25ange De 1 a A@HGH& 2antidad de cambio cuando el usuario 5ace clic en la !lec5a de despla0amiento& Value Valor actual en la escala de "alores& E*ento 25ange Ccurre cuando el usuario se despla0a o se cambia el "alor de la propiedad Value& 2ontrol 2uadro de 'ista 3'istBo84 1n control &ist1ox muestra una lista de elementos entre los cuales el usuario puede seleccionar uno o ms elementos& +i el n/mero de elementos supera el n/mero -ue puede mostrarse* se agregar automticamente una barra de despla0amiento al control &ist1ox. 'a propiedad &ist es un arreglo -ue contiene los elementos de la lista* ) comien0a con .ndice I& 'a propiedad &istCo.nt establece el n/mero total de elementos de la lista& 'a propiedad &istIndex contiene el .ndice del elemento seleccionado* el cual es un n/mero entre I 3primer elemento4 ) el n/mero total de elementos en la lista X1 3&istCo.nt 2 '4& +i no se selecciona ning/n elemento* el "alor de la propiedad &istIndex ser X1& 'a propiedad Ne%Index contiene el .ndice del /ltimo elemento a6adido a la lista& ,sto puede ser /til si desea 5acer algo con el elemento a6adido* por e(emplo* -ue sea el elemento actualmente seleccionado& Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales FE FE Propiedades ,nabled >rueOFalse& Determina si el control responde a las acciones del usuario& 'ist Arreglo con los elementos de la lista& 'ist2ount ;/mero de elementos de la lista& 'istInde8 ,lemento seleccionado& #ulti+elect ,stablece si es posible seleccionar "arios elementos o uno solo& ;ame ;ombre del control& ;e%Inde8 Indice del /ltimo elemento a6adido al 2uadro de 'ista& +elected Arreglo de "alores lgicos paralelo ) del mismo tama6o al arreglo list* indica -ue elementos 5an sido seleccionados 3>rue4 de la lista& +e utili0a en lugar de #ist0nde cuando establecemos la propiedad Multiselect en 1 @& +orted >rueOFalse& ,stablece los elementos se ordenan al!abticamente& +t)le ,stablece el comportamiento del control& >e8t De"uel"e el elemento seleccionado en el cuadro de lista7 el "alor de retorno es siempre e-ui"alente al -ue de"uel"e la e8presin 'ist3'istInde84& ,s de slo lectura en tiempo de dise6o ) es de slo lectura en tiempo de e(ecucin& M&todos AddItem Permite a6adir nue"os elementos a la lista& Demo"eItem Permite eliminar elementos de la lista& E*entos 2licK Ccurre cuando el usuario interact/a con el control& E-emplos Muestra en el Cuadro de *eto tt,aseosa el elemento seleccionado "rivate Sub lst3aseosas%Clic&'( txt3aseosa.Text = lst3aseosas.Text End Sub Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales FF FF lst:aseosas t8t:aseosa cmdAgregar cmd,liminar 4-ade un nuevo elemento al Cuadro de #ista lst,aseosas "rivate Sub cmd2gregar%Clic&'( Dim str!uevoElemento 2s String str!uevoElemento = *nputBox'"*ngrese una nueva gaseosaB"9 % "!ueva gaseosa"( *+ Trim'str!uevoElemento( VU "" T/en lst3aseosas.2dd*tem str!uevoElemento End *+ End Sub (limina el elemento actual del Cuadro de #ista lst,aseosas "rivate Sub cmdEliminar%Clic&'( *+ lst3aseosas.,ist*ndex VU AD T/en lst3aseosas.6emove*tem lst3aseosas.,ist*ndex End *+ End Sub 2ontrol 2uadro 2ombinado 32omboBo84 1n control ComboBo combina las caracter.sticas de un control *etBo ) un control #istBo) los usuarios pueden introducir in!ormacin en la parte del cuadro de te8to o seleccionar un elemento en la parte de cuadro de lista del control& Para agregar o eliminar elementos en un control ComboBo, se usa el mtodo 4dd0tem o @emove0tem. ,stable0ca las propiedades #ist, #istCount ) #ist0nde para permitir a un usuario tener acceso a los elementos de un control ComboBo. 2omo alternati"a* puede agregar elementos a la lista mediante la propiedad #ist en tiempo de dise6o& Propiedades ,nabled >rueOFalse& Determina si el control responde a las acciones del usuario& 'ist Arreglo con los elementos de la lista& 'ist2ount ;/mero de elementos de la lista 'istInde8 ,lemento seleccionado& ;ame ;ombre del control& ;e%Inde8 Indice del /ltimo elemento a6adido al cuadro de lista& +orted >rueOFalse& ,stablece si los elementos se ordenan al!abticamente& +t)le ,stablece el comportamiento del control& >e8t >e8to -ue contiene el control& M&todos AddItem Permite a6adir nue"os elementos a la lista& Demo"eItem Permite eliminar elementos de la lista& E*entos 2licK Ccurre cuando el usuario interact/a con la lista del control& Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales FG FG 25ange Ccurre cuando el "alor de la propiedad *et es modi!icado& Propiedad 5tyle ,sta propiedad establece el comportamiento del control ComboBo, ) puede tomar los siguientes "alores: Constante Valor 5escripci$n "b2omboDropDo%n I 3Predeterminado4 2uadro combinado desplegable& Inclu)e una lista desplegable ) un cuadro de te8to&,l 1suario puede seleccionar datos en la lista o escribir en cuadro de te8to& "b2ombo+imple 1 2uadro combinado simple& Inclu)e un cuadro de te8to ) una lista* -ue no se despliega& ,l usuario puede seleccionar datos en la lista o escribir en el cuadro de te8to& ,l tama6o de un cuadro combinado simple inclu)e las partes de edicin ) de lista& De !orma predeterminada* el tama6o de un cuadro combinado simple no muestra ning/n elemento de la lista& Incremente la propiedad Height para mostrar ms elementos de la lista& "b2omboDrop9Do%n'ist @ 'ista desplegable& ,ste estilo slo permite la seleccin desde la lista desplegable& E-emplo ,n la siguiente inter!a0 se ilustra el uso del control ComboBo ) la propiedad !tyle. Muestra la gaseosa seleccionada por el usuario en la eti2ueta lbl,aseosa "rivate Sub cbo3aseosas%Clic&'( lbl3aseosa.Caption = cbo3aseosas.Text End Sub Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales FH FH cbo:aseosas +t)le<I cbo,ncuestado s +t)le<1 cbo2iudades +t)le<@ lbl:aseosa lbl,ncuestado lbl2iudad 4ctualiAa la eti2ueta lbl,aseosa cuando el usuario modi'ica el control cbo,aseosas "rivate Sub cbo3aseosas%C/ange'( lbl3aseosa.Caption = cbo3aseosas.Text End Sub Muestra el encuestado seleccionado por el usuario en la eti2ueta lbl(ncuestado "rivate Sub cboEncuestados%Clic&'( lblEncuestado.Caption = cboEncuestados.Text End Sub Muestra en la eti2ueta lblCiudad el elemento seleccionado del control cboCiudades "rivate Sub cboCiudades%Clic&'( lblCiudad.Caption = cboCiudades.Text End Sub Procedimientos ,8isten dos tipos de procedimientos con los -ue se traba(a en Visual Basic: los procedimientos de e"ento ) los procedimientos generales& Procedimientos de ,"ento Visual Basic in"oca automticamente procedimientos de e"ento en respuesta a acciones del teclado* del ratn o del sistema& Por e(emplo* los botones de comando tienen un procedimiento de e"ento 2licK& ,l cdigo -ue se escriba en el procedimiento de e"ento 2licK es e(ecutado cuando el usuario 5aga clic en un botn de comando& 2ada control tiene un con(unto !i(o de procedimientos de e"ento& 'os procedimientos de e"ento para cada control son mostrados en un cuadro de lista despegable en la "entana de cdigo& Procedimientos :enerales 'os procedimientos generales son procedimientos !ub o %unction -ue son creados para -ue lle"en a cabo tareas espec.!icas* estos deben ser in"ocados de manera e8pl.cita& Para crear un procedimiento general* se debe abrir la "entana de cdigo ) 5acer clic en la orden 4gregar procedimiento del men/ Herramientas& >ambin se puede crear un nue"o procedimiento escribiendo el encabe0ado de procedimiento !ub* seguido por el nombre del procedimiento* en una l.nea en blanco dentro de la "entana de cdigo& +i se tiene cdigo duplicado en "arios procedimientos de e"ento* se puede colocar el cdigo en un procedimiento general ) luego in"ocar al procedimiento general desde los procedimiento de e"ento& Procedimientos 5u% 'os procedimientos !ub no retornan "alores& Por e(emplo: "ublic Sub Seleccionar'Cuadro 2s TextBox( Cuadro.SelStart = . Cuadro.Sel,engt/ = ,en'Cuadro.Text( End Sub Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales FL FL 'os procedimientos !ub son in"ocados especi!icando slo el nombre del procedimiento* o empleando la instruccin Call con el nombre del procedimiento& Por e(emplo: Call Seleccionar'TextD( +i se emplea la instruccin Call* se debe encerrar la lista de argumentos entre parntesis& +i se omite Call* tambin se deben omitir los parntesis alrededor de la lista de argumentos& Procedimientos Function 'os procedimientos %unction de"uel"en "alores& ,n el siguiente e(emplo* el procedimiento %unction recibe un n/mero ) de"uel"e ese n/mero al cuadrado& "ublic Function Cuadrado'! 2s *nteger( 2s *nteger Cuadrado = ! K ! End Function +i se desea guardar el "alor de"uelto* se debe usar parntesis cuando se in"o-ue a la !uncin* como se muestra a continuacin: 6esultado = Cuadrado 'O( +i se omiten los parntesis* se puede ignorar el "alor de"uelto ) no guardarlo en una "ariable& ,sto puede ser /til si se -uiere e(ecutar una !uncin ) no se desea el "alor de"uelto& Por e(emplo: Cuadrado O Alcance del 2digo Adems de poder declarar cdigo en un mdulo de !ormulario* tambin se puede declarar procedimientos en un mdulo de cdigo estndar& 'os mdulos de cdigo estndar slo contienen cdigo de Visual Basic* ) son un buen lugar para almacenar cdigo -ue no es espec.!ico para un solo !ormulario& 'os procedimientos pueden ser declarados como .rivate 3pri"ados4 o .ublic 3p/blicos4& 'os procedimientos declarados como .rivate pueden ser llamados o in"ocados slo por otros procedimientos locali0ados en ese !ormulario* mdulo o clase& 'os procedimientos declarados como .ublic en un !ormulario se con"ierten en mtodos del !ormulario& ,l procedimiento puede ser llamado desde cual-uier lugar de la aplicacin especi!icando los nombres del !ormulario ) del procedimiento& 'os procedimientos declarados como .ublic en un mdulo estn disponibles para toda la aplicacin* ) pueden ser llamados especi!icando el nombre del procedimiento& Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales FN FN ,l siguiente cdigo declara un procedimiento .ublic& "ublic Sub )i"roc'( End Sub +i se declara el procedimiento en un mdulo de !ormulario* puede ser llamado con el siguiente cdigo& FormD.)i"roc +i se declara el procedimiento en un mdulo estndar* puede ser llamado con el siguiente cdigo& )i"roc +i se declara un procedimiento con el mismo nombre en dos mdulos estndar* se debe especi!icar el nombre del mdulo como se muestra en el siguiente cdigo& )oduleD.)i"roc 1so del ,8aminador de Cb(etos para "er Procedimientos ) 'ibrer.as de Cb(etos 1na "e0 -ue se 5a a6adido cdigo a una aplicacin se puede emplear el (aminador de objetos para listar a todos los procedimientos -ue 5an sido creados* pasar rpidamente a un procedimiento espec.!ico* o pegar una llamada a un procedimiento dentro de una "entana de cdigo& ,l (aminador de objetos "isuali0a las clases -ue estn disponibles desde cual-uier librer.a de ob(etos a la -ue se 5a establecido una re!erencia& Para "isuali0ar el (aminador de objetos presione la tecla de !uncin %F& Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales GI GI Parte G: Depuracin* Validacin de Datos ) #anipulacin de ,rrores 2uando desarrolle aplicaciones en Visual Basic* es importante depurar el cdigo escrito ) manipular los probables errores -ue puedan ocurrir& >ambin es importante pre"enir en lo posible estos errores "alidando los ingresos de datos a la aplicacin& Berramientas de Depuracin Visual Basic proporciona 5erramientas interacti"as para locali0ar errores en tiempo de e(ecucin ) errores en la lgica del programa& +e puede acceder a todas las 5erramientas de depuracin empleando el men/ 5epuraci$n o la barra de 5erramientas 5epuraci$n& 'as 5erramientas de depuracin en Visual Basic inclu)en: Puntos de interrupci!n y expresiones de interrupci!n ,stablece un punto de interrupcin para detener un programa en e(ecucin& +e puede establecer un punto de interrupcin en tiempo de dise6o o en tiempo de e(ecucin mientras se est en modo de interrupcin& Expresiones de inspecci!n ,mplee las e8presiones de inspeccin para e8aminar una "ariable o e8presin en particular& ,l "alor de cada e8presin de inspeccin es actuali0ado en los puntos de interrupcin /pciones paso a paso 1se las opciones paso a paso para e(ecutar porciones de cdigo )a sea una instruccin o procedimiento a la "e0& Pila de llamadas ,mplee Pila de llamadas para "isuali0ar todas las llamadas a procedimientos acti"as ) rastrear la e(ecucin de una serie de procedimientos anidados& $a *entana inmediato ,n modo de interrupcin* se puede probar una sentencia e(ecutable escribindola en la "entana inmediato& Visual Basic e(ecuta la sentencia inmediatamente de modo -ue se pueda e"aluar el cdigo& $a *entana locales ,sta "entana automticamente "isuali0a todas las "ariables declaradas en el procedimiento actual* (unto con sus "alores& Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales G1 G1 Validacin de Datos +e puede pre"enir algunos errores en el ingreso de datos ) me(orar el uso de una aplicacin "alidando in!ormacin mientras es ingresada a los campos de la aplicacin& 3estricci!n de /pciones con Controles 1na manera de asegurar ingresos "lidos es restringiendo el n/mero de opciones -ue un usuario puede escoger& Por e(emplo* se puede emplear un cuadro de lista para permitir a los usuarios seleccionar un nombre de un producto en un !ormulario& Debido a -ue los usuarios deben escoger un producto de una lista prede!inida* no podrn ingresar un nombre de producto no "lido& >ambin se pueden usar botones de opcin para un n/mero pe-ue6o de opciones* o casillas de "eri!icacin para opciones de tipo booleanas& :so de la propiedad Max$engt, 'a propiedad Ma#ength determina la longitud m8ima de una cadena en un cuadro de te8to& ,l sistema emitir un sonido 3beep4 cuando el usuario trate de escribir una cadena -ue e8ceda la longitud m8ima& +i se desea "isuali0ar un mensa(e de error* se necesita interceptar la tecla oprimida en el e"ento Pe)Press& :so de la propiedad $ocNed 'a propiedad #ocked determina si los usuarios pueden modi!icar los datos en un cuadro de te8to& +i la propiedad #ocked es establecida a *rue* los usuarios slo pueden "er ) copiar los datos de un cuadro de te8to& :so del E*ento OeyPress para alidar Datos +e pueden emplear los e"entos Pe)Press* Pe)Do%n ) Pe)1p para "alidar datos mientras el usuario escribe& +e puede pre"enir -ue el usuario ingrese ciertos caracteres 3por e(emplo* puede limitar el ingreso de datos a "alores numricos4& +e puede tambin modi!icar los datos mientras son ingresados 3por e(emplo* puede con"ertir todos los caracteres a ma)/sculas4& ,l e"ento Pe)Press tiene lugar cuando el usuario ingresa un carcter A+2II estndar& ,sto no inclu)e la ma)or.a de la teclas especiales* tales como las teclas de !uncin* las teclas direccionales* o la tecla D,',>,& Para responder a estas teclas se debe emplear los e"entos Pe)Do%n ) Pe)1p& ,l siguiente cdigo cambia los caracteres a ma)/sculas mientras el usuario escribe& "rivate Sub TextD%$e>"ress'$e>2scii as *nteger( $e>2scii = 2sc'-case'C/r'$e>2scii((( End Sub ,l siguiente cdigo pre"iene -ue los usuarios ingresen slo "alores numricos en un cuadro de te8to& "rivate Sub TextD%$e>"ress'$e>2scii 2s *nteger( *+ $e>2scii VU R T/en ' "ermite el uso de la tecla B2C$S"2CE *+ $e>2scii V NR #r $e>2scii U OS T/en $e>2scii = . ' Esteblece el caracter a nulo si est5 % +uera del rango End *+ End *+ End Sub Para "isuali0ar una lista de los "alores A+2II* bus-ue 4!C00 en la a)uda de Visual Basic& Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales G@ G@ Validacin de In!ormacin a ;i"el de Formulario Adems de emplear tcnicas a ni"el de campo para "alidar los datos mientras son ingresados* se puede escribir cdigo -ue "alide los datos en todos los campos de un !ormulario al mismo tiempo& ,n esta parte del curso se "ern las tcnicas de "alidacin a ni"el de !ormulario soportadas por Visual Basic& Ha%ilitando el Bot!n "ceptar 1na !orma de "alidar la in!ormacin del !ormulario ser.a la de asegurar -ue un usuario 5a ingresado los datos en todos los campos en un !ormulario antes de -ue se le permita continuar& ,sto puede lle"arse a cabo des5abilitando el botn Aceptar en un !ormulario 5asta -ue el usuario 5a)a llenado todos los campos* como se muestra a continuacin& Para comprobar cada tecla oprimida en un !ormulario* se debe establecer la propiedad Gey.revie" de un !ormulario a *rue& ,l !ormulario recibe primero el e"ento del teclado ) luego lo recibe el control& ,l siguiente cdigo 5abilita el botn Aceptar luego de ingresar datos en todos los campos& "rivate Sub Form%,oad'( )e.$e>"revieF = True cmd2ceptar.Enabled = False End Sub "rivate Sub Form%$e>-p'$e>Code 2s *nteger9 S/i+t 2s *nteger( ' Se /abilita el bot=n 2ceptar s=lo si todos los cuadros de texto % tienen datos Dim Control2ct 2s Control For Eac/ Control2ct *n Controls *+ T>pe#+ Control2ct *s TextBox T/en *+ Control2ct.Text = "" T/en ' El cuadro de texto est5 vacLo cmd2ceptar.Enabled = False Exit Sub End *+ ' Se podrLan veri+icar otro tipo de controles si % +uera necesario End *+ !ext cmd2ceptar.Enabled = True 'Todos los cuadros de texto tienen datos End Sub alidaci!n de .odos los Campos de un Formulario Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales GA GA 1na manera sencilla de "alidar todos los campos de un !ormulario al mismo tiempo es poniendo el cdigo de "alidacin en el e"ento 2licK del botn 4ceptar& ,n esta caso* la aplicacin le permite al usuario completar el ingreso de datos en todos los campos del !ormulario ) luego "alidarlos& 'a aplicacin establece el en!o-ue en el primer campo -ue contiene los datos incorrectos& ,l siguiente cdigo "alida todos los campos numricos del !ormulario mostrado anteriormente& "rivate Sub cmd2ceptar%Clic&'( *+ !ot '*s!umeric'txtEdad.Text(( T/en )sgBox "*ngrese la edad correctamente" txtEdad.SetFocus Else*+ !ot '*s!umeric'txtSueldo.Text(( T/en )sgBox "*ngrese el sueldo correctamente" txtSueldo.SetFocus Else )sgBox "Datos correctos" -nload )e End *+ End Sub :so del E*ento 0uery:nload ,l e"ento Quer)1nload tiene lugar (usto antes del e"ento 1nload cuando el !ormulario es descargado& ,l e"ento Quer)1nload permite determinar como !ue iniciado el e"ento 1nload ) cancelar este e"ento& ,s /til cuando un usuario no 5a completado el ingreso de datos a un !ormulario* o cuando se -uisiera preguntar al usuario si desea grabar cambios reali0ados antes cerrar el !ormulario& ,l e"ento Quer)1nload tiene los siguientes argumentos: ,l argumento Cancel cancela el e"ento 1nload& +i Cancel se establece a *rue la aplicacin permanece como estaba antes de -ue se intentara la descarga& ,l argumento 1nloadMode indica como !ue iniciado el e"ento 1nload& Valores 2ue se pueden obtener ,l argumento 1nloadMode 6modoBdescarga7 de"uel"e los siguientes "alores: Constante Valor 5escripci$n Vb%ormControlMenu I ,l usuario eligi el comando Cerrar del men/ Control del !ormulario& Vb%ormCode 1 +e in"oc la instruccin 1nload desde el cdigo& Vb4pp=indo"s @ 'a sesin actual del entorno operati"o #icroso!t $indo%s est !inali0ando& Vb4pp*askManager A ,l Administrador de tareas de #icroso!t $indo%s est cerrando la aplicacin& Vb%ormM50%orm E 1n !ormulario #DI secundario se est cerrando por-ue el !ormulario #DI tambin se est cerrando& ,l siguiente cdigo cancela el e"ento 1nload ) pregunta al usuario antes de cerrar el !ormulario& "rivate Sub Form%:uer>-nload'Cancel as *nteger9 -nload)ode as *nteger( Dim i6espuesta *nteger i6espuesta = )sgBox '"76ealmente desea salir8"9 vb<es!o( *+ i6espuesta = vb!o T/en Cancel=True Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales GE GE End *+ End Sub Notas8 Cuando se cierra un o%-eto !DIForm( el e*ento 0uery:nload ocurre primero para el +ormulario MDI principal y despu&s en todos los +ormularios secundarios MDI. 5i ningn +ormulario cancela el e*ento 0uery:nload( ocurre el e*ento :nload primero en todos los dem2s +ormularios y despu&s en un +ormulario MDI principal. Cuando un +ormulario secundario o un o%-eto Form se cierra( el e*ento 0uery:nload de ese +ormulario ocurre antes 1ue el e*ento :nload del +ormulario. Cuando una aplicaci!n se cierra( puede utilizar los procedimientos de e*ento 0uery:nload o :nload para esta%lecer la propiedad Cancel a Tr.e( deteniendo el proceso de cierre. 5in em%argo( el e*ento 0uery:nload ocurre en todos los +ormularios antes de 1ue se descargue ninguno de ellos y el e*ento :nload ocurre con+orme se descarga cada +ormulario. #anipulacin de ,rrores en >iempo de ,(ecucin ;o importa lo bien -ue se dise6e una aplicacin* los errores en tiempo de e(ecucin siempre ocurrirn& 'os usuarios ol"idan poner los discos en las unidades* sistemas se e(ecutan con poca memoria* ) arc5i"os no se encuentran donde se supone deber.an estar& A6adiendo cdigo de manipulacin de errores e!ecti"o a una aplicacin* se crean aplicaciones ms robustas& Entendiendo el Proceso de Manipulaci!n de Errores ,l proceso de manipulacin de errores in"olucra los siguientes pasos& 1& Babilitar la interceptacin de errores -ue especi!ica 5acia donde se bi!urcar la e(ecucin cuando ocurra un error& @& ,scribir el cdigo de manipulacin de errores& A& +alir del cdigo de manipulacin de errores& 'a instruccin 7n (rror ,o*o 5abilita la interceptacin de errores ) especi!ica 5acia donde saltar la e(ecucin cuando ocurra un error& +i ocurriera un error en tiempo de e(ecucin* la e(ecucin saltar 5acia la eti-ueta especi!icada por la instruccin 7n (rror ,o*o& ,l manipulador de errores e(ecuta el cdigo de manipulacin de errores seguido por una instruccin @esume -ue indica donde deber continuar el proceso& ,l siguiente cdigo muestra como emplear las instrucciones 7n (rror ,o*o ) @esume& "rivate Sub CommandD%Clic&'( Dim !ombre2plic 2s String #n Error 3oTo )anipulaErr !ombre2plic = *nputBox'"*ngrese el nombre de la aplicaci=nB"( S/ell !ombre2plic9 vb!ormalFocus Exit Sub )anipulaErrB *+ Err.!umber = OM T/en )sgBox "!o se encontro la aplicaci=n" *+ )sgBox'"7Desea intentarlo nuevamente8"9 vb<es!o( % = vb<es T/en !ombre2plic = *nputBox % Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales GF GF '"*ngrese el nombre de la aplicaci=nB"( 6esume '*ntentar nuevamente Else 6esume !ext 'E?ecutar la siguiente instrucci=n End *+ Else )sgBox "Error desconocido" End *+ End Sub ,n el cdigo o rutina de manipulacin de errores* se emplean las propiedades ) mtodos del ob(eto (rr para "eri!icar -ue error ocurri* borrar un "alor de error o desencadenar un error& $as Propiedades del /%-eto Err 'a propiedad &umber es un entero -ue indica el /ltimo error -ue tu"o lugar& Para determinar -ue error 5a ocurrido* se "eri!ica el "alor de (rr.&umber& ,n algunos casos* se puede corregir un error ) permitir continuar el proceso sin interrumpir el usuario& ,n otros* se deber noti!icar al usuario de un error* ) tomar alguna accin basada en la respuesta del usuario& 'a propiedad 5escription es una cadena -ue contiene una descripcin del error& 'a propiedad !ource contiene el nombre del ob(eto aplicacin -ue gener el error& ,s /til cuando se emplea Automati0acin& Por e(emplo* si se traba(a con #icroso!t ,8cel ) genera un error* #icroso!t ,8cel establecer (rr.&umber al cdigo de error apropiado ) establecer (rr.!ource a (cel.4pplication& $os M&todos del /%-eto Err ,l mtodo Clear establece el "alor de (rr.&umber a cero& Bsicamente* el mtodo Clear se emplea borrar e8pl.citamente el ob(eto (rr despus de controlar un error& ,l mtodo @aise genera un error en tiempo de e(ecucin& Por e(emplo* se podr.a emplear este mtodo para probar el cdigo de manipulacin de errores& Err.6aise OM '2rc/ivo no encontrado /pciones de las Instrucci!n 3esume 'a instruccin @esume se emplea para especi!icar donde continuar el proceso de una aplicacin luego de manipular un error& 'a siguiente tabla lista los tres tipos de instrucciones @esume disponibles en Visual Basic& 0nstrucci$n 5escripci$n @esume Degresa a la instruccin -ue gener el error& ,mplee @esume para repetir una operacin luego de corregir el error& 0nstrucci$n 5escripci$n @esume &et Degresa a la instruccin inmediatamente siguiente a la -ue gener el error& @esume l#nea 'a e(ecucin contin/a en la l.nea especi!icada en el argumento obligatorio l.nea& Nota8 Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales GG GG 5i utiliza una instrucci!n 3es.me en otro sitio 1ue no sea una rutina de manipulaci!n de errores( ocurre un error. Des5abilitando la #anipulacin de ,rrores Puede ser di!.cil depurar cdigo -ue tiene 5abilitada la manipulacin de errores& Visual Basic puede e(ecutar el cdigo de manipulacin de errores cuando se -uiera ingresar al modo de Interrupcin ) depurar la aplicacin& Visual Basic proporciona opciones para des5abilitar la manipulacin de errores en el momento de la depuracin& Para cambiar como sern manipulados los errores: 1& ,n el men/ Herramientas* 5aga clic en 7pciones& @& ,n la !ic5a ,eneral* deba(o de 0nterceptaci$n de errores* 5aga clic en la opcin deseada ) luego en 4ceptar& 'a siguiente tabla describe las opciones de manipulacin de errores disponibles deba(o de 0nterceptaci$n de errores en la !ic5a ,eneral& 7pci$n 5escripci$n Modo de interrupci$n en todos +i se selecciona esta opcin* Visual Basic ignora cual-uiera de las instrucciones 7n (rror ,o*o e ingresa en modo de Interrupcin si tiene lugar alg/n error en tiempo de e(ecucin& 0nterrupci$n en m$dulos de clase +i se selecciona esta opcin* Visual Basic e(ecutar las instrucciones 7n (rror ,o*o para manipular errores en tiempo de e(ecucin& 0nterrupci$n en errores no controlados Visual Basic ingresa a modo de Interrupcin en cual-uier error para el cual no se 5a)a establecido una rutina de manipulacin& 2ompilacin de una Aplicacin 1na "e0 !inali0ada la creacin de una aplicacin* se puede crear el arc5i"o e(ecutable para los usuarios& ,sta parte del curso describe como compilar un pro)ecto& Creaci!n de un "rc,i*o E-ecuta%le 2rear un arc5i"o e(ecutable en Visual Basic es un proceso sencillo& 1& ,n el men/ 4rchivo* 5aga clic en ,enerar H&ombre.royectoI.ee @& Ingrese el nombre para el arc5i"o e(ecutable& A& Para a6adir in!ormacin espec.!ica de "ersin: ,n el cuadro de dilogo ,enerar proyecto* 5aga clic en el botn 7pciones& ,n la !ic5a ,enerar escriba los n/meros de "ersin ) el te8to de in!ormacin de la "ersin * ) luego 5aga clic en 4ceptar& Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales GH GH Adems del arc5i"o e(ecutable* se debe de proporcionar di"ersas D''bs ) otros arc5i"os a los usuarios& +e deber.a crear un programa de instalacin -ue instale la aplicacin en la computadora del usuario& (l 4sistente para instalar aplicaciones de Visual Basic 5ace sencilla la tarea de crear discos o una carpeta de distribucin para una aplicacin& 'os usuarios pueden luego e(ecutar el programa de instalacin en sus computadoras para instalar ) registrar los arc5i"os apropiados& Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales GL GL Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos 2ontrol 2uadro de 'ista de 1nidades 3Dri"e'istBo84 1n control Dri"e'istBo8 permite al usuario seleccionar una unidad de disco "lida en tiempo de e(ecucin& 1tilice este control para mostrar una lista de todas las unidades "lidas del sistema de un usuario& Puede crear cuadros de dilogo -ue permitan al usuario abrir un arc5i"o de una lista de un disco en cual-uier unidad disponible& Propiedades Dri"e De"uel"e o establece la unidad seleccionada en tiempo de e(ecucin& ;o est disponible en tiempo de dise6o& 'ist 2ontiene la lista de cone8iones de unidad e!ecti"as& 'ist2ount De"uel"e el n/mero de cone8iones con unidades de disco& 'istInde8 De"uel"e o establece el .ndice del elemento seleccionado actualmente en el control& ;o est disponible en tiempo de dise6o& E*entos 25ange Ccurre cuando el usuario selecciona una nue"a unidad o cuando se cambia la con!iguracin de la propiedad Dri"e mediante cdigo& 2ontrol 2uadro de 'ista de Directorios 3Dir'istBo84 1n control Dir'istBo8 muestra directorios ) rutas de acceso en tiempo de e(ecucin& 1tilice este control para mostrar una lista (err-uica de directorios& Puede crear cuadros de dilogo -ue* por e(emplo* permitan a un usuario abrir un arc5i"o desde una lista de arc5i"os de todos los directorios disponibles& Propiedades 'ist 2ontiene una lista de todos los directorios& 'ist2ount De"uel"e el n/mero de subdirectorios del directorio actual& 'istInde8 Indica el .ndice de la ruta de acceso actual& Pat5 ,l "alor de la propiedad Pat5 es una cadena -ue indica una ruta de acceso* como 2:cCb o 2:c$indo%sc+)stem& E*entos 25ange Ccurre cuando el usuario 5ace doble clic en un nue"o directorio o cuando se cambia la con!iguracin de la propiedad Pat5 mediante cdigo& 2ontrol 2uadro de 'ista de Arc5i"os 3File'istBo84 ,l control File'istBo8 encuentra ) muestra los arc5i"os del directorio especi!icado por la propiedad Pat5 en tiempo de e(ecucin& 1tilice este control para mostrar una lista de los arc5i"os seleccionados por tipo& Puede crear cuadros de dilogo en la aplicacin -ue* por e(emplo* permitan al usuario seleccionar un arc5i"o o un grupo de arc5i"os& Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales GN GN Propiedades File;ame De"uel"e o establece el nombre de un arc5i"o seleccionado& 'ist 2ontiene una lista con los arc5i"os del directorio e8pandido actualmente -ue coinciden con la propiedad Pattern& ;o se inclu)e la ruta de acceso& 'ist2ount De"uel"e el n/mero de arc5i"os del directorio actual -ue coinciden con el "alor de la propiedad Pattern& 'istInde8 De"uel"e o establece el .ndice del elemento seleccionado actualmente& Pat5 ,l "alor de la propiedad Pat5 es una cadena -ue indica una ruta de acceso* como 2:cCb o 2:c$indo%sc+)stem& Pattern De"uel"e o establece un "alor -ue indica los nombres de arc5i"o mostrados en un control File'istBo8 en tiempo de e(ecucin& E*entos 2licK Ccurre cuando el usuario presiona ) suelta un botn del ratn en un control File'istBo8& 2ontrol Imagen 3Image4 ,l control Image se utili0a para mostrar un gr!ico& 1n control Image puede mostrar un gr!ico desde un mapa de bits* un icono o un metarc5i"o* as. como un metarc5i"o me(orado* un arc5i"o dP,: o arc5i"os :IF& Propiedades Picture De"uel"e o establece un gr!ico -ue se mostrar en el control& >ambin se le puede asignar un gr!ico de"uelto por la !uncin 'oadPicture& +tretc5 >rueOFalse& De"uel"e o establece un "alor -ue indica si un gr!ico cambia su tama6o para a(ustarse al de un control Image& Comentarios El control Image utiliza menos recursos del sistema y actualiza con m2s rapidez 1ue un control Pict.re1ox( pero s!lo admite un su%con-unto de las propiedades( los e*entos y los m&todos de Pict.re1ox. :se la propiedad 5tretc, para determinar si el gr2+ico se escala para a-ustarse al control o *ice*ersa. "un1ue puede colocar un control Image dentro de un contenedor( un control Image no puede actuar como contenedor. Funcin 'oadPicture34 2arga un gr!ico en un ob(eto Picture* un control PictureBo8 o un control Image& %ormato> 'oadPicture3?om%reDe"rc,i*oAr2+ico4 >ambin se puede usar la !uncin #oad.icture3) para asignar un icono a un !ormulario o al puntero del ratn mostrado en pantalla& (jemplos de la 'unci$n #oad.icture3)> Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales HI HI 'Establece el icono del +ormulario Set FormD.*con = ,oad"icture'")**C#!#.*C#"( 'Establece el puntero del rat=n Screen.)ouse*con = ,oad"icture'")**C#!#.*C#"( Screen.)ouse"ointer = PP Creaci$n de un visor de im?genes (l c$digo para los controles es el siguiente> "rivate Sub drv-nidad%C/ange'( dirDirectorio."at/ = drv-nidad.Drive End Sub "rivate Sub dirDirectorio%C/ange'( +il,ista."at/ = dirDirectorio."at/ End Sub "rivate Sub +il,ista%Clic&'( *mageD."icture = ,oad"icture'dirDirectorio."at/ W % "X" W +il,ista.+ilename( FrameD.Caption = +il,ista.+ilename FormD.*con = ,oad"icture'dirDirectorio."at/ W % "X" W +il,ista.+ilename( End Sub Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales H1 H1 dr"1nidad dirDirectorio !il'ista Frame1 Image1 2ontrol >empori0ador 3>imer4 1n control *imer puede e(ecutar cdigo a inter"alos peridicos produciendo un e"ento >imer& ,l control *imer* in"isible para el usuario* resulta /til para el procesamiento de !ondo& ;o e8iste ning/n l.mite prctico en cuanto al n/mero de controles *imer acti"os -ue se puede tener en Visual Basic F&I e(ecutndose en $indo%s NF o en $indo%s ;>& Propiedades ,nabled >rueOFalse& Acti"a o desacti"a el control& +i se desacti"a el control *imer, estableciendo ,nabled a False* se cancelar la cuenta atrs establecida por la propiedad Inter"al del control& Inter"al De"uel"e o establece el n/mero de milisegundos entre las llamadas al e"ento >imer de un control *imer& 'os "alores admitidos para milisegundos son I* -ue desacti"a el control *imer* o de 1 a GFFAF& ,l m8imo* GFFAF milisegundos* e-ui"ale a poco ms de un minuto& E*entos >imer Ccurre cuando 5a transcurrido un inter"alo preestablecido para el control *imer& (jemplo de uso del control *imer MinimiAa el 'ormulario y activa el control temporiAador *imer6 "rivate Sub cmdEstablecer%Clic&'( FormD.EindoFState = D TimerD.Enabled = True End Sub Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales H@ H@ t8tBora t8t#ensa(e cmd,stablece r cmd+alir >imer1 Inter"al<1III ,nabled<False *ermina la ejecuci$n de la aplicaci$n "rivate Sub cmdSalir%Clic&'( End End Sub Compara la hora actual con la hora ingresada en el cuadro ttHora cada segundo y muestra el mensaje establecido en caso de 2ue sean iguales, desactiva el control temporiAador y restaura la ventana a su tama-o normal. "rivate Sub TimerD%Timer'( Dim /ora 2s String /ora = Format'Time9 "//Bmm"( *+ /ora = txtHora.Text T/en Beep )sgBox txt)ensa?e.Text9 vb#$#nl> ; vb*n+ormation9 ")ensa?e" TimerD.Enabled = False FormD.EindoFState = . End *+ End Sub Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales HA HA 1so del control Data ,n Visual Basic puede utili0ar el control 5ata para crear aplicaciones de bases de datos para una gran "ariedad de !ormatos de base de datos& ,l control 5ata interact/a con el motor de base de datos #icroso!t det ) permite crear aplicaciones preparadas para datos con la m.nima cantidad de cdigo posible&
Vista :eneral del Acceso a Datos Antes de traba(ar con la !uncionalidad de base de datos desde Visual Basic* se debe entender las capacidades de acceso a datos* as. como* la terminolog.a empleada& Cpciones de Acceso a Datos en Visual Basic ,sta parte del curso enumera las di"ersas opciones -ue Visual Basic proporciona para acceder a datos& :so del Motor de Base de Datos Microso+t Pet 'os ob(etos de acceso a datos X Data Access Cb(ects 35474 ) el control 5ata usan el motor de base de datos #icroso!t det para acceder a bases de datos& ,l motor de base de datos det puede acceder a los siguientes A tipos de bases de datos& Bases de datos Jet ,stas bases de datos son creadas ) manipuladas directamente por el motor det& #icroso!t Access ) Visual Basic emplean el mismo motor de base de datos det& Bases de datos de Mtodo de 4cceso !ecuencial 0ndeado 30!4M) 'os !ormatos de estas bases de datos inclu)en Btrie"e* dBase* #icroso!t Visual Fo8Pro* ) Parado8& Bases de datos compatibles con 75BC 37pen 5ataBase Connectivity K Conectividad 4bierta de Base de 5atos) ,stas bases de datos inclu)en las bases de datos clienteOser"idor -ue con!orman el estndar CDB2* tal como #icroso!t +Q' +er"er& 'a ma)or.a de bases de datos -ue soportan CDB2 pueden ser accedidas empleando Visual Basic& /tros m&todos de "cceso a Datos 'os otros mtodos de acceso a datos soportados por Visual Basic inclu)en: (l control 7rigen de 5atos @emoto 3@emote 5ata !ource) ,ste es un control -ue emplea CDB2 para acceder a bases de datos CDB2 tales como #icroso!t +Q' +er"er ) Cracle& ,l control 7rigen de 5atos @emoto slo est disponible en la edicin ,mpresarial de Visual Basic& #ibrer+as 75BC ,stas librer.as permiten -ue se llame a la inter!ace de programacin de aplicaciones 3API4 de CDB2 directamente ) estn disponibles como un producto separado& #ibrer+as !L# de Visual Basic ,stas librer.as proporcionan un enlace directo a #icroso!t +Q' +er"er* ) estn disponibles como un producto separado& ,ntendiendo los 2onceptos Bsicos acerca de las Bases de Datos Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales HE HE 'a ma)or.a de sistemas de bases de datos emplean el modelo de base de datos relacional& ,ste modelo presenta los datos como una coleccin de tablas& 1na tabla es un grupo lgico de in!ormacin relacionada& Por e(emplo* la base de datos ;eptuno contiene una tabla -ue almacena a los empleados* ) otra almacena los pedidos de una compa6.a !icticia& 'a base de datos ;eptuno&mdb es una base de datos de e(emplo incluida con #icroso!t Access& ,lementos de una >abla 'a base de datos ;eptuno contiene un n/mero de tablas -ue agrupan la in!ormacin& ,stas tablas inclu)en Pedidos* 2lientes* ) ,mpleados& ,n una base de datos det* las !ilas de la tabla son denominadas registros* ) las columnas campos& $a Cla*e Principal Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales HF HF 2ada tabla debe de tener una cla"e principal* -ue es un campo 3o una combinacin de campos4 -ue es /nico para cada registro en la tabla& Por e(emplo* el campo Id,mpleado es la cla"e principal para la tabla ,mpleados& 1na tabla puede tambin tener cla"es !orneas* -ue son campos -ue 5acen re!erencia a una cla"e principal de otra tabla& Por e(emplo* en la base de datos ;eptuno* la tabla Pedidos tiene un campo llamado Id2liente& ,ste campo es una cla"e !ornea por-ue 5ace re!erencia a un cliente de la tabla 2lientes& ,n "e0 de duplicar toda la in!ormacin del cliente por cada pedido* slo se ingresa la cla"e principal del cliente a -uien pertenece el pedido* como la cla"e principal es /nica por cada cliente* 5a) un solo cliente por cada pedido* ) un cliente puede tener muc5os pedidos& ,n trminos de una base de datos* la relacin entre la tabla 2lientes ) la tabla Pedidos es una relacin del tipo uno9a9"arios& 3egistros 1n registro contiene in!ormacin acerca de un solo ingreso en una tabla& :eneralmente* no se desea -ue dos registros en una tabla tengan los mismos datos& Por e(emplo* un registro en la tabla ,mpleados contiene in!ormacin acerca de un /nico empleado& Campos 2ada campo en una tabla contiene una parte de la in!ormacin& Por e(emplo* la tabla ,mpleados inclu)e campos para el Id del empleado* Apellidos* ;ombre* etc& Indices 'os .ndices de una tabla de una base de datos son listas ordenadas -ue son ms rpidas para las b/s-uedas -ue las tablas en s.& Para 5abilitar un acceso ms rpido a una base de datos* la ma)or.a de bases de datos emplean uno o ms .ndices& Por e(emplo* la tabla ,mpleados tiene un .ndice para la columna Id,mpleado& >raba(ando con el 2ontrol Data ,l control 5ata de Visual Basic permite escribir aplicaciones de bases de datos mu) e!icaces con mu) poco cdigo& ,n esta parte se aprender a generar aplicaciones de bases de datos con el control 5ata ) el ob(eto @ecordset asociado& >ambin se aprender como el Asistente para Formularios de Datos puede construir una aplicacin -ue inclu)e el control 5ata& >ener Acceso a Datos con el 2ontrol Data ,l control 5ata implementa el acceso a datos mediante el motor de base de datos #icroso!t det& ,sta tecnolog.a proporciona acceso a muc5os !ormatos de base de datos ) permite crear aplicaciones -ue mane(an datos sin necesidad de escribir cdigo& Para crear una aplicacin de base de datos -ue emplee el control 5ata* se siguen los siguientes pasos: 1& A6adir el control 5ata al !ormulario ) establecer las propiedades para especi!icar la base de datos ) la tabla desde la cual se obtendrn los datos& @& A6adir controles enla0ados a datos al !ormulario* ) establecer las propiedades para enla0ar los controles al control 5ata para -ue los datos puedan ser mostrados& 1so de 2ontroles ,nla0ados a Datos 2uando un control -ue 5a colocado en un !ormulario se enla0a a datos* se muestran automticamente los datos de la base de datos en el control enla0ado& +i un usuario cambia los datos de un control Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales HG HG enla0ado* dic5os cambios se actuali0arn automticamente en la base de datos en cuanto el usuario se desplace a otro registro& #uc5os controles intr.nsecos o estndar de Visual Basic permiten ser enla0ados a datos* como es el caso de los controles CheckBo* 0mage* #abel* .ictureBo* *etBo* #istBo* ComboBo ) los contenedores 7#(& 'a siguiente ilustracin es un e(emplo de un !ormulario -ue contiene un control 5ata ) dos controles enla0ados& ,stablecer las Propiedades del 2ontrol Data 'os siguientes pasos describen como conectar un control 5ata a una base de datos& 1& ,speci!icar las base de datos a la cual se -uiere acceder estableciendo la propiedad 5atabase&ame al nombre de la base de datos& @& Para especi!icar -ue registros recuperar* establecer la propiedad @ecord!ource al nombre de la tabla dentro de la base de datos* o a una cadena +Q'& Nota8 Para acceder a una %ase de datos dBase( Paradox( o Btrie*e( se de%e esta%lecer la propiedad DatabaseName a la carpeta 1ue contiene los arc,i*os de la %ase de datos( y la propiedad Connect al tipo apropiado de %ase de datos. ,nla0ar 2ontroles Despus de establecer los "alores de las propiedades para el control 5ata* es necesario enla0ar al control 5ata controles indi"iduales ) despus especi!icar -u campo de la tabla mostrar cada control& 1& ,n tiempo de dise6o* establecer la propiedad 5ata!ource del control enla0ado a datos al control 5ata& @& ,n tiempo de dise6o o en tiempo de e(ecucin* especi!icar -ue campo se desea mostrar en el control enla0ado estableciendo la propiedad 5ata%ield& 'a propiedad 5ata%ield puede ser establecida en tiempo de dise6o o en tiempo de e(ecucin& Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales HH HH 1sar las Propiedades ) #todos del 2ontrol Data Para especi!icar los datos -ue se desean recuperar* se debe establecer las propiedades 5atabase&ame ) @ecord!ource de un control 5ata& Adems* se pueden establecer las siguientes propiedades ) mtodos& $a Propiedad Connect ,sta propiedad especi!ica el tipo de base de datos a abrir& Puede incluir argumentos tales como un nombre de usuario 3user ID4 ) una contrase6a& $a Propiedad Exclusi*e 'a propiedad (clusive determina si se tiene o no un uso e8clusi"o de la base de datos& +i esta propiedad se establece a *rue* ) luego se abre sin problemas la base de datos* ninguna otra aplicacin podr abrirla 5asta -ue sea cerrada& $a Propiedad 3ead/nly ,sta propiedad determina si se puede o no actuali0ar o grabar cambios en la base de datos& +i no se tiene planeado 5acer cambios en la base de datos* es ms e!iciente establecer la propiedad @ead7nly a *rue& $a Propiedad 3ecordset 'a propiedad @ecordset es un ob(eto -ue contiene el con(unto de registros de"ueltos por el control 5ata& ,sta propiedad contiene a su "e0 propiedades ) mtodos -ue pueden ser usados para traba(ar con los registros de"ueltos& $as Propiedades B/F"ction y E/F"ction ,stas propiedades determinan -ue accin tomar el control 5ata cuando las propiedades B7% o (7% del recordset tomen como "alor *rue& Por e(emplo* si la propiedad (7%4ction del control 5ata es establecida a "bActionAdd;e%* ) se emplea el control 5ata para despla0arse* una "e0 -ue se pase el /ltimo registro* el control 5ata automticamente e(ecutar el mtodo 4dd&e" de modo -ue se pueda a6adir un nue"o registro& El M&todo 3e+res, ,l mtodo @e'resh renue"a el ob(eto @ecordset& +i se cambia la propiedad @ecord!ource en tiempo de e(ecucin* se debe in"ocar al mtodo @e'resh para reno"ar el recordset& ,l siguiente cdigo muestra como emplear el mtodo @e'resh& DataD.6ecordSource = "SE,ECT K F6#) Empleados " W % "EHE6E Y*dEmpleadoZ = " W txt*dEmp.Text DataD.6e+res/ ,l Cb(eto Decordset ,n una aplicacin de base de datos* los usuarios traba(an con el control 5ata para despla0arse entre registros dentro de la base de datos& 'os usuarios pueden 5acer clic en los botones del control 5ata para a"an0ar o retroceder registro a registro o para ir directamente al primer o al /ltimo registro& L0u& es un 3ecordsetM Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales HL HL >odo el con(unto de registros al -ue 5ace re!erencia un control 5ata se denomina con(unto de registros o @ecordset& ,l @ecordset se almacena en la memoria* trans!irindose al disco si es necesario& Para manipular el @ecordset* se emplea la propiedad @ecordset del control 5ata& ,l @ecordset contiene el registro actual& 'a in!ormacin del registro actual es mostrada por los controles enla0ados& +e puede cambiar la posicin del registro actual 5aciendo clic en el control 5ata o escribiendo cdigo -ue emplee mtodos del ob(eto @ecordset& Determinar los l#mites de un 3ecordset +i utili0a cdigo para cambiar la posicin del registro actual* debe comprobar las propiedades (7% ) B7% del ob(eto @ecordset para determinar el inicio ) el !inal del mismo& 2uando se desplace al registro (7% o al B7%* se e(ecutar la accin indicada por el "alor de la propiedad B7%4ction o (7%4ction& Por e(emplo* se puede establecer la propiedad (7%4ction para a6adir un nue"o registro automticamente& +i se establece la propiedad (7%4ction a (7%* ninguna accin ser tomada cuando se desplace al registro (7%& 2uando se desplace pasando un registro los registros B7% o (7%* se producir un error en tiempo de e(ecucin& ,n la siguiente ilustracin se muestra cmo las propiedades B7% ) (7% determinan los l.mites del ob(eto @ecordset& Para emplear el ob(eto @ecordset de un control 5ata determinado* se debe especi!icar la propiedad @ecordset del control Data* como se muestra en el siguiente cdigo& DataD.6ecordset.)ove!ext ')ueve el registro actual al siguiente *+ DataD.6ecordset.E#F T/en DataD.6ecordset.)ove,ast 1so de las Propiedades ) #todos de un Decordset 1tilice los mtodos ) las propiedades del ob(eto @ecordset para recuperar in!ormacin del con(unto de registros* despla0arse por los registros ) agregar* actuali0ar o eliminar registros& Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales HN HN $as Propiedades B/F y E/F 'as propiedades B7% ) (7% del ob(eto @ecordset indican si la posicin del registro actual es antes del primer registro o despus del /ltimo registro dentro del con(unto de registros& +i no 5a) registros en el recordset* entonces el "alor de las propiedades B7% ) (7% es *rue& El M&todo "dd?e9 del 3ecordset Para agregar un nue"o registro a un recordset* se emplea el mtodo 4dd&e"& 2uando se e(ecuta el mtodo 4dd&e"* Visual Basic limpia los controles enla0ados ) establece la propiedad (ditMode del control 5ata a db,ditAdd& ,l nue"o registro no ser a6adido a la base de datos 5asta -ue sea e(ecutado e8pl.citamente un mtodo 1pdate@ecord o 1pdate* o 5asta -ue el usuario se mue"a a otro registro& ,l siguiente cdigo muestra como agregar un nue"o registro a un recordset& "rivate Sub cmd2gregar%Clic&'( DataD.6ecordset.2dd!eF El M&todo :pdate3ecord del Control Data ,l mtodo 1pdate@ecord se emplea para grabar el registro actual a una base de datos& ,l siguiente cdigo muestra como grabar el registro actual ) actuali0ar la base de datos& "rivate Sub cmd3rabar%Clic&'( DataD.-pdate6ecord El M&todo Cancel:pdate del Control Data ,l mtodo Cancel1pdate se emplea para cancelar un mtodo 4dd&e" o (dit ) reno"ar o re!rescar los controles enla0ados con datos del recordset& Por e(emplo* si un usuario 5a modi!icado los campos de un !ormulario* pero toda".a no los 5a actuali0ado* el mtodo Cancel1pdate re!rescar los campos con los datos originales del recordset& +i un usuario selecciona un botn 4gregar de un !ormulario* ) luego decide no agregar el registro* el mtodo Cancel1pdate cancelar la operacin ) "isuali0ar el registro actual& ,l siguiente cdigo muestra como cancelar la agregacin o edicin de un registro& "rivate Sub cmdCancelar%Clic&'( DataD.Cancel-pdate El M&todo Delete del 3ecordset Para eliminar un registro de una base de datos* se emplea el mtodo 5elete& ,l registro eliminado permanecer como el registro actual 5asta -ue el usuario se mue"a a un registro di!erente* como se muestra en el siguiente cdigo& "rivate Sub cmdEliminar%Clic&'( DataD.6ecordset.Delete DataD.6ecordset.)ove!ext *+ DataD.6ecordset.E#F T/en DataD.6ecordset.)ove,ast End *+ End Sub Nota8 $a %ase de datos ?eptuno tiene de+inidas reglas de integridad re+erencial 1ue impiden eliminar registros relacionados. Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales LI LI 1so del Asistente para Formularios de Datos ,l Asistente para Formularios de Datos es una utilidad de Visual Basic -ue genera !ormularios de datos simples -ue emplean el control 5ata& +e puede emplear el Asistente para Formularios de Datos para construir rpidamente !ormularios para una aplicacin de base de datos& Para cargar el Asistente para Formularios de Datos* se emplea la orden 4dministrador de Complementos del men/ Complementos& 1so de los ,"entos del 2ontrol Data ,l control 5ata proporciona tres e"entos -ue puede utili0ar para me(orar la aplicacin de base de datos: Validate* ,rror ) Deposition& Dic5os e"entos permiten omitir parte del comportamiento predeterminado del control 5ata& :sar el E*ento alidate 1tilice el e"ento Validate para comprobar los datos antes de guardar un registro en la base de datos& ,ste e"ento se produce (usto antes de -ue Visual Basic escriba en la base de datos los cambios procedentes de los controles enla0ados ) de -ue "uel"a a colocar el puntero del registro actual en otro registro de la base de datos& Puede utili0ar el e"ento Validate para pedir al usuario -ue con!irme los cambios reali0ados& #intaxis ,l e"ento Validate tiene la siguiente sinta8is: .rivate !ub 5ata6/Validate 3index 4s 0nteger* action 4s 0nteger* sa*e 4s 0nteger4 "l 4rg.mento 4ction ,l argumento action indica la operacin -ue pro"oc el e"ento Validate& ,l e"ento Validate se produce como resultado de reali0ar las operaciones siguientes: Move%irst* Move.revious* Move&et* Move#ast 4dd&e" 1pdate 5elete %ind ,stablecer la propiedad Bookmark 2errar la base de datos Descargar el !ormulario Para cancelar cual-uiera de estas acciones* asigne al argumento action el "alor "bDataAction2ancel& "l 4rg.mento #a5e ,l argumento sa*e indica si "a a guardarse o no el registro& +i sa*e es *rue* los datos enla0ados 5an cambiado& Para cancelar la accin de guardar puede asignar a sa*e el "alor %alse& ,l siguiente cdigo pide al usuario -ue con!irme los cambios 5ec5os a la base de datos& +i el usuario responde ;o* los cambios sern cancelados& "rivate Sub DataD%Jalidate '2ction 2s *nteger9 Save 2s *nteger( Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales L1 L1 Dim i6espuesta as *nteger *+ Save = True T/en i6espuesta = )sgBox '"7Desea guardar los cambios8" 9 vb<es!o( *+ i6espuesta = vb!o T/en Save = False DataD.-pdateControls '2ctualiGa los campos End *+ End *+ End Sub :sar el E*ento 3eposition 1tilice el e"ento Deposition para modi!icar la apariencia de un !ormulario o reali0ar una accin necesaria cuando se desplace a un nue"o registro& ,ste e"ento tiene lugar cuando Visual Basic despla0a el puntero del registro actual a otro registro de la base de datos& >ambin se produce la primera "e0 -ue se abre la base de datos& !odi+icar la apariencia de .n +orm.lario Para cambiar la manera en -ue un !ormulario muestra in!ormacin basndose en el registro seleccionado en ese momento 5a) -ue utili0ar el e"ento Deposition& Por e(emplo* puede modi!icar el t.tulo del control 5ata de !orma -ue se muestre el registro n/mero n& Para "er el n/mero del registro actual* utilice la propiedad 4bsolute.osition del ob(eto @ecordset& ,l n/mero de registro es relati"o a cero* por lo -ue el primer registro es el I& ,l siguiente cdigo muestra como "isuali0ar el n/mero del registro actual& "rivate Sub DataD%6eposition'( DataD.Caption = "6egistro ![" W DataD.6ecordset.2bsolute"osition ; D End Sub Tratar los cambios al despla0arse a .n n.e5o registro 2uando un usuario se despla0a a un nue"o registro mediante el control 5ata* puede -ue los datos del !ormulario tengan -ue presentarse de una !orma distinta en el caso del nue"o registro& Por e(emplo* es posible -ue en un !ormulario -ue muestre registros de empleados 5a)a distintas opciones dependiendo de s. los empleados son !i(os* temporales o si traba(an por 5oras& 2ada registro mostrar la in!ormacin sobre un empleado distinto* cu)as opciones pueden no ser las mismas para todos los registros& Para -ue se seleccione la opcin correcta para cada registro* escriba cdigo en el e"ento Deposition& ,l cdigo siguiente utili0a el e"ento Deposition para modi!icar la apariencia de un !ormulario& "rivate Sub DataD%6eposition'( DataD.Caption=DataD.6ecordset.2bsolute"osition *+ DataD.6ecordset'"*dEmpleado"( U O T/en optSenior.Jalue = True Else opt\unior.Jalue = True End *+ DataD.Caption = "6egistro ![" W DataD.6ecordset.2bsolute"osition ; D End Sub Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales L@ L@ ,sta ilustracin muestra el !ormulario basado en el cdigo anterior& :sar el E*ento Error ,l e"ento ,rror tiene lugar cuando un usuario interact/a con el control 5ata ) se produce un error de acceso a datos& 1tilice el e"ento ,rror para agregar tratamiento de errores personali0ado al control 5ata& Por e(emplo* si un usuario modi!ica un campo ) despus 5ace clic en el control 5ata para despla0arse al siguiente registro* el control 5ata actuali0ar el registro actual& +i se produce un error de acceso a datos durante la actuali0acin* se producir el e"ento ,rror& 'os "alores de los campos enla0ados no cambian tras producirse un error& ,l usuario puede corregir los "alores ) 5acer clic en el control 5ata para tratar de actuali0ar nue"amente el registro& !ostrar .n mensa6e de error personali0ado +i no coloca cdigo para tratar errores en el e"ento ,rror ) se produce un error cuando un usuario interact/a con el control 5ata* Visual Basic muestra el mensa(e de error ) el programa contin/a e(ecutndose& +i no desea -ue se muestre el mensa(e de error estndar* puede asignar al argumento Desponse el "alor I ) mostrar un mensa(e de error personali0ado como se muestra en el siguiente cdigo& "rivate Sub DataD%Error 'DataErr 2s *nteger9 6esponse 2s *nteger( *+ DataErr = M.@@ T/en 'Error de clave principal duplicada )sgBox "*ngrese un *d de Empleado Cnico" txt*dEmp.SetFocus 6esponse = . Else 6esponse = D ')uestra el mensa?e de error est5ndar End *+ End Sub 1so de 2ontroles ,nla0ados a Datos Acti"eJ Adems de los controles enla0ados intr.nsecos* Visual Basic o!rece "arios controles 4ctive8 enla0ados a datos& ,n esta parte del curso se describen algunos controles Acti"eJ enla0ados a datos a"an0ados& Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales LA LA :sar el Control DBArid ,l control de cuadr.cula enla0ada a datos 3control 5B,rid4 permite -ue los usuarios de su aplicacin de base de datos traba(en con "arios registros a la "e0& !ostrar m7ltiples registros 5B,rid es un control Acti"eJ -ue muestra una serie de !ilas ) columnas -ue representan registros ) campos de un ob(eto @ecordset& 2uando asigne a la propiedad 5ata!ource del control 5B,rid un control 5ata* el control 5B,rid se llenar automticamente de datos ) se establecern automticamente sus encabe0ados de columna a partir del con(unto de registros del control 5ata& Al contrario -ue la ma)or.a de los controles enla0ados a datos* el control 5B,rid le permite "er ) modi!icar "arios registros simultneamente& ,n la siguiente ilustracin se muestra un !ormulario -ue utili0a un control 5B,rid para presentar registros procedentes de la base de datos ;eptuno& .ara a-adir el control 5B,rid a un proyecto 1& Bacer clic en la orden Componentes del men/ .royecto& @& ,n la !ic5a Controles* seleccionar Microso't 5ata Bound ,rid Control* ) luego 5acer clic en 4ceptar& ,l control 5B,rid tiene "arias propiedades -ue especi!ican cmo se comporta el control& Por e(emplo* si asigna a la propiedad 4llo"1pdate el "alor *rue* un usuario puede modi!icar los datos del control& >ambin puede establecer propiedades para columnas indi"iduales del control 5B,rid& Puede cambiar el t.tulo de la columna* cambiar el campo de datos al -ue se enla0a la columna* agregar "alores predeterminados* etc& .ara establecer propiedades de columnas 1& Cprima el botn secundario del ratn sobre el control 5B,rid& @& Baga clic en la orden .ropiedades& A& Baga clic en Columnas& Puede cambiar el t.tulo de la columna* cambiar el campo de datos al -ue se enla0a la columna* agregar "alores predeterminados* etc& Para establecer los encabe0ados de las columnas del control 5B,rid* luego de 5aberlo enla0ado a un control 5ata* oprima el botn secundario del ratn sobre el control en tiempo de dise6o* ) luego 5aga clic en la orden @ecuperar campos& 8btener 9 establecer el texto de la celda act.al 1tilice la coleccin Columns del control 5B,rid para recuperar el te8to de la celda seleccionada actualmente en tiempo de e(ecucin& Por e(emplo: Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales LE LE )sgBox DB3ridD.Columns'DB3ridD.Col(.Text Para cambiar la in!ormacin del control DB:rid* cambie el ob(eto Decordset asociado& Por e(emplo* si el control 5B,rid est enla0ado al recordset Data1* se e(ecutar.a el siguiente cdigo: DataD.6ecordset.Edit DataD.6ecordset.Fields'"!ombre"roducto"( = "Disco duro" DataD.6ecordset.-pdate Usar el e5ento 1e+oreUpdate ,l e"ento Be!ore1pdate tiene lugar antes de -ue se mue"an datos desde un control 5B,rid al b/!er de copia del control 5ata& Puede "alidar los datos ) cancelar la actuali0acin si es necesario& :sar el Control M5FlexArid ,l control M!%le,rid proporciona caracter.sticas a"an0adas para la presentacin de datos en una cuadr.cula& ,s similar al control 5B,rid aun-ue* cuando se enla0a a un control 5ata* el control M!%le,rid muestra datos de slo lectura& Puede utili0ar el control M!%le,rid para combinar !ilas o columnas de in!ormacin ) as. agrupar la in!ormacin relacionada& ,n la siguiente ilustracin se muestran registros agrupados por Id& de pedido en la tabla Detalles de pedidos& .ara combinar celdas 1& ,stable0ca la propiedad MergeCells a un "alor di!erente a cero& @& ,stable0ca las propiedades arreglo Merge@o"3) ) MergeCol3) a *rue para las !ilas ) columnas -ue desee combinar& Por e(emplo* para combinar las celdas en la tabla Detalles de pedidos* a6ada el siguiente cdigo al !ormulario donde se encuentra el control M!%le,rid& "rivate Sub Form%,oad'( )SFlex3ridD.)ergeCells = +lex)ergeFree )SFlex3ridD.)ergeCol'.( = True End Sub :sar el Control DBCom%o Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales LF LF Puede utili0ar el control de cuadro de lista enla0ado a datos 35B#ist4 o el cuadro combinado enla0ado a datos 35BCombo4 para presentar automticamente una lista de "alores de un Decordset& ,sto resulta /til para proporcionar "alores "lidos al usuario& 8btener in+ormacin de .na tabla de b7s-.eda >ambin puede utili0ar estos controles en aplicaciones de etabla de b/s-uedae& Por e(emplo* puede presentar una lista de nombres de categor.a "lidos 3en "e0 de Id&4 ) utili0ar el Id& correspondiente cuando el usuario agregue o modi!i-ue datos& 'a ilustracin siguiente muestra un !ormulario -ue utili0a el control 5BCombo para presentar nombres de categor.as de la tabla Productos& "stablecer propiedades del control D1Combo Para determinar el "alor -ue se presenta en el control 5BCombo* asigne a la propiedad @o"!ource un nombre de control 5ata ) a la propiedad #ist%ield un nombre de campo& ,l cuadro combinado enla0ado a datos contiene todos los "alores de ese campo& Para determinar -u campo de la base de datos se actuali0a cuando un usuario cambia un "alor* estable0ca las propiedades 5ata!ource ) 5ata%ield& Para establecer la relacin entre la tabla -ue contiene los "alores de b/s-ueda ) la tabla -ue se est modi!icando realmente* estable0ca la propiedad BoundColumn& Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales LG LG