Está en la página 1de 86

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 est n 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 b sicos 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 3 propiedades, 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 adem s pueden determinar su comportamiento7 por e(emplo* la propiedad Ma Button 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

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 b sicos 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&

Formulario&9ombre:;!rm,ntrada; Formulario&<.tulo:;Bien"enidos a =estin ) +istemas;

2uadro&9ombre:;t8t2ontrase6a; 2uadro&Pass%ord25ar:;>;

Botn&9ombre:;cmdIngresar; Botn&<.tulo:;Ingresar;

Botn&9ombre:;cmd'impiar; Botn&<.tulo:;'impiar; (vento Hacer/Click 2uadro&t8t1suario&<e8to:;; 2uadro&t8t2ontrase6a&<e8to:;; 2uadro&t8t1suario&,stablecer,n!o-ue34

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 39ame4 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 *e to 3<e8tBo847 a continuacin establecemos su propiedad &ombre en t tContrase-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

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 *e to, ) -ue el punto de insercin se ubi-ue en el cuadro t t1suario. 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 *e to de cada uno de los cuadros de te8to* ) luego in"ocar al mtodo (stablecer(n'o2ue3) del cuadro de te8to t t1suario.

,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:
Dise6ador de !ormularios Barra de #en/s ) Barra de Aerramientas ,8plorador de Pro)ectos

2uadro de Aerramientas

Ventana de 2digo

Ventana de Propiedades

Parte 1: Introduccin al desarrollo con Visual Basic

Fundamentos de Programacin en Visual Basic

Barra de Mens
Presenta los comandos -ue se usan para traba(ar con Visual Basic& Adem s de los men/s est ndar 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 m s !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&

Bbtencin 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
Adem s de la a)uda sensible al conte8to* el 2DCDB# 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 autom tica 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 ser n mostrados autom ticamente 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

Fundamentos de Programacin en Visual Basic


2uando se ingresa el nombre de una !uncin en la "entana de cdigo* Visual Basic autom ticamente 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 Aerramientas 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& Aaga clic sobre el control en el 2uadro de Aerramientas& ?& 1bi-ue el puntero del #ouse 3una cru04 sobre el !ormulario en la es-uina superior i0-uierda donde desea colocar el control& @& 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 <iempo de dise6o <iempo de e(ecucin 5e'inici$n ,s el momento en el -ue se constru)e la aplicacin& ,s el momento en el cual e(ecutamos e interactuamos con la aplicacin como lo 5ar.a el usuario& 1n !ormulario sir"e como una "entana -ue puede personali0ar como la inter!a0 de su aplicacin o como un cuadro de di logo -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 5e'inici$n 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&

Formulario

*rmino 2ontroles

Parte 1: Introduccin al desarrollo con Visual Basic

Fundamentos de Programacin en Visual Basic


Bb(etos 1n trmino general usado para describir todos los !ormularios ) controles -ue !orman parte de la aplicacin& 'os "alores de un ob(eto* tales como tama6o* t.tulo* color* etc& 'as acciones -ue un ob(eto puede reali0ar sobre s. mismo& +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&

Propiedades #todos ,"entos

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 dem s 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 Pro)ecto ( tensi$n &"bp 5escripci$n Deali0a el seguimiento de todos los componentes de la aplicacin& Inclu)e el !ormulario* los ob(etos sobre el !ormulario ) el cdigo -ue se e(ecuta cuando ocurre un e"ento en el !ormulario& 2ontiene procedimientos !ub ) %unction -ue pueden ser in"ocados por cual-uier !ormulario u ob(eto sobre el !ormulario& 3opcional4 5escripci$n

Formulario

&!rm &!r8

#dulo est ndar

&bas

*ipo de archivo 2ontroles Personali0ados

( tensi$n

&oc8

2ontroles adicionales a los controles est ndar proporcionados por #icroso!t u otras empresas& 3opcional4 2ontiene la de!inicin de clase* mtodos ) propiedades de un nue"o tipo de ob(eto& 3opcional4

#dulo de clase

&cls

Parte 1: Introduccin al desarrollo con 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 arc,i*os e-ecuta%les, como arc,i*os .ocx y .dll. isual Basic tam%i&n puede crear otro tipo de

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 m s ! cil de leer ) depurar* debe luego asignar nombres a los ob(etos usando con"enciones de nombres est ndar&

?& ,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&

@& ,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 Aerramientas 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 men/ 4rchivo. .e e del

Parte 1: Introduccin al desarrollo con 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 3VbrunFII@?&dll4* algunos arc5i"os B2J ) 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 Panel @D Botn animado 2asilla de "eri!icacin 2uadro combinado* cuadro lista desplegable Botn de comando Di logo com/n 2omunicaciones 2ontrol de datos 2uadro combinado enla0ado a datos 2uadr.cula enla0ada a datos 2uadro de lista enla0ado a datos 2uadro de lista de directorios 2uadro de lista de unidades 2uadro de lista de arc5i"os Formulario #arco #edidor =r !ico 2uadr.cula Barra de despla0amiento 5ori0ontal Imagen 3Image4 img ,stado de tecla ,ti-ueta '.nea *ipo de control 2uadro de lista #ensa(e #API +esin #API #2I Formulario #DI secundario #en/ #+ Fle8 =rid #+ <ab Acti"eJ ,s-uema .re'ijo (jemplo pnl=rupo aniBu0n c5K+lo'ectura cboIngls cmd+alir dlgArc5i"oAbrir com comFa8 dat datBiblio dbcbo dbcbo'engua(e dbgrd dbgrdDesultado2onsulta dblst dblst<ipo<area dir dirBrigen dr" dr"Destino !il !ilBrigen !rm !rm,ntrada !ra !ra'engua(e gau gau,stado gra graIngresos grd grdPrecios 5sb 5sbVolumen imgIcono Ke) Ke)#a)/sculas lbl lbl#s(A)uda lin linVertical .re'ijo (jemplo lst mpm mps mci mdi mnu msg mst ole out lst2digoDePol.tica mpm,n"iar#s( mps+esin mciV.deo mdi9ota mnuArc5i"oAbrir msg2lientes mstPrimero oleAo(aDe<raba(o outDiagramaDeBrg pnl ani c5K cbo cmd dlg

Parte 1: Introduccin al desarrollo con Visual Basic

Fundamentos de Programacin en Visual Basic


Pen Bedit Pen Aedit <ra0o de pluma Imagen 3Picture4 2lip de imagen In!orme Forma 2uadro de n/mero 2uadro de te8to 2ronmetro ArribaCaba(o Barra de despla0amiento "ertical 2ontrol desli0ante 'ista de im genes Vista de rbol Barra de 5erramientas <ab+trip Barra de estado 'ista Barra de progreso Dic5<e8Bo8 bed 5ed inK pic clp rpt s5p spn t8t tmr upd "sb sld ils tre tlb tab sta l"% prg rt! bed9ombre 5edFirma inK#apa picV=A clpBarraDeAerramientas rpt=anancias<rimestre1 s5p2.rculo spnP ginas t8tApellido tmrAlarma updDireccin "sbVelocidad sld,scala ils<odoslosIconos treBrgani0acin tlbAcciones tabBpciones staFec5aAora l"%,ncabe0ados prg2argarArc5i"o 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 m s 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 Arc5i"o Abrir Arc5i"o ,n"iar correo !ecuencia del t+tulo del men9 Arc5i"o ,n"iar !a8 Formato 2ar cter A)uda 2ontenido &ombre del controlador del men9 mnuArc5i"adorAbrir mnuArc5i"o,n"iar2orreo &ombre del controlador del men9 mnuArc5i"o,n"iarFa8 mnuFormato2ar cter 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& Adem s* los nombres del control de men/ documentan claramente los elementos del men/ a los -ue est n ad(untos&

Formularios
Parte 1: Introduccin al desarrollo con Visual Basic N

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 Border+t)le 2aption 2ontrolBo8 ,nabled Icon 'e!t ) <op #a8Button #inButton 9ame $indo%+tate 2olor de !ondo del !ormulario& ,stilo del borde del !ormulario& <e8to en la barra de t.tulo del !ormulario& <rueOFalse& Determina si tiene o no el cuadro de control& <rueOFalse& Determina si est 5abilitado para responder a las acciones del usuario& Icono -ue se muestra cuando el !ormulario est minimi0ado& 1bicacin del !ormulario& <rueOFalse& Determina si tiene o no el botn Maximizar. <rueOFalse& Determina si tiene o no el botn Minimizar. 9ombre del !ormulario& ,stado inicial del !ormulario 3normal* ma8imi0ado o minimi0ado4

E*entos
Acti"ate 2licK Deacti"ate 'oad 1nload Bcurre cuando el !ormulario se con"ierte en la "entana acti"a& Bcurre cuando 5ace clic sobre el !ormulario& Bcurre cuando el !ormulario de(a de ser la "entana acti"a& Bcurre cuando se carga un !ormulario& Bcurre cuando un !ormulario est a punto de descargarse&

M&todos
Aide De!res5 +etFocus +5o% Bculta el !ormulario& Actuali0a el contenido del !ormulario& 'e entrega el en!o-ue al !ormulario& Aace "isible el !ormulario&

Parte 1: Introduccin al desarrollo con Visual Basic

1I

Fundamentos de Programacin en Visual Basic

2ontroles B sicos
2ontrol ,ti-ueta 2ontrol 2uadro de <e8to

2ontrol Botn de 2omando 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 m s 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

11

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 Auto+i0e 2aption 9ame Font Alineacin del te8to dentro del control& <rueOFalse& Determina si el tama6o del control se a(usta autom ticamente al te8to -ue contiene& <e8to -ue muestra el control& 9ombre del control& ,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 m 8ima permitida para el te8to en el control& #ulti'ine ,stablece si el control puede aceptar m/ltiples l.neas de te8to& 9ame 9ombre del control& Pass%ord25ar 2ar cter 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 =otFocus Pe)Do%n 'ostFocus Bcurre cuando cambia el te8to -ue contiene el control& Bcurre cuando el control recibe el en!o-ue& Bcurre cuando el usuario presiona una tecla mientras el control tiene el en!o-ue& Bcurre cuando el control pierde el en!o-ue&

M&todos
De!res5 +etFocus Actuali0a el te8to del control& #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&
1?

Parte 1: Introduccin al desarrollo con Visual Basic

Fundamentos de Programacin en Visual Basic


2aption De!ault Font 9ame Visible ,stablece el te8to -ue muestra el botn& <rueOFalse& ,stablece si el botn se comportar como el botn predeterminado en el !ormulario& ,stablece la !uente* estilo ) tama6o para el te8to del control& 9ombre del botn& <rueOFalse& ,stablece si el botn ser "isible para el usuario&

E*entos
2licK Bcurre 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 mostrar n 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 *e t 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 *e t& '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 eti ueta"

/%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

1@

Fundamentos de Programacin en Visual Basic

Dim s!ombre as String s!ombre = txt!ame.Text

Procedimientos de ,"ento
Visual Basic in"oca autom ticamente 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 cmdBP& "rivate Sub cmd#$%Clic&'( )sgBox "Hola" End Sub

Brden 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 nC1* siendo n el n/mero de controles -ue tiene el !ormulario&

0uitar un control del orden de ta%ulaci!n


9ormalmente* 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 r pido 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 r pido debe resaltar un car cter 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 r pido* deber

Parte 1: Introduccin al desarrollo con Visual Basic

1E

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 *e to, 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& @& ,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

1F

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 ,st ndar


'os mdulos est ndar 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& 9o 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&
'ista de Bb(etos 'ista de ,"entos

Barra de Di"isin

Botn Ver Procedimiento

Botn Ver #dulo

Parte ?: #ane(o de Formularios

1G

Fundamentos de Programacin en Visual Basic


'a Ventana de Cdigo contiene:

El Cuadro $ista de /%-etos


#uestra el nombre del ob(eto seleccionado& Aaga clic en la !lec5a a la derec5a del cuadro Bb(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 Bb(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 Bb(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 m s ! 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 1H

Fundamentos de Programacin en Visual Basic


txtContrase0a.SetFocus End *+ End Sub

Car2cter de Continuaci!n de $#nea


,l car cter subra)ado 3S4 es el car cter de continuacin de l.nea* ) se usa para di"idir una sentencia en m/ltiples l.neas& ,sto 5ace -ue la sentencia sea m s ! 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 car cter 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 car cter apstro!e 3T4* de modo -ue todo el te8to -ue contin/e a este car cter 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+o ue al cuadro de texto -suario End Sub

2uadro de #ensa(e ) de ,ntrada


1na de las !ormas m s 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 ) r pido 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&

6pta = )sgBox'"7Est5 seguro de eliminar a este cliente8"9 % vb:uestion ; vb<es!o9 "Con+irmaci=n"(

Parte ?: #ane(o de Formularios

1L

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 Prompt Descripcin De-uerido& ,8presin de cadena -ue representa el mensa(e en el cuadro de di logo& 'a longitud m 8ima de prompt es de apro8imadamente 1I?E de caracteres* seg/n el anc5o de los caracteres utili0ados& +i prompt consta de m s de una l.nea* puede separarlos utili0ando un car cter de retorno de carro 325r31@4 4 o un car cter de a"ance de l.nea 325r31I4 4* o una combinacin de caracteres de retorno de carro C a"ance de l.nea 325r31@ ) 25r31I4 4 entre cada l.nea ) la siguiente& Bpcional& ,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& Bpcional& ,8presin de cadena -ue se muestra en la barra de t.tulo del cuadro de di logo& +i se omite title* en la barra de t.tulo se coloca el nombre de la aplicacin& Bpcional& ,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 di logo& +i se especi!ica 5elp!ile* tambin se debe especi!icar conte8t& Bpcional& ,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&

Buttons

<itle Aelp!ile

2onte8t

Valores ,l argumento buttons puede asumir los siguientes "alores: Constante VbBPBnl) VbBP2ancel VbAbortDetr)Ignore VbWes9o2ancel VbWes9o VbDetr)2ancel Vb2ritical VbQuestion Constante Vb,8clamation VbIn!ormation VbDe!aultButton1 VbDe!aultButton? VbDe!aultButton@ Valor I 1 ? E F 1G @? Valor EL GE I ?FG F1? Descripcin #uestra solamente el botn Aceptar& #uestra los botones Aceptar ) 2ancelar& #uestra los botones Anular* Deintentar e Ignorar& @ #uestra los botones +.* 9o ) 2ancelar& #uestra los botones +. ) 9o& #uestra los botones Deintentar ) 2ancelar& #uestra el icono de mensa(e cr.tico& #uestra el icono de pregunta de ad"ertencia& Descripcin #uestra el icono de mensa(e de ad"ertencia& #uestra el icono de mensa(e de in!ormacin& ,l primer botn es el predeterminado& ,l segundo botn es el predeterminado& ,l tercer botn es el predeterminado&

Parte ?: #ane(o de Formularios

1N

Fundamentos de Programacin en Visual Basic


VbDe!aultButtonE VbApplication#odal Vb+)stem#odal HGL I EING ,l cuarto botn es el predeterminado& Aplicacin modal7 el usuario debe responder al cuadro de mensa(es antes de poder seguir traba(ando en la aplicacin actual& +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 di logo7 el segundo grupo 31G* @?* 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 VbBK Vb2ancel VbAbort VbDetr) VbIgnore VbWes Vb9o Valor 1 ? Descripcin Aceptar 2ancelar @ Anular E Deintentar Ignorar +. 9o

F G H

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 ?I

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 di logo* 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& strCodigo = *nputBox'"*ngrese el c=digo del cliente a buscarB"9 % "BCs ueda"9 "C,*...D"(

%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 Prompt Descripcin De-uerido& ,8presin de cadena -ue se muestra como mensa(e en el cuadro de di logo& 'a longitud m 8ima de prompt es de apro8imadamente de 1I?E caracteres* seg/n el anc5o de los caracteres utili0ados& +i prompt consta de m s de una l.nea* puede separarlos utili0ando un car cter de retorno de carro 325r31@44* un car cter de a"ance Descripcin de l.nea 325r31I44 o una combinacin de los caracteres de retorno de carro X a"ance de l.nea 325r31@4 ) 325r31I44 entre cada l.nea ) la siguiente& Bpcional& ,8presin de cadena -ue se muestra en la barra de t.tulo del cuadro de di logo& +i omite title* en la barra de t.tulo se coloca el nombre de la aplicacin& Bpcional& ,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& Bpcional& ,8presin numrica -ue especi!ica* la distancia en sentido 5ori0ontal entre el borde i0-uierdo del cuadro de di logo ) el borde i0-uierdo de la pantalla& +i se omite 8pos* el cuadro de di logo se centra 5ori0ontalmente&
?1

Parte

<itle De!ault Jpos

Parte ?: #ane(o de Formularios

Fundamentos de Programacin en Visual Basic


Wpos Bpcional& ,8presin numrica -ue especi!ica* la distancia en sentido 5ori0ontal entre el borde i0-uierdo del cuadro de di logo ) el borde i0-uierdo de la pantalla& +i se omite )pos* el cuadro de di logo se coloca apro8imadamente un tercio de la altura de la pantalla* desde el borde superior de la misma& Bpcional& ,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 di logo& +i se especi!ica 5elp!ile* tambin deber especi!icar conte8t& Bpcional& ,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&

Aelp!ile

2onte8t

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 m s ! cil de leer ) escribir mediante el uso de estas constantes& Adem s* 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 Vb9ormal Vb#inimi0ed Vb#a8imi0ed Valor I 1 ? 5escripci$n 9ormal #inimi0ado #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
9ormalmente la inte!a0 de una aplicacin est compuesta por "arios !ormularios& 2uando Visual Basic inicia la aplicacin* autom ticamente 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 2argar un !ormulario en memoria* pero sin mostrarlo 2argar o mostrar el !ormulario& #ostrar un !ormulario cargado& Bcultar u !ormulario Bcultar un !ormulario ) descargarlo de
Parte ?: #ane(o de Formularios

Mtodo o 0nstrucci$n 1se la sentencia #oad* o 5aga re!erencia a una propiedad o control sobre el !ormulario& 1se el mtodo !ho"& 1se el mtodo !ho". 1se el mtodo Hide. 1se la sentencia 1nload.
??

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 autom ticamente& %ormato 9ombreDelFormulario&+5o% (jemplo FrmEntrada.S/oF

5entencia $oad
2arga un !ormulario a la memoria* pero no lo muestra& %ormato 'oad 9ombreDelFormulario (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& 9ormalmente* 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

?@

Fundamentos de Programacin en Visual Basic

M&todo Hide
Bculta un !ormulario* pero no lo descarga de memoria& %ormato 9ombreDelFormulario&Aide (jemplo> +rm*ngreso.Hide

5entencia :nload
Descarga un !ormulario de memoria %ormato 1nload 9ombreDelFormulario 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

?E

Fundamentos de Programacin en Visual Basic


(jemplo I Descarga el +ormulario actual "rivate Sub cmdCerrarAClic& ' ( -nload )e End Sub

E*ento :nload
Bcurre 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 par metro 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 ) 9o #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 ?F

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 est ndar&

'ista de men/s

Nota:

Para poder ingresar el editor de mens no de%e encontrarse en la *entana de c!digo.

/pciones del cuadro de di2logo


Parte 2aption Descripcin '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 3C4 en el cuadro 2aption&

Parte ?: #ane(o de Formularios

?G

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& 9ame '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& Aelp2onte8tID '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 AelpFile& 9egotiatePosition 'e permite seleccionar la propiedad 9egotiatePosition 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/& ,s un cuadro de lista -ue muestra en orden (er r-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& +elecciona la l.nea siguiente& Inserta una l.nea en el cuadro de lista* inmediatamente encima de la l.nea actualmente

'ista #en/s

+iguiente Insertar

Parte ?: #ane(o de Formularios

?H

Fundamentos de Programacin en Visual Basic


Parte ,liminar Aceptar Descripcin seleccionada& ,limina Borra la l.nea actualmente seleccionada& 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& 2ierra el ,ditor de men/s ) cancela todos los cambios&

2ancelar

A6adiendo 2ontroles Adicionales al 2uadro de Aerramientas


,l 2uadro de Aerramientas contiene los controles intr.nsecos o est ndar 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 di logo 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 9ormalmente* 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 m s !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*e t de cada ob(eto Button& Para mostrar in!ormacin sobre 5erramientas* la propiedad !ho"*ips debe establecerse a <rue&

Parte ?: #ane(o de Formularios

?L

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 im genes 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 im genes 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& 9o 5a) ninguna limitacin en cuanto al tama6o de la imagen* pero el n/mero total de im genes -ue se puede cargar est limitado por la cantidad de memoria disponible& Durante el dise6o del programa puede agregar im genes mediante la !ic5a ,eneral del cuadro de di logo .ropiedades del control 0mage#ist& ,n tiempo de e(ecucin puede agregar im genes 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 autom ticamente 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 est n contenidos en el #DIForm en tiempo de e(ecucin&
?N

Parte ?: #ane(o de Formularios

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 <rue False 5escripci$n ,l !ormulario es #DI secundario ) se mostrar dentro del !ormulario #DI primario& 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 mostrar n 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 mostrar n 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 autom ticamente& +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

@I

Parte @: <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
B)te Boolean Integer 'ong 3entero largo4 +ingle 3coma !lotanteO precisin simple4 Double 3coma !lotanteO precisin doble4 2urrenc) 3entero a escala4 Decimal

*ama-o de @ango 4lmacenamiento


1 b)te ? b)tes ? b)tes E b)tes E b)tes I a ?FF <rue o False C@?&HGL a @?&HGH C?&1EH&EL@&GEL a ?&1EH&EL@&GEH C@*EI?L?@,@L a C1*EI1?NL,CEF para "alores negati"os7 1*EI1?NL,C EF a @*EI?L?@,@L para "alores positi"os C1*HNHGN@1@ELG?@?,@IL a CE*NEIGFGEFLE1?EH,C@?E para "alores negati"os7 E*NEIGFGEFLE1?EH,C@?E a 1*HNHGN@1@ELG?@?,@IL para "alores positi"os CN??&@@H&?I@&GLF&EHH*FLIL a N??&@@H&?I@&GLF&EHH*FLIH ROC HN&??L&1G?&F1E&?GE&@@H&FN@&FE@&NFI&@@F sin punto decimal7 ROC H*N??L1G?F1E?GE@@HFN@FE@NFI@@F con ?L posiciones a la derec5a del signo decimal7 el n/mero m s pe-ue6o distinto de cero es ROC I*IIIIIIIIIIIIIIIIIIIIIIIIII1 1 de enero de 1II a @1 de Diciembre de NNNN 2ual-uier re!erencia a tipo Bb(ect Desde I a ?&III millones

L b)tes

L b)tes 1E b)tes

Date Bb(ect +tring 3longitud "ariable4 +tring 3longitud !i(a4 Variant 3con n/meros4 Variant 3con caracteres4 De!inido por usuario 3utili0ando <)pe4

L b)tes E b)tes 1I b)tes R longitud de la cadena 'ongitud de la cadena 1G b)tes

Desde 1 a GF&EII apro8imadamente 2ual-uier "alor numrico 5asta el inter"alo de un tipo Double

?? b)tes R ,l mismo inter"alo para un tipo +tring de longitud "ariable& longitud de la cadena el 9/mero re-uerido ,l inter"alo de cada elemento es el mismo -ue el inter"alo de su tipo por los elementos 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 @: <ipos de datos* constantes ) "ariables

@1

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 2bool 2b)te 2cur 2date 2Dbl 2int 2'ng 2+ng 2+tr 2"ar 2V,rr

Convierten una e presi$n en Boolean B)te 2urrenc) Date Double Integer 'ong +ingle +tring Variant ,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 c lculos ) asignar el resultado a una "ariable: #an0anaVendidas : 1I T +e pasa el "alor 1I a la "ariable #an0anasVendidas : #an0anasVendidas R 1 Bbser"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 @: <ipos de datos* constantes ) "ariables @?

5im nombreC"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& Adem s* 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& 9o puede incluir un punto o un car cter de declaracin de tipo 3Y*Q*Z*[*\*]4& 9o 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 cl usula 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 Bb(ect* Form1 ) <e8tBo8& Aa) otras !ormas de declarar "ariables: Declarar una "ariable en la seccin Declaraciones de un mdulo de !ormulario* est ndar 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
9o 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 = S r'TempJal( End Function Visual Basic crea autom ticamente 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 = S r 'TemJal( End Function

Parte @: <ipos de datos* constantes ) "ariables

@@

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 est ndar: #ption Explicit C o bien C

,n el men/ Herramientas, eli(a 7pciones* 5aga clic en la !ic5a (ditor ) acti"e la opcin 5eclaraci$n de variables re2uerida. ,sto inserta autom ticamente 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 est ndar -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 = S r '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 m s 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 9i"el de procedimiento

.rivado 'as "ariables son pri"adas

.9blico 9o es aplicable& 9o
@E

Parte @: <ipos de datos* constantes ) "ariables

al procedimiento donde se declaran& 9i"el de mdulo 'as "ariables son pri"adas al mdulo donde se declaran&

puede declarar "ariables p/blicas dentro de un procedimiento& 'as "ariables est n disponibles para todos 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 C o bien C 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 declar ndolas 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 m s ! 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 est n 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& B 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 @: <ipos de datos* constantes ) "ariables @F

"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& Aa) 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 matem tica o de !ec5a ) 5ora: Const con"i = M.DNDOP@QOMORPSP "ublic Const con)ax"lanetas 2s *nteger 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 m s 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 m s 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* decl rela 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* decl rela en la seccin 5eclaraciones ,enerales del mdulo&

Parte @: <ipos de datos* constantes ) "ariables

@G

Para crear una constante disponible en toda la aplicacin* declare la constante en la seccin 5eclaraciones ,enerales de un mdulo est ndar ) colo-ue delante de Const la palabra cla"e .ublic. 9o 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 m s constantes& +e produce un ciclo cuando se tienen dos o m s 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& 9o 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 9ombres 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 m s di!.cil mantener ) "ol"er a usar el cdigo& ,n Visual Basic las "ariables pueden tener el alcance siguiente: 4lcance 9i"el de procedimiento 5eclaraci$n 5im o !tatic en el Procedimiento* +ubprocedimiento o Funcin 5eclaraci$n .rivate en la seccin Declaraciones Aenerales de un mdulo de !ormulario o de cdigo 3&!rm* &bas4 .ublic en la seccin Declaraciones Aenerales de un mdulo de cdigo 3&bas4 Visible en ,l procedimiento en el -ue est declarada

4lcance 9i"el de mdulo

Visible en <odos los procedimientos del mdulo de !ormulario o de cdigo

=lobal

,n toda de aplicacin

,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 @: <ipos de datos* constantes ) "ariables

@H

1na pr ctica de codi!icacin correcta es escribir cdigo modular siempre -ue sea posible& Por e(emplo* si la aplicacin muestra un cuadro de di logo* colo-ue todos los controles ) el cdigo necesario para e(ecutar la tarea del di logo 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 r pidamente 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 gstr9ombre1suario mblnProgresoDel2 lculo 9inguno dblVelocidad

=lobal g 9i"el de mdulo m 'ocal del Procedimiento

1na "ariable tiene alcance glo%al si se declara como .ublic en un mdulo est ndar o en un mdulo de !ormulario& 1na "ariable tiene alcance de ni*el de m!dulo si se declara como .rivate en un mdulo est ndar 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 est ndar 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 I I I I ,Lmite de entradas m5ximas para la lista de usuarios 'valor entero9 local del m=dulo( Car5cter de nueva lLnea 'cadena9 global de la aplicaci=n(

gstr!ueva,Lnea

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* a9ombre1suario<mp !rente a s9ombre1suario<mp !rente a s9ombre1suario<emp4& ,n la !ic5a (ditor del cuadro de di logo 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& Bpcionalmente* ) en especial para programas largos* el pre!i(o se puede ampliar para indicar el alcance de la "ariable&

Parte @: <ipos de datos* constantes ) "ariables

@L

.ipos de datos de *aria%les


1se los siguientes pre!i(os para indicar el tipo de datos de una "ariable& *ipo de datos Boolean B)te Bb(eto 2ollection 2urrenc) Date 3<ime4 Double ,rror Integer 'ong Bb(ect +ingle +tring De!inido por el usuario Variant .re'ijo bln b)t col cur dtm dbl err int lng ob( sng str udt "nt (jemplo bln,ncontrado b)tDatosImagen col$idgets curIngresos dtmInicio dbl<olerancia err9/mDeBrden int2antidad lngDistancia ob(Acti"o sng#edia str9ombreF udt,mpleado "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& Adem s* los nombres de !unciones deben empe0ar con un "erbo* como Iniciar9ombre#atri0 o 2errarDi logo& Para nombres -ue se usen con !recuencia o para trminos largos* se recomienda usar abre"iaturas est ndar para -ue los nombres tengan una longitud ra0onable& ,n general* los nombres de "ariables con m s de @? 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 b sicamente 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 @: <ipos de datos* constantes ) "ariables

@N

!inta is .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& !inta is 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
Aa) 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 @: <ipos de datos* constantes ) "ariables

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 (

BP,DADBD,+
"ritm&ticos
^ > O #od R Q ,8ponenciacin #ultiplicacin Di"isin Di"isin entera Desiduo entero 3,(m: A #od B4 +uma Desta 2oncatenacin de cadenas

Comparaci!n
: _` _: `: 'iKe Igual Distinto #enor -ue #enor o igual #a)or o igual 2ompara dos cadenas > 2ero o m s caracteres 3,(m: cad 'iKe Mma>;4 ? 2ual-uier car cter \ 2ual-uier d.gito 3ICN4 UlistaV cual-uier car cter en lista UalistaV cual-uier car cter -ue no esta en lista 1sado para comparar dos "ariables de re!erencia a ob(etos

Is

$!gicos
And Br Jor 9ot MW; lgico MB; lgico MB; ,8clusi"o 9egacin

Parte @: <ipos de datos* constantes ) "ariables

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 m s 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: *+ cual uierFec/a V !oF T/en Cual uierFec/a = !oF

*+ cual uierFec/a V !oF Cual uierFec/a = !oF End *+

T/en

Bbser"e -ue el !ormato de una /nica l.nea de 0'...*hen no utili0a la instruccin (nd 0'. +i se desea e(ecutar m s 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'. *+ cual uierFec/a V !oF T/en

Parte E: ,structuras de control

E?

Cual uierFec/a TimerD.Enabled End *+

= =

!oF False

I Desactiva el control Timer.

*+

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'. Bpcionalmente* 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. Bbser"e -ue puede tener cual-uier n/mero de cl usula (lse0' o ninguna& Puede incluir una cl usula (lse sin tener en cuenta si tiene o no cl usula (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 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

generales

Parte E: ,structuras de control

E@

*+ 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 Bbser"e -ue siempre puede agregar m s cl usulas (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 m s 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 m s "alores& +i 5a) m s de un "alor en una lista* se separan los "alores con comas& 2ada blo-.e de sentencias contiene cero o m s instrucciones& +i m s de un Case coincide con la e8presin de prueba* slo se e(ecutar el blo-ue de instrucciones asociado
Parte E: ,structuras de control EE

con la primera coincidencia& Visual Basic e(ecuta las instrucciones de la cl usula 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 cl usula (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

Bbser"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

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 Case N To Q sngDscto Case Else sngDscto End Select

= ... = ...O = ..D. = ..@.

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 m s l.neas de cdigo repetidamente& 'as estructuras de repeticin -ue acepta Visual Basic son: Do&&&'oop For&&&9e8t For ,ac5&&&9e8t

5o...#oop 1tilice el bucle 5o para e(ecutar un blo-ue de sentencias un n/mero inde!inido de "eces& Aa) algunas "ariantes en la sentencia 5o...#oop, pero cada una e"al/a una condicin numrica para determinar si

Parte E: ,structuras de control

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. 9unca 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& Btra "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 Aa) otras dos "ariantes an logas 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 Do Until condici!n 5entencias &oop Hace el bucle al menos una veA Do 5entencias &oop Until condici!n

Parte E: ,structuras de control

EH

%or...&e t 'os bucles 5o !uncionan bien cuando no se sabe cu ntas "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...&e t. 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 @& ,(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...&e t ,l bucle %or (ach...&e t es similar al bucle %or...&e t, 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 cu ntos elementos 5a) en la coleccin& Ae a-u. la sinta8is del bucle %or (ach...&e t> 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 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...&e t> 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. 9o puede utili0ar %or (ach...&e t 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 m s iteraciones o sentencias dentro del bucle&

Parte E: ,structuras de control

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 m s 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

FI

Parte F: 2ontroles ,st ndar 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 ,nabled 9ame Visible <.tulo de marco& Determina si est 5abilitado para responder a las acciones del usuario& 9ombre del control& Determina si el Marco ) los controles -ue contiene est n "isibles o no&

2ontrol

2asilla

de

Veri!icacin

325ecKBo84

'as casillas de "eri!icacin se utili0an para proporcionar al usuario opciones de tipo +iO9o 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 ,nabled usuario& 9ame Value Descripcin -ue acompa6a a la casilla& <rueOFalse& Determina si est 5abilitado para responder a las acciones del 9ombre del control& I X 1nc5ecKed 3Vac.o* no marcado4 1 X 25ecKed 3#arcado4 ? X =ra)ed 3=ris* Inde!inido4 Determina si la casilla est "isible o no&

Visible

E*entos
2licK Bcurre cuando el usuario 5ace clic sobre la casilla&

2ontrol Botn de Bpcin 3BptionButton4

Parte F: 2ontroles ,st ndar Adicionales ) Procedimientos

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 ,nabled usuario& 9ame Value Visible Descripcin -ue acompa6a a la opcin& <rueOFalse& Determina si est 5abilitado para responder a las acciones del 9ombre del control& <rueOFalse* marcado o no marcado& <rueOFalse& Determina si el botn est "isible o no&

E*entos
2licK Bcurre 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 9ame4* 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 9ombre del control Procedimientos de e"ento

C!digo m2s +2cil de escri%ir y mantener


'os arreglos de controles 5ace -ue el cdigo sea m s ! cil de escribir ) mantener debido a -ue solo escribe un solo procedimiento de e"ento para todos los controles pertenecientes al arreglo* el par metro 0nde del procedimiento de e"ento determina desde -ue control ocurri el e"ento&

Parte F: 2ontroles ,st ndar Adicionales ) Procedimientos

F?

C!digo m2s e+iciente


'os arreglos de controles 5acen -ue el cdigo sea m s 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& @& 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&

BptDeporte3I4 BptDeporte314 BptDeporte3?4

,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 ,st ndar Adicionales ) Procedimientos F@

lblHasta.Enabled = True txtDesde.Enabled = True txtHasta.Enabled = True txtDesde.SetFocus End Select End Sub

2ontrol Barra de Despla0amiento Barra de Despla0amiento Aori0ontal 3A+crollBar4 Barra de Despla0amiento Vertical 3V+crollBar4
+on usuados con !recuencia para permitir r pidos 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 #a8 #in 9ame +mall25ange Value De 1 a @?HGH& 2antidad de cambio cuando el usuario 5ace clic en el despla0amiento largo& # 8imo "alor de despla0amiento cuando el botn se encuentra en la posicin m s alta& Valor predeterminado: @?HGH& #.nimo "alor del despla0amiento cuando el botn se encuentra en la posicin m s ba(a& Valor predeterminado: I& 9ombre ddel control& De 1 a @?HGH& 2antidad de cambio cuando el usuario 5ace clic en la !lec5a de despla0amiento& Valor actual en la escala de "alores&

E*ento
25ange Bcurre 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 m s elementos& +i el n/mero de elementos supera el n/mero -ue puede mostrarse* se agregar autom ticamente 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 ,st ndar Adicionales ) Procedimientos

FE

lst=aseosas

t8t=aseosa cmdAgregar cmd,liminar

Propiedades
,nabled 'ist 'ist2ount 'istInde8 #ulti+elect 9ame 9e%Inde8 +elected <rueOFalse& Determina si el control responde a las acciones del usuario& Arreglo con los elementos de la lista& 9/mero de elementos de la lista& ,lemento seleccionado& ,stablece si es posible seleccionar "arios elementos o uno solo& 9ombre del control& Indice del /ltimo elemento a6adido al 2uadro de 'ista& 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 ?& <rueOFalse& ,stablece los elementos se ordenan al!abticamente& ,stablece el comportamiento del control& 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&

+orted +t)le <e8t

M&todos
AddItem Demo"eItem Permite a6adir nue"os elementos a la lista& Permite eliminar elementos de la lista&

E*entos
2licK Bcurre cuando el usuario interact/a con el control&

E-emplos
Muestra en el Cuadro de *e to t t,aseosa el elemento seleccionado "rivate Sub lst3aseosas%Clic&'( txt3aseosa.Text = lst3aseosas.Text End Sub

Parte F: 2ontroles ,st ndar Adicionales ) Procedimientos

FF

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 *e tBo ) 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 'ist 'ist2ount 'istInde8 9ame 9e%Inde8 +orted +t)le <e8t <rueOFalse& Determina si el control responde a las acciones del usuario& Arreglo con los elementos de la lista& 9/mero de elementos de la lista ,lemento seleccionado& 9ombre del control& Indice del /ltimo elemento a6adido al cuadro de lista& <rueOFalse& ,stablece si los elementos se ordenan al!abticamente& ,stablece el comportamiento del control& <e8to -ue contiene el control&

M&todos
AddItem Demo"eItem Permite a6adir nue"os elementos a la lista& Permite eliminar elementos de la lista&

E*entos
2licK Bcurre cuando el usuario interact/a con la lista del control&
FG

Parte F: 2ontroles ,st ndar Adicionales ) Procedimientos

25ange

Bcurre cuando el "alor de la propiedad *e t 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& 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 m s elementos de la lista& 'ista desplegable& ,ste estilo slo permite la seleccin desde la lista desplegable&

"b2ombo+imple

"b2omboDropCDo%n'ist ?

E-emplo
,n la siguiente inter!a0 se ilustra el uso del control ComboBo ) la propiedad !tyle.

cbo=aseosas +t)le:I cbo,ncuestado s +t)le:1

lbl=aseosa

lbl,ncuestado

lbl2iudad cbo2iudades +t)le:?

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 ,st ndar Adicionales ) Procedimientos

FH

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 "rivate Sub cboCiudades%Clic&'( lblCiudad.Caption = cboCiudades.Text End Sub cboCiudades

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 autom ticamente 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 ,st ndar Adicionales ) Procedimientos

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


Adem s de poder declarar cdigo en un mdulo de !ormulario* tambin se puede declarar procedimientos en un mdulo de cdigo est ndar& 'os mdulos de cdigo est ndar 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 est n disponibles para toda la aplicacin* ) pueden ser llamados especi!icando el nombre del procedimiento&

Parte F: 2ontroles ,st ndar Adicionales ) Procedimientos

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 est ndar* puede ser llamado con el siguiente cdigo& )i"roc +i se declara un procedimiento con el mismo nombre en dos mdulos est ndar* se debe especi!icar el nombre del mdulo como se muestra en el siguiente cdigo& )oduleD.)i"roc

1so del ,8aminador de Bb(etos para "er Procedimientos ) 'ibrer.as de Bb(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 r pidamente 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 est n 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 ,st ndar Adicionales ) Procedimientos

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&

Aerramientas 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 autom ticamente "isuali0a todas las "ariables declaradas en el procedimiento actual* (unto con sus "alores&

Parte G: Depuracin* Validacin* ) #anipulacin de errores

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 podr n 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 m 8ima 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 m 8ima& +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 car cter A+2II est ndar& ,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

G?

Validacin de In!ormacin a 9i"el de Formulario


Adem s 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 "er n 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

G@

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 Vb%ormControlMenu Vb%ormCode Vb4pp=indo"s Vb4pp*askManager Vb%ormM50%orm Valor I 1 ? @ E 5escripci$n ,l usuario eligi el comando Cerrar del men/ Control del !ormulario& +e in"oc la instruccin 1nload desde el cdigo& 'a sesin actual del entorno operati"o #icroso!t $indo%s est !inali0ando& ,l Administrador de tareas de #icroso!t $indo%s est cerrando la aplicacin& 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 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


9o importa lo bien -ue se dise6e una aplicacin* los errores en tiempo de e(ecucin siempre ocurrir n& '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 m s robustas&

Entendiendo el Proceso de Manipulaci!n de Errores


,l proceso de manipulacin de errores in"olucra los siguientes pasos& 1& Aabilitar 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& @& +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 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& B sicamente* 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 @esume 0nstrucci$n @esume &e t @esume l#nea Nota8 5escripci$n Degresa a la instruccin -ue gener el error& ,mplee @esume para repetir una operacin luego de corregir el error& 5escripci$n Degresa a la instruccin inmediatamente siguiente a la -ue gener el error& 'a e(ecucin contin/a en la l.nea especi!icada en el argumento obligatorio l.nea&

Parte G: Depuracin* Validacin* ) #anipulacin de errores

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 ser n 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 Modo de interrupci$n en todos 5escripci$n +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& +i se selecciona esta opcin* Visual Basic e(ecutar las instrucciones 7n (rror ,o*o para manipular errores en tiempo de e(ecucin& Visual Basic ingresa a modo de Interrupcin en cual-uier error para el cual no se 5a)a establecido una rutina de manipulacin&

0nterrupci$n en m$dulos de clase

0nterrupci$n en errores no controlados

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.e e ?& Ingrese el nombre para el arc5i"o e(ecutable& @& Para a6adir in!ormacin espec.!ica de "ersin: ,n el cuadro de di logo ,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

GH

Adem s 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

GL

Parte H: 2ontroles ,st ndar 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 di logo -ue permitan al usuario abrir un arc5i"o de una lista de un disco en cual-uier unidad disponible&

Propiedades
Dri"e 'ist 'ist2ount 'istInde8 De"uel"e o establece la unidad seleccionada en tiempo de e(ecucin& 9o est disponible en tiempo de dise6o& 2ontiene la lista de cone8iones de unidad e!ecti"as& De"uel"e el n/mero de cone8iones con unidades de disco& De"uel"e o establece el .ndice del elemento seleccionado actualmente en el control& 9o est disponible en tiempo de dise6o&

E*entos
25ange Bcurre 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 (er r-uica de directorios& Puede crear cuadros de di logo -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 'ist2ount 'istInde8 Pat5 2ontiene una lista de todos los directorios& De"uel"e el n/mero de subdirectorios del directorio actual& Indica el .ndice de la ruta de acceso actual& ,l "alor de la propiedad Pat5 es una cadena -ue indica una ruta de acceso* como 2:cBb o 2:c$indo%sc+)stem&

E*entos
25ange Bcurre 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 di logo en la aplicacin -ue* por e(emplo* permitan al usuario seleccionar un arc5i"o o un grupo de arc5i"os&
Parte H: 2ontroles ,st ndar A"an0ados ) Acceso a Datos GN

Propiedades
File9ame 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& 9o 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:cBb 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 Bcurre 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 +tretc5 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& <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 ,st ndar A"an0ados ) Acceso a Datos

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

dr"1nidad

Frame1

dirDirectorio Image1

!il'ista

(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 ,st ndar A"an0ados ) Acceso a Datos

H1

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& 9o e8iste ning/n l.mite pr ctico en cuanto al n/mero de controles *imer acti"os -ue se puede tener en Visual Basic F&I e(ecut ndose en $indo%s NF o en $indo%s 9<&

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 atr s establecida por la propiedad Inter"al del control& 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 GFF@F& ,l m 8imo* GFF@F milisegundos* e-ui"ale a poco m s de un minuto&

Inter"al

E*entos
<imer Bcurre cuando 5a transcurrido un inter"alo preestablecido para el control *imer&

(jemplo de uso del control *imer

<imer1 Inter"al:1III ,nabled:False t8tAora

t8t#ensa(e

cmd,stablece r

MinimiAa el 'ormulario y activa el control temporiAador *imer6

cmd+alir

"rivate Sub cmdEstablecer%Clic&'( FormD.EindoFState = D TimerD.Enabled = True End Sub

Parte H: 2ontroles ,st ndar A"an0ados ) Acceso a Datos

H?

*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 t tHora 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 ,st ndar A"an0ados ) Acceso a Datos

H@

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&

Bpciones 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 Bb(ects 3 547 4 ) 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 @ 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 0nde ado 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 est ndar BDB2* tal como #icroso!t +Q' +er"er& 'a ma)or.a de bases de datos -ue soportan BDB2 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 BDB2 para acceder a bases de datos BDB2 tales como #icroso!t +Q' +er"er ) Bracle& ,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 BDB2 directamente ) est n disponibles como un producto separado& #ibrer+as !L# de Visual Basic ,stas librer.as proporcionan un enlace directo a #icroso!t +Q' +er"er* ) est n disponibles como un producto separado&

,ntendiendo los 2onceptos B sicos acerca de las Bases de Datos

Parte H: 2ontroles ,st ndar A"an0ados ) Acceso a Datos

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 9eptuno contiene una tabla -ue almacena a los empleados* ) otra almacena los pedidos de una compa6.a !icticia& 'a base de datos 9eptuno&mdb es una base de datos de e(emplo incluida con #icroso!t Access&

,lementos de una <abla


'a base de datos 9eptuno 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 ,st ndar A"an0ados ) Acceso a Datos 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 !or neas* -ue son campos -ue 5acen re!erencia a una cla"e principal de otra tabla& Por e(emplo* en la base de datos 9eptuno* la tabla Pedidos tiene un campo llamado Id2liente& ,ste campo es una cla"e !or nea 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 unoCaC"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* 9ombre* etc&

Indices
'os .ndices de una tabla de una base de datos son listas ordenadas -ue son m s r pidas para las b/s-uedas -ue las tablas en s.& Para 5abilitar un acceso m s r pido a una base de datos* la ma)or.a de bases de datos emplean uno o m s .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 obtendr n 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 autom ticamente los datos de la base de datos en el control enla0ado& +i un usuario cambia los datos de un control

Parte H: 2ontroles ,st ndar A"an0ados ) Acceso a Datos

HG

enla0ado* dic5os cambios se actuali0ar n autom ticamente en la base de datos en cuanto el usuario se desplace a otro registro& #uc5os controles intr.nsecos o est ndar de Visual Basic permiten ser enla0ados a datos* como es el caso de los controles CheckBo * 0mage* #abel* .ictureBo * *e tBo * #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 ,st ndar A"an0ados ) Acceso a Datos

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& Adem s* 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 m s 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 "bActionAdd9e%* ) se emplea el control 5ata para despla0arse* una "e0 -ue se pase el /ltimo registro* el control 5ata autom ticamente 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 Bb(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 ,st ndar A"an0ados ) Acceso a Datos

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 autom ticamente& +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 ,st ndar A"an0ados ) Acceso a Datos

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 ,st ndar A"an0ados ) Acceso a Datos

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 r pidamente !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&e t* 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 9o* los cambios ser n cancelados& "rivate Sub DataD%Jalidate '2ction 2s *nteger9 Save 2s *nteger(

Parte H: 2ontroles ,st ndar A"an0ados ) Acceso a Datos

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 bas ndose 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 ,st ndar A"an0ados ) Acceso a Datos

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(ecut ndose& +i no desea -ue se muestre el mensa(e de error est ndar* 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


Adem s 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 ,st ndar A"an0ados ) Acceso a Datos

L@

: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 autom ticamente de datos ) se establecer n autom ticamente 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 simult neamente& ,n la siguiente ilustracin se muestra un !ormulario -ue utili0a un control 5B,rid para presentar registros procedentes de la base de datos 9eptuno&

.ara a-adir el control 5B,rid a un proyecto 1& Aacer 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& 1& ?& @& .ara establecer propiedades de columnas Bprima el botn secundario del ratn sobre el control 5B,rid& Aaga clic en la orden .ropiedades& Aaga 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 ,st ndar A"an0ados ) Acceso a Datos 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
LF

Parte H: 2ontroles ,st ndar A"an0ados ) Acceso a Datos

Puede utili0ar el control de cuadro de lista enla0ado a datos 3 5B#ist4 o el cuadro combinado enla0ado a datos 35BCombo4 para presentar autom ticamente 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 ,st ndar A"an0ados ) Acceso a Datos

LG

También podría gustarte