Antes de ejecutar el programa de instalacin..................................................9 Confgurar Visual Basic.................................................................................. 10 Desarrollar una aplicacin con Visual Basic......................................................11 Conceptos de Visual Basic............................................................................. 12 lementos del entorno integrado de desarrollo.............................................1! Iniciar el ID de Visual Basic.......................................................................1! lementos del entorno integrado de desarrollo..........................................1" #pciones de entorno................................................................................... 18 $u primera aplicacin con Visual Basic.............................................................20 Hola, Visual Basic....................................................................................... 20 %a aplicacin de ejemplo &irstapp..................................................................28 &ormularios' controles ( men)s........................................................................ *2 Descripcin de las propiedades' m+todos ( e,entos.....................................** Dise-ar un .ormulario.................................................................................... */ 0acer clic en los 1otones para reali2ar acciones...........................................*3 Controles para mostrar e introducir te4to......................................................*9 5sar eti6uetas para mostrar te4to..............................................................!0 7ra1ajar con cuadros de te4to.....................................................................!1 Controles 6ue muestran opciones a los usuarios...........................................!! $eleccionar opciones indi,iduales con casillas de ,erifcacin...................!/ Agrupar opciones con 1otones de opcin...................................................!3 5sar los cuadros de lista ( los cuadros com1inados.................................../2 Controles 6ue muestran im8genes ( gr8fcos................................................/* 7ra1ajar con el control de cuadro de imagen............................................../! &undamentos de los men)s.............................................................................. /" ditor de men)s 9cuadro de di8logo:............................................................./9 7ra1ajar con pro(ectos...................................................................................... "2 structura de un pro(ecto de Visual Basic........................................................"* ;dulos de controles de usuario ( de p8ginas de propiedades....................."/ Crear' a1rir ( guardar pro(ectos......................................................................."" 1
Agregar' 6uitar ( guardar arc<i,os................................................................"8 Crear ( ejecutar un arc<i,o ejecuta1le.............................................................30 Defnir opciones del pro(ecto........................................................................... 31 structura de una aplicacin en Visual Basic....................................................32 specifcaciones' limitaciones ( .ormatos de arc<i,os de Visual Basic.............3! =e6uisitos del sistema para aplicaciones de Visual Basic..............................3/ %imitaciones de los pro(ectos........................................................................3/ &ormatos de arc<i,os de pro(ecto.................................................................3/ Agregar controles a un proyecto...............................................................38 ;anual del programador................................................................................... 82 >artes............................................................................................................. 82 &undamentos de programacin.........................................................................82 7emas............................................................................................................. 8* Aplicacin de ejemplo.................................................................................... 8! structura de una aplicacin en Visual Basic....................................................8! Antes de empe2ar a codifcar............................................................................ 8" ;ec8nica de la escritura de cdigo...................................................................88 ;dulos de cdigo............................................................................................ 88 ;dulos de .ormulario................................................................................... 89 ;dulos est8ndar.......................................................................................... 89 ;dulos de clase........................................................................................... 89 5sar el ditor de cdigo.................................................................................... 89 7erminar el cdigo de .orma autom8tica........................................................90 ;arcadores.................................................................................................... 91 Conceptos 18sicos del cdigo........................................................................... 91 Di,idir una )nica instruccin en ,arias l?neas................................................91 Com1inar instrucciones en una l?nea.............................................................92 Agregar comentarios al cdigo......................................................................92 Descripcin de los sistemas de numeracin..................................................92 Con,enciones de nomenclatura en Visual Basic............................................9* &unciones de con,ersin de tipos.....................................................................9! Introduccin a las ,aria1les' constantes ( tipos de datos.................................93 Varia1les........................................................................................................... 98 2
Almacenar ( recuperar datos en ,aria1les....................................................99 Declarar ,aria1les.......................................................................................... 99 Declaracin impl?cita................................................................................... 100 Declaracin e4pl?cita.................................................................................... 101 Descripcin del alcance de las ,aria1les.........................................................102 sta1lecer el alcance de las ,aria1les.........................................................102 Varia1les utili2adas en un procedimiento.....................................................10* Varia1les utili2adas en un mdulo...............................................................10* Varia1les utili2adas por todos los mdulos..................................................10* Constantes...................................................................................................... 10! Crear constantes propias............................................................................. 10/ Alcance de las constantes defnidas por el usuario......................................10" ,itar re.erencias circulares.........................................................................10" 7ipos de datos................................................................................................. 103 Declarar ,aria1les con tipos de datos..........................................................103 7ipos de datos num+ricos............................................................................ 108 l tipo de dato B(te..................................................................................... 109 l tipo de dato $tring................................................................................... 109 Intercam1iar cadenas ( n)meros.................................................................110 l tipo de dato Boolean................................................................................ 111 l tipo de dato Date..................................................................................... 111 l tipo de dato #1ject.................................................................................. 111 Con,ertir tipos de datos............................................................................... 112 l tipo de dato Variant................................................................................. 11* l ,alor mpt(.............................................................................................. 11! l ,alor @ull.................................................................................................. 11! l ,alor rror................................................................................................ 11/ ;atrices.......................................................................................................... 11/ Declarar matrices de tama-o fjo.................................................................11" sta1lecer los l?mites superior e in.erior......................................................11" ;atrices 6ue contienen otras matrices........................................................113 ;atrices multidimensionales.......................................................................118 5sar 1ucles para manipular matrices..........................................................118 *
Instrucciones................................................................................................... 119 #pen 9Instruccin:....................................................................................... 119 Close 9Instruccin:....................................................................................... 120 Input A 9Instruccin:.................................................................................... 121 >rint A 9Instruccin:..................................................................................... 122 Dim 9Instruccin:......................................................................................... 12! #ption 4plicit.............................................................................................. 12" #ption Base 9Instruccin:............................................................................. 123 De.tipo 9Instrucciones:................................................................................. 123 &or...@e4t 9Instruccin:................................................................................. 1*0 &ormat 9&uncin:.......................................................................................... 1*2 =ig<t 9&uncin:............................................................................................. 1*! &ormatos num+ricos defnidos por el usuario 9.uncin &ormat:...................1*! Cdigo A$CII................................................................................................ 1*3 &undamentos de programacin.......................................................................1*3 Introduccin a los procedimientos..................................................................1*3 >rocedimientos $u1........................................................................................ 1*8 >rocedimientos generales............................................................................ 1*9 >rocedimientos &unction................................................................................. 1!0 7ra1ajar con procedimientos........................................................................... 1!2 Crear procedimientos nue,os......................................................................1!2 $eleccionar procedimientos e4istentes........................................................1!2 %lamar a procedimientos............................................................................. 1!* %lamar a procedimientos $u1......................................................................1!* %lamar a procedimientos &unction...............................................................1!* %lamar a procedimientos en otros mdulos.................................................1!! >rocedimientos en .ormularios.................................................................1!! >rocedimientos en mdulos de clase........................................................1!! >rocedimientos en mdulos est8ndar.......................................................1!! >asar argumentos a procedimientos...............................................................1!/ 7ipos de datos de los argumentos...............................................................1!/ >asar argumentos por ,alor......................................................................... 1!/ >asar argumentos por re.erencia.................................................................1!" !
5sar argumentos opcionales........................................................................1!" >roporcionar un ,alor predeterminado a un argumento opcional................1!3 5sar un n)mero indefnido de argumentos..................................................1!8 Crear instrucciones m8s sencillas mediante argumentos con nom1re........1!8 Determinar el soporte de argumentos con nom1re..................................1!9 Introduccin a las estructuras de control........................................................1!9 structuras de decisin................................................................................... 1/0 I....7<en........................................................................................................ 1/0 I....7<en...lse.............................................................................................. 1/1 $elect Case.................................................................................................. 1/2 structuras de 1ucle....................................................................................... 1/* Do...%oop...................................................................................................... 1/! &or...@e4t...................................................................................................... 1// &or ac<...@e4t............................................................................................. 1/" 7ra1ajar con estructuras de control.................................................................1/3 structuras de control anidadas..................................................................1/3 $alir de una estructura de control................................................................1/8 $alir de un procedimiento $u1 o &unction....................................................1/9 specifcaciones' limitaciones ( .ormatos de arc<i,os de Visual Basic...........1"0 %imitaciones de los pro(ectos......................................................................... 1"0 &ormatos de arc<i,os de pro(ecto..................................................................1"1 4tensiones de arc<i,os de pro(ecto...........................................................1"1 Arc<i,os ,arios ( de tiempo de dise-o.....................................................1"1 Arc<i,os de tiempo de ejecucin..............................................................1"* Con,enciones de codifcacin de Visual Basic................................................1"! B>or 6u+ e4isten las con,enciones de codifcacinC.......................................1"/ Con,enciones de codifcacin m?nimas.......................................................1"/ Con,enciones de nom1res de o1jetos............................................................1"/ >refjos sugeridos para controles.................................................................1"" >refjos sugeridos para los o1jetos de acceso a datos 9DA#:.......................130 >refjos sugeridos para men)s.....................................................................131 $eleccin de prefjos para otros controles...................................................132 Con,enciones de nom1res de constantes ( ,aria1les.....................................132 /
>refjos de alcance de ,aria1les...................................................................13! Constantes................................................................................................... 13! Varia1les...................................................................................................... 13/ 7ipos de datos de ,aria1les......................................................................... 13/ @om1res descripti,os de ,aria1les ( procedimientos..................................13" 7ipos defnidos por el usuario......................................................................13" Con,enciones de codifcacin estructurada....................................................13" Con,enciones de comentarios al cdigo......................................................133 Dar .ormato al cdigo.................................................................................. 138 Agrupacin de constantes........................................................................ 139 #peradores D ( E..................................................................................... 139 Crear cadenas para ;sgBo4' InputBo4 ( consultas $F%...........................139 A@G# HIII>DIA........................................................................................... 180 #peraciones 18sicas.................................................................................... 180 $uma o adicinJeditar K editar cdigoL......................................................180 >roducto por un escalarJeditar K editar cdigoL.........................................182 >roductoJeditar K editar cdigoL................................................................18! =angoJeditar K editar cdigoL....................................................................183 7raspuestaJeditar K editar cdigoL.............................................................183 $istema de ecuaciones lineales...................................................................183 $istemas lineales realesJeditar K editar cdigoL...........................................188 =epresentacin gr8fcaJeditar K editar cdigoL..........................................188 7ipos de sistemasJeditar K editar cdigoL..................................................189 ;+todos de solucin a sistemas de ecuaciones lineales...........................191 Eliminacin de Gauss-Jordan........................................................................19! $olucin de sistemas lineales en un anillo...................................................19/ BIENVENIDOS A VISUAL BASIC Bien,enidos a ;icroso.t Visual Basic' la manera m8s r8pida ( sencilla de crear aplicaciones para ;icroso.t HindoMs N . 7anto si es un pro.esional e4perimentado como un reci+n llegado a la programacin en HindoMs' Visual Basic le proporciona un juego completo de <erramientas 6ue .acilitan el desarrollo r8pido de aplicaciones. BFu+ es Visual BasicC %a pala1ra OVisualO <ace re.erencia al m+todo 6ue se utili2a para crear la inter.a2 gr8fca de usuario 9P5I:. n lugar de "
escri1ir numerosas l?neas de cdigo para descri1ir la apariencia ( la u1icacin de los elementos de la inter.a2' simplemente puede agregar o1jetos pre.a1ricados en su lugar dentro de la pantalla. $i <a utili2ado alguna ,e2 un programa de di1ujo como >aint' (a tiene la ma(or parte de las <a1ilidades necesarias para crear una inter.a2 de usuario e.ecti,a. %a pala1ra OBasicO <ace re.erencia al lenguaje BA$IC 9Beginners AllQ >urpose $(m1olic Instruction Code:' un lenguaje utili2ado por m8s programadores 6ue ning)n otro lenguaje en la <istoria de la in.orm8tica o computacin. Visual Basic <a e,olucionado a partir del lenguaje BA$IC original ( a<ora contiene centenares de instrucciones' .unciones ( pala1ras cla,e' muc<as de las cuales est8n directamente relacionadas con la inter.a2 gr8fca de HindoMs. %os principiantes pueden crear aplicaciones )tiles con slo aprender unas pocas pala1ras cla,e' pero' al mismo tiempo' la efcacia del lenguaje permite a los pro.esionales acometer cual6uier o1jeti,o 6ue pueda alcan2arse mediante cual6uier otro lenguaje de programacin de HindoMs. l lenguaje de programacin Visual Basic no es e4clusi,o de Visual Basic. %a dicin para aplicaciones del sistema de programacin de Visual Basic' incluida en ;icroso.t 4cel' ;icroso.t Access ( muc<as otras aplicaciones HindoMs' utili2an el mismo lenguaje. l sistema de programacin de Visual Basic' $cripting dition 9VB$cript: es un lenguaje de secuencias de comandos ampliamente di.undido ( un su1conjunto del lenguaje Visual Basic. %a in,ersin reali2ada en el aprendi2aje de Visual Basic le a(udar8 a a1arcar estas otras 8reas. $i su o1jeti,o es crear un pe6ue-o programa para su uso personal o para su grupo de tra1ajo' un sistema para una empresa o incluso aplicaciones distri1uidas de alcance mundial a tra,+s de Internet' Visual Basic dispone de las <erramientas 6ue necesita. %as caracter?sticas de acceso a datos le permiten crear 1ases de datos' aplicaciones cliente' ( componentes de ser,idor escala1les para los .ormatos de las 1ases de datos m8s conocidas' incluidos ;icroso.t $F% $er,er ( otras 1ases de datos de 8m1ito empresarial. %as tecnolog?as Acti,eGR le permiten usar la .uncionalidad proporcionada por otras aplicaciones' como el procesador de te4tos ;icroso.t Hord' la <oja de c8lculo ;icroso.t 4cel ( otras aplicaciones HindoMs. >uede incluso automati2ar las aplicaciones ( los o1jetos creados con la dicin >ro.esional o la dicin mpresarial de Visual Basic. 3
%as capacidades de Internet .acilitan el acceso a documentos ( aplicaciones a tra,+s de Internet o intranet desde su propia aplicacin' o la creacin de aplicaciones de ser,idor para Internet. %a aplicacin terminada es un aut+ntico arc<i,o .e4e 6ue utili2a una m86uina ,irtual de Visual Basic 6ue puede distri1uir con toda li1ertad. diciones de Visual Basic Visual Basic se encuentra disponi1le en tres ,ersiones' cada una de las cuales est8 orientada a unos re6uisitos de programacin espec?fcos. %a dicin de Aprendi2aje de Visual Basic permite a los programadores crear ro1ustas aplicaciones para ;icroso.t HindoMs ( HindoMs @7 N . Inclu(e todos los controles intr?nsecos' adem8s de los controles de cuadr?cula' de fc<as ( los controles enla2ados a datos. %a documentacin proporcionada con esta edicin inclu(e el CD OAprenda VisualBasic (aO junto con el de la 1i1lioteca de ;icroso.t De,eloper @etMorS 9;$D@R: 6ue contienen documentacin completa en pantalla. %a dicin >ro.esional proporciona a los pro.esionales un conjunto completo de <erramientas para desarrollar soluciones para terceros. Inclu(e todas las caracter?sticas de la dicin de Aprendi2aje' as? como controles Acti,eG adicionales' el dise-ador de aplicaciones para Internet In.ormation $er,er ( Visual Data1ase 7ools and Data. %a documentacin 6ue se proporciona con la dicin >ro.esional inclu(e el li1ro Caracter?sticas empresariales de Visual $tudio m8s los CD de ;icroso.t De,eloper @etMorS 6ue contienen documentacin completa en pantalla. %a dicin mpresarial permite a los pro.esionales crear slidas aplicaciones distri1uidas en un entorno de e6uipo. Inclu(e todas las caracter?sticas de la dicin >ro.esional' as? como <erramientas de BacS #Tce como $F% $er,er' ;icroso.t 7ransaction $er,er' Internet In.ormation $er,er' Visual $ource$a.e' $@A $er,er' etc. %a documentacin impresa 6ue se proporciona con la dicin mpresarial inclu(e el li1ro Caracter?sticas empresariales de Visual $tudio m8s los CD de ;icroso.t De,eloper @etMorS 6ue contienen documentacin completa en pantalla. Instalar Visual Basic Visual Basic se instala en su e6uipo mediante el programa de instalacin. l programa de instalacin instala Visual Basic ( otros componentes del producto' desde el CDQ=#; al disco duro.7am1i+n 8
instala los arc<i,os necesarios para mostrar la documentacin del CD de ;$D@. $i lo elige' puede instalar tan slo la documentacin ( los ejemplos de Visual Basic en su e6uipo. Importante @o puede copiar simplemente los arc<i,os del CDQ=#; el disco duro ( ejecutar Visual Basic. De1e usar el programa de instalacin' 6ue descomprime e instala los arc<i,os en los directorios apropiados. Antes de ejecutar el programa de instalacin Cosas 6ue de1e compro1ar antes de la instalacin. Instalar Visual Basic Instrucciones para instalar Visual Basic. Antes de ejecutar el prograa de instalaci!n Antes de instalar Visual Basic' aseg)rese de 6ue el e6uipo cumple los re6uisitos m?nimos ( lea el arc<i,o %+ame' 6ue se encuentra en el directorio ra?2 del disco de instalacin. Compro1ar los re6uisitos de <ardMare ( del sistema >ara ejecutar Visual Basic' tiene 6ue disponer de cierto <ardMare ( so.tMare instalado en su e6uipo. ntre los re6uisitos del sistema ca1e citar los siguientesU ;icroso.t HindoMs 9/ o posterior' o ;icroso.t HindoMs @7 HorSstation !.0 o posterior 9se recomienda $er,ice >acS *:. !8"DGV"" ;02 o modelo superior de procesador 9se recomienda procesador >entium o superior: o cual6uier procesador Alp<a 6ue ejecute ;icroso.t HindoMs @7 HorSstation. 5na unidad de CDQ=#;. >antalla VPA o de ma(or resolucin' compati1le con ;icroso.t HindoMs. 1" ;B de =A; para HindoMs 9/' *2 ;B de =A; para HindoMs @7 HorSstation. 5n mouse 9ratn: u otro dispositi,o de puntero. >ara o1tener m8s in.ormacin >ara o1tener m8s detalles acerca de los re6uisitos' ,ea O=e6uisitos del sistema para aplicaciones de Visual BasicO en Ospecifcaciones' limitaciones ( .ormatos de arc<i,os de Visual BasicO. Lectura del arc"i#o L$ae 9
l arc<i,o %+ame enumera los cam1ios reali2ados a la documentacin de Visual Basic desde su pu1licacin. >uede encontrarlo si selecciona %+ame primero en la pantalla inicial de la instalacin o en el directorio ra?2 del CDQ=#;. 7am1i+n es posi1le a1rirlo desde la p8gina de inicio de Visual Basic en la documentacin. Vea la primera seccin del arc<i,o para o1tener detalles ( nue,a in.ormacin acerca de la instalacin de Visual Basic. Con%gurar Visual Basic Cuando ejecuta el programa de instalacin' se crea un directorio para Visual BasicW despu+s puede seleccionar los componentes de Visual Basic 6ue desea Instalar. A e4cepcin de los arc<i,os del sistema operati,o del directorio X#s' los arc<i,os del CDQ=#; no est8n comprimidos' por lo 6ue puede usarlos directamente desde el disco. >or ejemplo' e4isten numerosas <erramientas ( componentes en el directorio X7ools 6ue pueden ejecutarse o instalarse directamente desde el CD. >ara reali2ar la instalacin desde el CDQ=#; 1. Inserte el disco en la unidad de CDQ=#;. 2. 5tilice el comando apropiado del entorno operati,o para ejecutar el >rograma de instalacin' 6ue se encuentra en el directorio ra?2 del Disco 1. $i est8 acti,ado Auto>la( en el sistema' el >rograma de instalacin se cargar8 autom8ticamente cuando inserte el disco. *. $eleccione Instalar Visual Basic ".0. !. $iga las instrucciones de instalacin 6ue aparecen en la pantalla. >ara o1tener m8s in.ormacin >ara o1tener instrucciones detalladas acerca de la instalacin de Visual Basic' ,ea el arc<i,o %+ame. Agregar o 6uitar componentes de Visual Basic >uede ejecutar el programa de instalacin tantas ,eces como sea necesario. >or ejemplo' puede ejecutar el programa de instalacin para ,ol,er a instalar Visual Basic en otro directorio o para instalar otras partes de Visual Basic. >ara agregar o 6uitar componentes de Visual Basic 1. Inserte el disco completo en la unidad de CDQ=#;. 10
2. 5tilice el comando apropiado del entorno operati,o para ejecutar el >rograma de instalacin' 6ue se encuentra en el directorio ra?2 del disco compacto. $i est8 acti,ado Auto>la( en el sistema' el >rograma de instalacin se cargar8 autom8ticamente cuando inserte el disco. *. 0aga clic en el 1otn >ersonali2ada del cuadro de di8logo Instalacin de ;icroso.t Visual Basic ".0. !. $eleccione los componentes 6ue ,a a instalar 9o anule la seleccin de los componentes 6ue ,a a 6uitar: en el cuadro de lista #pciones del cuadro de di8logo >ersonali2ada. /. $iga las instrucciones de instalacin 6ue aparecen en la pantalla. Iniciar Visual Basic n cuanto termine el procedimiento de instalacin' puede iniciar Visual Basic mediante el 1otn Inicio de la 1arra de tareas de HindoMs. $i est8 acti,ado Auto>la( en el sistema' tam1i+n puede iniciar Visual Basic insertando el CDQ=#; de Visual Basic. >ara o1tener m8s in.ormacin Vea ODesarrollar una aplicacin con Visual BasicO. Desarrollar una aplicaci!n con Visual Basic $lo se necesitan unos minutos para crear su primera aplicacin con Visual Basic. >uede crear la inter.a2 de usuario Odi1ujandoO controles' como cuadros de te4to ( 1otones de comando' en un .ormulario. A continuacin' esta1le2ca las propiedades del .ormulario ( los controles para especifcar ,alores como el t?tulo' el color ( el tama-o. &inalmente' escri1a el cdigo para dar ,ida a la aplicacin. %os pasos 18sicos 6ue dar8 en su primera aplicacin le ense-ar8n los principios 6ue usar8 con cual6uier otra aplicacin 6ue desarrolle. ste cap?tulo proporciona una introduccin al proceso de desarrollo de aplicaciones' descri1e los t+rminos ( conocimientos 6ue necesita para usar Visual Basic ( le gu?a paso a paso a tra,+s de ,arias aplicaciones sencillas. 7emas Conceptos de Visual Basic Comparacin de Visual Basic ( los lenguajes de programacin 11
tradicionales. lementos del entorno integrado de desarrollo Introduccin a las <erramientas ( al entorno de Visual Basic. $u primera aplicacin con Visual Basic Creacin paso a paso de una aplicacin sencilla' donde se ilustran las t+cnicas 18sicas. Aplicacin de ejemplo &irstapp.,1p Algunos de los ejemplos de cdigo de este cap?tulo est8n tomados de la aplicacin de ejemplo &irstapp.,1p 6ue se encuentra en el directorio $amples. Conceptos de Visual Basic >ara entender el proceso de desarrollo de una aplicacin' es )til comprender algunos de los conceptos cla,e alrededor de los cuales est8 construido Visual Basic. >uesto 6ue Visual Basic es un lenguaje de desarrollo para HindoMs' es necesario .amiliari2arse con el entorno HindoMs. $i no tiene e4periencia en la programacin para HindoMs' necesitar8 conocer algunas di.erencias .undamentales entre la programacin para HindoMs .rente a otros entornos. &uncionamiento de HindoMsU ,entanas' e,entos ( mensajes 5n estudio pro.undo del .uncionamiento interno de HindoMs necesitar?a un li1ro completo. @o es necesario tener un pro.undo conocimiento de todos los detalles t+cnicos. 5na ,ersin reducida del .uncionamiento de HindoMs inclu(e tres conceptos cla,eU ,entanas' e,entos ( mensajes. 5na ,entana es simplemente una regin rectangular con sus propios l?mites. >ro1a1lemente (a sa1e 6ue <a( ,arios tipos de ,entanasU una ,entana 4plorador en HindoMs 9/' una ,entana de documento dentro de su programa de proceso de te4tos o un cuadro de di8logo 6ue emerge para recordarle una cita. Aun6ue +stos son los ejemplos m8s 12
comunes' realmente <a( otros muc<os tipos de ,entanas. 5n 1otn de comando es una ,entana. %os iconos' cuadros de te4to' 1otones de opcin ( 1arras de men)s son todos ,entanas. l sistema operati,o ;icroso.t HindoMs administra todas estas ,entanas asignando a cada una un )nico n)mero identifcador 9controlador de ,entana o <Hnd:. l sistema controla continuamente cada una de estas ,entanas para ,er si e4isten signos de acti,idad o e,entos. %os e,entos pueden producirse mediante acciones del usuario' como <acer clic con el mouse 9ratn: o presionar una tecla' mediante programacin o incluso como resultado de acciones de otras ,entanas. Cada ,e2 6ue se produce un e,ento se en,?a un mensaje al sistema operati,o. l sistema procesa el mensaje ( lo transmite a las dem8s ,entanas. ntonces' cada ,entana puede reali2ar la accin apropiada' 1as8ndose en sus propias instrucciones para tratar ese mensaje en particular 9por ejemplo' ,ol,erse a di1ujar cuando otra ,entana la <a dejado al descu1ierto:. Como puede imaginar' tratar todas las com1inaciones posi1les de ,entanas' e,entos ( mensajes podr?a ser intermina1le. A.ortunadamente' Visual Basic le e,ita tener 6ue tratar con todos los controladores de mensajes de 1ajo ni,el. ;uc<os de los mensajes los controla autom8ticamente Visual Basic' mientras 6ue otros se tratan como procedimientos de e,ento para su comodidad. sto le permite crear r8pidamente efcaces aplicaciones sin tener 6ue tratar detalles innecesarios. Descripcin del modelo controlado por e,entos n las aplicaciones tradicionales o Opor procedimientosO' la aplicacin es la 6ue controla 6u+ partes de cdigo ( en 6u+ secuencia se ejecutan. %a ejecucin comien2a con la primera l?nea de cdigo ( contin)a con una ruta predefnida a tra,+s de la aplicacin' llamando a los procedimientos seg)n se necesiten. n una aplicacin controlada por e,entos' el cdigo no sigue una ruta predeterminadaW ejecuta distintas secciones de cdigo como respuesta a los e,entos. %os e,entos pueden desencadenarse por acciones del usuario' por mensajes del sistema o de otras aplicaciones' o incluso por la propia aplicacin. %a secuencia de estos e,entos determina la secuencia en la 6ue se ejecuta el cdigo' por lo 6ue la ruta a tra,+s del cdigo de la aplicacin es di.erente cada ,e2 6ue se ejecuta el programa. 1*
>uesto 6ue no puede predecir la secuencia de los e,entos' el cdigo de1e esta1lecer ciertos supuestos acerca del Oestado del mundoO cuando se ejecute. Cuando <aga suposiciones 9por ejemplo' 6ue un campo de entrada de1e contener un ,alor antes de ejecutar un procedimiento para procesar ese ,alor:' de1e estructurar la aplicacin de .orma 6ue asegure 6ue esa suposicin siempre ser8 ,8lida 9por ejemplo' des<a1ilitando el 1otn de comando 6ue inicia el procedimiento <asta 6ue el campo de entrada contenga un ,alor:. l cdigo tam1i+n puede desencadenar e,entos durante la ejecucin. >or ejemplo' cam1iar mediante programacin el te4to de un cuadro de te4to <ace 6ue se produ2ca el e,ento C<ange del cuadro de te4to. sto causar?a la ejecucin del cdigo 9si lo <a(: contenido en el e,ento C<ange. $i supone 6ue este e,ento slo se desencadenar8 mediante la interaccin del usuario' podr?a ,er resultados inesperados. >or esta ra2n es importante comprender el modelo controlado por e,entos ( tenerlo en cuenta cuando dise-e su aplicacin. Desarrollo interacti,o l proceso de desarrollo de las aplicaciones tradicionales se puede di,idir en tres etapas di.erentesU escritura' compilacin ( compro1acin del cdigo. A di.erencia de los lenguajes tradicionales' Visual Basic utili2a una apro4imacin interacti,a para el desarrollo' di.uminando la distincin entre los tres pasos. n la ma(or?a de los lenguajes' si comete un error al escri1ir el cdigo' el compilador intercepta este error cuando comience a compilar la aplicacin. De1e encontrar ( corregir el error ( comen2ar de nue,o con el ciclo de compilacin' repitiendo el proceso para cada error encontrado. Visual Basic interpreta el cdigo a medida 6ue lo escri1e' interceptando ( resaltando la ma(or?a de los errores de sinta4is en el momento. s casi como tener un e4perto ,igilando cmo escri1e el cdigo. Adem8s' para interceptar errores so1re la marc<a' Visual Basic tam1i+n compila parcialmente el cdigo seg)n se escri1e. Cuando est+ preparado para ejecutar ( pro1ar la aplicacin' tardar8 poco tiempo en terminar la compilacin. $i el compilador encuentra un error' 6uedar8 resaltado en el cdigo. >uede corregir el error ( seguir compilando sin tener 6ue comen2ar de nue,o. A causa de la naturale2a interacti,a de Visual Basic' se encontrar8 ejecutando la aplicacin .recuentemente a medida 6ue la desarrolle. De esta .orma puede pro1ar los e.ectos del cdigo seg)n lo escri1a en lugar de esperar a compilarlo m8s tarde. 1!
Eleentos del entorno integrado de desarrollo l entorno de tra1ajo en Visual Basic se denomina .recuentemente entorno integrado de desarrollo o ID' (a 6ue integra muc<as .unciones di.erentes como el dise-o' modifcacin' compilacin ( depuracin en un entorno com)n. n las <erramientas de desarrollo m8s tradicionales' cada una de esas .unciones .uncionar?a como un programa di.erente' cada una con su propia inter.a2. n esta seccin trataremos los siguientes temasU Iniciar el ID de Visual Basic >uesta en marc<a ( ejecucin. lementos del entorno integrado de desarrollo Introduccin a las di.erentes partes del ID. #pciones de entorno Confguracin de Visual Basic de acuerdo con sus pre.erencias personales. Iniciar el IDE de Visual Basic Cuando ejecute el programa de instalacin de Visual Basic' le permitir8 colocar los elementos del programa en un grupo de programas (a e4istente o crear un nue,o grupo de programas ( nue,os elementos de programa para Visual Basic en HindoMs. ntonces estar8 preparado para iniciar Visual Basic desde HindoMs. >ara iniciar Visual Basic desde HindoMs 1. 0aga clic en Inicio en la 1arra de tareas. 2. $eleccione >rogramas ( luego ;icroso.t Visual Basic ".0. Yo 1ienY 0aga clic en Inicio en la 1arra de tareas. $eleccione >rogramas. 5tilice el 4plorador de HindoMs para encontrar el arc<i,o ejecuta1le de Visual Basic. *. 0aga do1le clic en el icono de Visual Basic. 7am1i+n puede crear un acceso directo a Visual Basic ( <acer do1le clic en +l. 1/
Cuando inicie Visual Basic por primera ,e2' ,er8 el entorno integrado de desarrollo' como se muestra en la fgura 2.1. &igura 2.1 l entorno integrado de desarrollo de Visual Basic Eleentos del entorno integrado de desarrollo l entorno integrado de desarrollo de Visual Basic 9ID: consta de los siguientes elementos. Barra de men)s >resenta los comandos 6ue se usan para tra1ajar con Visual Basic. Adem8s de los men)s est8ndar Arc<i,o' dicin' Ver' Ventana ( A(uda' se proporcionan otros men)s para tener acceso a .unciones espec?fcas de programacin como >ro(ecto' &ormato o Depuracin. ;en)s conte4tuales Contienen accesos directos a acciones 6ue se reali2an con .recuencia. >ara a1rir un men) conte4tual' <aga clic con el 1otn secundario del mouse en el o1jeto 6ue est8 usando. %a lista espec?fca de opciones disponi1les en el men) conte4tual depende de la parte del entorno en la 6ue se <ace clic con el 1otn secundario del mouse. >or ejemplo' el men) conte4tual 6ue aparece cuando <ace clic con el 1otn secundario del mouse en el cuadro de <erramientas le permite mostrar el cuadro de di8logo Componentes' ocultar el cuadro de <erramientas' acoplar o desacoplar el cuadro de <erramientas' o agregar una fc<a personali2ada al cuadro de <erramientas. Barras de <erramientas 1"
>roporcionan un r8pido acceso a los comandos usados normalmente en el entorno de programacin. 0aga clic en un 1otn de la 1arra de <erramientas para lle,ar a ca1o la accin 6ue representa ese 1otn. De .orma predeterminada' al iniciar Visual Basic se presenta la 1arra de <erramientas st8ndar. s posi1le acti,ar o desacti,ar otras 1arras de <erramientas adicionales para modifcar' dise-ar .ormularios desde el comando Barras de <erramientas del men) Ver. %as 1arras de <erramientas se pueden acoplar de1ajo de la 1arra de men)s o pueden OZotarO si selecciona la 1arra ,ertical del 1orde i26uierdo ( la arrastra .uera de la 1arra de men)s. Cuadro de <erramientas >roporciona un conjunto de <erramientas 6ue puede usar durante el dise-o para colocar controles en un .ormulario. Adem8s del dise-o del cuadro de <erramientas predeterminado' puede crear su propio dise-o personali2ado si selecciona Agregar fc<a en el men) conte4tual ( agrega controles a la fc<a resultante. >ara o1tener m8s in.ormacin >ara aprender m8s acerca de los controles espec?fcos' ,ea O&ormularios' controles ( men)sO ( O5sar los controles est8ndar de Visual BasicO. >ara o1tener in.ormacin acerca de cmo agregar controles al cuadro de <erramientas' ,ea OAgregar controles a un pro(ectoO en OAdministrar pro(ectosO. Ventana 4plorador de pro(ectos numera los .ormularios ( mdulos del pro(ecto actual. 5n proyecto es la coleccin de arc<i,os 6ue usa para generar una aplicacin. >ara o1tener m8s in.ormacin >ara o1tener in.ormacin acerca de pro(ectos' ,ea OAdministrar pro(ectosO. Ventana >ropiedades numera los ,alores de las propiedades del control o .ormulario seleccionado. 5na propiedad es una caracter?stica de un o1jeto' como su tama-o' t?tulo o color. >ara o1tener m8s in.ormacin >ara o1tener in.ormacin acerca de propiedades' ,ea ODescripcin de las propiedades' m+todos ( e,entosO en O&ormularios' controles ( men)sO. 4aminador de o1jetos 13
numera los o1jetos disponi1les 6ue puede usar en su pro(ecto ( le proporciona una manera r8pida de despla2arse a tra,+s del cdigo. >uede usar el 4aminador de o1jetos para e4plorar o1jetos en Visual Basic ( otras aplicaciones' ,er 6u+ m+todos ( propiedades est8n disponi1les para esos o1jetos' ( pegar cdigo de procedimientos en su aplicacin. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca del uso del 4aminador de o1jetos para ,er procedimientos' ,ea ODescripcin de o1jetosO en O>rogramar con o1jetosO. >ara o1tener m8s in.ormacin acerca del uso de complementos para ampliar el entorno de programacin de Visual Basic' ,ea O5sar asistentes ( complementosO en OAdministrar pro(ectosO. Dise-ador de .ormularios &unciona como una ,entana en la 6ue se personali2a el dise-o de la inter.a2 de su aplicacin. Agregue controles' gr8fcos e im8genes a un .ormulario para crear la apariencia 6ue desee. Cada .ormulario de la aplicacin tiene su propia ,entana dise-ador de .ormulario. >ara o1tener m8s in.ormacin >ara aprender a agregar controles a una aplicacin' ,ea O$u primera aplicacin con Visual BasicO' m8s adelante en este mismo cap?tulo. >ara aprender m8s acerca del dise-o de la inter.a2' ,ea OCrear la inter.a2 de usuarioO. Ventana ditor de cdigo &unciona como un editor para escri1ir el cdigo de la aplicacin. $e crea una ,entana editor de cdigo di.erente para cada .ormulario o mdulo del cdigo de la aplicacin. >ara o1tener m8s in.ormacin >ara aprender m8s acerca de cmo escri1ir cdigo ( el uso del editor de cdigo' ,ea O&undamentos de programacinO. Ventana >osicin del .ormulario %a ,entana >osicin del .ormulario 9fgura 2.2: le permite colocar los .ormularios de su aplicacin utili2ando una pe6ue-a representacin gr8fca de la pantalla. &igura 2.2 %a ,entana >osicin del .ormulario 18
Ventanas Inmediatas' %ocales e Inspeccin stas ,entanas adicionales se proporcionan para la depuracin de la aplicacin. $lo est8n disponi1les cuando ejecuta la aplicacin dentro del ID. >ara o1tener m8s in.ormacin >ara aprender m8s acerca de la depuracin ( el uso de las ,entanas de depuracin' ,ea ODepurar el cdigo ( tratamiento de erroresO. @ota 7am1i+n puede agregar caracter?sticas a la inter.a2 de Visual Basic mediante un programa llamado complemento. %os complementos' disponi1les en ;icroso.t ( otros desarrolladores' pueden proporcionar caracter?sticas como el control de cdigo .uente' 6ue permite mantener pro(ectos de desarrollo en grupo. Opciones de entorno Visual Basic proporciona un alto grado de Ze4i1ilidad' permiti+ndole confgurar el entorno de tra1ajo 6ue mejor se adapte a su propio estilo. >uede elegir entre una inter.a2 de documentos simple o m)ltiple' ( puede ajustar el tama-o ( la posicin de ,arios elementos del ntorno integrado de desarrollo 9ID:. sta distri1ucin persistir8 en las siguientes sesiones de Visual Basic. Inter.a2 $DI o ;DI Con el ID de Visual Basic <a( disponi1les dos estilos di.erentesU la inter.a2 de documento simple 9$DI: o la inter.a2 de documentos m)ltiples 9;DI:. Con la opcin $DI todas las ,entanas del ID se pueden mo,er li1remente por cual6uier lugar de la pantallaW siempre ( cuando Visual Basic sea la aplicacin actual' permanecer8n encima de las dem8s aplicaciones. Con la opcin ;DI' todas las ,entanas del ID est8n contenidas en una )nica ,entana primaria de tama-o ajusta1le. >ara cam1iar entre los modos $DI ( ;DI 1. n el men) 0erramientas' seleccione #pciones. Aparecer8 el cuadro de di8logo #pciones. 2. $eleccione la fc<a A,an2ado. 19
*. Acti,e o desacti,e la casilla de ,erifcacin ntorno de desarrollo $DI. l ID comen2ar8 en el modo seleccionado la pr4ima ,e2 6ue inicie Visual Basic. Yo 1ienY jecute Visual Basic desde la l?nea de comandos con el par8metro Vsdi o Vmdi. Acoplar ,entanas ;uc<as de las ,entanas del ID se pueden acoplar o conectar a otra o al 1orde de la pantalla. ntre estas ,entanas se inclu(en el cuadro de <erramientas' la ,entana >osicin del .ormulario' el 4plorador de pro(ectos' la ,entana >ropiedades' la >aleta de colores ( las ,entanas Inmediato' %ocales e Inspeccin. Con la opcin ;DI las ,entanas pueden acoplarse en cual6uier lado de la ,entana primaria' mientras 6ue con $DI slo se pueden acoplar de1ajo de la 1arra de men)s. %as capacidades de acoplado se pueden acti,ar o desacti,ar para una ,entana dada si acti,a la casilla de ,erifcacin apropiada de la fc<a Acople del cuadro de di8logo #pciones' disponi1le desde el comando #pciones del men) 0erramientas. >ara acoplar o desacoplar una ,entana 1. $eleccione la ,entana 6ue desee acoplar o desacoplar. 2. Arrastre la ,entana a la u1icacin deseada manteniendo presionado el 1otn primario del mouse. *. l contorno de la ,entana se mostrar8 al arrastrar la ,entana. !. $uelte el 1otn del mouse. Su priera aplicaci!n con Visual Basic Crear una aplicacin con Visual Basic es sencillo. BCmo de sencilloC >ara compro1ar esta afrmacin prue1e las aplicaciones 0ola' Visual Basic ( &irstappU 0ola' Visual Basic Creacin paso a paso de la cl8sica aplicacin O0ola mundoO. 20
Aplicacin de ejemplo &irstapp Cree su primera aplicacin OrealO reproduciendo la aplicacin de ejemplo &irstapp. Hola, Visual Basic 0a( tres pasos principales para crear una aplicacin en Visual BasicU 1. Crear la inter.a2. 2. sta1lecer propiedades. *. scri1ir el cdigo. >ara ,er cmo se reali2a esto' siga los pasos del siguiente procedimiento para crear una aplicacin sencilla 6ue consiste en un cuadro de te4to ( un 1otn de comando. Cuando <aga clic en el 1otn de comando aparecer8 el mensaje O[0ola' mundo[O en el cuadro de te4to. Crear la inter.a2 %os .ormularios son la 1ase para crear la inter.a2 de una aplicacin. >uede usar .ormularios para agregar ,entanas ( cuadros de di8logo a la aplicacin. 7am1i+n puede usarlos como contenedores de elementos 6ue no son parte ,isi1le de la inter.a2 de la aplicacin. >or ejemplo' puede tener un .ormulario en su aplicacin 6ue sir,a como contenedor para gr8fcos 6ue 6uiera presentar en otros .ormularios. l primer paso para generar una aplicacin de Visual Basic consiste en crear los .ormularios 6ue ,an a ser la 1ase de la inter.a2 de su aplicacin. Despu+s di1uje los o1jetos 6ue ,an a componer la inter.a2 en los .ormularios 6ue <a creado. >ara esta primera aplicacin' usaremos dos controles del cuadro de <erramientas. >ara di1ujar un control mediante el cuadro de <erramientas 1. 0aga clic en la <erramienta del control 6ue <a elegido di1ujarW en este caso el cuadro de te4to. 21
2. ;ue,a el puntero dentro del .ormulario. l puntero adoptar8 la .orma de cru2' como se muestra en la fgura 2.*. &igura 2.* Di1ujar un cuadro de te4to con el cuadro de <erramientas *. Colo6ue la cru2 donde 6uiera 6ue apare2ca la es6uina superior i26uierda del control. !. Arrastre la cru2 <asta 6ue el control tenga el tama-o deseado. 9Arrastrar signifca mantener presionado el 1otn primario del mouse mientras mue,e un o1jeto con el mouse.: /. $uelte el 1otn del mouse. l control aparecer8 en el .ormulario. #tra .orma sencilla de agregar un control a un .ormulario es <acer do1le clic en el 1otn de ese control en el cuadro de <erramientas. sto crea un control con un tama-o predeterminado situado en el centro del .ormularioW a<ora puede mo,er el control a otra u1icacin del .ormulario. Cam1iar el tama-o' mo,imiento ( 1lo6ueo de controles #1ser,e 6ue en las es6uinas del control aparece unos pe6ue-os cuadros rectangulares llamados controladores de tamaoW en el siguiente paso usar8 estos controladores para cam1iar el tama-o del control. 7am1i+n puede usar el mouse' el teclado ( comandos de men) para mo,er 22
controles' 1lo6uear ( des1lo6uear la posicin de los controles' ( ajustar sus posiciones. >ara cam1iar el tama-o de un control 1. $eleccione el control 6ue 6uiera cam1iar el tama-oW para ello' <aga clic en +l con el mouse. Aparecer8n en el control los controladores de tama-o. 2. $it)e el puntero del mouse en un controlador de tama-o ( arr8strelo <asta 6ue el control tenga el tama-o elegido. %os controladores de las es6uinas cam1iar8n el tama-o de controles <ori2ontal ( ,erticalmente' mientras 6ue los controladores de los lados cam1iar8n el tama-o slo en una direccin. *. $uelte el 1otn del mouse. Yo 1ienY 5se ;A\]$ con las teclas de direccin para cam1iar el tama-o del control seleccionado. >ara mo,er un control 5se el mouse para arrastrar el control a otra u1icacin del .ormulario. Yo 1ienY 5se la ,entana >ropiedades para cam1iar las propiedades 7op ( %e.t. Cuando seleccione un control' puede usar C7=% con las teclas de direccin para mo,er el control una unidad de la cuadr?cula cada ,e2. $i la cuadr?cula est8 desacti,ada' el control se mue,e un p?4el cada ,e2. >ara 1lo6uear la posicin de todos los controles n el men) &ormato' elija Blo6uear controles. Yo 1ienY 0aga clic en el 1otn Alternar 1lo6ueo de controles de la 1arra de <erramientas ditor de .ormularios. 2*
sto 1lo6uear8 todos los controles del .ormulario en sus posiciones actuales' de .orma 6ue no los podr8 mo,er accidentalmente una ,e2 6ue est+n en la u1icacin deseada. $e 1lo6uear8n los controles slo en el .ormulario seleccionadoW los controles de otros .ormularios no se ,en a.ectados. s un comando de alternar' por lo 6ue puede usarlo tam1i+n para des1lo6uear las posiciones de los controles. >ara ajustar la posicin de controles 1lo6ueados >uede OarrastrarO el control 6ue tiene el en.o6ue si presiona la tecla C7=% ( la tecla de direccin adecuada. Yo 1ienY >uede cam1iar las propiedades 7op ( %e.t del control en la ,entana >ropiedades. \a tiene la inter.a2 de la aplicacin O^0ola' mundo[O' como se muestra en la fgura 2.!. &igura 2.! %a inter.a2 de la aplicacin O^0ola' mundo[O sta1lecer propiedades l siguiente paso consiste en esta1lecer las propiedades de los o1jetos 6ue <a creado. %a ,entana >ropiedades 9fgura 2./: proporciona una manera .8cil de esta1lecer las propiedades de todos los o1jetos de un .ormulario. >ara a1rir la ,entana >ropiedades' elija el comando Ventana >ropiedades del men) Ver' <aga clic en el 1otn Ventana >ropiedades de la 1arra de <erramientas o utilice el men) conte4tual del control. 2!
&igura 2./ %a ,entana >ropiedades %a ,entana >ropiedades consta de los siguientes elementosU Cuadro del o1jetoU presenta el nom1re del o1jeto para el 6ue puede esta1lecer propiedades. 0aga clic en la Zec<a situada a la derec<a del cuadro #1jeto para presentar la lista de o1jetos del .ormulario actual. &ic<as de ordenU elija entre una lista al.a1+tica de propiedades o una ,ista jer8r6uica di,idida en categor?as lgicas' como las 6ue tratan de la apariencia' .uentes o posicin. %ista de propiedadesU la columna de la i26uierda presenta todas las propiedades del o1jeto seleccionado. >uede modifcar ( ,er los ,alores en la columna de la derec<a. >ara esta1lecer propiedades desde la ,entana >ropiedades 1. n el men) Ver' elija >ropiedades o <aga clic en el 1otn >ropiedades de la 1arra de <erramientas. %a ,entana >ropiedades presenta los ,alores del .ormulario o control seleccionado. 2. n la lista >ropiedades' seleccione el nom1re de una propiedad. *. n la columna de la derec<a' escri1a o seleccione el nue,o ,alor de la propiedad. %as propiedades enumeradas tienen una lista predefnida de ,alores. >uede presentar la lista si <ace clic en la Zec<a <acia a1ajo 6ue <a( a la derec<a del cuadro Valores o puede recorrer la lista <aciendo do1le clic en un elemento de la lista. n el ejemplo O^0ola' mundo[O necesitar8 cam1iar los ,alores de tres propiedades. 5se el ,alor predeterminado para las dem8s propiedades. #1jeto >ropiedad Valor &orm Caption ^0ola' mundo[ 2/
7e4tBo4 7e4t 9Vac?o: CommandButt on Caption Aceptar sta1lecer la propiedad Icon 7odos los .ormularios en Visual Basic tienen un icono gen+rico predeterminado 6ue aparece cuando minimi2a ese .ormulario. $in em1argo' pro1a1lemente cam1iar8 este icono por uno 6ue ilustre el uso del .ormulario en su aplicacin. >ara asignar un icono a un .ormulario' esta1le2ca la propiedad Icon para ese .ormulario. >uede usar iconos de *2 4 *2 p?4eles 6ue eran est8ndar en las ,ersiones de ;icroso.t HindoMs de 1" 1its ( 6ue se utili2an tam1i+n en HindoMs 9/ ( HindoMs @7' as? como los iconos de 1" 4 1" p?4eles empleados en HindoMs 9/. scri1ir cdigo %a ventana Editor de cdigo es el lugar donde escri1e el cdigo de Visual Basic para su aplicacin. l cdigo consta de instrucciones del lenguaje' constantes ( declaraciones. ;ediante la ,entana ditor de cdigo puede ,er ( modifcar r8pidamente el cdigo de su aplicacin. >ara a1rir la ,entana Cdigo 0aga do1le clic en el .ormulario o el control para el 6ue desea escri1ir cdigo. Yo 1ienY n la ,entana 4plorador de pro(ectos' seleccione el nom1re de un .ormulario o un mdulo ( elija Ver cdigo. %a fgura 2." muestra la ,entana ditor de cdigo 6ue aparece cuando <ace do1le clic en el control 1otn de comando ( los e,entos de ese comando. &igura 2." %a ,entana ditor de cdigo 2"
>uede elegir presentar todos los procedimientos en la misma ,entana Cdigo o presentar un )nico procedimiento cada ,e2. >ara presentar todos los procedimientos en la misma ,entana Cdigo 1. n el men) 0erramientas' seleccione #pciones. 2. n la fc<a ditor del cuadro de di8logo #pciones' acti,e la casilla de ,erifcacin situada a la i26uierda de Ver mdulo completo de .orma predeterminada. %a casilla de ,erifcacin a la i26uierda de $eparador de procedimientos agrega o 6uita una l?nea separadora entre los procedimientos. Yo 1ienY 0aga clic en el 1otn Ver mdulo completo en la es6uina in.erior i26uierda de la ,entana ditor de cdigo. >ara presentar un procedimiento cada ,e2 en la ,entana Cdigo 1. n el men) 0erramientas' seleccione #pciones. 2. n la fc<a ditor del cuadro de di8logo #pciones' desacti,e la casilla de ,erifcacin 6ue <a( a la i26uierda de Ver mdulo completo de .orma predeterminada. Yo 1ienY 0aga clic en el 1otn Ver procedimiento en la es6uina in.erior i26uierda de la ,entana ditor de cdigo. %a ,entana Cdigo inclu(e los siguientes elementosU Cuadro de lista #1jetoU presenta el nom1re del o1jeto seleccionado. 0aga clic en la Zec<a de la derec<a del cuadro de lista para presentar una lista de todos los o1jetos asociados con el .ormulario. Cuadro de lista >rocedimientoU enumera los procedimientos o e,entos de un o1jeto. l cuadro presenta el nom1re del procedimiento seleccionado' en este caso ClicS. lija la Zec<a 6ue <a( a la derec<a del cuadro para presentar todos los procedimientos del o1jeto. 23
Crear procedimientos de e,ento l cdigo en una aplicacin de Visual Basic se di,ide en 1lo6ues menores llamados procedimientos. 5n procedimiento de evento' como los 6ue crear8 a6u?' contiene cdigo 6ue se ejecuta cuando se produce un e,ento 9como cuando un usuario <ace clic en un 1otn:. 5n procedimiento de e,ento de un control com1ina el nom1re real del control 9especifcado en la propiedad @ame:' un car8cter de su1ra(ado 9_: ( el nom1re del e,ento. >or ejemplo' si 6uiere 6ue un 1otn de comando llamado Command1 in,o6ue un procedimiento de e,ento cuando se <aga clic en +l' utilice el procedimiento Command1_ClicS. >ara crear un procedimiento de e,ento 1. n el cuadro de lista #1jeto' seleccione el nom1re de un o1jeto del .ormulario acti,o. 9l .ormulario activo es el .ormulario 6ue actualmente tiene el en.o6ue.: >ara este ejemplo' elija el 1otn de comando' Command1. 2. n el cuadro de lista >rocedimiento' seleccione el nom1re de un e,ento del o1jeto seleccionado. A6u?' el procedimiento ClicS (a est8 seleccionado puesto 6ue es el procedimiento predeterminado para un 1otn de comando. #1ser,e 6ue a<ora se presenta en la ,entana Cdigo una plantilla para el procedimiento de e,ento. *. scri1a el siguiente cdigo entre las instrucciones $u1 ( nd $u1U !. 7e4t1.7e4t ` O^0ola' mundo[O l procedimiento de e,ento de1er?a parecerse a +steU >ri,ate $u1 Command1_ClicS 9: 7e4t1.7e4t ` O^0ola' mundo[O nd $u1 #1ser,ar8 6ue a6u? el cdigo simplemente cam1ia la propiedad 7e4t del control llamado 7e4t1 para 6ue sea O^0ola' mundo[O. %a sinta4is de este ejemplo tiene el .ormato objeto.propiedad' donde 7e4t1 es el o1jeto ( 7e4t la propiedad. >uede usar esta sinta4is para cam1iar los ,alores de las propiedades de cual6uier .ormulario o control como respuesta a los e,entos 6ue se producen mientras se ejecuta su aplicacin. 28
>ara o1tener m8s in.ormacin >ara o1tener in.ormacin acerca de la creacin de otros tipos de procedimientos' ,ea OIntroduccin a los procedimientosO en O&undamentos de programacinO. jecutar la aplicacin >ara ejecutar la aplicacin' elija Iniciar en el men) jecutar' <aga clic en el 1otn Iniciar de la 1arra de <erramientas o presione &/. 0aga clic en el 1otn de comando 6ue <a creado en el .ormulario ( ,er8 cmo aparece O^0ola' mundo[O en el cuadro de te4to. La aplicaci!n de ejeplo &irstapp Visual Basic proporciona una gran cantidad de <erramientas' m8s de las 6ue <a usado en la primera aplicacin' as? 6ue pronto usar8 otras muc<as caracter?sticas para administrar ( personali2ar sus aplicaciones. =e,isar las aplicaciones de ejemplo puede ser una e4celente .orma de aprender m8s acerca de Visual Basic. l siguiente ejemplo ilustra lo .8cil 6ue es crear una )til aplicacin en Visual Basic. %a aplicacin &irstapp muestra cmo pueden usarse un control Data ( un control Grid para presentar una ta1la de in.ormacin de una 1ase de datos. Visual Basic .acilita el acceso a la in.ormacin de la 1ase de datos desde su aplicacin. l control Data proporciona la capacidad de despla2arse a tra,+s del conjunto de registros de la 1ase de datos' sincroni2ando la presentacin de los registros en el control Prid con la posicin en el conjunto de registros. %a aplicacin consta de un control de datos 9Data:' un control de cuadr?cula Ze4i1le 9;$&le4Prid:' un control de cuadro de lista 9%istBo4: ( dos 1otones de comando 9CommandButton:. %a cuadr?cula muestra una ta1la con in.ormacin de productos e4istentes en la 1ase de datos @ort<Mind. Cuando el usuario seleccione un elemento mediante los 1otones de despla2amiento del control Data' se presentar8 en dic<o control el nom1re del producto seleccionado. l usuario puede tam1i+n agregar elementos a la Olista de comprasO en el control de cuadro de lista si <ace do1le clic en la seleccin actual de la cuadr?cula. >ara agregar elementos al cuadro de lista' use el m+todo AddItem. 95n mtodo es una .uncin de Visual Basic 6ue act)a so1re un o1jeto en particular' en este caso el o1jeto %istBo4.: %a sinta4is para especifcar un m+todo 9objeto.mtodo: es similar a la sinta4is para esta1lecer una propiedad 9objeto.propiedad:. l m+todo AddItem le permite agregar elementos din8micamente al cuadro de lista mientras se est8 ejecutando la aplicacin. >or el contrario' el m+todo Clear se utili2a para 6uitar todos los elementos del cuadro de lista. 29
>ara o1tener m8s in.ormacin >ara aprender m8s acerca de los m+todos' ,ea ODescripcin de las propiedades' m+todos ( e,entosO en O&ormularios' controles ( men)sO. Crear un pro(ecto >ara empe2ar a crear esta aplicacin' elija @ue,o pro(ecto en el men) Arc<i,o' seleccione entonces G est8ndar en el cuadro de di8logo @ue,o pro(ecto 9cuando inicie por primera ,e2 Visual Basic aparecer8 el cuadro de di8logo @ue,o pro(ecto:. Visual Basic crea un proyecto nue,o ( presenta un .ormulario nue,o. >ara di1ujar la inter.a2' utilice un control Data' un control ;$&le4Prid' un control %istBo4 ( dos controles CommandButton. l control ;$&le4Prid no se encuentra en el cuadro de <erramientas predeterminado' por lo 6ue necesitar8 agregarloU >ara agregar un control al cuadro de <erramientas 1. $eleccione Componentes en el men) conte4tual del cuadro de <erramientas. 9>ara mostrar el men) conte4tual puede <acer clic con el 1otn secundario del mouse dentro de la ,entana del cuadro de <erramientas.: Aparecer8 el cuadro de di8logo Componentes. 2. Bus6ue ;$&le4Prid 9;icroso.t &le4Prid ".0: en el cuadro de lista Controles ( acti,e la casilla de ,erifcacin 6ue <a( a su i26uierda. *. 0aga clic en el 1otn Aceptar. l icono del control ;$&le4Prid aparecer8 en el cuadro de <erramientas. 5tilice el cuadro de <erramientas para colocar en el .ormulario un control Data' un control ;$&le4Prid' un control de cuadro de lista ( dos 1otones de comando. $i no recuerda cmo <acerlo' ,ea OCrear la inter.a2O anteriormente en este cap?tulo. sta1lecer propiedades n la ,entana >ropiedades' esta1le2ca las propiedades de los o1jetos de acuerdo a la siguiente ta1la. 5se los ,alores predeterminados para las dem8s propiedades. #1jeto >ropiedad Valor &orm Caption >roductos *0
Data1 Data1ase@a me =ecord$ourc e rutaX@Mind.m d1 ;$&le4Prid1 Data$ource Data1 Command1 Caption Borrar Command2 Caption $alir %a propiedad Data1ase@ame del control Data de1e incluir la ruta real de la 1ase de datos. De .orma predeterminada' la 1ase de datos @Mind.md1 se instala en el mismo directorio 6ue Visual Basic. Cuando seleccione la propiedad Data1ase@ame en la ,entana >ropiedades' puede <acer clic con el 1otn en la parte derec<a de la propiedad para presentar un cuadro de di8logo est8ndar para e4aminar ( 1uscar el arc<i,o. 5na ,e2 6ue se <a(a esta1lecido la propiedad Data1ase@ame' la propiedad =ecord$ource de la ,entana >ropiedades contendr8 una lista de ta1las o conjuntos de registros de la 1ase de datos seleccionada. Al esta1lecer la propiedad Data$ource del control ;$&le4Prid a Data1 se ,incula autom8ticamente la cuadr?cula al control Data. scri1ir cdigo de e,entos 7odo el cdigo de la aplicacin est8 contenido en los procedimientos de e,ento Command1_ClicS' Command2_ClicS' Data1_=eposition ( ;$&le4Prid1_D1lClicS. 0aga do1le clic en el .ormulario o el control para presentar la ,entana Cdigo ( despu+s escri1a el cdigo de cada procedimiento de e,ento. Agregue este cdigo al procedimiento de e,ento Command1_ClicS para 1orrar el cuadro de lista cuando el usuario <ace clic en el 1otnU >ri,ate $u1 Command1_ClicS 9: %ist1.Clear a Borra el cuadro de lista. nd $u1 *1
n la instruccin anterior' est8 in,ocando al m+todo Clear del cuadro de lista %ist1. l m+todo Clear elimina el contenido del cuadro de lista. Agregue este cdigo al procedimiento de e,ento Command2_ClicS para descargar de la memoria el .ormulario ( terminar la aplicacinU >ri,ate $u1 Command2_ClicS 9: 5nload &orm1 nd a 7ermina la aplicacin. nd $u1 n el procedimiento anterior' la primera instruccin in,oca el e,ento 5nload del .ormulario. $i necesita reali2ar una .uncin de cierre' como guardar un arc<i,o' podr?a situar el cdigo en el procedimiento de e,ento 5nload del .ormulario. %a segunda instruccin llama a la .uncin nd' 6ue fnali2a la aplicacin. Agregue este cdigo al procedimiento de e,ento Data1_=eposition para actuali2ar el t?tulo cada ,e2 6ue se seleccione un registroU >ri,ate $u1 Data1_=eposition 9: Data1.Caption ` Data1.=ecordset9O@om1re>roductoO: nd $u1 n la instruccin anterior est8 asignando el ,alor de la derec<a 9el contenido del campo 7?tulo en el recordset del control Data: a la propiedad de la i26uierda 9la propiedad Caption del o1jeto del control Data:. Agregue este cdigo al procedimiento de e,ento ;$&le4Prid_D1lClicS para agregar un art?culo al cuadro de lista cuando el usuario <aga do1le clic en una fla seleccionadaU >ri,ate $u1 ;$&le4Prid1_D1lClicS 9: %ist1.AddItem ;$&le4Prid.7e4t nd $u1 n la instruccin anterior est8 in,ocando al m+todo AddItem del cuadro de lista 9%ist1:. l te4to 6ue se agrega al cuadro de lista est8 contenido en el argumento del m+todo' en este caso' el ,alor del campo 7?tulo en el recordset del control Data. >asar un ,alor a un argumento es similar a asignar un ,alor a una propiedadW a di.erencia 6ue en la instruccin de asignacin' no se re6uiere el signo igual. Puardar un pro(ecto *2
>ara fnali2ar el tra1ajo en la aplicacin' elija Puardar pro(ecto en el men) Arc<i,o. Visual Basic le pedir8 6ue guarde el .ormulario ( el pro(ecto por separado. 5n posi1le nom1re para el pro(ecto es O%ista de compras de @ort<MindO. n HindoMs 9/ ( en HindoMs @7 est8 permitido usar nom1res de arc<i,os de <asta 2// caracteres de longitud ( pueden incluir espacios en 1lanco. %as ,ersiones anteriores de HindoMs ten?an los nom1res de arc<i,o limitados a oc<o caracteres' con una e4tensin de tres caracteres. ;ejorar su aplicacin \a <a terminado su primera aplicacin en Visual BasicU reali2a una .uncin sencilla pero )til. >uede usar esta aplicacin como 1ase para agregar .uncionalidad similar a su propia aplicacin' sustitu(endo sus propios datos en lugar de @Mind.md1. >or supuesto' para <acer esta aplicacin ,erdaderamente )til' podr?a agregar .uncionalidad para guardar o imprimir el contenido del cuadro de lista' agregar in.ormacin adicional como el precio ( la disponi1ilidad e incluso recopilar in.ormacin de la tarjeta de cr+dito ( transmitir un pedido a tra,+s de Internet. A medida 6ue contin)e a tra,+s de este Manual del programador encontrar8 ejemplos para reali2ar todo esto ( muc<o m8s. &orularios, controles y en's l primer paso para crear una aplicacin con Visual Basic es crear la inter.a2' la parte ,isual de la aplicacin con la 6ue ,a a interactuar el usuario. %os .ormularios ( controles son los elementos de desarrollo 18sicos 6ue se usan para crear la inter.a2W son los o1jetos con los 6ue se tra1aja para desarrollar la aplicacin. %os .ormularios son o1jetos 6ue e4ponen las propiedades 6ue defnen su apariencia' los m+todos 6ue defnen su comportamiento ( los e,entos 6ue defnen la .orma en 6ue interact)an con el usuario. ;ediante el esta1lecimiento de las propiedades del .ormulario ( la escritura de cdigo de Visual Basic para responder a sus e,entos se personali2a el o1jeto para cu1rir las necesidades de la aplicacin. %os controles son o1jetos 6ue est8n contenidos en los o1jetos de .ormularios. Cada tipo de control tiene su propio conjunto de propiedades' m+todos ( e,entos' 6ue lo <acen adecuado para una fnalidad determinada. Algunos de los controles 6ue puede usar en las aplicaciones son m8s adecuados para escri1ir o mostrar te4to' mientras 6ue otros controles permiten tener acceso a otras aplicaciones ( procesan los datos como si la aplicacin remota .ormara parte del cdigo. **
ste cap?tulo presenta los conceptos 18sicos del tra1ajo con .ormularios ( controles' ( las propiedades' m+todos ( e,entos 6ue tienen asociados. $e e4plican muc<os de los controles est8ndar' as? como elementos espec?fcos de .ormularios como men)s ( cuadros de di8logo. 7emas Descripcin de las propiedades' m+todos ( e,entos Introduccin a los o1jetos ( a las propiedades' m+todos ( e,entos asociados. Dise-ar un .ormulario &undamentos del tra1ajo con propiedades' m+todos ( e,entos de un .ormulario. 0acer clic en los 1otones para reali2ar acciones Introduccin al control de 1otn de comando. Controles para mostrar e introducir te4to Introduccin a los controles de eti6ueta ( cuadro de te4to. Controles 6ue muestran opciones a los usuarios Introduccin a los controles de casilla de ,erifcacin' 1otn de opcin' cuadro de lista' cuadro com1inado ( 1arra de despla2amiento. Controles 6ue muestran im8genes ( gr8fcos Introduccin a los controles de cuadro de imagen' imagen' .orma ( l?nea. Controles adicionales Introduccin a otros controles est8ndar de Visual Basic. Descripcin del en.o6ue 4plicacin 1re,e del en.o6ue cuando se aplica a los controles. Confgurar el orden de ta1ulacin *!
Introduccin al concepto de orden de ta1ulacin en un .ormulario. &undamentos de los men)s Introduccin a los controles de men) ( al ditor de men)s. >edir datos al usuario mediante cuadros de di8logo Introduccin a los cuadros de di8logo. Aplicacin de ejemplo Controls.,1p %os ejemplos de cdigo de este cap?tulo est8n tomados de la aplicacin de ejemplo Controls.,1p 6ue se encuentra en el directorio $amples. Descripci!n de las propiedades, $todos y e#entos %os .ormularios ( controles de Visual Basic son o1jetos 6ue e4ponen sus propios m+todos' propiedades ( e,entos. %as propiedades se pueden considerar como atri1utos de un o1jeto' los m+todos como sus acciones ( los e,entos como sus respuestas. 5n o1jeto de uso diario como el glo1o de un ni-o tiene tam1i+n propiedades' m+todos ( e,entos. ntre las propiedades de un glo1o se inclu(en atri1utos ,isi1les como el alto' el di8metro ( el color. #tras propiedades descri1en su estado 9inZado o desinZado: o atri1utos 6ue no son ,isi1les' como su edad. >or defnicin' todos los glo1os tienen estas propiedadesW lo 6ue ,ar?a de un glo1o a otro son los ,alores de estas propiedades. 5n glo1o tiene tam1i+n m+todos o acciones in<erentes 6ue puede e.ectuar. 7iene un m+todo inZar 9la accin de llenarlo de <elio: o un m+todo desinZar 9e4peler su contenido: ( un m+todo ele,arse 9si se deja escapar:. De nue,o' todos los glo1os pueden e.ectuar estos m+todos. %os glo1os tienen' adem8s' respuestas predefnidas a ciertos e,entos e4ternos. >or ejemplo' un glo1o responder?a al e,ento de pinc<arlo desinZ8ndose o al e,ento de soltarlo ele,8ndose en el aire. */
&igura *.1 %os o1jetos tienen propiedades' responden a e,entos ( ejecutan m+todos $i se pudiera programar un glo1o' el cdigo de Visual Basic podr?a ser como el siguiente. >ara esta1lecer las propiedades del glo1oU Plo1o.Color ` =ojo Plo1o.Di8metro ` 10 Plo1o.InZado ` 7rue #1ser,e la sinta4is del cdigoU el o1jeto 9Plo1o: seguido de la propiedad 9.Color: seguida de la asignacin del ,alor 9=ojo:. >odr?a modifcar el color del glo1o desde el cdigo si repitiera esta instruccin ( sustitu(era el ,alor por otro di.erente. 7am1i+n es posi1le esta1lecer las propiedades en la ,entana >ropiedades mientras se est8 dise-ando la aplicacin. %os m+todos de un glo1o se in,ocan de esta .ormaU Plo1o.InZar Plo1o.DesinZar Plo1o.le,ar / %a sinta4is es similar a la sinta4is de las propiedadesU el o1jeto 9un nom1re: seguido de un m+todo 9un ,er1o:. n el tercer ejemplo <a( un elemento adicional' llamado argumento' 6ue indica la distancia 6ue se ele,a. Algunos m+todos tendr8n uno o m8s argumentos para descri1ir m8s a .ondo la accin 6ue se ,a a ejecutar. l glo1o puede responder a un e,ento como se muestra a continuacinU $u1 Plo1o_>inc<a2o9: Plo1o.DesinZar Plo1o.0acer=uido OBangO *"
Plo1o.InZado ` &alse Plo1o.Di8metro ` 1 nd $u1 n este caso' el cdigo descri1e el comportamiento del glo1o cuando se produce un e,ento >inc<a2oU in,oca el m+todo DesinZar ( luego in,oca el m+todo 0acer=uido con un argumento OBangO 9el tipo de ruido 6ue se ,a a <acer:. Como el glo1o (a no est8 inZado' la propiedad InZado tiene el ,alor &alse ( la propiedad Di8metro adopta un nue,o ,alor. $i 1ien no puede programar un glo1o' s? puede programar un .ormulario o un control de Visual Basic. Como programador' tiene el controlU decide 6u+ propiedades se de1en modifcar' 6u+ m+todos se de1en in,ocar o a 6u+ e,entos <a( 6ue responder para conseguir la apariencia ( el comportamiento deseados. Dise(ar un )orulario %os o1jetos de un .ormulario son los elementos de desarrollo 18sicos de una aplicacin de Visual Basic' las ,entanas reales con las 6ue interact)a el usuario cuando ejecuta la aplicacin. %os .ormularios tienen sus propios e,entos' propiedades ( m+todos con los 6ue se puede controlar su apariencia ( comportamiento. &igura *.2 %os .ormularios ( controles tienen sus propios e,entos' propiedades ( m+todos l primer paso para dise-ar un .ormulario consiste en esta1lecer sus propiedades. >uede esta1lecer las propiedades de un .ormulario en tiempo de diseo en la ,entana >ropiedades o en tiempo de ejecucin' escri1iendo cdigo. @ota n tiempo de diseo' 6ue es cual6uier momento mientras est8 desarrollando una aplicacin en el entorno de Visual Basic' se tra1aja con .ormularios ( controles' se esta1lecen propiedades ( se escri1e cdigo para los e,entos. iempo de ejecucin es cual6uier momento mientras se ejecuta realmente la aplicacin ( se interact)a con ella como lo <ar?a un usuario. sta1lecer las propiedades de un .ormulario *3
;uc<as propiedades de un .ormulario a.ectan a su apariencia .?sica. %a propiedad Caption determina el te4to 6ue muestra la 1arra de t?tulo del .ormulario ( la propiedad Icon esta1lece el icono 6ue aparece cuando se minimi2a un .ormulario. %as propiedades ;a4Button ( ;inButton determinan si el .ormulario se puede ma4imi2ar o minimi2ar. $i cam1ia la propiedad Border$t(le puede controlar el comportamiento de cam1io de tama-o del .ormulario. %as propiedades 0eig<t ( Hidt< determinan el tama-o inicial de un .ormulario' mientras 6ue las propiedades %e.t ( 7op determinan la u1icacin del .ormulario en relacin con la es6uina superior i26uierda de la pantalla. Con la propiedad HindoM$tate puede esta1lecer si el .ormulario se inicia en estado ma4imi2ado' minimi2ado o normal. %a propiedad @ame esta1lece el nom1re con el 6ue <ar8 re.erencia al .ormulario en el cdigo. De .orma predeterminada' cuando se agrega un .ormulario por primera ,e2 a un pro(ecto' su nom1re es &orm1' &orm2' etc. s con,eniente asignar a la propiedad @ame un ,alor m8s signifcati,o' como O.rmntr(O para un .ormulario de entrada de pedidos. %a mejor manera de .amiliari2arse con las numerosas propiedades de los .ormularios es e4perimentar. Cam1ie algunas propiedades de un .ormulario en la ,entana >ropiedades 9fgura *.*: ( ejecute la aplicacin para ,er su e.ecto. >uede aprender m8s acerca de cada propiedad si la selecciona ( presiona &1 para ,er A(uda conte4tual. &igura *.* %a ,entana >ropiedades ,entos ( m+todos de un .ormulario Como o1jetos 6ue son' los .ormularios pueden ejecutar m+todos ( responder a e,entos. l e,ento =esi2e de un .ormulario se desencadena siempre 6ue se cam1ia el tama-o de un .ormulario' (a sea por una accin del usuario o a tra,+s del cdigo. sto permite reali2ar acciones como mo,er o cam1iar el tama-o de los controles de un .ormulario cuando <an cam1iado sus dimensiones. *8
l e,ento Acti,ate se produce siempre 6ue un .ormulario se con,ierte en el .ormulario acti,oW el e,ento Deacti,ate se produce cuando otro .ormulario u otra aplicacin se con,ierten en acti,o. stos e,entos son adecuados para iniciar o fnali2ar acciones del .ormulario. >or ejemplo' en el e,ento Acti,ate podr?a escri1ir cdigo para resaltar el te4to de un determinado cuadro de te4toW con el e,ento Deacti,ate podr?a guardar los cam1ios e.ectuados en un arc<i,o o en una 1ase de datos. >ara <acer ,isi1le un .ormulario se in,oca el m+todo $<oMU &orm2.$<oM In,ocar el m+todo $<oM tiene el mismo e.ecto 6ue asignar el ,alor 7rue a la propiedad Visi1le del .ormulario. ;uc<os m+todos de un .ormulario implican te4to o gr8fcos. %os m+todos >rint' %ine' Circle ( =e.res< son )tiles para imprimir o di1ujar directamente en la superfcie de un .ormulario. stos ( otros m+todos se e4plican en O7ra1ajar con te4to ( gr8fcosO. >ara o1tener m8s in.ormacin >ara o1tener in.ormacin adicional acerca de los .ormularios' ,ea O;8s acerca de los .ormulariosO en OCrear la inter.a2 de usuarioO. Hacer clic en los *otones para reali+ar acciones %a .orma m8s sencilla de permitir al usuario interactuar con una aplicacin es proporcionarle un 1otn para 6ue <aga clic en +l. >uede usar el control de 1otn de comando 6ue proporciona Visual Basic o crear su propio O1otnO mediante un control de imagen 6ue contenga un gr8fco' por ejemplo un icono. 5sar los 1otones de comando %a ma(or?a de las aplicaciones de Visual Basic tienen 1otones de comando 6ue permiten al usuario <acer clic en ellos para reali2ar acciones. Cuando el usuario <ace clic en el 1otn' +ste no solamente reali2a una accin' sino 6ue' adem8s' parece 6ue se est8 presionando ( soltando. $iempre 6ue el usuario <ace clic en un 1otn se in,oca el procedimiento de e,ento ClicS. >ara reali2ar cual6uier accin 6ue desee puede escri1ir cdigo en el procedimiento de e,ento ClicS. 0a( muc<as .ormas de elegir un 1otn de comando en tiempo de ejecucinU 5sar un mouse 9ratn: para <acer clic en el 1otn. *9
;o,er el en.o6ue al 1otn presionando la tecla 7AB ( elegir luego el 1otn presionando la BA==A $>ACIAD#=A o @7=A=. 9Vea ODescripcin del en.o6ueO' m8s adelante en este cap?tulo.: >resionar una tecla de acceso a un 1otn de comando 9A%7E la letra su1ra(ada:. Asignar a la propiedad Value del 1otn de comando el ,alor 7rue en el cdigoU cmdCerrar.Value ` 7rue In,ocar el e,ento ClicS del 1otn de comando en el cdigoU cmdCerrar_ClicS $i el 1otn de comando es el botn de comando predeterminado para el .ormulario' al presionar @7=A= se elige el 1otn' incluso aun6ue cam1ie el en.o6ue a un control di.erente de un 1otn de comando. >ara especifcar un 1otn de comando predeterminado en tiempo de dise-o' asigne a la propiedad De.ault del 1otn el ,alor 7rue. $i el 1otn de comando es el botn !ancelar predeterminado para el .ormulario' al presionar $C se elige el 1otn' incluso aun6ue cam1ie el en.o6ue a otro control. >ara especifcar un 1otn Cancelar predeterminado en tiempo de dise-o' asigne a la propiedad Cancel del 1otn el ,alor 7rue. 7odas estas acciones <acen 6ue Visual Basic in,o6ue el procedimiento de e,ento ClicS. %a aplicacin >rue1a de 1otones 5tilice la propiedad Caption para mostrar te4to en el 1otn e indicar al usuario lo 6ue <ace el 1otn. n la fgura *.!' el ejemplo >rue1a de 1otones de la aplicacin de ejemplo Controls contiene un 1otn de comando cu(a propiedad Caption es OCam1iar la se-alO. 9>ara ,er una ,ersin operati,a de este ejemplo' ,ea el arc<i,o Button..rm de la aplicacin de ejemplo Controls.,1p.: #1ser,e 6ue la tecla de m+todo a1re,iado para este 1otn es b$c' representada por el su1ra(ado. Insertar un s?m1olo D en el te4to de la propiedad Caption <ace 6ue el car8cter siguiente sea la tecla de m+todo a1re,iado para el 1otn 9por ejemplo' Cam1iar la Dse-al:. &igura *.! Botn de comando con un t?tulo !0
Cuando un usuario <ace clic en el 1otn de comando' se ejecuta el cdigo contenido en el procedimiento de e,ento ClicS del 1otn de comando. n el ejemplo aparece un icono de sem8.oro di.erente cada ,e2 6ue se <ace clic en el 1otn. >ara o1tener m8s in.ormacin >ara o1tener in.ormacin acerca de las propiedades adicionales del 1otn de comando' ,ea O5sar los controles est8ndar de Visual BasicO. Controles para ostrar e introducir te,to %os controles de eti6uetas ( cuadros de te4to se usan para mostrar o introducir te4to. 5tilice eti6uetas cuando desee 6ue la aplicacin muestre te4to en un .ormulario ( utilice cuadros de te4to cuando desee permitir al usuario escri1ir te4to. %as eti6uetas contienen te4to 6ue slo se puede leer' mientras 6ue los cuadros de te4to contienen te4to 6ue se puede modifcar. >ara proporcionar esta caracter?stica 5se este control 7e4to 6ue el usuario puede modifcarW por ejemplo' un campo de entrada de pedidos o un cuadro de contrase-a 7e4tBo4 9cuadro de te4to: 7e4to 6ue slo se muestraW por ejemplo' para identifcar un campo de un .ormulario o mostrar instrucciones al usuario %a1el 9eti6ueta: %as eti6uetas ( los cuadros de te4to se e4plican en las secciones siguientesU !1
5sar eti6uetas para mostrar te4to &undamentos de la utili2acin del control de eti6ueta. 7ra1ajar con cuadros de te4to &undamentos de la utili2acin de los cuadros de te4to. Usar eti-uetas para ostrar te,to 5n control %a1el 9eti6ueta: muestra te4to 6ue el usuario no puede modifcar directamente. >uede usar eti6uetas para identifcar controles 6ue no tienen una propiedad Caption' como los cuadros de te4to ( las 1arras de despla2amiento. l te4to real 6ue muestra una eti6ueta est8 controlado por la propiedad Caption' 6ue se puede esta1lecer en tiempo de dise-o en la ,entana >ropiedades o en tiempo de ejecucin si la asigna en el cdigo. De .orma predeterminada' el t?tulo es la )nica parte ,isi1le del control de eti6ueta. $in em1argo' si asigna a la propiedad Border$t(le el ,alor 1 9lo 6ue puede <acer en tiempo de dise-o:' la eti6ueta aparece con un 1orde 6ue le da una apariencia similar a un cuadro de te4to. 7am1i+n puede cam1iar la apariencia de la eti6ueta si esta1lece las propiedades BacSColor' BacS$t(le' &oreColor ( &ont. Cam1iar el tama-o de una eti6ueta para ajustarla a su contenido %os t?tulos de eti6uetas de una )nica l?nea se pueden especifcar en tiempo de dise-o en la ,entana >ropiedades. >ero B( si desea escri1ir un t?tulo m8s largo o un t?tulo 6ue cam1ie en tiempo de ejecucinC %as eti6uetas tienen dos propiedades 6ue a(udan a cam1iar el tama-o de los controles para ajustarlo a t?tulos m8s grandes o m8s pe6ue-osU Auto$i2e ( HordHrap. %a propiedad Auto$i2e determina si se de1e cam1iar autom8ticamente el tama-o de un control para ajustarlo a su contenido. $i tiene el ,alor 7rue' la eti6ueta crece <ori2ontalmente para ajustarse a su contenido' como muestra la fgura *./. &igura *./ jemplo de Auto$i2e !2
%a propiedad HordHrap <ace 6ue la eti6ueta cre2ca ,erticalmente para ajustarse a su contenido' mientras conser,a el mismo anc<o' como muestra la fgura *.". >ara ,er una ,ersin operati,a de este ejemplo' ,ea el arc<i,o HordMrap..rm en la aplicacin de ejemplo Controls.,1p. &igura *." jemplo de HordHrap @ota $i ejecuta el ejemplo de Auto$i2e desde Controls.,1p' o1ser,ar8 6ue para 6ue .uncione realmente el ejemplo de HordHrap tienen 6ue estar acti,adas am1as casillas de ,erifcacin. sto se de1e a 6ue' para 6ue tenga e.ecto la propiedad HordHrap de la eti6ueta' Auto$i2e de1e tener el ,alor 7rue. l anc<o de la eti6ueta slo aumenta si el anc<o de una )nica pala1ra supera el anc<o actual del control. >ara o1tener m8s in.ormacin >ara o1tener in.ormacin adicional acerca de las propiedades del control de eti6ueta' ,ea O5sar los controles est8ndar de Visual BasicO. .ra*ajar con cuadros de te,to %os cuadros de te4to son controles ,ers8tiles 6ue permiten o1tener in.ormacin del usuario o mostrar te4to. @o se de1en usar cuadros de te4to para mostrar te4to 6ue no desee 6ue el usuario cam1ie' a menos 6ue asigne a la propiedad %ocSed el ,alor 7rue. !*
l te4to real 6ue muestra un cuadro de te4to est8 controlado por la propiedad 7e4t. $e puede esta1lecer de tres .ormas di.erentesU en tiempo de dise-o en la ,entana >ropiedades' en tiempo de ejecucin si la esta1lece en el cdigo o mediante el te4to 6ue escri1e el usuario en tiempo de ejecucin. $e puede recuperar el contenido actual de un cuadro de te4to si lee la propiedad 7e4t en tiempo de ejecucin. Cuadros de te4to de m)ltiples l?neas ( ajuste autom8tico de te4to De .orma predeterminada' un cuadro de te4to presenta una )nica l?nea de te4to ( no muestra 1arras de despla2amiento. $i el te4to es m8s largo 6ue el espacio disponi1le' slo ser8 ,isi1le parte del te4to. s posi1le modifcar la apariencia ( el comportamiento de un cuadro de te4to mediante dos propiedades' ;ulti%ine ( $crollBars' 6ue slo est8n disponi1les en tiempo de dise-o. @ota %a propiedad $crollBars no se de1e con.undir con los controles de 1arra de despla2amiento' 6ue no est8n adjuntos a cuadros de te4to ( tienen su propio conjunto de propiedades. $i asigna a ;ulti%ine el ,alor 7rue acti,ar8 un cuadro de te4to para 6ue acepte o muestre m)ltiples l?neas de te4to en tiempo de ejecucin. 5n cuadro de te4to con m)ltiples l?neas ajusta autom8ticamente el te4to siempre ( cuando no <a(a una 1arra de despla2amiento <ori2ontal. %a propiedad $crollBars tiene el ,alor 0Q@one 9ninguna 1arra: de .orma predeterminada. l ajuste autom8tico de l?nea a<orra al usuario la incomodidad de insertar saltos de l?nea al fnal de las l?neas. Cuando una l?nea de te4to es m8s larga de lo 6ue se puede mostrar en una l?nea' el cuadro de te4to ajusta autom8ticamente el te4to a la l?nea siguiente. @o se pueden introducir saltos de l?nea en la ,entana >ropiedades en tiempo de dise-o. Dentro de un procedimiento' para crear un salto de l?nea <a( 6ue insertar un retorno de carro seguido de un a,ance de l?nea 9caracteres A@$I 1* ( 10:. 7am1i+n puede usar la constante ,1Cr%. para insertar una com1inacin de retorno de carro ( a,ance de l?nea. >or ejemplo' el siguiente procedimiento de e,ento coloca dos l?neas de te4to en un cuadro de te4to de m)ltiples l?neas 97e4to1: cuando se carga el .ormularioU $u1 &orm_%oad 9: 7e4to1.7e4t ` OA6u? <a( dos l?neas enO _ D ,1Cr%. D Oun cuadro de te4toO nd $u1 7ra1ajar con te4to en un cuadro de te4to !!
>uede controlar el punto de insercin ( el comportamiento de la seleccin de un cuadro de te4to mediante las propiedades $el$tart' $el%engt< ( $el7e4t. stas propiedades slo est8n disponi1les en tiempo de ejecucin. %a primera ,e2 6ue un cuadro de te4to reci1e el en.o6ue' el punto de insercin predeterminado' o posicin del cursor' del cuadro de te4to est8 a la i26uierda de cual6uier te4to e4istente. l usuario puede mo,erlo desde el teclado o con el mouse. $i el cuadro de te4to pierde el en.o6ue ( lo ,uel,e a recuperar' el punto de insercin estar8 donde el usuario lo <u1iera dejado la )ltima ,e2. n algunos casos este comportamiento puede ser desconcertante para el usuario. n una aplicacin de procesamiento de te4tos' el usuario podr?a esperar 6ue los caracteres nue,os aparecieran a continuacin de cual6uier te4to e4istente. n una aplicacin de entrada de datos' el usuario podr?a esperar 6ue lo 6ue escri1a sustitu(a a cual6uier dato e4istente. %as propiedades $el$tart ( $el%engt< permiten modifcar el comportamiento para 6ue cumpla una fnalidad determinada. %a propiedad $el$tart es un n)mero 6ue indica 6ue el punto de insercin est8 dentro de la cadena de te4to' siendo 0 la posicin situada m8s a la i26uierda. $i la propiedad $el$tart tiene un ,alor igual o ma(or 6ue el n)mero de caracteres 6ue <a( en el cuadro de te4to' el punto de insercin se situar8 despu+s del )ltimo car8cter' como muestra la fgura *.3. >ara ,er una ,ersin .uncional de este ejemplo' ,ea el arc<i,o 7e4t..rm de la aplicacin de ejemplo Controls.,1p. &igura *.3 jemplo de punto de insercin %a propiedad $el%engt< es un ,alor num+rico 6ue esta1lece el anc<o del punto de insercin. $i asigna a $el%engt< un n)mero ma(or 6ue 0 se seleccionar8n ( resaltar8n ese n)mero de caracteres a partir del punto de insercin actual. %a fgura *.8 muestra el comportamiento de la seleccin. &igura *.8 jemplo de la seleccin !/
$i el usuario comien2a a escri1ir mientras est8 seleccionado un 1lo6ue de te4to' se reempla2ar8 el te4to seleccionado. n algunos casos' 6ui28s desee reempla2ar una seleccin de te4to con el te4to nue,o mediante un comando de pegado. %a propiedad $el7e4t es una cadena de te4to 6ue puede asignar en tiempo de ejecucin para reempla2ar la seleccin actual. $i no <a( te4to seleccionado' $el7e4t insertar8 su te4to en el punto de insercin actual. >ara o1tener m8s in.ormacin >ara o1tener in.ormacin adicional acerca de las propiedades del control de cuadro de te4to' ,ea O5sar los controles est8ndar de Visual BasicO. Controles -ue uestran opciones a los usuarios %a ma(or?a de las aplicaciones necesitan presentar opciones a los usuarios' 6ue ,an desde una simple opcin de tipo s? o no <asta seleccionar de una lista 6ue contiene cientos de posi1ilidades. Visual Basic inclu(e ,arios controles est8ndar 6ue a(udan a presentar opciones. n la ta1la siguiente se resumen estos controles ( su uso adecuado. >ara proporcionar esta caracter?stica 5se este control 5n conjunto pe6ue-o de opciones entre las 6ue el usuario puede elegir una o m8s. C<ecSBo4 9casillas de ,erifcacin: 5n conjunto pe6ue-o de opciones entre las 6ue el usuario slo puede elegir una. #ptionButton 91otones de opcinW use marcos si son necesarios grupos adicionales: !"
5na lista desplega1le de opciones entre las 6ue puede elegir el usuario. %istBo4 9cuadro de lista: 5na lista desplega1le de opciones junto con un cuadro de te4to. l usuario puede elegir de la lista o escri1ir una opcin en el cuadro de te4to. Com1oBo4 9cuadro com1inado: %as casillas de ,erifcacin' 1otones de opcin' cuadros de lista ( cuadros com1inados se e4plican en las secciones siguientesU $eleccionar opciones indi,iduales con casillas de ,erifcacin &undamentos de la utili2acin del control de casilla de ,erifcacin. Agrupar opciones con 1otones de opcin &undamentos de la utili2acin del control de 1otn de opcin. 5sar cuadros de lista ( cuadros com1inados Introduccin a los controles de cuadro de lista ( de cuadro com1inado. 5sar 1arras de despla2amiento como dispositi,os de entrada Bre,e introduccin al control de 1arra de despla2amiento. Seleccionar opciones indi#iduales con casillas de #eri%caci!n 5na casilla de ,erifcacin indica si una condicin determinada est8 acti,ada o desacti,ada. $e usan casillas de ,erifcacin en una aplicacin para o.recer a los usuarios opciones de tipo ,erdadero ( .also o s? ( no. Como las casillas de ,erifcacin .uncionan independientemente una de otra' el usuario puede acti,ar cual6uier n)mero de casillas de ,erifcacin al mismo tiempo. >or ejemplo' en la fgura *.9 pueden estar acti,adas @egrita ( Cursi,a. &igura *.9 Casillas de ,erifcacin !3
%a aplicacin C<ecS Bo4 l ejemplo de casilla de ,erifcacin usa una casilla de ,erifcacin para determinar si el te4to se presenta en .uente normal o cursi,a. >ara ,er una ,ersin .uncional de este ejemplo' ,ea el arc<i,o C<ecS..rm en la aplicacin de ejemplo Controls.,1p. %a aplicacin tiene un cuadro de te4to' una eti6ueta' un 1otn de comando ( dos casillas de ,erifcacin' como muestra la fgura *.10. &igura *.10 jemplo de casilla de ,erifcacin n la ta1la siguiente se muestran los ,alores de las propiedades de los o1jetos de la aplicacin. #1jeto >ropiedad Valor &orm @ame Caption .rmC<ecS jemplo de casilla de ,erifcacin 7e4tBo4 @ame 7e4t t4tDispla( jemplo de te4to >rimera C<ecSBo4 @ame Caption c<SBold D@egrita $egunda C<ecSBo4 @ame Caption c<SItalic CDursi,a !8
CommandButton @ame Caption cmdClose DCerrar Cuando acti,a Bold o Italic' la propiedad Value de la casilla de ,erifcacin es 1W cuando no est8 acti,ada' su propiedad Value es 0. l ,alor predeterminado de Value es 0. >or eso' a menos 6ue modif6ue Value' la casilla de ,erifcacin estar8 desacti,ada la primera ,e2 6ue se muestre. >uede usar las constantes ,1C<ecSed ( ,15nc<ecSed para representar los ,alores 1 ( 0. ,entos de la aplicacin C<ecS Bo4 l e,ento ClicS de la casilla de ,erifcacin se produce en cuanto <ace clic en la casilla. ste procedimiento de e,ento comprue1a si se <a acti,ado la casilla de ,erifcacin 9es decir' si su propiedad Value ` ,1C<ecSed:. $i es as?' el te4to reci1e el atri1uto de negrita o cursi,a esta1leciendo las propiedades Bold o Italic del o1jeto &ont de,uelto por la propiedad &ont del cuadro de te4to. >ri,ate $u1 c<SBold_ClicS 9: I. C<SBold.Value ` ,1C<ecSed 7<en a $i est8 acti,ada. t4tDispla(.&ont.Bold ` 7rue lse a $i no est8 acti,ada. t4tDispla(.&ont.Bold ` &alse nd I. nd $u1 >ri,ate $u1 c<SItalic_ClicS 9: I. C<SItalic.Value ` ,1C<ecSed 7<en a $i est8 acti,ada. t4tDispla(.&ont.Italic ` 7rue lse a $i no est8 acti,ada. t4tDispla(.&ont.Italic ` &alse nd I. nd $u1 Agrupar opciones con *otones de opci!n %os 1otones de opcin presentan al usuario un conjunto de dos o m8s opciones. >ero' a di.erencia de las casillas de ,erifcacin' los 1otones de opcin de1en .uncionar siempre como parte de un grupoW al acti,ar un 1otn de opcin se desacti,an inmediatamente todos los dem8s 1otones del grupo. Al defnir un 1otn de opcin se indica al usuario OA6u? tiene un conjunto de opciones entre las 6ue puede elegir una ( slo unaO. !9
>or ejemplo' en el grupo de 1otones de opcin 6ue muestra la fgura *.11' el usuario puede seleccionar uno de los tres 1otones de opcin. &igura *.11 $eleccionar un 1otn de opcin Crear grupos de 1otones de opcin 7odos los 1otones de opcin 6ue se colocan directamente en un .ormulario 9es decir' no en un marco o en un cuadro de imagen: constitu(en un grupo. $i desea crear grupos adicionales de 1otones de opcin' de1e colocarlos dentro de marcos o en cuadros de imagen. 7odos los 1otones de opcin 6ue <a(a dentro de un marco dado constitu(en un grupo independiente' al igual 6ue todos los 1otones de opcin 6ue <a(a dentro de un cuadro de imagen. Cuando cree un grupo independiente de esta .orma' di1uje siempre primero el marco o el cuadro de imagen (' despu+s' di1uje encima los 1otones de opcin. %a fgura *.12 muestra un .ormulario con dos grupos de 1otones de opcin. &igura *.12 Prupos de 1otones de opcin Cuando di1uja 1otones de opcin dentro de un marco' el usuario slo puede seleccionar un 1otn de opcin del grupo. >ara agrupar los controles en un marco 1. $eleccione el control &rame del cuadro de <erramientas ( di1uje el marco en el .ormulario. /0
2. $eleccione el control #ptionButton en el cuadro de <erramientas ( di1uje el control dentro del marco. *. =epita el paso 2 para cada 1otn de opcin adicional 6ue desee agregar al marco. Di1ujar el marco primero ( di1ujar despu+s cada control en el marco permite mo,er el marco ( los controles juntos. $i intenta mo,er controles e4istentes a un marco' los controles no se mo,er8n con el marco. @ota $i tiene controles 6ue desea agrupar en un marco' puede seleccionarlos todos ( cortarlos (' a continuacin' pegarlos en el control de marco o de imagen. Contenedores para controles $i 1ien los controles son o1jetos independientes' e4iste una cierta relacin primaria y secundaria entre los .ormularios ( los controles. %a fgura *.12 demuestra cmo pueden estar contenidos los 1otones de opcin dentro de un .ormulario o dentro de un control de marco. >ara entender el concepto de contenedores' de1e comprender 6ue todos los controles son secundarios del .ormulario en el 6ue se di1ujan. De <ec<o' la ma(or?a de los controles admiten la propiedad de slo lectura >arent' 6ue de,uel,e el .ormulario en el 6ue est8 u1icado un control. $er secundario a.ecta a la colocacin de un control en el .ormulario primario. %as propiedades %e.t ( 7op de un control son relati,as al .ormulario primario ( no se pueden mo,er los controles .uera de los l?mites del .ormulario primario. ;o,er un contenedor mue,e tam1i+n los controles' ( la posicin del control relati,a a las propiedades %e.t ( 7op del contenedor no cam1ia' (a 6ue el control se mue,e con el contenedor. $eleccionar o desacti,ar 1otones de opcin 0a( ,arias .ormas de seleccionar un 1otn de opcinU 0acer clic en +l con el mouse en tiempo de ejecucin. Ir al grupo de 1otones de opcin con el ta1ulador ( usar luego las teclas de direccin para seleccionar un 1otn de opcin del grupo. Asignar a la propiedad Value el ,alor 7rue en el cdigoU opt#pcin.Value ` 7rue 5sar una tecla de m+todo a1re,iado especifcada en el t?tulo de la eti6ueta. /1
>ara <acer 6ue un 1otn sea el predeterminado en un grupo de 1otones de opcin' asigne a su propiedad Value el ,alor 7rue en tiempo de dise-o. l 1otn permanecer8 seleccionado <asta 6ue un usuario seleccione otro 1otn de opcin di.erente o <asta 6ue lo modif6ue el cdigo. >ara desacti,ar un 1otn de opcin' asigne a su propiedad na1led el ,alor &alse. Cuando se ejecute el programa aparecer8 atenuado' lo 6ue signifca 6ue no est8 disponi1le. %a aplicacin #pciones l .ormulario 6ue aparece en la fgura *.1* usa 1otones de opcin para determinar el tipo de procesador ( el sistema operati,o de un e6uipo fcticio. Cuando el usuario selecciona un 1otn de opcin de cual6uiera de los grupos' el t?tulo de la eti6ueta cam1ia para reZejar las opciones acti,as. >ara ,er una ,ersin .uncional de este ejemplo' ,ea el arc<i,o #ptions..rm de la aplicacin de ejemplo Controls.,1p. &igura *.1* jemplo de 1otn de opcin n la ta1la siguiente se muestran los ,alores de las propiedades de los o1jetos de la aplicacin. #1jeto >ropiedad Valor %a1el @ame Caption l1lDispla( 9Vac?o: CommandButton @ame Caption cmdClose DCerrar >rimer @ame opt!8" /2
#ptionButton Caption D!8" $egundo #ptionButton @ame Caption Value opt/8" D>entium 7rue 7ercer #ptionButton @ame Caption opt"8" >Dentium >ro &rame @ame Caption .ra$(stem D$istema operati,o Cuarto #ptionButton @ame Caption optHin9/ DHindoMs 9/ Fuinto #ptionButton @ame Caption Value optHin@7 HindoMs D@7 7rue ,entos de la aplicacin #pciones %a aplicacin #pciones responde a los e,entos de la .orma siguienteU l e,ento ClicS para los tres primeros 1otones de opcin asigna una descripcin correspondiente a una ,aria1le de cadena de .ormulario' strComputer. l e,ento ClicS para los dos )ltimos 1otones de opcin asigna una descripcin correspondiente a una segunda ,aria1le de .ormulario' str$(stem. %a cla,e de este planteamiento es el uso de estas dos ,aria1les de .ormulario' strComputer ( str$(stem. stas ,aria1les contienen di.erentes ,alores de cadena' dependiendo de 6u+ 1otones de opcin se <a(an seleccionado en )ltimo lugar. Cada ,e2 6ue se selecciona un nue,o 1otn de opcin' el cdigo de su e,ento ClicS actuali2a la ,aria1le apropiadaU >ri,ate $u1 opt/8"_ClicS9: /*
strComputer ` O>entiumO Call Displa(Caption nd $u1 %uego llama a un procedimiento $u1' denominado Displa(Caption' 6ue concatena las dos ,aria1les ( actuali2a la propiedad Caption de la eti6uetaU $u1 Displa(Caption9: l1lDispla(.Caption ` O0a seleccionado un O D _ strComputer D O 6ue ejecuta O D str$(stem nd $u1 $e usa un procedimiento $u1 por6ue el procedimiento para actuali2ar la propiedad Caption es esencialmente el mismo para los cinco 1otones de opcinU slo cam1ia el ,alor de las ,aria1les de una instancia a la siguiente. sto a<orra tener 6ue repetir el mismo cdigo en cada uno de los e,entos ClicS. >ara o1tener m8s in.ormacin %as ,aria1les ( procedimientos $u1 se e4plican con m8s detalle en O&undamentos de programacinO. Usar los cuadros de lista y los cuadros co*inados %os cuadros de lista ( los cuadros com1inados presentan al usuario una lista de opciones. De .orma predeterminada' las opciones se muestran ,erticalmente en una )nica columna' aun6ue tam1i+n puede esta1lecer m)ltiples columnas. $i el n)mero de elementos supera a los 6ue se pueden mostrar en el cuadro com1inado o el cuadro de lista' aparecen autom8ticamente 1arras de despla2amiento en el control. l usuario puede entonces despla2arse por la lista <acia arri1a o <acia a1ajo o de i26uierda a derec<a. %a fgura *.1! muestra un cuadro de lista de una )nica columna. &igura *.1! Cuadro de lista de una )nica columna 5n cuadro com1inado a)na las caracter?sticas de un cuadro de te4to ( un cuadro de lista. ste control permite al usuario seleccionar opciones /!
si escri1e te4to en el cuadro com1inado o selecciona un elemento de la lista. %a fgura *.1/ muestra un cuadro com1inado. &igura *.1/ Cuadro com1inado A di.erencia de otros controles 6ue contienen un )nico ,alor' por ejemplo la propiedad Caption de una eti6ueta o la propiedad 7e4t de un cuadro de te4to' los cuadros de lista ( los cuadros com1inados contienen m)ltiples ,alores o una coleccin de ,alores. 7ienen m+todos integrados para agregar' 6uitar ( recuperar ,alores de sus colecciones en tiempo de ejecucin. >ara agregar ,arios elementos a un cuadro de lista llamado %ista1' el cdigo ser?a como el siguienteU %ista1.AddItem O>ar?sO %ista1.AddItem O@ue,a \orSO %ista1.AddItem O$an &ranciscoO %os cuadros de lista ( los cuadros com1inados son una manera e.ecti,a de presentar al usuario gran cantidad de opciones en un espacio limitado. >ara o1tener m8s in.ormacin >ara o1tener in.ormacin adicional acerca de los controles de cuadro de lista ( cuadro com1inado' ,ea O5sar los controles est8ndar de Visual BasicO. Controles -ue uestran i/genes y gr/%cos Como HindoMs es una inter.a2 gr8fca de usuario' es importante tener una .orma de presentar im8genes gr8fcas en la inter.a2 de una aplicacin. Visual Basic inclu(e cuatro controles 6ue .acilitan el tra1ajo con gr8fcosU control de cuadro de imagen' control de imagen' control de .orma ( control de l?nea. A ,eces se <ace re.erencia a los controles de imagen' .orma ( l?nea como controles gr8fcos OligerosO. =e6uieren menos recursos del sistema //
(' por consiguiente' se muestran m8s deprisa 6ue el control de cuadro de imagenW contienen un su1conjunto de las propiedades' m+todos ( e,entos 6ue est8n disponi1les en el cuadro de imagen. Cada uno de ellos es m8s adecuado para una fnalidad determinada. >ara proporcionar esta caracter?stica 5se este control Contenedor para otros controles >icture 9cuadro de imagen: ;+todos gr8fcos o de impresin. >icture 9cuadro de imagen: ;ostrar una imagen. Image 9control de imagen: o >icture 9cuadro de imagen: ;ostrar un elemento gr8fco simple $<ape 9control de .orma: o %ine 9control de l?nea: %os cuadros de imagen' controles de imagen' controles de .orma ( controles de l?nea se e4plican en las secciones siguientesU 7ra1ajar con el control de cuadro de imagen &undamentos de la utili2acin del control de cuadro de imagen. Controles gr8fcos ligeros &undamentos de la utili2acin de los controles de imagen' .orma ( l?nea. %a aplicacin Images jemplo de utili2acin de los controles gr8fcos. .ra*ajar con el control de cuadro de iagen %a utili2acin principal del control de cuadro de imagen es mostrar una imagen al usuario. %a imagen real 6ue se muestra est8 determinada por la propiedad >icture. %a propiedad >icture contiene el nom1re de arc<i,o 9( la ruta de acceso opcional: para el arc<i,o de imagen 6ue desea mostrar. @ota %os o1jetos &orm 9de .ormulario: tienen tam1i+n una propiedad >icture 6ue se puede esta1lecer para mostrar una imagen directamente so1re el .ondo del .ormulario. /"
>ara presentar o reempla2ar una imagen en tiempo de ejecucin' puede usar la .uncin %oad>icture para esta1lecer la propiedad >icture. De1e proporcionar el nom1re 9( una ruta de acceso opcional: para la imagen. %a .uncin %oad>icture controla los detalles de cmo cargar ( mostrar la imagenU pic>rincipal.>icture ` %oad>icture9OVA@P#P0.B;>O: l control de cuadro de imagen tiene una propiedad Auto$i2e 6ue' cuando tiene el ,alor 7rue' <ace 6ue el cuadro de imagen cam1ie de tama-o autom8ticamente para coincidir con las dimensiones de su contenido. 0a( 6ue tener muc<o cuidado al dise-ar el .ormulario si piensa usar un cuadro de imagen con la propiedad Auto$i2e acti,ada. %a imagen cam1iar8 de tama-o sin tener en cuenta los dem8s controles del .ormulario' causando posi1lemente resultados inesperados' como tapar otros controles. s con,eniente pro1arloW para ello' cargue cada una de las im8genes en tiempo de dise-o. 5sar el cuadro de imagen como contenedor l control de cuadro de imagen puede usarse tam1i+n como contenedor para otros controles. Como en el control de marco' puede di1ujar otros controles encima del cuadro de imagen. %os controles contenidos se mue,en con el cuadro de imagen ( sus propiedades 7op ( %e.t ser8n relati,as al cuadro de imagen en lugar de ser relati,as al .ormulario. 5na utili2acin com)n para el contenedor del cuadro de imagen es como 1arra de <erramientas o como 1arra de estado. >uede colocar controles de imagen en +l para 6ue act)en como 1otones o agregar eti6uetas para presentar mensajes de estado. $i asigna a la propiedad Align el ,alor 7op' Bottom' %e.t o =ig<t' el cuadro de imagen se Opegar8O al 1orde del .ormulario. %a fgura *.1" muestra un cuadro de imagen cu(a propiedad Align tiene el ,alor Bottom. Contiene dos controles de eti6ueta 6ue se pueden usar para mostrar mensajes de estado. &igura *.1" Cuadro de imagen utili2ado como 1arra de estado #tros usos del cuadro de imagen /3
l control de cuadro de imagen tiene ,arios m+todos 6ue lo <acen )til para otras fnalidades. l cuadro de imagen puede considerarse un lien2o en 1lanco so1re el 6ue se puede pintar' di1ujar o imprimir. s posi1le usar un )nico control para mostrar te4to' gr8fcos o incluso una simple animacin. l m+todo >rint permite escri1ir te4to en el control de cuadro de imagen igual 6ue se escri1e en una impresora. 0a( ,arias propiedades de .uentes disponi1les para controlar las caracter?sticas del te4to por medio del m+todo >rintW se puede usar el m+todo Cls para 1orrar lo escrito. $e pueden usar los m+todos Circle' %ine' >oint ( >set para di1ujar gr8fcos en el cuadro de imagen. 0a( propiedades como DraMHidt<' &illColor ( &ill$t(le 6ue permiten personali2ar la apariencia de los gr8fcos. s posi1le crear animacin con el m+todo >aint>icture' si mue,e im8genes dentro del control de imagen ( cam1ia r8pidamente entre ,arias im8genes di.erentes. >ara o1tener m8s in.ormacin >ara o1tener in.ormacin adicional acerca del control de cuadro de imagen' ,ea O5sar los controles est8ndar de Visual BasicO. &undaentos de los en's $i desea 6ue la aplicacin proporcione un conjunto de comandos a los usuarios' los men)s o.recen una .orma cmoda ( co<erente de agrupar comandos ( una manera sencilla de 6ue los usuarios tengan acceso a ellos. %a fgura *.21 ilustra los elementos de una inter.a2 de men) en un .ormulario sin t?tulo. &igura *.21 %os elementos de la inter.a2 de men) en un .ormulario de Visual Basic /8
%a barra de men"s aparece en el .ormulario inmediatamente de1ajo de la barra de t#tulo ( contiene uno o m8s t#tulos de men"s. Cuando <ace clic en un t?tulo de men) 9como Arc<i,o:' se despliega un men) 6ue contiene una lista de elementos de men). %os elementos de men) pueden incluir comandos 9como @ue,o ( $alir:' 1arras de separacin ( t?tulos de su1men)s. Cada elemento de men) 6ue ,e el usuario corresponde a un control de men) defnido en el ditor de men)s 96ue se descri1e m8s adelante en este mismo cap?tulo:. >ara 6ue la aplicacin sea m8s .8cil de usar' de1e agrupar los comandos de men) seg)n su .uncin. n la fgura *.21' por ejemplo' los comandos relacionados con arc<i,os 9@ue,o' A1rir ( Puardar comod: se encuentran todos en el men) Arc<i,o. Algunos elementos de men) reali2an una accin directamenteW por ejemplo' el elemento $alir del men) Arc<i,o cierra la aplicacin. #tros elementos de men) muestran un cuadro de di$logo 9una ,entana 6ue re6uiere 6ue el usuario proporcione in.ormacin 6ue la aplicacin necesita para reali2ar la accin:. stos elementos de men) de1en ir seguidos de puntos suspensi,os 9d:. >or ejemplo' cuando elige Puardar como... en el men) Arc<i,o aparece el cuadro de di8logo Puardar como. 5n control de men) es un o1jeto. Como otros o1jetos' tiene propiedades 6ue puede usar para defnir su apariencia ( su comportamiento. >uede esta1lecer la propiedad Caption' las propiedades na1led ( Visi1le' la propiedad C<ecSed ( otras' en tiempo de dise-o o en tiempo de ejecucin. %os controles de men) contienen slo un e,ento' el e,ento ClicS' 6ue se in,oca al seleccionar el control de men) con el mouse o mediante el teclado. >ara o1tener m8s in.ormacin >ara o1tener in.ormacin adicional acerca de los controles de men)' ,ea OCrear men)s con el ditor de men)sO en OCrear la inter.a2 de usuarioO. ;en)s emergentes /9
5n men" emergente es un men) Zotante 6ue aparece so1re un .ormulario ( 6ue es independiente de la 1arra de men)s' como muestra la fgura *.22. %os elementos 6ue aparecen en el men) emergente dependen de la u1icacin del puntero cuando se presiona el 1otn secundario del mouseW por tanto' los men)s emergentes se llaman tam1i+n men"s conte%tuales. 9n HindoMs 9/' para acti,ar los men)s conte4tuales <a( 6ue <acer clic con el 1otn secundario del mouse.: De1e usar men)s emergentes para proporcionar un m+todo efciente de tener acceso a comandos comunes 6ue dependan del conte4to. >or ejemplo' si <ace clic con el 1otn secundario del mouse en un cuadro de te4to' aparecer8 un men) conte4tual' como muestra la fgura *.22. &igura *.22 5n men) emergente n tiempo de ejecucin se puede mostrar como men) emergente cual6uier men) 6ue tenga al menos un elemento de men). >ara presentar un men) emergente' use el m+todo >opup;enu. >ara o1tener m8s in.ormacin >ara o1tener in.ormacin adicional acerca de cmo crear men)s emergentes' ,ea OCrear men)s con el ditor de men)sO en OCrear la inter.a2 de usuarioO. 5sar el ditor de men)s Con el ditor de men)s es posi1le agregar comandos nue,os a men)s e4istentes' reempla2ar comandos de men) e4istentes con sus propios comandos' crear nue,os men)s ( 1arras de men)s' ( modifcar ( eliminar men)s ( 1arras de men)s e4istentes. %a principal ,entaja del ditor de men)s es su .acilidad de uso. >uede personali2ar los men)s de una manera completamente interacti,a 6ue conlle,a mu( poca programacin. >ara presentar el ditor de men)s "0
n el men) 0erramientas' elija ditor de men)s. $e a1rir8 el ditor de men)s 6ue muestra la fgura *.2* &igura *.2* l ditor de men)s Aun6ue la ma(or?a de las propiedades del control de men) pueden esta1lecerse mediante el ditor de men)s' todas las propiedades de men) est8n tam1i+n disponi1les en la ,entana >ropiedades. @ormalmente se crean los men)s en el ditor de men)s' pero para modifcar r8pidamente una propiedad puede usar la ,entana >ropiedades. >ara o1tener m8s in.ormacin >ara o1tener in.ormacin adicional acerca de cmo crear men)s ( usar el ditor de men)s' ,ea OCrear men)s con el ditor de men)sO en OCrear la inter.a2 de usuarioO. Editor de en's 0cuadro de di/logo1 "1
%e permite crear men)s personali2ados para la aplicacin ( defnir sus propiedades. #pciones del cuadro de di8logo 7?tulo %e permite escri1ir el nom1re del comando o del men) 6ue desea 6ue apare2ca en la 1arra de men)s o en un men). $i desea crear una 1arra separadora en el men)' escri1a un )nico guin 9Q: en el cuadro 7?tulo. >ara dar al usuario acceso a tra,+s del teclado a un elemento del men)' escri1a el signo D delante de una letra. n tiempo de ejecucin' esta letra aparecer8 su1ra(ada 9el signo D no ser8 ,isi1le: ( el usuario tendr8 acceso al men) o al comando si presiona las teclas Alt ( la correspondiente a la letra su1ra(ada. $i necesita 6ue apare2ca en el men) el signo D' de1er8 escri1ir dos signos D consecuti,os. @om1reU %e permite escri1ir un nom1re de control para el elemento del men). l nom1re de control es un identifcador 6ue slo se utili2a para tener acceso al elemento del men) en el cdigo' no aparece en ning)n men). endice %e permite asignar un ,alor num+rico 6ue determina la posicin del control en una ;atri2 de controles. sta posicin no tiene ninguna relacin con la u1icacin del control en la pantalla. ;+todo a1re,iado %e permite seleccionar una tecla de m+todo a1re,iado para cada comando. "2
Id. de conte4to de A(uda %e permite asignar un ,alor num+rico )nico para el Id. de conte4to. ste ,alor se utili2a para encontrar el tema de A(uda apropiado en el arc<i,o de A(uda identifcado mediante la propiedad 0elp&ile. @egotiate>osition %e permite seleccionar la propiedad @egotiate>osition del men). sta propiedad determina si el men) aparece o no en un .ormulario contenedor ( cmo aparece. C<ecSed %e permite <acer 6ue apare2ca inicialmente una marca de ,erifcacin a la i26uierda de un elemento del men). $e utili2a normalmente para indicar si una opcin de alternar est8 acti,ada o no. na1led %e permite seleccionar si el elemento del men) de1e responder a e,entos. Desacti,e esta opcin si desea 6ue el elemento del men) no est+ disponi1le ( apare2ca atenuado. Visi1le %e permite <acer 6ue un elemento apare2ca en el men). HindoM%ist Determina si el control del men) contiene una lista de .ormularios secundarios ;DI a1iertos en una aplicacin ;DI. &lec<a a la derec<a >asa el men) seleccionado a un ni,el in.erior cada ,e2 6ue <ace clic en el 1otn. >uede crear <asta cuatro ni,eles de su1men)s. &lec<a a la i26uierda >asa el men) seleccionado a un ni,el superior cada ,e2 6ue <ace clic en el 1otn. >uede crear <asta cuatro ni,eles de su1men)s. &lec<a arri1a "*
Cada ,e2 6ue se <ace clic en este 1otn' el elemento seleccionado del men) se mue,e <acia arri1a una posicin dentro del mismo ni,el de men). &lec<a a1ajo Cada ,e2 6ue se <ace clic en este 1otn' el elemento seleccionado del men) se mue,e <acia a1ajo una posicin dentro del mismo ni,el de men). %ista ;en)s s un cuadro de lista 6ue muestra en orden jer8r6uico todos los elementos del men). %os elementos de los su1men)s aparecen indentados para indicar su u1icacin o su ni,el en la jerar6u?a. $iguienteU $elecciona la l?nea siguiente. InsertarU Inserta una l?nea en el cuadro de lista' inmediatamente encima de la l?nea actualmente seleccionada. liminarU limina Borra la l?nea actualmente seleccionada. AceptarU Cierra el ditor de men)s ( aplica todos los cam1ios e.ectuados en el )ltimo .ormulario seleccionado. l men) est8 disponi1le en tiempo de dise-o' pero si selecciona un men) en la .ase de dise-o' se a1re la ,entana Cdigo para el e,ento Clic de ese men) en lugar de ejecutarse el cdigo del e,ento. CancelarU Cierra el ditor de men)s ( cancela todos los cam1ios. .ra*ajar con proyectos Cuando se desarrolla una aplicacin' se tra1aja con un arc<i,o de pro(ecto para administrar todos los di.erentes arc<i,os 6ue se crean. 5n pro(ecto consta deU 5n arc<i,o de pro(ecto 6ue reali2a el seguimiento de todos los componentes 9.,1p: 5n arc<i,o para cada .ormulario 9..rm:. 5n arc<i,o de datos 1inarios para cada .ormulario 6ue contiene datos so1re propiedades de controles del .ormulario 9..r4:. stos "!
arc<i,os no se pueden modifcar ( los genera autom8ticamente cual6uier arc<i,o ..rm 6ue tenga propiedades en .ormato 1inario' como >icture o Icon. #pcionalmente' un arc<i,o para cada mdulo de clase 9.cls:. #pcionalmente' un arc<i,o para cada mdulo est8ndar 9.1as:. #pcionalmente' uno o m8s arc<i,os con controles Acti,eG 9.oc4:. #pcionalmente' un )nico arc<i,o de recursos 9.res:. l arc&ivo de proyecto es simplemente una lista de todos los arc<i,os ( o1jetos asociados con el pro(ecto' as? como in.ormacin acerca de las opciones de entorno esta1lecidas. sta in.ormacin se actuali2a cada ,e2 6ue se guarda el pro(ecto. 7odos los arc<i,os ( o1jetos tam1i+n se pueden compartir con otros pro(ectos. Cuando <a completado todos los arc<i,os del pro(ecto puede con,ertir el pro(ecto en un arc<i,o ejecuta1le 9.e4e:U en el men) Arc<i,o' elija el comando Penerar proyecto.e%e. @ota Con las ediciones >ro.esional ( mpresarial de Visual Basic tam1i+n puede crear otro tipo de arc<i,os ejecuta1les' como arc<i,os .oc4 ( .dll. n las re.erencias de este cap?tulo se supone un pro(ecto .e4e est8ndarW para o1tener in.ormacin adicional acerca de otros tipos de pro(ectos' ,ea la Gu#a de &erramientas componentes' disponi1le en las ediciones >ro.esional ( st8ndar. >ara o1tener m8s in.ormacin >ara o1tener m8s detalles acerca de la creacin de ejecuta1les' ,ea OCrear ( ejecutar un arc<i,o ejecuta1leO m8s adelante en este cap?tulo. >ara o1tener in.ormacin acerca de arc<i,os de datos 1inarios ( arc<i,os de pro(ecto' ,ea Ospecifcaciones' limitaciones ( .ormatos de arc<i,os de Visual BasicO. 4plorador de pro(ectos Cuando se crean' agregan o 6uitan arc<i,os modifca1les de un pro(ecto' Visual Basic reZeja los cam1ios en la ,entana 4plorador de pro(ectos' 6ue contiene una lista actuali2ada de los arc<i,os del pro(ecto. %a ,entana 4plorador de pro(ectos de la fgura !.1 muestra algunos tipos de arc<i,os 6ue puede incluir un pro(ecto de Visual Basic. &igura !.1 Ventana del 4plorador de pro(ectos "/
Arc<i,os de pro(ecto Cada ,e2 6ue guarda un pro(ecto' Visual Basic actuali2a el arc<i,o de pro(ecto 9.,1p:. 5n arc<i,o de pro(ecto contiene la misma lista de arc<i,os 6ue aparece en la ,entana del 4plorador de pro(ectos' as? como re.erencias a los controles Acti,eG ( o1jetos inserta1les 6ue se usan en el pro(ecto. >ara a1rir un arc<i,o de pro(ecto e4istente' <aga do1le clic en el icono' elija el comando A1rir pro(ecto en el men) Arc<i,o o arrastre el arc<i,o ( col6uelo en la ,entana del 4plorador de pro(ectos. >ara o1tener m8s in.ormacin l .ormato espec?fco de la in.ormacin almacenada en el arc<i,o .,1p se descri1e en Ospecifcaciones' limitaciones ( .ormatos de arc<i,o de Visual BasicO. Estructura de un proyecto de Visual Basic %as siguientes secciones descri1en los di.erentes tipos de arc<i,os ( o1jetos 6ue se pueden incluir en un pro(ecto. ;dulos de .ormulario %os mdulos de .ormulario 9e4tensin de nom1re de arc<i,o ..rm: pueden contener te4to descripti,o del .ormulario ( sus controles' inclu(endo los ,alores de sus propiedades. 7am1i+n pueden contener declaraciones de .ormulario de constantes' ,aria1les ( procedimientos e4ternos' as? como procedimientos de e,ento ( procedimientos generales. >ara o1tener m8s in.ormacin >ara o1tener in.ormacin acerca de la creacin de .ormularios' ,ea ODesarrollar una aplicacin con Visual BasicO ( OCrear la inter.a2 de usuarioO. >ara o1tener in.ormacin acerca del .ormato ( el contenido de arc<i,os de .ormulario' ,ea Ospecifcaciones' limitaciones ( .ormatos de arc<i,os de Visual BasicO. ""
;dulos de clase %os mdulos de clase 9e4tensin de nom1re de arc<i,o .cls: son similares a los mdulos de .ormulario' e4cepto en 6ue no tienen inter.a2 de usuario ,isi1le. >uede usar mdulos de clase para crear sus propios o1jetos' inclu(endo cdigo para m+todos ( propiedades. >ara o1tener m8s in.ormacin >ara o1tener in.ormacin acerca de la escritura de cdigo en mdulos de clase' ,ea OCrear clases propiasO en O>rogramar con o1jetosO. ;dulos est8ndar %os mdulos est8ndar 9e4tensin de nom1re de arc<i,o .1as: pueden contener declaraciones p)1licas o a ni,el de mdulo de tipos' constantes' ,aria1les' procedimientos e4ternos ( procedimientos p)1licos. >ara o1tener m8s in.ormacin >ara o1tener in.ormacin acerca del uso de mdulos' ,ea O&undamentos de programacinO ( O>rogramar con o1jetosO. Arc<i,os de recursos %os arc<i,os de recursos 9e4tensin de nom1re de arc<i,o .res: contienen mapas de 1its' cadenas de te4to ( otros datos 6ue se pueden modifcar sin ,ol,er a modifcar el cdigo. >or ejemplo' si piensa locali2ar su aplicacin a un idioma e4tranjero' puede guardar todas las cadenas de te4to de la inter.a2 de usuario ( los mapas de 1its en un arc<i,o de recursos' ( simplemente traducir el arc<i,o de recursos en ,e2 de la aplicacin completa. 5n pro(ecto slo puede contener un arc<i,o de recursos. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca del uso de arc<i,os de recursos' ,ea O5sar un arc<i,o de recursosO ( OAspectos internacionalesO m8s adelante en este cap?tulo. Documentos Acti,eG %os documentos Acti,eG 9.do1: son similares a los .ormularios' pero se muestran en un e4plorador de Internet como Internet 4plorer. %as ediciones >ro.esional ( mpresarial de Visual Basic son capaces de crear documentos Acti,eG. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de los documentos Acti,eG' ,ea OCrear componentes Acti,eGO en la Gu#a de "3
&erramientas componentes' disponi1le en las ediciones >ro.esional ( mpresarial. ;dulos de controles de usuario ( de p8ginas de propiedades %os mdulos de controles de usuario 9.ctl: ( de p8ginas de propiedades 9.pag: son similares a los .ormularios' pero se usan para crear controles Acti,eG ( las p8ginas de propiedades asociadas para mostrar propiedades en tiempo de dise-o. %as ,ersiones >ro.esional ( mpresarial de Visual Basic pueden crear controles Acti,eG. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de la creacin de controles Acti,eG' ,ea OCrear un control Acti,eGO en OCrear componentes Acti,eGO' dentro de la Gu#a de &erramientas componentes' disponi1le en las ediciones >ro.esional ( st8ndar. Componentes Adem8s de arc<i,os ( mdulos' tam1i+n es posi1le agregar otro tipo de componentes a un pro(ecto. Controles Acti,eG %os controles Acti,eG 9e4tensin de nom1re de arc<i,o .oc4: son controles opcionales 6ue se pueden agregar al cuadro de <erramientas ( se pueden usar en .ormularios. Cuando instala Visual Basic' los arc<i,os 6ue contienen los controles incluidos en Visual Basic se copian a un directorio com)n 9el su1directorio XHindoMsX$(stem en HindoMs 9/:. 4isten controles Acti,eG adicionales disponi1les en di,ersas .uentes. 7am1i+n puede crear sus propios controles mediante las ediciones >ro.esional ( mpresarial de Visual Basic. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca del uso de los controles Acti,eG incluidos' ,ea O5sar controles Acti,eGO en la Gu#a de &erramientas componentes' disponi1le en las ediciones pro.esional ( empresarial. #1jetos inserta1les %os objetos insertables' como un o1jeto 0oja de c8lculo de ;icroso.t 4cel' son componentes 6ue se pueden usar como 1lo6ues para generar soluciones integradas. 5na solucin integrada puede contener datos en di.erentes .ormatos' como <ojas de c8lculo' mapas de 1its ( te4to' creados por di.erentes aplicaciones. "8
>ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca del uso de o1jetos de otras aplicaciones' ,ea O>rogramar con componentesO. =e.erencias 7am1i+n puede agregar re.erencias a componentes Acti,eG e4ternos 6ue se pueden usar en la aplicacin. >ara asignar re.erencias se usa el cuadro de di8logo =e.erencias' al 6ue se tiene acceso mediante el comando =e.erencias del men) >ro(ecto. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de re.erencias' ,ea O5sar o1jetos de otras aplicacionesO m8s adelante en este cap?tulo. Dise-adores Acti,eG %os dise-adores Acti,eG son <erramientas para dise-ar clases a partir de las cuales es posi1le crear o1jetos. %a inter.a2 de dise-o para .ormularios es el dise-ador predeterminado. >uede <a1er disponi1les otros dise-adores adicionales desde otros or?genes. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de los dise-adores Acti,eG' ,ea ODise-adores Acti,eGO en el cap?tulo 9'O>rogramar con o1jetosO. Controles est8ndar %os controles est8ndar los proporciona Visual Basic. %os controles est8ndar' como CommandButton 91otn de comando: o &rame 9marco:' siempre est8n incluidos en el cuadro de <erramientas' al contrario de lo 6ue ocurre con los controles Acti,eG ( los o1jetos inserta1les' 6ue se pueden agregar ( 6uitar del cuadro de <erramientas. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de los controles est8ndar' ,ea O&ormularios' controles ( men)sO ( O5sar controles est8ndar de Visual BasicO. Crear, a*rir y guardar proyectos 0a( cuatro comandos del men) Arc<i,o 6ue permiten crear' a1rir ( guardar pro(ectos. Comando de men) Descripcin "9
@ue,o pro(ecto Cierra el pro(ecto actual ( le pregunta si desea guardar los arc<i,os modifcados. >uede elegir un tipo de pro(ecto desde el cuadro de di8logo @ue,o pro(ecto. A continuacin' Visual Basic crea un pro(ecto nue,o con un )nico arc<i,o nue,o. A1rir pro(ecto Cierra el pro(ecto actual ( le pregunta si desea guardar los cam1ios. A continuacin' Visual Basic a1re un pro(ecto e4istente' inclu(endo los .ormularios' mdulos ( controles Acti,eG enumerados en el arc<i,o de pro(ecto 9.,1p:. Puardar pro(ecto Actuali2a el arc<i,o del pro(ecto actual ( todos sus mdulos de .ormulario' est8ndar ( de clase. Puardar pro(ecto como Actuali2a el arc<i,o del pro(ecto actual' guardando el arc<i,o de pro(ecto con un nom1re 6ue especifca el propio usuario. Visual Basic tam1i+n le pide 6ue guarde cual6uier .ormulario o mdulo 6ue <a(a cam1iado. 7am1i+n es posi1le compartir arc<i,os entre pro(ectos. 5n arc<i,o concreto' como un .ormulario' puede .ormar parte de ,arios pro(ectos. %os cam1ios 6ue realice a un .ormulario o un mdulo en un pro(ecto a.ectar8n a todos los pro(ectos 6ue compartan ese mdulo. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca del uso compartido de arc<i,os' ,ea OAgregar' 6uitar ( guardar arc<i,osO m8s adelante en este cap?tulo. 7ra1ajar con ,arios pro(ectos n las ,ersiones >ro.esional ( mpresarial de Visual Basic es posi1le tener m8s de un pro(ecto a1ierto a la ,e2. sto es )til para generar ( pro1ar soluciones 6ue contengan controles creados por el usuario u otros componentes. Cuando est+ cargado m8s de un pro(ecto' el t?tulo de la ,entana del 4plorador de pro(ectos cam1iar8 a Prupo de 30
pro(ectos ( se mostrar8n los componentes de todos los pro(ectos a1iertos. >ara agregar un pro(ecto adicional al grupo de pro(ectos actual 1. n el men) Arc<i,o' elija Agregar pro(ecto. Aparecer8 el cuadro de di8logo Agregar pro(ecto. 2. $eleccione un pro(ecto e4istente o un nue,o pro(ecto ( elija A1rir. >ara 6uitar un pro(ecto del grupo de pro(ectos actual 1. $eleccione un pro(ecto o un componente de un pro(ecto en el 4plorador de pro(ectos. 2. n el men) Arc<i,o' elija Fuitar pro(ecto. >ara o1tener m8s in.ormacin >ara sa1er m8s detalles acerca del tra1ajo con m)ltiples pro(ectos' ,ea OCrear componentes Acti,eGO en la Gu#a de &erramientas componentes' disponi1le en las ediciones pro.esional ( empresarial. Agregar, -uitar y guardar arc"i#os 7ra1ajar con arc<i,os de un pro(ecto es similar a tra1ajar con los pro(ectos propiamente dic<os. >ara agregar un arc<i,o a un pro(ecto 1. $eleccione >ro(ecto' Agregar tipo'de'arc&ivo 9donde tipo'de'arc&ivo es el tipo de arc<i,o:. Aparecer8 el cuadro de di8logo Agregar tipo'de'arc&ivo 9fgura !.2:. 2. $eleccione un tipo de arc<i,o e4istente o uno nue,o ( elija A1rir. &igura !.2 Cuadro de di8logo Agregar .ormulario 31
Cuando se agrega un arc<i,o a un pro(ecto' simplemente se est8 inclu(endo en el pro(ecto una re.erencia al arc<i,o e4istente' no agregando una copia de un arc<i,o. >or tanto' si e.ect)a cam1ios en un arc<i,o ( lo guarda' los cam1ios a.ectar8n a cual6uier pro(ecto 6ue contenga dic<o arc<i,o. >ara cam1iar un arc<i,o sin a.ectar a otros pro(ectos' seleccione el arc<i,o en el 4plorador de pro(ectos' elija Puardar arc&ivo como en el men) Arc<i,o ( guarde el arc<i,o con un nom1re nue,o. @ota >uede arrastrar ( colocar arc<i,os desde el 4plorador de HindoMs' el Administrador de arc<i,os o el ntorno de red a la ,entana >ro(ecto para agregarlos al pro(ecto. 7am1i+n puede arrastrar ( colocar arc<i,os .oc4 en el cuadro de <erramientas para agregar controles nue,os. >ara 6uitar un arc<i,o de un pro(ecto 1. $eleccione el arc<i,o en el 4plorador de pro(ectos. 2. n el men) >ro(ecto' elija Fuitar arc&ivo. *. l arc<i,o se 6uitar8 del pro(ecto pero no del disco. $i 6uita un arc<i,o de un pro(ecto' Visual Basic actuali2a la in.ormacin del arc<i,o de pro(ecto al guardarlo. $in em1argo' si elimina un arc<i,o desde .uera de Visual Basic' Visual Basic no podr8 actuali2ar el arc<i,o de pro(ectoW por tanto' cuando a1ra el pro(ecto' Visual Basic mostrar8 un mensaje de error indicando 6ue .alta un arc<i,o. >ara guardar un )nico arc<i,o sin guardar el pro(ecto 1. $eleccione el arc<i,o en el 4plorador de pro(ectos. 2. n el men) Arc<i,o' elija Puardar arc&ivo. Com1inar te4to 32
7am1i+n puede insertar te4to e4istente de otros arc<i,os dentro de uno de sus mdulos de cdigo. sto es )til para agregar una lista de constantes o para agregar .ragmentos de cdigo 6ue <a(a guardado en arc<i,os de te4to. >ara insertar un arc<i,o de te4to en el cdigo 1. n la ,entana >ro(ecto' seleccione el .ormulario o el mdulo en el 6ue desea insertar cdigo. 2. lija el 1otn Ver cdigo ( mue,a el cursor al lugar del editor de cdigo donde desee insertar cdigo. *. n el men) dicin' elija Insertar arc<i,o. !. $eleccione el nom1re del arc<i,o de te4to 6ue desea insertar ( elija A1rir. @ota $i modifca arc<i,os de cdigo .uente de Visual Basic con un editor de cdigo o de te4to distinto de Visual Basic' tenga cuidado de no cam1iar los ,alores del atri1uto VB_>redeclaredId. $i cam1ia este atri1uto es posi1le 6ue genere gra,es pro1lemas en las clases Plo1al;ulti5se ( Plo1al$ingle5se. n general' no de1e modifcar atri1utos manualmente' si lo <ace puede situar el mdulo en un estado interno de inconsistencia. Crear y ejecutar un arc"i#o ejecuta*le n Visual Basic puede crear un arc<i,o ejecuta1le 9.e4e: mediante el procedimiento siguiente. >ara crear un arc<i,o ejecuta1le en Visual Basic 1. n el men) Arc<i,o' elija Penerar arc&ivo .e4e donde arc&ivo es el nom1re de aplicacin para el pro(ecto. 2. scri1a un nom1re de arc<i,o o e4amine los directorios ( seleccione un nom1re de arc<i,o ejecuta1le e4istente para reempla2arlo por una nue,a ,ersin. *. $i <ace clic en el 1otn #pciones tam1i+n puede especifcar una serie de detalles espec?fcos de la ,ersin del arc<i,o ejecuta1le mediante el cuadro de di8logo >ropiedades del pro(ecto. !. $i desea modifcar el n)mero de ,ersin del pro(ecto' esta1le2ca los n)meros apropiados en >rincipal' $ecundario ( =e,isin. $i selecciona Incremento autom8tico' el n)mero de =e,isin se 3*
incrementar8 autom8ticamente cada ,e2 6ue ejecute el comando Penerar arc&ivo .e4e para este pro(ecto. /. >ara especifcar un nom1re nue,o para la aplicacin' escri1a un nom1re nue,o 1ajo Aplicacin' en el cuadro 7?tulo. $i desea especifcar un icono nue,o' elija uno en la lista. ". 7am1i+n puede especifcar comentarios espec?fcos de la ,ersin so1re di,ersos aspectos en el cuadro In.ormacin de ,ersin 9comentarios' nom1re de la organi2acin' marcas comerciales legales' derec<os de autor' etc.: si selecciona un tema del cuadro de lista ( escri1e la in.ormacin en el cuadro de te4to. 3. lija Aceptar para cerrar el cuadro de di8logo >ropiedades del pro(ecto ( despu+s elija Aceptar en el cuadro de di8logo Penerar proyecto para compilar ( ,incular el arc<i,o ejecuta1le. >uede iniciar el arc<i,o ejecuta1le de la misma manera 6ue cual6uier aplicacin HindoMsU <aga do1le clic en el icono del arc<i,o ejecuta1le. @ota %a generacin de un arc<i,o ejecuta1le desde la l?nea de comandos en una sesin D#$ puede ser )til cuando desee compilar un pro(ecto desde un programa. n un arc<i,o por lotes' escri1aU V1" VmaSe nombre'proyectoJ.,1pL Jnombre'ejecutableL n nombre'proyecto' escri1a el nom1re del arc<i,o de pro(ecto. 5se la ,aria1le nombre'ejecutable para cam1iar el nom1re del arc<i,o ejecuta1le resultante. Compilacin condicional %a compilacin condicional le permite compilar de .orma selecti,a ciertas partes del programa. >uede incluir caracter?sticas espec?fcas del programa en di.erentes ,ersiones' como cam1iar los fltros para mostrar .ec<as ( datos monetarios de una aplicacin distri1uida en di.erentes idiomas. >ara o1tener m8s in.ormacin >ara aprender m8s acerca de la compilacin condicional' ,ea O5sar la compilacin condicionalO en ODetalles de programacinO. De%nir opciones del proyecto Visual Basic permite personali2ar cada pro(ecto esta1leciendo una serie de propiedades. 5se el cuadro de di8logo >ropiedades del pro(ecto' al 6ue se tiene acceso mediante el comando >ropiedades de proyecto del 3!
men) >ro(ecto. %os ,alores de las propiedades se guardan en el arc<i,o de pro(ecto 9.,1p:. n la ta1la siguiente se descri1en algunas opciones 6ue puede esta1lecer. #pcin Descripcin #1jeto inicial >rimer .ormulario 6ue Visual Basic presenta en tiempo de ejecucin o $u1 ;ain 9 :. @om1re de pro(ecto Identifca el pro(ecto en el cdigo. @o puede contener puntos 9.: ni espacios en 1lanco' ( no de1e comen2ar por caracteres no al.a1+ticos. $i es el nom1re de una clase p)1lica' el nom1re de pro(ecto ( el nom1re de clase no pueden e4ceder de *3 caracteres. Arc<i,o de A(uda @om1re del arc<i,o de A(uda asociado con el pro(ecto. Id. de conte4to de la A(uda del pro(ecto Identifcador de conte4to del tema de A(uda espec?fco al 6ue se llama cuando el usuario <ace clic en el 1otn OCO mientras la 1i1lioteca de o1jetos de la aplicacin est8 seleccionada en el 4aminador de o1jetos. Descripcin del pro(ecto @om1re descripti,o del pro(ecto. $e presenta en los cuadros de di8logo =e.erencias ( 4aminador de o1jetos. 0a( disponi1les otras muc<as opciones' inclu(endo las de compilar' componentes ( m)ltiples procesos. Cuando est+ preparado para tener acceso a algunas de las opciones m8s a,an2adas' puede o1tener m8s in.ormacin en la A(uda. >ara o1tener m8s in.ormacin >ara aprender acerca de cmo esta1lecer las opciones de entorno 6ue a.ectan a todos los pro(ectos' ,ea ODesarrollar una aplicacin con Visual BasicO. 3/
Estructura de una aplicaci!n en Visual Basic 5na aplicacin no es m8s 6ue un conjunto de instrucciones para 6ue el e6uipo realice una o ,arias tareas. %a estructura de una aplicacin es la .orma en 6ue se organi2an las instruccionesW es decir' dnde se almacenan las instrucciones ( el orden en 6ue se ejecutan. %as aplicaciones sencillas' como el ejemplo cl8sico O0ola mundoO' tienen una estructura sencillaW la organi2acin no es mu( importante cuando slo se tiene una l?nea de cdigo. A medida 6ue las aplicaciones se ,an <aciendo m8s complejas' resulta o1,ia la necesidad de organi2ar o estructurar. Imagine el caos resultante si su aplicacin se ejecutara en un orden aleatorio. Adem8s de controlar la ejecucin de una aplicacin' la estructura es importante para el programadorU Ble resulta sencillo encontrar una instruccin determinada en la aplicacinC >uesto 6ue una aplicacin de Visual Basic se 1asa en o1jetos' la estructura de su cdigo se apro4ima muc<o a su representacin .?sica en pantalla. >or defnicin' los o1jetos contienen datos ( cdigo. l .ormulario 6ue ,e en la pantalla es una representacin de las propiedades 6ue defnen su apariencia ( su comportamiento intr?nseco. >or cada .ormulario de una aplicacin <a( un mdulo de (ormulario relacionado 9con la e4tensin de nom1re de arc<i,o ..rm: 6ue contiene su cdigo. &igura /.1 5n .ormulario ( su mdulo de .ormulario relacionado Cada mdulo de .ormulario contiene procedimientos de evento 9secciones de cdigo donde se colocan las instrucciones 6ue se 3"
ejecutar8n como respuesta a e,entos espec?fcos:. %os .ormularios pueden contener controles. >or cada control de un .ormulario' e4iste el correspondiente conjunto de procedimientos de e,ento en el mdulo de .ormulario. Adem8s de procedimientos de e,ento' los mdulos de .ormulario pueden contener procedimientos generales 6ue se ejecutan como respuesta a una llamada desde cual6uier procedimiento de e,ento. l cdigo 6ue no est+ relacionado con un control o un .ormulario espec?fco se puede colocar en un tipo di.erente de mdulo' un mdulo est$ndar 9.1as:. $e de1en colocar en un mdulo est8ndar los procedimientos 6ue se puedan usar como respuesta a e,entos de di,ersos o1jetos' en lugar de duplicar el cdigo en los procedimientos de e,ento de cada o1jeto. $e utili2a un mdulo de clase 9.cls: para crear o1jetos a los 6ue se puede llamar desde procedimientos de la aplicacin. ;ientras 6ue un mdulo est8ndar slo contiene cdigo' un mdulo de clase contiene cdigo ( datos 9puede considerarse como un control sin representacin .?sica:. ;ientras 6ue en OAdministrar pro(ectosO se descri1en los componentes 6ue puede agregar a una aplicacin' este cap?tulo e4plica cmo escri1ir cdigo en los distintos componentes 6ue con.orman una aplicacin. De .orma predeterminada' el pro(ecto contiene un )nico mdulo de .ormulario. >uede agregar mdulos adicionales de .ormulario' clase ( est8ndar' si es necesario. %os mdulos de clase se descri1en en O>rogramar con o1jetosO. Cmo .unciona una aplicacin controlada por e,entos 5na e4plicacin del modelo controlado por e,entos. Especi%caciones, liitaciones y )oratos de arc"i#os de Visual Basic n este ap+ndice se descri1en los re6uisitos de sistema' las limitaciones de un pro(ecto de Visual Basic' los tipos de arc<i,os 6ue se pueden incluir en el pro(ecto de Visual Basic ( las descripciones de los arc<i,os de .ormulario 9..rm: ( de pro(ecto 9.,1p:. @ota A pesar de 6ue muc<as de estas limitaciones se descri1en en t+rminos de un n)mero espec?fco' tenga en cuenta 6ue otras condiciones 9como la memoria disponi1le ( los recursos del sistema: pueden imponer una restriccin antes de 6ue se llegue a ese l?mite. 7emas 33
=e6uisitos del sistema para aplicaciones de Visual Basic =e6uisitos del sistema para las aplicaciones creadas en Visual Basic. %imitaciones de los pro(ectos %imitaciones 6ue restringen la .orma de escri1ir cdigo' el n)mero de controles 6ue puede usar en una aplicacin o la manera en 6ue se administra la entrada de datos. &ormatos de arc<i,os de pro(ecto %os arc<i,os de tiempo de dise-o ( de ejecucin 6ue se pueden incluir en el pro(ecto de Visual Basic. structuras de .ormularios Descripciones de los arc<i,os de .ormulario 9..rm: ( de pro(ecto 9.,1p:. 2e-uisitos del sistea para aplicaciones de Visual Basic >ara las aplicaciones de Visual Basic se re6uiere el siguiente <ardMare ( so.tMareU ;icroprocesador >entium N 90;02 o superior. >antalla VPA de "!04!80 o de resolucin superior compati1le con ;icroso.t HindoMs. 2! ;B de =A; para HindoMs 9/' *2 ;B para HindoMs @7. ;icroso.t HindoMs @7 *./1 o posterior' o ;icroso.t HindoMs 9/ o posterior. ;icroso.t Internet 4plorer ,ersin !.01 o posterior 9,ersin !.01 $er,ice >acS 1 o posterior para programadores de aplicaciones D07;% ( !.% para los usuarios fnales de dic<as aplicaciones:. =e6uisitos de espacio en disco duroU dicin st8ndarU instalacin t?pica !8;B' instalacin completa 80;B. 38
dicin >ro.esionalU instalacin t?pica !8;B' instalacin completa 80;B. dicin mpresarialU instalacin t?pica 128;B' instalacin completa 1!3;B. Componentes adicionales 9si son necesarios:U ;$D@ 9para documentacin:U "3;B' Internet 4plorer !.4U apro4imadamente "";B. CDQ=#; 9no se supone soporte para ;$QD#$:. Liitaciones de los proyectos 5n )nico pro(ecto puede contener <asta *2.000 OidentifcadoresO 9cual6uier pala1ra cla,e no reser,ada:' 6ue inclu(en entre otros .ormularios' controles' mdulos' ,aria1les' constantes' procedimientos' .unciones ( o1jetos. #1ser,e 6ue el n)mero real de identifcadores se limita a la memoria disponi1le. %os nom1res de ,aria1les en Visual Basic no pueden tener m8s de 2// caracteres ( los nom1res de .ormularios' controles' mdulos ( clases pueden tener un m84imo de !0 caracteres. Visual Basic no impone ning)n l?mite en cuanto al n)mero de o1jetos distintos de un pro(ecto. &oratos de arc"i#os de proyecto ;icroso.t Visual Basic utili2a ( crea una serie de arc<i,os tanto en tiempo de dise-o como en tiempo de ejecucin. %os arc<i,os 6ue el pro(ecto o la aplicacin re6uerir8n dependen de su alcance ( .uncionalidad. 4tensiones de arc<i,os de pro(ecto Visual Basic crea ,arios arc<i,os cuando se crea ( compila un pro(ecto. stos se pueden di,idir como sigueU tiempo de dise-o' otros desarrollos ( tiempo de ejecucin. %os arc<i,os de tiempo de dise-o son los ladrillos de su pro(ectoU por ejemplo' mdulos de Basic 9.1as: ( mdulos de .ormulario 9..rm:. #tros procesos ( .unciones del entorno de desarrollo de Visual Basic crean di,ersos arc<i,osU por ejemplo' arc<i,os de dependencias del Asistente de empa6uetado ( distri1ucin 9.dep:. Arc<i,os ,arios ( de tiempo de dise-o 39
%a siguiente ta1la muestra todos los arc<i,os de tiempo de dise-o ( otros arc<i,os 6ue se pueden crear al desarrollar una aplicacinU 4tensin Descripcin .1as ;dulo de Basic .cls ;dulo de clase .ctl Arc<i,o de control de usuario .ct4 Arc<i,o 1inario de control de usuario .dca Cac<+ de dise-ador acti,o .dd. Arc<i,o de in.ormacin CAB del Asistente de empa6uetado ( distri1ucin .dep Arc<i,o de dependencias del Asistente de empa6uetado ( distri1ucin .do1 Arc<i,o de .ormulario de documento Acti,eG .do4 Arc<i,o 1inario de .ormulario de documento Acti,eG .dsr Arc<i,o de dise-ador acti,o .ds4 Arc<i,o 1inario de dise-ador acti,o .dMs Arc<i,o de secuencia de guiones del Asistente para despliegue ..rm Arc<i,o de .ormulario ..r4 Arc<i,o 1inario de .ormulario .log Arc<i,o de registro de errores de carga 80
.oca Arc<i,o de cac<+ de 1i1lioteca de tipos de controles .pag Arc<i,o de p8gina de propiedades .pg4 Arc<i,o 1inario de p8gina de propiedades .res Arc<i,o de recursos .tl1 Arc<i,o 7(pe%i1 de Automati2acin remota .,1g Arc<i,o de pro(ecto de grupo de Visual Basic .,1l Arc<i,o de control de licencia .,1p Arc<i,o de pro(ecto de Visual Basic .,1r Arc<i,o de registro de Automati2acin remota .,1M Arc<i,o de espacio de tra1ajo de pro(ecto de Visual Basic .,12 Arc<i,o de inicio del Asistente .Mct >lantilla 07;% de clase de He1. Arc<i,os de tiempo de ejecucin Al compilar la aplicacin' todos los arc<i,os necesarios de tiempo de ejecucin se inclu(en en los arc<i,os ejecuta1les de tiempo de ejecucin. %a siguiente ta1la muestra los arc<i,os de tiempo de ejecucinU 4tensi n Descripcin .dll Componente Acti,eG en proceso .e4e Arc<i,o ejecuta1le o componente 81
Acti,eG .oc4 Control Acti,eG .,1d Arc<i,o de estado de documento Acti,eG .Mct >lantilla 07;% de clase de He1 Agregar controles a un proyecto s posi1le personali2ar' para cada pro(ecto' el conjunto de controles disponi1les en el cuadro de <erramientas. Cual6uier control proporcionado de1e estar en el cuadro de <erramientas para 6ue se pueda agregar a un .ormulario del pro(ecto. l conjunto 18sico de controles est8ndar 6ue siempre aparece en el cuadro de <erramientas se descri1e en O&ormularios' controles ( men)sO. Agregar controles Acti,eG a un pro(ecto >uede agregar controles Acti,eG ( o1jetos inserta1les a un pro(ecto si los agrega desde el cuadro de <erramientas. >ara agregar un control al cuadro de <erramientas de un pro(ecto 1. n el men) >ro(ecto' elija Componentes. Aparecer8 el cuadro de di8logo Componentes' tal como se muestra en la fgura !.*. %os elementos mostrados en este cuadro de di8logo inclu(en todos los controles Acti,eG registrados' o1jetos inserta1les ( dise-adores Acti,eG. 2. >ara agregar un control 9e4tensin de nom1re de arc<i,o .oc4: o un o1jeto inserta1le al cuadro de <erramientas' acti,e la casilla de ,erifcacin 6ue <a( a la i26uierda del nom1re del control deseado. >ara ,er los controles con e4tensiones de arc<i,o .oc4' seleccione la fc<a Controles. >ara ,er o1jetos inserta1les' como un gr8fco de ;icroso.t 4cel' seleccione la fc<a #1jetos inserta1les. *. lija Aceptar para cerrar el cuadro de di8logo Componentes. 7odos los controles Acti,eG 6ue <a(a seleccionado aparecer8n a<ora en el cuadro de <erramientas. 82
&igura !.* Cuadro de di8logo Componentes >ara agregar controles Acti,eG al cuadro de di8logo Componentes' elija el 1otn 4aminar ( 1us6ue en otros directorios arc<i,os con la e4tensin .oc4. Cuando agregue un control Acti,eG a la lista de controles disponi1les' Visual Basic acti,ar8 autom8ticamente su casilla de ,erifcacin. @ota Cada control Acti,eG ,iene acompa-ado de un arc<i,o con e4tensin .oca. ste arc<i,o almacena in.ormacin de 1i1lioteca de tipos ( otros datos espec?fcos del control. %os arc<i,os .oca se almacenan <a1itualmente en el mismo directorio 6ue los controles Acti,eG ( se ,uel,en a crear cuando sea necesario 9los tama-os ( las .ec<as de los arc<i,os pueden cam1iar:. Fuitar controles de un pro(ecto >ara 6uitar un control de un pro(ecto 1. n el men) >ro(ecto' elija Componentes. Aparecer8 el cuadro de di8logo Componentes. 2. Desacti,e la casilla de ,erifcacin 6ue <a( junto al control 6ue desea 6uitar. l icono del control desaparecer8 del cuadro de <erramientas. @ota @o puede 6uitar ning)n control del cuadro de <erramientas si una instancia de ese control se est8 usando en cual6uier .ormulario del pro(ecto. 5sar o1jetos de otras aplicaciones 8*
7am1i+n puede usar o1jetos de otras aplicaciones' como los incluidos en la 1i1lioteca de o1jetos de ;icroso.t 4cel' (a sea como controles del cuadro de <erramientas o como o1jetos programa1les en el cdigo. >ara agregar o1jetos al cuadro de <erramientas' ,ea OAgregar controles a un pro(ectoO. >ara 6ue los o1jetos de otra aplicacin est+n disponi1les en el cdigo' pero no como controles' defna una re.erencia a la 1i1lioteca de o1jetos de esa aplicacin. >ara agregar una re.erencia a la 1i1lioteca de o1jetos de otra aplicacin 1. n el men) >ro(ecto' elija =e.erencias. Aparecer8 el cuadro de di8logo =e.erencias' como se muestra en la fgura !.!. 2. Acti,e la casilla de ,erifcacin correspondiente a la re.erencia 6ue desea agregar al pro(ecto. >ara agregar re.erencias a aplicaciones no enumeradas en el cuadro de di8logo =e.erencias' elija el 1otn 4aminar ( seleccione la aplicacin. *. lija Aceptar para agregar al pro(ecto las re.erencias seleccionadas. &igura !.! Cuadro de di8logo =e.erencias 8!
$i no ,a a usar ning)n o1jeto de una 1i1lioteca a la 6ue se <ace re.erencia' es con,eniente desacti,ar la casilla de ,erifcacin de dic<a re.erencia para reducir al m?nimo el n)mero de re.erencias a o1jetos 6ue Visual Basic de1e resol,er reduciendo as? el tiempo de compilacin del pro(ecto. 5na ,e2 6ue <a defnido las re.erencias a las 1i1liotecas de o1jetos 6ue desea' puede 1uscar un o1jeto espec?fco' junto con sus m+todos ( propiedades' en el 4aminador de o1jetosW para ello' elija 4aminador de o1jetos en el men) Ver. >uede usar en el cdigo cual6uier o1jeto enumerado en el 4aminador de o1jetos. >ara o1tener m8s in.ormacin >ara o1tener in.ormacin acerca del 4aminador de o1jetos' ,ea OBuscar ( e4aminar o1jetosO en O>rogramar con o1jetosO. 5sar un arc<i,o de recursos 5n arc<i,o de recursos le permite reunir en un )nico lugar todo el te4to ( todos los mapas de 1its espec?fcos de una ,ersin para una aplicacin. sto puede incluir declaraciones de constantes' iconos' te4to de pantalla ( otro material 6ue pueda cam1iar entre ,ersiones traducidas o entre re,isiones o confguraciones espec?fcas. >ara agregar un arc<i,o a un pro(ecto 1. n el men) >ro(ecto' elija Agregar arc<i,o. Aparecer8 el cuadro de di8logo Agregar arc<i,o. 2. $eleccione un arc<i,o de recurso e4istente 9.res: ( elija A1rir. 5n pro(ecto slo puede tener un arc<i,o de recursosW si agrega un segundo arc<i,o con e4tensin .res' se producir8 un error. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca del contenido de un arc<i,o de recursos' ,ea OAspectos internacionalesO. 3anual del prograador Bien,enido al ;anual del programador de Visual Basic N ' un manual completo acerca de la programacin con Visual Basic. >ara poner orden a las numerosas caracter?sticas ( posi1ilidades de Visual Basic' el ;anual del programador est8 di,ido en dos partes. 8/
%a primera parte trata los conceptos 18sicos ( proporciona los .undamentos para los programadores nue,os en Visual Basic. %a segunda parte trata conceptos ( t+cnicas de programacin m8s a,an2ados. %os ap+ndices contienen in.ormacin adicional )til acerca de cmo de1e usar el producto. >artes >rincipios 18sicos de Visual Basic 5na introduccin a la programacin en Visual Basic. BFu+ permite <acer Visual BasicC 7emas a,an2ados de programacin en Visual Basic. specifcaciones' limitaciones ( .ormatos de arc<i,o de Visual Basic Detalles t+cnicos para Visual Basic. Con,enciones de cdigo de Visual Basic =ecomendaciones para escri1ir cdigo consistente ( legi1le. ;odifcadores del compilador de cdigo nati,o Detalles acerca de los modifcadores de la l?nea de comandos para compilar cdigo nati,o. Agregar A(uda a su aplicacin =ecomendaciones para agregar A(uda en pantalla a una aplicacin de Visual Basic. &undamentos de programacin ste cap?tulo presenta los componentes esenciales del lenguaje Visual Basic. 7ras crear la inter.a2 de la aplicacin mediante .ormularios ( controles' necesitar8 escri1ir el cdigo 6ue defna el comportamiento de la aplicacin. Como cual6uier lenguaje moderno de programacin' Visual Basic acepta ciertas construcciones de programacin ( elementos de lenguaje comunes. Visual Basic es un lenguaje de programacin 1asado en o1jetos. %a simple mencin de la pala1ra o1jetos puede pro,ocar e4cesi,a ansiedad en muc<os programadores. @o se preocupeU 6ui28 sin sa1erlo' <a estado tra1ajando con o1jetos la ma(or parte de su ,ida. 5na ,e2 6ue <a(a 8"
comprendido algunos conceptos 18sicos' los o1jetos le .acilitar8n la programacin m8s 6ue nunca. $i <a programado en otros lenguajes' gran parte del material 6ue se presenta en este cap?tulo le resultar8 .amiliar. Aun6ue la ma(or?a de las construcciones son similares a otros lenguajes' la naturale2a orientada a e,entos de Visual Basic presenta algunas di.erencias sutiles. >rocure a1ordar este material con la mente a1iertaW una ,e2 6ue <a(a comprendido las di.erencias podr8 1enefciarse de ellas. $i programa desde <ace poco' el material de este cap?tulo le ser,ir8 de introduccin para la construccin de 1lo6ues 18sicos de cdigo. 5na ,e2 6ue comprenda los conceptos 18sicos' ser8 capa2 de crear potentes aplicaciones con Visual Basic. 7emas structura de una aplicacin en Visual Basic Introduccin a los di,ersos componentes o mdulos 6ue componen una aplicacin de Visual Basic. Antes de empe2ar a codifcar Bre,e discusin de algunas consideraciones 6ue se de1en tener en cuenta al dise-ar una aplicacin. ;ec8nica de la escritura de cdigo Introduccin a las caracter?sticas del ditor de cdigo' as? como las reglas ( normas para escri1ir cdigo. Introduccin a las ,aria1les' constantes ( tipos de datos Introduccin a los elementos 18sicos del lenguaje Visual Basic. Introduccin a los procedimientos Introduccin a los procedimientos $u1 ( &unction. Introduccin a las estructuras de control Introduccin a las estructuras de decisin ( 1ucles. 7ra1ajar con o1jetos Introduccin a la utili2acin de o1jetos en cdigo de Visual Basic. 83
Aplicacin de ejemplo Vcr.,1p ;uc<os de los ejemplos de cdigo de este cap?tulo se <an tomado de la aplicacin de ejemplo Vcr.,1p 6ue se encuentra en el directorio $amples. structura de una aplicacin en Visual Basic 5na aplicacin no es m8s 6ue un conjunto de instrucciones para 6ue el e6uipo realice una o ,arias tareas. %a estructura de una aplicacin es la .orma en 6ue se organi2an las instruccionesW es decir' dnde se almacenan las instrucciones ( el orden en 6ue se ejecutan. %as aplicaciones sencillas' como el ejemplo cl8sico O0ola mundoO' tienen una estructura sencillaW la organi2acin no es mu( importante cuando slo se tiene una l?nea de cdigo. A medida 6ue las aplicaciones se ,an <aciendo m8s complejas' resulta o1,ia la necesidad de organi2ar o estructurar. Imagine el caos resultante si su aplicacin se ejecutara en un orden aleatorio. Adem8s de controlar la ejecucin de una aplicacin' la estructura es importante para el programadorU Ble resulta sencillo encontrar una instruccin determinada en la aplicacinC >uesto 6ue una aplicacin de Visual Basic se 1asa en o1jetos' la estructura de su cdigo se apro4ima muc<o a su representacin .?sica en pantalla. >or defnicin' los o1jetos contienen datos ( cdigo. l .ormulario 6ue ,e en la pantalla es una representacin de las propiedades 6ue defnen su apariencia ( su comportamiento intr?nseco. >or cada .ormulario de una aplicacin <a( un mdulo de (ormulario relacionado 9con la e4tensin de nom1re de arc<i,o ..rm: 6ue contiene su cdigo. &igura /.1 5n .ormulario ( su mdulo de .ormulario relacionado 88
Cada mdulo de .ormulario contiene procedimientos de evento 9secciones de cdigo donde se colocan las instrucciones 6ue se ejecutar8n como respuesta a e,entos espec?fcos:. %os .ormularios pueden contener controles. >or cada control de un .ormulario' e4iste el correspondiente conjunto de procedimientos de e,ento en el mdulo de .ormulario. Adem8s de procedimientos de e,ento' los mdulos de .ormulario pueden contener procedimientos generales 6ue se ejecutan como respuesta a una llamada desde cual6uier procedimiento de e,ento. l cdigo 6ue no est+ relacionado con un control o un .ormulario espec?fco se puede colocar en un tipo di.erente de mdulo' un mdulo est$ndar 9.1as:. $e de1en colocar en un mdulo est8ndar los procedimientos 6ue se puedan usar como respuesta a e,entos de di,ersos o1jetos' en lugar de duplicar el cdigo en los procedimientos de e,ento de cada o1jeto. $e utili2a un mdulo de clase 9.cls: para crear o1jetos a los 6ue se puede llamar desde procedimientos de la aplicacin. ;ientras 6ue un mdulo est8ndar slo contiene cdigo' un mdulo de clase contiene cdigo ( datos 9puede considerarse como un control sin representacin .?sica:. ;ientras 6ue en OAdministrar pro(ectosO se descri1en los componentes 6ue puede agregar a una aplicacin' este cap?tulo e4plica cmo escri1ir cdigo en los distintos componentes 6ue con.orman una aplicacin. De .orma predeterminada' el pro(ecto contiene un )nico mdulo de .ormulario. >uede agregar mdulos adicionales de .ormulario' clase ( est8ndar' si es necesario. %os mdulos de clase se descri1en en O>rogramar con o1jetosO. 89
Cmo .unciona una aplicacin controlada por e,entos 5na e4plicacin del modelo controlado por e,entos. Antes de empe2ar a codifcar Fui28 la parte m8s importante 9( a menudo ol,idada: en la creacin de una aplicacin en Visual Basic es la .ase de dise-o. Aun6ue resulta o1,io 6ue necesita dise-ar una inter.a2 de usuario para la aplicacin' puede no parecer tan o1,ia la necesidad de dise-ar la estructura del cdigo. %a .orma en 6ue estructure una aplicacin puede <acer 6ue ,ar?e su .uncionamiento' as? como el mantenimiento ( la .acilidad de uso del cdigo. l cdigo de una aplicacin de Visual Basic est8 organi2ado de .orma jer8r6uica. 5na aplicacin t?pica est8 compuesta por uno o m8s mdulosU un mdulo de .ormulario por cada .ormulario de la aplicacin' mdulos est8ndares opcionales para el cdigo compartido ( mdulos de clase opcionales. Cada mdulo contiene uno o m8s procedimientos 6ue contienen cdigoU procedimientos de e,ento' procedimientos $u1 o &unction ( procedimientos >ropert(. Determinar 6u+ procedimientos pertenecen a cada mdulo depender8 del tipo de aplicacin 6ue est+ creando. Como Visual Basic est8 1asado en o1jetos' esto le a(udar8 a pensar en la aplicacin en .uncin de los o1jetos 6ue representa. l dise-o de la aplicacin de ejemplo de este cap?tulo' Vcr.,1p' est8 1asado en los o1jetos 6ue contienen un gra1ador de ,?deo ( un tele,isor. %a aplicacin VC= consta de dos mdulos de .ormulario' un mdulo est8ndar ( dos mdulos de clase. >uede usar el 4aminador de o1jetos para ,er la estructura del pro(ecto 9fgura /.2:. &igura /.2 %a estructura del pro(ecto VC= se muestra en el 4aminador de o1jetos l .ormulario principal de la aplicacin VC= 9.rmVC=: es una representacin ,isual de una com1inacin de VC= ( una pantalla de tele,isin 9fgura /.*:. st8 compuesto de ,arios o1jetos 6ue 90
representan a los 6ue se pueden encontrar en la ,ersin del mundo real. 5n grupo de 1otones de comando 9cmd>la(' cmd=ecord' etc.: simulan los 1otones utili2ados para usar un ,?deo. l VC= de so.tMare contiene tam1i+n un reloj 9l1l7ime:' un indicador de canal 9l1lC<annel:' indicadores de .uncin 9s<p>la(' s<p=ecord' etc.: ( una pantalla de tele,isin 9pic7V:. %os procedimientos de e,ento de todos estos o1jetos est8n contenidos en el mdulo de .ormulario Vcr..rm. &igura /.* l .ormulario principal de la aplicacin VC= n muc<os casos <a( procedimientos repetiti,os compartidos por ,arios o1jetos. >or ejemplo' cuando OpresionaO los 1otones =eproducir' =e1o1inar o Pra1ar' es necesario 6ue est+n acti,ados los 1otones >ausa ( >arar. n lugar de repetir el cdigo en el procedimiento de e,ento ClicS de cada 1otn' es mejor crear un procedimiento $u1 compartido al 6ue pueda llamar cada 1otn. $i es necesario modifcar estas rutinas en el .uturo' puede <acer todas las modifcaciones en un )nico lugar. ste procedimiento compartido ( otros est8n en el mdulo est8ndar' Vcr.1as. Algunas partes de un VC= no son ,isi1les' como el mecanismo de transporte de cinta o la lgica para gra1ar un programa de tele,isin. Del mismo modo' otras .unciones del VC= de so.tMare no tienen representacin ,isual. st8n implementadas en dos mdulos de claseU =ecorder.cls ( 7ape.cls. l cdigo para iniciar el proceso de Ogra1acinO est8 en el mdulo cls=ecorder' ( el cdigo para controlar la direccin ( ,elocidad de la OcintaO est8 en el mdulo cls7ape. %as clases defnidas en estos mdulos no tienen re.erencias directas a otros o1jetos de los 91
.ormularios. >uesto 6ue son mdulos de cdigo independientes' se pueden reusar .8cilmente para crear un gra1ador de audio sin modifcaciones. Adem8s del dise-o de la estructura del cdigo' es importante esta1lecer con,enciones de nomenclatura. De .orma predeterminada' Visual Basic asigna el nom1re &orm1 al primer .ormulario de un pro(ecto' al segundo &orm2 ( as? sucesi,amente. $i tiene muc<os .ormularios en una aplicacin' es con,eniente darles nom1res signifcati,os para e,itar con.usiones cuando escri1a o modif6ue el cdigo. n OCon,enciones de nomenclatura de Visual BasicO se sugieren algunas con,enciones de nomenclatura. $eg)n ,a(a aprendiendo m8s so1re o1jetos ( escritura de cdigo' podr8 consultar en la aplicacin VC= algunos ejemplos de t+cnicas de codifcacin. ;ec8nica de la escritura de cdigo Antes de empe2ar' es importante comprender la mec8nica de escritura de cdigo en Visual Basic. Como cual6uier lenguaje de programacin' Visual Basic tiene sus propias reglas para organi2ar' modifcar ( dar .ormato al cdigo. %os temas siguientes presentan los procedimientos ( mdulos de cdigo' muestran la utili2acin 18sica del ditor de cdigo ( e4plican las reglas 18sicas para escri1ir cdigo. ;dulos de cdigo Introduccin a los di.erentes tipos de procedimientos ( mdulos de cdigo 6ue contienen. 5sar el ditor de cdigo Introduccin al tra1ajo con cdigo mediante el ditor de cdigo. Conceptos 18sicos del cdigo An8lisis de las reglas del lenguaje ;dulos de cdigo l cdigo en Visual Basic se almacena en mdulos. 0a( tres tipos de mdulosU de .ormulario' est8ndar ( de clase. %as aplicaciones sencillas pueden consistir en un )nico .ormulario ( todo el cdigo de la aplicacin reside en ese mdulo de .ormulario. A medida 6ue sus aplicaciones ,a(an creciendo ( siendo m8s sofsticadas' agregar8 .ormularios adicionales. A ,eces tendr8 cdigo com)n 6ue desear8 ejecutar en ,arios .ormularios. @o 6uerr8 duplicar el cdigo en 92
am1os .ormularios' por lo 6ue crear8 un mdulo independiente 6ue contenga un procedimiento 6ue ejecuta el cdigo com)n. ste mdulo independiente de1e ser un mdulo est8ndar. Con el tiempo' puede construir una 1i1lioteca de mdulos 6ue contenga los procedimientos compartidos. Cada mdulo est8ndar' de clase ( de .ormulario puede contener lo siguienteU Declaraciones. >uede colocar declaraciones de constantes' tipos' ,aria1les ( procedimientos de 1i1liotecas de ,?nculos din8micos 9D%%: al ni,el de mdulo de .ormulario' de clase o est8ndar. >rocedimientos. 5n procedimiento $u1' &unction o >ropert( contiene partes de cdigo 6ue se pueden ejecutar como una unidad. $e descri1en en la seccin OIntroduccin a los procedimientosO' m8s adelante en este mismo cap?tulo. ;dulos de .ormulario %os mdulos de .ormulario 9e4tensin de nom1re de arc<i,o ..rm: son la 1ase de la ma(or?a de las aplicaciones de Visual Basic. >ueden contener procedimientos 6ue controlen e,entos' procedimientos generales ( declaraciones a ni,el de .ormulario de ,aria1les' constantes' tipos ( procedimientos e4ternos. $i e4amina un mdulo de .ormulario con un editor de te4tos' podr8 ,er las descripciones del .ormulario ( sus controles' as? como los ,alores de sus propiedades. l cdigo 6ue se escri1e en un mdulo de .ormulario es espec?fco de la aplicacin a la 6ue pertenece el .ormulario ( puede <acer re.erencia a otros .ormularios u o1jetos de la aplicacin. ;dulos est8ndar %os mdulos est8ndar 9e4tensin de nom1re de arc<i,o .1as: son contenedores de los procedimientos ( declaraciones a los 6ue tienen acceso otros mdulos de la aplicacin. >ueden contener declaraciones glo1ales 9disponi1les para toda la aplicacin: o a ni,el de mdulo de ,aria1les' constantes' tipos' procedimientos e4ternos ( procedimientos glo1ales. l cdigo 6ue se escri1e en un mdulo est8ndar no est8 ligado necesariamente a una aplicacin determinadaW si tiene cuidado de no <acer re.erencia a controles o .ormularios por su nom1re' puede reusar un mdulo est8ndar en distintas aplicaciones. 9*
;dulos de clase %os mdulos de clase 9e4tensin de nom1re de arc<i,o .cls: son la 1ase de la programacin orientada a o1jetos en Visual Basic. >uede escri1ir cdigo en mdulos de clase para crear nue,os o1jetos. stos o1jetos nue,os pueden incluir propiedades ( m+todos personali2ados. n realidad' los .ormularios slo son mdulos de clase 6ue pueden tener controles ( 6ue pueden mostrar ,entanas de .ormulario. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de la escritura de cdigo en mdulos de clases' ,ea O>rogramar con o1jetosO. @ota %as ediciones >ro.esional ( mpresarial de Visual Basic inclu(en tam1i+n documentos Acti,eG' dise-adores de Acti,eG ( controles de usuario. stos introducen nue,os tipos de mdulos con di.erentes e4tensiones de nom1re de arc<i,o. Desde el punto de ,ista de la escritura de cdigo' estos mdulos de1en considerarse igual 6ue los mdulos de .ormulario. 5sar el ditor de cdigo l ditor de cdigo de Visual Basic es una ,entana donde se escri1e la ma(or parte del cdigo. s como un procesador de te4tos mu( especiali2ado con cierto n)mero de caracter?sticas 6ue .acilita en gran medida la escritura de cdigo en Visual Basic. %a ,entana del ditor de cdigo se muestra en la fgura /.!. Como tra1aja con el cdigo de Visual Basic en mdulos' se a1re una ,entana distinta del ditor de cdigo por cada mdulo 6ue seleccione en el 4plorador de pro(ectos. l cdigo de cada mdulo est8 su1di,idido en distintas secciones para cada o1jeto del mdulo. >ara pasar de una seccin a otra se utili2a el cuadro de lista #1jeto. n un mdulo de .ormulario' la lista inclu(e una seccin general' una seccin para el .ormulario propiamente dic<o ( una seccin para cada control del .ormulario. >ara un mdulo de clase' la lista inclu(e una seccin general ( una seccin de claseW para un mdulo est8ndar slo se muestra una seccin general. Cada seccin de cdigo puede contener ,arios procedimientos distintos' a los 6ue se tiene acceso mediante el cuadro de lista >rocedimiento. %a lista de procedimientos de un mdulo de .ormulario contiene una seccin distinta para cada procedimiento de e,ento del .ormulario o el control. >or ejemplo' la lista de procedimientos de un control %a1el inclu(e secciones para los e,entos C<ange' ClicS ( D1lClicS' entre otros. %os mdulos de clase slo muestran los procedimientos de e,ento para 9!
la propia clase 9Initiali2e ( 7erminate:. %os mdulos est8ndar no muestran ning)n procedimiento de e,ento' (a 6ue un mdulo est8ndar no acepta e,entos. %a lista de procedimientos de la seccin general de un mdulo contiene una )nica seleccin' la seccin de declaraciones' donde se colocan las declaraciones a ni,el de mdulo de ,aria1les' constantes ( D%%. $eg)n ,a(a agregando procedimientos $u1 o &unction a un mdulo' dic<os procedimientos se agregan al cuadro de lista >rocedimiento 1ajo la seccin de declaraciones. n la ,entana del ditor de cdigo <a( disponi1les dos ,istas distintas del cdigo. >uede elegir ,er un )nico procedimiento cada ,e2 o ,er todos los procedimientos del mdulo' estando cada procedimiento separado del siguiente mediante una l?nea 9como se muestra en la fgura /.!:. >ara cam1iar entre las dos ,istas' utilice los 1otones Ver seleccin de la es6uina in.erior i26uierda de la ,entana del editor. 7erminar el cdigo de .orma autom8tica Visual Basic <ace 6ue la escritura de cdigo sea muc<o m8s sencilla mediante caracter?sticas 6ue llenan autom8ticamente instrucciones' propiedades ( argumentos. A medida 6ue ,a introduciendo cdigo' el editor muestra listas de elecciones adecuadas' prototipos de instrucciones o .unciones' o ,alores. 0a( opciones para acti,ar o desacti,ar estas ( otras confguraciones de cdigo en la fc<a ditor del cuadro de di8logo #pciones' al 6ue se tiene acceso a tra,+s del comando #pciones del men) 0erramientas. Cuando especifca el nom1re de un control en el cdigo' la caracter?stica %ista de miem1ros autom8tica presenta una lista desplega1le con las propiedades disponi1les para ese control 9fgura /./:. scri1a las primeras letras del nom1re de la propiedad ( se seleccionar8 en la listaW la tecla 7AB completar8 la escritura. sta opcin resulta tam1i+n mu( )til cuando no sepa con seguridad 6u+ propiedades <a( disponi1les para un determinado control. Incluso aun6ue <a(a elegido desacti,ar la caracter?stica %ista de miem1ros autom8tica' podr8 tener acceso a esta caracter?stica mediante la com1inacin de teclas CtrlQf. %a caracter?stica In.ormacin r8pida autom8tica muestra la sinta4is de las instrucciones ( .unciones 9fgura /.":. Cuando escri1a el nom1re de una instruccin o .uncin ,8lida de Visual Basic se mostrar8 la sinta4is inmediatamente de1ajo de la l?nea actual' con el primer argumento en negrita. 5na ,e2 6ue <a(a escrito el ,alor del primer argumento' se mostrar8 en negrita el segundo argumento. 7am1i+n se puede tener 9/
acceso a In.ormacin r8pida autom8tica con la com1inacin de teclas CtrlQI. ;arcadores >uede usar marcadores para marcar l?neas de cdigo en el editor de cdigo para 6ue pueda ,ol,er m8s tarde a ellas. %o comandos para alternar marcadores ( para despla2arse por los marcadores e4istentes est8n disponi1les en el men) dicin' elemento del men) ;arcadores' o en la 1arra de <erramientas dicin. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de las com1inaciones de teclas para tener acceso a +stas ( otras .unciones en la ,entana del ditor de cdigo' ,ea OCrear m+todos a1re,iados de tecladoO en el cap?tulo 3. Conceptos 18sicos del cdigo sta seccin presenta in.ormacin acerca de la mec8nica de escritura de cdigo' inclu(endo di,idir ( com1inar l?neas de cdigo' agregar comentarios al cdigo' usar n)meros en el cdigo ( seguir las con,enciones de nomenclatura en Visual Basic. Di,idir una )nica instruccin en ,arias l?neas >uede di,idir una instruccin larga en ,arias l?neas en la ,entana del ditor de cdigo si utili2a el car$cter de continuacin de l#nea 9un espacio en 1lanco seguido de un signo de su1ra(ado:. %a utili2acin de este car8cter puede <acer 6ue sea m8s .8cil leer el cdigo' tanto en la pantalla como impreso en papel. l cdigo siguiente se <a di,idido en tres l?neas mediante caracteres de continuacin de l?nea 9 _:U Data1.=ecord$ource ` _ O$%C7 g &=#; 7itles' >u1lis<ersO _ D OH0= >u1lis<ers.>u1Id ` 7itles.>u1ID _ D OA@D >u1lis<ers.$tate ` aCAaO @o puede poner un comentario despu+s de un car8cter de continuacin de l?nea en la misma l?nea. 7am1i+n <a( algunas limitaciones so1re dnde se puede usar el car8cter de continuacin de l?nea. Com1inar instrucciones en una l?nea @ormalmente <a( una instruccin de Visual Basic por l?nea ( no <a( ning)n terminador de instruccin. $in em1argo' puede colocar dos o 9"
m8s instrucciones en una l?nea si utili2a un signo de dos puntos 9U: para separarlasU 7e4t1.7e4t ` O0olaO U =ed ` 2// U 7e4t1.BacSColor ` _ =ed $in em1argo' para <acer el cdigo m8s legi1le' es mejor colocar cada instruccin en una l?nea distinta. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin' ,ea Ospecifcaciones' limitaciones ( .ormatos de arc<i,os de Visual BasicO. Agregar comentarios al cdigo $eg)n ,a(a le(endo los ejemplos de esta gu?a' a menudo ,er8 el s?m1olo de comentario 9a:. ste s?m1olo indica a Visual Basic 6ue pase por alto las pala1ras 6ue ,an a continuacin de +l. stas pala1ras son comentarios situados en el cdigo para el desarrollador ( otros programadores 6ue ,a(an a e4aminar despu+s el cdigo. >or ejemploU a ste comentario comien2a en el 1orde i26uierdo de a la pantalla. 7e4t1.7e4t ` O0olaO a >one un saludo amistoso a en el cuadro de te4to. %os comentarios pueden seguir a una instruccin en la misma l?nea o pueden ocupar una l?nea completa. Am1os se ilustran en el cdigo anterior. =ecuerde 6ue los comentarios no pueden ir detr8s de un car8cter de continuacin de l?nea en la misma l?nea. @ota >uede agregar o eliminar s?m1olos 6ue indican comentarios en un 1lo6ue de cdigo seleccionando dos o m8s l?neas de cdigo ( seleccionando los 1otones Blo6ue con comentarios o Blo6ue sin comentarios en la 1arra de <erramientas dicin. Descripcin de los sistemas de numeracin %a ma(or?a de los n)meros de este documento son decimales 91ase 10:. >ero en ocasiones es con,eniente usar n)meros <e4adecimales 91ase 1": o n)meros octales 91ase 8:. Visual Basic representa los n)meros <e4adecimales con el prefjo D0 ( los octales con D#. %a ta1la siguiente muestra los mismos n)meros en .ormato decimal' octal ( <e4adecimal. Decimal #ctal 0e4adeci 93
mal 9 D#11 D09 1/ D#13 D0& 1" D#20 D010 20 D#2! D01! 2// D#*33 D0&& @ormalmente no tendr8 6ue aprender los sistemas <e4adecimales u octal (a 6ue el e6uipo puede tra1ajar con n)meros en cual6uier sistema. $in em1argo' algunos sistemas de numeracin se prestan a determinadas tareas' como la utili2acin de n)meros <e4adecimales para confgurar los colores de la pantalla ( los controles. Con,enciones de nomenclatura en Visual Basic Cuando escri1e cdigo en Visual Basic' declara ( asigna nom1re a muc<os elementos 9procedimientos $u1 ( &unction' ,aria1les' constantes' etc.:. %os nom1res de procedimientos' ,aria1les ( constantes 6ue declara en el cdigo de Visual Basic de1en seguir estas directricesU De1en comen2ar por una letra. @o pueden contener puntos o caracteres de declaracin de tipos 9caracteres especiales 6ue especifcan tipos de datos. @o pueden superar los 2// caracteres. %os nom1res de controles' .ormularios' clases ( mdulos no de1en e4ceder los !0 caracteres. @o pueden ser iguales 6ue las pala1ras cla,e restringidas. 5na palabra clave restringida es una pala1ra 6ue Visual Basic utili2a como parte de su lenguaje. sto inclu(e a las instrucciones predefnidas 9como I. ( %oop:' .unciones 9como %en ( A1s: ( operadores 9como #r ( ;od:. 98
>ara o1tener m8s in.ormacin >ara ,er la lista completa de pala1ras cla,e' ,ea la )e(erencia del lenguaje. %os .ormularios ( controles pueden tener el mismo nom1re 6ue una pala1ra cla,e restringida. >or ejemplo' puede tener un control 6ue se llame %oop. $in em1argo' en el cdigo no puede <acer re.erencia a ese control de la .orma <a1itual' (a 6ue Visual Basic supone 6ue se est8 refriendo a la pala1ra cla,e %oop. >or ejemplo' este cdigo pro,oca un errorU %oop.Visi1le ` 7rue a >ro,oca un error. >ara re.erirse a un .ormulario o un control 6ue tenga el mismo nom1re 6ue una pala1ra cla,e restringida' de1e califcarlo o ponerlo entre corc<etesU J L. >or ejemplo' este cdigo no pro,oca un errorU ;i&orm.%oop.Visi1le ` 7rue a Califcado con el nom1re del a .ormulario. J%oopL.Visi1le ` 7rue a Con corc<etes tam1i+n .unciona. >uede usar corc<etes de esta .orma cuando <aga re.erencia a .ormularios ( controles' pero no cuando declare una ,aria1le o defna un procedimiento con el mismo nom1re 6ue una pala1ra cla,e restringida. 7am1i+n se pueden usar corc<etes para 6ue Visual Basic acepte nom1res de otras 1i1liotecas de tipos 6ue entren en conZicto con pala1ras cla,e restringidas. @ota >uesto 6ue escri1ir corc<etes puede resultar tedioso' e,ite la utili2acin de pala1ras cla,e restringidas en los nom1res de .ormularios ( controles. $in em1argo' puede usar esta t+cnica si una ,ersin posterior de Visual Basic defne una pala1ra cla,e nue,a 6ue entre en conZicto con un nom1re de .ormulario o control e4istente ( est+ actuali2ando el cdigo para 6ue .uncione con la ,ersin nue,a. &unciones de con,ersin de tipos Cada .uncin con,ierte una e4presin a un tipo de datos espec?fco. $inta4is CBool9e%presin: CB(te9e%presin: CCur9e%presin: CDate9e%presin: 99
CD1l9e%presin: CDec9e%presin: CInt9e%presin: C%ng9e%presin: C$ng9e%presin: C$tr9e%presin: CVar9e%presin: l argumento o1ligatorio e%presin es cual6uier e4presin de cadena o e4presin num+rica. 7ipos de,ueltos l nom1re de la .uncin determina el tipo de,uelto' como se muestra a continuacinU &uncin 7ipo de,uelto Inter,alo del argumento e%presin C1ool Boolean Cual6uier e4presin de cadena o num+rica ,8lida. C1(te B(te 0 a 2//. Ccur Currenc( Q922.**3.20*."8/.!33'/808 a 922.**3.20*."8/.!33'/803. Cdate Date Cual6uier e4presin de .ec<a. CD1l Dou1le Q1'393"9*1*!8"2*2*08 a Q!'9!0"/"!/8!12!3Q*2! para ,alores negati,osW !'9!0"/"!/8!12!3Q*2! a 1'393"9*1*!8"2*2*08 para ,alores positi,os. 100
Cdec Decimal EVQ 39.228.1"2./1!.2"!.**3./9*./!*. 9/0.**/ para n)meros 1asados en cero' es decir' n)meros sin decimales. >ara n)meros con 28 decimales' el inter,alo es EVQ 3'92281"2/1!2"!**3/9*/!*9/0 **/. %a menor posicin para un n)mero 6ue no sea cero es 0'0000000000000000000000000 001. Cint Integer Q*2.3"8 a *2.3"3W las .racciones se redondean. C%ng %ong Q2.1!3.!8*."!8 a 2.1!3.!8*."!3W las .racciones se redondean. C$ng $ingle Q*'!0282**8 a Q1'!01298Q!/ para ,alores negati,osW 1'!01298Q!/ a *'!0282**8 para ,alores positi,os. C$tr $tring l mismo inter,alo 6ue Dou1le para ,alores num+ricos. l mismo inter,alo 6ue $tring para ,alores no num+ricos. C,ar Variant l ,alor de retorno de C$tr depende del argumento e%presin. Comentarios $i la e4presin del argumento e%presin 6ue se pasa a la .uncin est8 .uera del inter,alo del tipo de dato al 6ue se ,a a con,ertir' se produce un error. 101
n general' el cdigo se puede documentar utili2ando las .unciones de con,ersin de tipos de datos para indicar 6ue el resultado de alguna de las operaciones se de1er?a e4presar como un tipo de datos en particular' no como el tipo de datos predeterminado. >or ejemplo' utilice Ccur para .or2ar la ejecucin de operaciones con aritm+tica monetaria en los casos en los 6ue se <ar?a con precisin simple' do1le precisin o aritm+tica entera. De1e utili2ar .unciones de con,ersin de tipos en lugar de Val para proporcionar con,ersiones 6ue recono2can las ,ariantes internacionales. >or ejemplo' cuando utili2a CCur' se reconocen di.erentes separadores decimales' di.erentes separadores de millares ( ,arias opciones monetarias dependiendo de la confguracin regional esta1lecida en su e6uipo. Cuando la parte .raccionaria es e4actamente 0'/' CInt ( C%ng siempre redondean al n)mero par m8s cercano. >or ejemplo' 0'/ redondea a 0' ( 1'/ redondea a 2. CInt ( C%ng se di.erencian de las .unciones &i4 ( Int en 6ue truncan' en lugar de redondear' la parte .raccionaria de un n)mero. Adem8s' &i4 ( Int siempre de,uel,en un ,alor del mismo tipo del 6ue se le pasa. 5tilice la .uncin IsDate para determinar si se puede con,ertir date a una .ec<a o una <ora. CDate reconoce literales de .ec<a ( literales de <ora adem8s de n)meros comprendidos dentro del inter,alo de .ec<as acepta1les. Al con,ertir un n)mero a una .ec<a' la parte num+rica entera se con,ierte a una .ec<a. Cual6uier parte .raccionaria del n)mero se con,ierte a la <ora del d?a' comen2ando a medianoc<e. CDate reconoce .ormatos de .ec<a 6ue se ajusten a la confguracin regional de su sistema. s posi1le 6ue no se determine el orden correcto del d?a' mes ( a-o si se proporciona en un .ormato di.erente del 6ue reconoce la confguracin de .ec<a. Adem8s' no se puede reconocer un .ormato de .ec<a largo si contiene la cadena del d?a de la semana. $e proporciona una .uncin CVDate por compati1ilidad con ,ersiones anteriores de Visual Basic. %a sinta4is de la .uncin CVDate es id+ntica a la de la .uncin CDateW sin em1argo' CVDate de,uel,e un Variant de su1tipo Date en lugar del tipo Date real. >uesto 6ue a<ora <a( un tipo de dato intr?nseco Date' no es necesario CVDate. $e puede o1ser,ar el mismo e.ecto al con,ertir una e4presin a Date ( asignarla despu+s a un Variant. sta t+cnica es co<erente con la con,ersin de todos los dem8s tipos intr?nsecos a sus e6ui,alentes su1tipos Variant. @ota %a .uncin CDec no de,uel,e un tipo de dato discretoW en su lugar' siempre de,uel,e un Variant con los ,alores con,ertidos a un su1tipo Decimal. 102
Introduccin a las ,aria1les' constantes ( tipos de datos A menudo necesitar8 almacenar ,alores temporalmente cuando est+ reali2ando c8lculos con Visual Basic. >or ejemplo' puede 6ue desee calcular di,ersos ,alores' compararlos ( reali2ar distintas operaciones con ellos' dependiendo de los resultados de la comparacin. @ecesitar8 conser,ar los ,alores si desea compararlos' pero no necesitar8 almacenarlos en una propiedad. Visual Basic' como la ma(or?a de los lenguajes de programacin' utili2a variables para almacenar ,alores. %as ,aria1les tienen un nom1re 9la pala1ra 6ue utili2a para re.erirse al ,alor 6ue contiene la ,aria1le: ( un tipo de dato 96ue determina la clase de datos 6ue puede almacenar la ,aria1le:. $e pueden usar matrices para almacenar colecciones inde4adas de ,aria1les relacionadas. *as constantes tam1i+n almacenan ,alores pero' como su nom1re indica' estos ,alores permanecen constantes durante la ejecucin de la aplicacin. %a utili2acin de constantes puede <acer m8s legi1le el cdigo (a 6ue proporciona nom1res signifcati,os en ,e2 de n)meros. Visual Basic incorpora una serie de constantes' pero puede crear sus propias constantes. *os tipos de datos controlan el almacenamiento interno de datos en Visual Basic. De .orma predeterminada' Visual Basic utili2a el tipo de dato Variant. 0a( otros tipos de datos disponi1les 6ue le permiten optimi2ar el cdigo en cuanto a ,elocidad ( tama-o cuando no necesite la Ze4i1ilidad 6ue proporciona el tipo Variant. >ara o1tener in.ormacin m8s detallada' ,eaU Varia1les Introduccin a las ,aria1lesU 6u+ son ( cmo usarlas. Descripcin del alcance de las ,aria1les An8lisis de cmo se aplica el alcance a las ,aria1les. 7emas a,an2ados so1re ,aria1les In.ormacin detallada so1re las ,aria1les. Varia1les est8ticas Introduccin a la utili2acin de ,aria1les est8ticas para preser,ar ,alores. Constantes Introduccin a la utili2acin de constantes para representar ,alores. 7ipos de datos An8lisis de los tipos de datos disponi1les en Visual Basic. 10*
7emas a,an2ados so1re el tipo de dato Variant In.ormacin detallada so1re el tipo de dato Variant. ;atrices Introduccin a la utili2acin de matrices para grupos de ,alores. ;atrices din8micas An8lisis so1re la utili2acin de matrices din8micas para tra1ajar con grupos de ,alores Varia1les n Visual Basic puede usar ,aria1les para almacenar ,alores temporalmente durante la ejecucin de una aplicacin. %as ,aria1les tienen un nom1re 9la pala1ra 6ue utili2a para re.erirse al ,alor 6ue contiene la ,aria1le: ( un tipo de dato 96ue determina la clase de datos 6ue la ,aria1le puede almacenar:. >uede considerar una ,aria1le como un marcador de posicin en memoria de un ,alor desconocido. >or ejemplo' suponga 6ue est8 creando un programa para una .ruter?a 6ue <aga un seguimiento del precio de las man2anas. @o sa1e el precio de una man2ana o la cantidad 6ue se <a ,endido <asta 6ue no se produce realmente la ,enta. >uede usar dos ,aria1les para almacenar los ,alores desconocidos 9,amos a llamarlos >recio;an2anas ( ;an2anasVendidas:. Cada ,e2 6ue se ejecuta el programa' el usuario especifca los ,alores de las dos ,aria1les. >ara calcular las ,entas totales ( mostrarlas en un cuadro de te4to llamado t4tVentas' el cdigo de1er?a parecerse al siguienteU t4tVentas.t4t ` >recio;an2anas g ;an2anasVendidas %a e4presin de,uel,e un total distinto cada ,e2' dependiendo de los ,alores 6ue indi6ue el usuario. %as ,aria1les le permiten reali2ar un c8lculo sin tener 6ue sa1er antes cu8les son los ,alores especifcados. n este ejemplo' el tipo de dato de >recio;an2anas es Currenc(W el tipo de dato de ;an2anasVendidas es Integer. %as ,aria1les pueden representar otros muc<os ,alores como ,alores de te4to' .ec<as' di,ersos tipos num+ricos e incluso o1jetos. Almacenar ( recuperar datos en ,aria1les 5tilice instrucciones de asignacin para reali2ar c8lculos ( asignar el resultado a una ,aria1leU ;an2anasVendidas ` 10 a $e pasa el ,alor 10 a a la ,aria1le. 10!
;an2anasVendidas ` ;an2anasVendidas E 1 a $e incrementa la ,aria1le. #1ser,e 6ue el signo igual del ejemplo es un operador de asignacin' no un operador de igualdadW el ,alor 910: se asigna a la ,aria1le 9;an2anasVendidas:. Declarar ,aria1les Declarar una ,aria1le es decirle al programa algo de antemano. $e declara una ,aria1le mediante la instruccin Dim' proporcionando un nom1re a la ,aria1leU Dim nombre+ariable JAs tipoL %as ,aria1les 6ue se declaran en un procedimiento mediante la instruccin Dim slo e4isten mientras se ejecuta el procedimiento. Cuando termina el procedimiento' desaparece el ,alor de la ,aria1le. Adem8s' el ,alor de una ,aria1le de un procedimiento es local de dic<o procedimientoW es decir' no puede tener acceso a una ,aria1le de un procedimiento desde otro procedimiento. stas caracter?sticas le permiten usar los mismos nom1res de ,aria1les en distintos procedimientos sin preocuparse por posi1les conZictos o modifcaciones accidentales. l nom1re de una ,aria1leU De1e comen2ar con una letra. @o puede incluir un punto o un car8cter de declaracin de tipo. @o de1e e4ceder de 2// caracteres. De1e ser )nica en el mismo alcance' 6ue es el inter,alo desde el 6ue se puede <acer re.erencia a la ,aria1leU un procedimiento' .ormulario' etc. %a cl8usula opcional As tipo de la instruccin Dim le permite defnir el tipo de dato o de o1jeto de la ,aria1le 6ue ,a a declarar. %os tipos de datos defnen el tipo de in.ormacin 6ue almacena la ,aria1le. Algunos ejemplos de tipos de datos son $tring' Integer ( Currenc(. %as ,aria1les tam1i+n pueden contener o1jetos de Visual Basic u otras aplicaciones. Algunos ejemplos de tipos de o1jeto de Visual Basic' o clases' son #1ject' &orm1 ( 7e4tBo4. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de los o1jetos' ,ea O>rogramar con o1jetosO ( O>rogramar con 10/
componentesO. %os tipos de datos se e4plican con m8s detalle en O7ipos de datosO' m8s adelante en este mismo cap?tulo. 0a( otras .ormas de declarar ,aria1lesU Declarar una ,aria1le en la seccin Declaraciones de un mdulo de .ormulario' est8ndar o de clase' en ,e2 de en un procedimiento' <ace 6ue la ,aria1le est+ disponi1le para todos los procedimientos del mdulo. Declarar una ,aria1le mediante la pala1ra cla,e >u1lic <ace 6ue est+ accesi1le para toda la aplicacin. Declarar una ,aria1le local mediante la pala1ra cla,e $tatic preser,a su ,alor aun6ue termine el procedimiento. Declaracin impl?cita @o tiene por 6u+ declarar una ,aria1le antes de usarla. >or ejemplo' podr?a escri1ir una .uncin donde no <iciera .alta declarar 7empVal antes de usarlaU &unction $a.e$6r9num: 7empVal ` A1s9num: $a.e$6r ` $6r97empVal: nd &unction Visual Basic crea autom8ticamente una ,aria1le con ese nom1re' 6ue puede usar como si la <u1iera declarado e4pl?citamente. Aun6ue es cmodo' puede pro,ocar errores sutiles en el cdigo si se e6ui,oca de nom1re de ,aria1le. >or ejemplo' suponga 6ue <a escrito esta .uncinU &unction $a.e$6r9num: 7empVal ` A1s9num: $a.e$6r ` $6r97emVal: nd &unction A primera ,ista' parece igual. >ero como se <a escrito errneamente la ,aria1le 7empVal en la tercera l?nea' la .uncin de,ol,er8 siempre cero. Cuando Visual Basic encuentra un nom1re nue,o' no puede a,eriguar si realmente desea declarar una ,aria1le nue,a o simplemente <a escrito de .orma errnea una ,aria1le e4istente' por lo 6ue crea una ,aria1le nue,a con ese nom1re. 10"
Declaracin e4pl?cita >ara e,itar pro1lemas al e6ui,ocarse de nom1re en las ,aria1les' puede estipular 6ue Visual Basic le a,ise siempre 6ue encuentre un nom1re 6ue no se <a(a declarado e4pl?citamente como una ,aria1le. >ara declarar ,aria1les de .orma e4pl?cita Inclu(a esta instruccin en la seccin Declaraciones del mdulo de clase' de .ormulario o est8ndarU #ption 4plicit Yo 1ienY n el men) 0erramientas' elija #pciones' <aga clic en la fc<a ditor ( acti,e la opcin =e6uerir declaracin de ,aria1les. sto inserta autom8ticamente la instruccin #ption 4plicit en los mdulos nue,os' pero no en los (a creados' por lo 6ue tendr8 6ue agregar manualmente #ption 4plicit a los mdulos e4istentes en el pro(ecto. $i <u1iera tenido e.ecto dic<a instruccin en el mdulo de .ormulario o est8ndar 6ue contiene la .uncin $a.e$6r' Visual Basic <a1r?a reconocido 7empVal ( 7emVal como ,aria1les no declaradas ( <a1r?a generado errores para am1as. De1er?a' por tanto' declarar e4pl?citamente 7empValU &unction $a.e$6r9num: Dim 7empVal 7empVal ` A1s9num: $a.e$6r ` $6r97emVal: nd &unction A<ora podr8 comprender el pro1lema inmediatamente por6ue Visual Basic <a1r8 mostrado un mensaje de error para la ,aria1le 7emVal 6ue se <a escrito de .orma incorrecta. Como la instruccin #ption 4plicit le a(uda a interceptar esta clase de errores' es con,eniente usarla en todo el cdigo. @ota %a instruccin #ption 4plicit .unciona so1re mdulo a mduloW de1e colocarse en la seccin Declaraciones de todos los mdulos de .ormulario' est8ndar o de clase en los 6ue desee 6ue Visual Basic o1ligue a declarar e4pl?citamente las ,aria1les. $i acti,a =e6uerir declaracin de ,aria1les' Visual Basic insertar8 #ption 4plicit en todos los mdulos de .ormulario' est8ndares o de clase siguientes' pero no lo 103
agregar8 en el cdigo e4istente. De1er8 agregar manualmente #ption 4plicit a los mdulos (a e4istentes en el pro(ecto. Descripcin del alcance de las ,aria1les l alcance de una ,aria1le defne 6u+ partes del cdigo son conscientes de su e4istencia. Cuando declara una ,aria1le en un procedimiento' slo el cdigo de dic<o procedimiento puede tener acceso o modifcar el ,alor de la ,aria1leW tiene un alcance 6ue es local al procedimiento. A ,eces' sin em1argo' se necesita usar una ,aria1le con un alcance m8s general' como a6uella cu(o ,alor est8 disponi1le para todos los procedimientos del mismo mdulo o incluso para todos los procedimientos de toda la aplicacin. Visual Basic le permite especifcar el alcance de una ,aria1le cuando la declara. sta1lecer el alcance de las ,aria1les Dependiendo de cmo se declara' una ,aria1le tiene como alcance un procedimiento 9local: o un mdulo. Alcance >ri,ado >)1lico @i,el de procedimiento %as ,aria1les son pri,adas del procedimiento en el 6ue aparecen. @o es aplica1le. @o puede declarar ,aria1les p)1licas dentro de un procedimiento. @i,el de mdulo %as ,aria1les son pri,adas del mdulo en el 6ue aparecen. %as ,aria1les est8n disponi1les para todos los mdulos. Varia1les utili2adas en un procedimiento %as ,aria1les a ni,el de procedimiento slo se reconocen en el procedimiento en el 6ue se <an declarado. $e las conoce tam1i+n como ,aria1les locales. $e declaran mediante las pala1ras cla,e Dim o $tatic. >or ejemploU Dim int7emp As Integer Yo 1ienY 108
$tatic int>ermanent As Integer %os ,alores de ,aria1les locales declaradas con $tatic e4isten mientras se ejecuta la aplicacin' mientras 6ue las ,aria1les declaradas con Dim slo e4isten mientras se ejecuta el procedimiento. %as ,aria1les locales resultan una eleccin apropiada para c8lculos temporales. >or ejemplo' puede crear una docena de procedimientos distintos 6ue contengan una ,aria1le llamada int7emp. Como cada int7emp se <a declarado como una ,aria1le local' cada procedimiento slo reconoce su propia ,ersin de int7emp. Cual6uier procedimiento puede alterar el ,alor de su int7emp local sin 6ue ello a.ecte a las ,aria1les int7emp de los dem8s procedimientos. Varia1les utili2adas en un mdulo De .orma predeterminada' una ,aria1le a ni,el de mdulo est8 disponi1le para todos los procedimientos del mdulo' pero no para el cdigo de otros mdulos. Cree ,aria1les a ni,el de mdulo declar8ndolas con la pala1ra cla,e >ri,ate en la seccin Declaraciones al principio del mdulo. >or ejemploU >ri,ate int7emp As Integer A ni,el de mdulo' no <a( di.erencia entre >ri,ate ( Dim' pero es pre.eri1le >ri,ate por6ue contrasta con >u1lic ( <ace 6ue el cdigo sea m8s .8cil de comprender. Varia1les utili2adas por todos los mdulos >ara <acer 6ue una ,aria1le a ni,el de mdulo est+ disponi1le para otros mdulos' utilice la pala1ra cla,e >u1lic para declarar la ,aria1le. %os ,alores de las ,aria1les p)1licas est8n disponi1les para todos los procedimientos de la aplicacin. Al igual 6ue todas las ,aria1les a ni,el de mdulo' las ,aria1les p)1licas se declaran en la seccin Declaraciones al principio del mdulo. >or ejemploU >u1lic int7emp As Integer @ota @o puede declarar ,aria1les p)1licas en un procedimiento' slo en la seccin Declaraciones de un mdulo. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de las ,aria1les' ,ea O7emas a,an2ados so1re ,aria1lesO en este cap?tulo. Constantes 109
A menudo ,er8 6ue el cdigo contiene ,alores constantes 6ue reaparecen una ( otra ,e2. # puede 6ue el cdigo dependa de ciertos n)meros 6ue resulten di.?ciles de recordar 9n)meros 6ue' por s? mismos' no tienen un signifcado o1,io:. n estos casos' puede mejorar muc<o la legi1ilidad del cdigo ( .acilitar su mantenimiento si utili2a constantes. 5na constante es un nom1re signifcati,o 6ue sustitu(e a un n)mero o una cadena 6ue no ,ar?a. Aun6ue una constante recuerda ligeramente a una ,aria1le' no puede modifcar una constante o asignarle un ,alor nue,o como ocurre con una ,aria1le. 0a( dos or?genes para las constantesU !onstantes intr#nsecas o de,nidas por el sistema proporcionadas por aplicaciones ( controles. %as constantes de Visual Basic se muestran en Visual Basic 9VB: ( Visual Basic para aplicaciones 9VBA: ( las 1i1liotecas de o1jetos en el 4aminador de o1jetos. #tras aplicaciones 6ue proporcionan 1i1liotecas de o1jetos' como ;icroso.t 4cel ( ;icroso.t >roject' tam1i+n proporcionan una lista de constantes 6ue puede usar con sus o1jetos' m+todos ( propiedades. 7am1i+n se defnen constantes en la 1i1lioteca de o1jetos de cada control Acti,eG. >ara o1tener m8s detalles acerca de la utili2acin del 4aminador de o1jetos' ,ea O>rogramar con o1jetosO. *as constantes simblicas o de,nidas por el usuario se declaran mediante la instruccin Const. %as constantes defnidas por el usuario se descri1en en la pr4ima seccin' OCrear sus propias constantesO. n Visual Basic' los nom1res de constantes tienen un .ormato 6ue com1ina ma()sculas ( min)sculas' con un prefjo 6ue indica la 1i1lioteca de o1jetos 6ue defne la constante. %as constantes de las 1i1liotecas de o1jetos de Visual Basic ( Visual Basic para aplicaciones tienen el prefjo O,1OW por ejemplo' ,17ile0ori2ontal. $e <a dise-ado el sistema de prefjos para e,itar colisiones accidentales en casos donde las constantes tienen nom1res id+nticos ( representan ,alores di.erentes. Incluso con prefjos' es posi1le 6ue dos 1i1liotecas de o1jetos puedan contener constantes id+nticas 6ue representen ,alores di.erentes. %a constante a la 6ue se <ace re.erencia en cada caso depende de la 1i1lioteca de o1jetos 6ue tenga ma(or prioridad. >ara o1tener m8s in.ormacin acerca de la modifcacin de la prioridad de las 1i1liotecas de o1jetos' ,ea OCuadro de di8logo =e.erenciasO en el cap?tulo !. 110
>ara estar totalmente seguro de e,itar colisiones en los nom1res de constantes' puede califcar las re.erencias a constantes con la sinta4is siguienteU Jnombre-iblioteca.LJnombreMdulo.Lnombre!onstante nombre-iblioteca suele ser el nom1re de clase del control o la 1i1lioteca' nombreMdulo es el nom1re del mdulo 6ue defne la constante ( nombre!onstante es el nom1re de la constante. Cada uno de estos elementos se defne en la 1i1lioteca de o1jetos ( se puede ,er en el 4aminador de o1jetos. Crear constantes propias %a sinta4is para declarar una constante es la siguienteU J>u1lich>ri,ateL Const nombre!onstanteJAs tipoL ` e%presin l argumento nombre!onstante es un nom1re sim1lico ,8lido 9las reglas son las mismas 6ue para crear nom1res de ,aria1le: ( e%presin est8 compuesta por constantes ( operadores de cadena o num+ricosW sin em1argo' no puede usar llamadas a .unciones en e%presin. 5na instruccin Const puede representar una cantidad matem8tica o de .ec<a ( <oraU Const con>i ` *.1!1/92"/*/8939 >u1lic Const con;a4>lanetas As Integer ` 9 Const con&ec<a$alida ` A1V1V9/A $e puede usar tam1i+n la instruccin Const para defnir constantes de cadenaU >u1lic Const conVersion ` O03.10.AO Const con@om1reCla,e ` OnigmaO >uede colocar m8s de una declaracin de constante en una )nica l?nea si las separa con comasU >u1lic Const con>i ` *.1!' con;a4>lanetas ` 9' con>o1;undial ` "E09 A menudo' la e4presin del lado derec<o del signo igual 9 ` : es un n)mero o cadena literal' pero tam1i+n puede ser una e4presin 6ue d+ como resultado un n)mero o una cadena 9aun6ue la .uncin no puede contener llamadas a .unciones:. >uede incluso defnir constantes en t+rminos de constantes pre,iamente defnidasU 111
Const con>i2 ` con>i g 2 5na ,e2 6ue defna las constantes' puede colocarlas en el cdigo para <acerlo m8s legi1le. >or ejemploU $tatic $istema$olar91 7o con;a4>lanetas: I. num>ersonas i con>op;undial 7<en 4it $u1 Alcance de las constantes defnidas por el usuario 5na instruccin Const tiene igual alcance 6ue una declaracin de ,aria1le ( se le aplican las mismas reglasU >ara crear una constante 6ue slo e4ista en un procedimiento' decl8rela dentro del procedimiento. >ara crear una constante disponi1le para todos los procedimientos de un mdulo' pero no para el cdigo 6ue est8 .uera del mdulo' decl8rela en la seccin Declaraciones del mdulo. >ara crear una constante disponi1le en toda la aplicacin' declare la constante en la seccin Declaraciones de un mdulo est8ndar ( colo6ue delante de Const la pala1ra cla,e >u1lic. @o se pueden declarar las constantes p)1licas en un mdulo de clase o de .ormulario. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca del alcance' ,ea ODescripcin del alcance de las ,aria1lesO' anteriormente en este mismo cap?tulo. ,itar re.erencias circulares Como es posi1le defnir constantes en t+rminos de otras constantes' de1er8 tener cuidado para no esta1lecer un ciclo o re.erencia circular entre dos o m8s constantes. $e produce un ciclo cuando se tienen dos o m8s constantes p)1licas' cada una de las cuales est8 defnida en .uncin de la otra. >or ejemploU a n ;odule 1U >u1lic Const conA ` conB g 2 a Disponi1le en toda la a aplicacin. a n ;odule 2U >u1lic Const conB ` conA V 2 a Disponi1le en toda la a aplicacin. 112
$i se produce un ciclo' Visual Basic generar8 un error cuando intente ejecutar la aplicacin. @o puede ejecutar el cdigo <asta 6ue resuel,a la re.erencia circular. >ara e,itar la creacin de un ciclo' restrinja todas las constantes p)1licas a un )nico mdulo o' al menos' al menor n)mero posi1le de mdulos. 7ipos de datos %as ,aria1les son marcadores de posicin 6ue se utili2an para almacenar ,aloresW tienen nom1re ( un tipo de dato. l tipo de dato de la ,aria1le determina cmo se almacenan los 1its 6ue representan esos ,alores en la memoria del e6uipo. Cuando declare una ,aria1le' tam1i+n puede proporcionarle un tipo de dato. 7odas las ,aria1les tienen un tipo de dato 6ue determina la clase de datos 6ue pueden almacenar. De .orma predeterminada' si no proporciona un tipo de dato' la ,aria1le toma el tipo de dato Variant. l tipo de dato Variant es como un camalenW puede representar di.erentes tipos de datos en distintas situaciones. @o tiene 6ue con,ertir estos tipos de datos cuando los asigne a una ,aria1le VariantU Visual Basic reali2a autom8ticamente cual6uier con,ersin necesaria. $in em1argo' si sa1e 6ue una ,aria1le almacenar8 siempre un tipo de dato determinado' Visual Basic tratar8 de .orma m8s efciente los datos si declara la ,aria1le con ese tipo. >or ejemplo' se representa mejor una ,aria1le 6ue ,a almacenar nom1res de personas como el tipo de dato $tring' (a 6ue un nom1re est8 siempre compuesto de caracteres. %os tipos de datos se aplican a otras cosas adem8s de a las ,aria1les. Cuando asigna un ,alor a una propiedad' dic<o ,alor tiene un tipo de datoW los argumentos de las .unciones tienen tam1i+n tipos de datos. De <ec<o' todo lo relacionado con datos en Visual Basic tiene un tipo de dato. 7am1i+n puede declarar matrices de cual6uiera de los tipos .undamentales. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin' ,ea la seccin O;atricesO' m8s adelante en este cap?tulo. %a seleccin de tipos de datos para mejorar el rendimiento de la aplicacin se e4plica en ODise-ar 1uscando el rendimiento ( la compati1ilidadO. Declarar ,aria1les con tipos de datos Antes de usar una ,aria1le 6ue no sea Variant de1e usar las instrucciones >ri,ate' >u1lic' Dim o $tatic para declararla As tipo. >or 11*
ejemplo' la siguiente instruccin declara un tipo Integer' Dou1le' $tring ( Currenc(' respecti,amenteU >ri,ate I As Integer Dim Cantidad As Dou1le $tatic $u@om1re As $tring >u1lic >agado>orfuan As Currenc( %a instruccin de declaracin puede com1inar ,arias declaraciones' como en las instrucciones siguientesU >ri,ate I As Integer' Amt As Dou1le >ri,ate $u@om1re As $tring' >agado>orfuan As Currenc( >ri,ate >rue1a' Cantidad' f As Integer @ota $i no proporciona un tipo de dato' se asigna a la ,aria1le el tipo predeterminado. n el ejemplo anterior' las ,aria1les >rue1a ( Cantidad tienen un tipo de dato Variant. sto puede sorprenderle si su e4periencia con otros lenguajes de programacin le lle,a a esperar 6ue todas las ,aria1les contenidas en la misma instruccin de declaracin tengan el mismo tipo 6ue <a especifcado 9en este caso' Integer:. 7ipos de datos num+ricos Visual Basic proporciona ,arios tipos de datos num+ricosU Integer' %ong 9entero largo:' $ingle 9signo Zotante de simple precisin:' Dou1le 9signo Zotante de do1le precisin: ( Currenc(. 5sar un tipo de dato num+rico emplea normalmente menos espacio de almacenamiento 6ue un tipo Variant. $i sa1e 6ue una ,aria1le siempre ,a a almacenar n)meros enteros 9como 12: en ,e2 de n)meros .raccionarios 9como *'/3:' decl8rela como un tipo Integer o %ong. %as operaciones con enteros son m8s r8pidas ( estos tipos consumen menos memoria 6ue otros tipos de datos. =esultan especialmente )tiles como ,aria1les de contador en 1ucles &or...@e4t. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de las estructuras de control' ,ea OIntroduccin a las estructuras de controlO' m8s adelante en este mismo cap?tulo. $i la ,aria1le contiene una .raccin' decl8rela como ,aria1le $ingle' Dou1le o Currenc(. l tipo de dato Currenc( acepta <asta cuatro d?gitos a la derec<a del separador decimal ( <asta 6uince d?gitos a la i26uierdaW es un tipo de dato de signo fjo adecuado para c8lculos monetarios. %os n)meros de signo Zotante 9$ingle ( Dou1le: tienen m8s inter,alo 6ue Currenc(' pero pueden estar sujetos a pe6ue-os errores de redondeo. 11!
@ota %os ,alores de signo Zotante se pueden e4presar como mmmeee o mmmDeee' donde mmm es la mantisa ( eee el e4ponente 9potencia de 10:. l ,alor positi,o m8s alto de un tipo de dato $ingle es *'!0282*E*8 *'! ,eces 10 a la *8 a potenciaW el ,alor positi,o m8s alto de un tipo de dato Dou1le es 1'393"9*1*!8"2*2DE*08 o alrededor de 1'8 ,eces 10 a la *08 a potencia. $i utili2a D para separar la mantisa ( el e4ponente en un literal num+rico' el ,alor se tratar8 como un tipo de dato Dou1le. Igualmente' usar de la misma manera <ace 6ue el ,alor se trate como un tipo de dato $ingle. l tipo de dato B(te $i la ,aria1le contiene datos 1inarios' decl8rela como matri2 de tipo B(te. 9%as matrices se descri1en en O;atricesO' m8s adelante en este mismo cap?tulo:. 5sar ,aria1les B(te para almacenar datos 1inarios los preser,a durante las con,ersiones de .ormato. Cuando se con,ierten las ,aria1les $tring entre los .ormatos A@$I ( 5nicode' los datos 1inarios de la ,aria1le resultan da-ados. Visual Basic puede con,ertir autom8ticamente entre A@$I ( 5nicode alU %eer arc<i,os scri1ir arc<i,os %lamar a arc<i,os D%% %lamar a m+todos ( propiedades en o1jetos 7odos los operadores 6ue .uncionan con enteros .uncionan con el tipo de dato B(te e4cepto el de resta unaria. >uesto 6ue B(te es un tipo sin signo con el inter,alo 0Q2//' no puede representar un ,alor negati,o. As?' para la resta unaria' Visual Basic con,ierte antes el tipo B(te en un entero con signo. s posi1le asignar todas las ,aria1les num+ricas entre s? ( a ,aria1les del tipo Variant. Visual Basic redondea en ,e2 de truncar la parte .raccionaria de un n)mero de signo Zotante antes de asignarlo a un entero. >ara o1tener m8s in.ormacin >ara o1tener m8s detalles acerca de las con,ersiones 5nicode ( A@$I' ,ea el cap?tulo 1" OAspectos internacionalesO. l tipo de dato $tring $i tiene una ,aria1le 6ue siempre contendr8 una cadena ( nunca un ,alor num+rico' puede declararla del tipo $tringU 11/
>ri,ate $ As $tring As? podr8 asignar cadenas a esta ,aria1le ( manipularla mediante .unciones de cadenaU $ ` OBase de datosO $ ` %e.t9$' !: De .orma predeterminada' una ,aria1le o argumento de cadena es una cadena de longitud variableW la cadena crece o disminu(e seg)n le asigne nue,os datos. 7am1i+n puede declarar cadenas de longitud fja. specif6ue una cadena de longitud ,ja con esta sinta4isU $tring g tamao >or ejemplo' para declarar una cadena 6ue tiene siempre /0 caracteres de longitud' utilice un cdigo como esteU Dim @om1remp As $tring g /0 $i asigna una cadena con menos de /0 caracteres' @om1remp se rellenar8 con espacios en 1lanco <asta el total de /0 caracteres. $i asigna una cadena demasiado larga a una cadena de longitud fja' Visual Basic simplemente truncar8 los caracteres. >uesto 6ue las cadenas de longitud fja se rellenan con espacios al fnal' ,er8 6ue las .unciones 7rim ( =7rim' 6ue 6uitan los espacios en 1lanco' resultan mu( )tiles cuando se tra1aja con ellas. %as cadenas de longitud fja se pueden declarar en mdulos est8ndar como >u1lic o >ri,ate. n mdulos de clase ( .ormulario' las cadenas de longitud fja de1en declararse como >ri,ate. >ara o1tener m8s in.ormacin Vea O&unciones %7rim' =7rim ( 7rimO en la )e(erencia del lenguaje. Intercam1iar cadenas ( n)meros >uede asignar una cadena a una ,aria1le num+rica si la cadena representa un ,alor num+rico. 7am1i+n es posi1le asignar un ,alor num+rico a una ,aria1le de cadena. >or ejemplo' colo6ue un 1otn de comando' un cuadro de te4to ( un cuadro de lista en un .ormulario. scri1a el cdigo siguiente en el e,ento ClicS del 1otn de comando. jecute la aplicacin ( <aga clic en el 1otn de comando. >ri,ate $u1 Command1_ClicS9: 11"
Dim intG As Integer Dim str\ As $tring str\ ` O100.2*O intG ` str\ a >asa la cadena a una ,aria1le num+rica. %ist1.AddItem Cos9str\: a Agrega el coseno del n)mero de la a cadena al cuadro de lista. str\ ` Cos9str\: a >asa el coseno a la ,aria1le de cadena. 7e4t1.7e4t ` str\ a $e imprime la ,aria1le de cadena en el a cuadro de te4to. nd $u1 Visual Basic con,ertir8 autom8ticamente las ,aria1les al tipo de dato apropiado. De1e tener cuidado cuando intercam1ie n)meros ( cadenas' (a 6ue pasar un ,alor no num+rico a una cadena producir8 un error de tiempo de ejecucin. l tipo de dato Boolean $i tiene una ,aria1le 6ue siempre contendr8 solamente in.ormacin del tipo ,erdadero ( .also' s? ( no o acti,ado o desacti,ado' puede declararla del tipo Boolean. l ,alor predeterminado de Boolean es &alse. n el siguiente ejemplo' 1lnjecutando es una ,aria1le Boolean 6ue almacena un simple s? o no. Dim 1lnjecutando As Boolean a Comprue1a si la cinta est8 en marc<a. I. =ecorder.Direction ` 1 7<en 1lnjecutando ` 7rue nd i. l tipo de dato Date %os ,alores de .ec<a ( <ora pueden almacenarse en el tipo de dato espec?fco Date en ,aria1les Variant. n am1os tipos se aplican las mismas caracter?sticas generales a las .ec<as. >ara o1tener m8s in.ormacin Vea la seccin OValores de .ec<a ( <ora almacenados en tipos VariantO en O7emas a,an2ados so1re VariantO. Cuando se con,ierten otros tipos de datos num+ricos en Date' los ,alores 6ue <a( a la i26uierda del signo decimal representan la in.ormacin de .ec<a' mientras 6ue los ,alores 6ue <a( a la derec<a del signo decimal representan la <ora. ;edianoc<e es 0 ( mediod?a es 0./. %os n)meros enteros negati,os representan .ec<as anteriores al *0 de diciem1re de 1899. 113
l tipo de dato #1ject %as ,aria1les #1ject se almacenan como direcciones de *2 1its 9! 1(tes: 6ue <acen re.erencia a o1jetos dentro de una aplicacin o de cual6uier otra aplicacin. 5na ,aria1le declarada como #1ject es una ,aria1le 6ue puede asignarse su1siguientemente 9mediante la instruccin $et: para re.erirse a cual6uier o1jeto real reconocido por la aplicacin. Dim o1jD1 As #1ject $et o1jD1 ` #penData1ase9OcUXV1/X1i1lio.md1O: Cuando declare ,aria1les de o1jeto' intente usar clases espec?fcas 9como 7e4tBo4 en ,e2 de Control o' en el caso anterior' Data1ase en ,e2 de #1ject: mejor 6ue el tipo gen+rico #1ject. Visual Basic puede resol,er re.erencias a las propiedades ( m+todos de o1jetos con tipos espec?fcos antes de 6ue ejecute una aplicacin. sto permite a la aplicacin .uncionar m8s r8pido en tiempo de ejecucin. n el 4aminador de o1jetos se muestran las clases espec?fcas. Cuando tra1aje con o1jetos de otras aplicaciones' en ,e2 de usar Variant o el tipo gen+rico #1ject' declare los o1jetos como se muestran en la lista Clases en el 4aminador de o1jetos. sto asegura 6ue Visual Basic recono2ca el tipo espec?fco de o1jeto al 6ue est8 <aciendo re.erencia' lo 6ue permite resol,er la re.erencia en tiempo de ejecucin. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de la creacin ( asignacin de o1jetos ( ,aria1les de o1jetos' ,ea OCrear o1jetosO m8s adelante en este mismo cap?tulo. Con,ertir tipos de datos Visual Basic proporciona ,arias .unciones de con,ersin 6ue puede usar para con,ertir ,alores en tipos de datos espec?fcos. >or ejemplo' para con,ertir un ,alor a Currenc(' utilice la .uncin CCurU >ago>or$emana ` CCur9<oras g >ago>or0ora: &unciones de con,ersin Con,ierten una e4presin en C1ool Boolean C1(te B(te Ccur Currenc( 118
Cdate Date CD1l Dou1le Cint Integer C%ng %ong C$ng $ingle C$tr $tring C,ar Variant CVrr rror @ota %os ,alores 6ue se pasan a una .uncin de con,ersin de1en ser ,8lidos para el tipo de dato de destino o se producir8 un error. >or ejemplo' si intenta con,ertir un tipo %ong en un Integer' el tipo %ong de1e estar en el inter,alo ,8lido del tipo de dato Integer. >ara o1tener m8s in.ormacin Bus6ue las .unciones espec?fcas de con,ersin en la )e(erencia del lenguaje. l tipo de dato Variant 5na ,aria1le Variant es capa2 de almacenar todos los tipos de datos defnidos en el sistema. @o tiene 6ue con,ertir entre esos tipos de datos si los asigna a una ,aria1le VariantW Visual Basic reali2a autom8ticamente cual6uier con,ersin necesaria. >or ejemploU Dim Alg)nValor a De .orma predeterminada es un tipo Variant. Alg)nValor ` O13O a Alg)nValor contiene O13O 9cadena de dos a caracteres:. Alg)nValor ` Alg)nValor Q 1/ a Alg)nValor a<ora contiene a el ,alor num+rico 2. Alg)nValor ` O5O D Alg)nValor a Alg)nValor a<ora contiene a O52O 9una cadena de dos 119
a caracteres:. $i 1ien puede reali2ar operaciones con ,aria1les Variant sin sa1er e4actamente el tipo de dato 6ue contienen' <a( algunas trampas 6ue de1e e,itar. $i reali2a operaciones aritm+ticas o .unciones so1re un Variant' el Variant de1e contener un n)mero. >ara o1tener m8s detalles' ,ea la seccin OValores num+ricos almacenados en tipos VariantO en O7emas a,an2ados so1re VariantO. $i est8 concatenando cadenas' utilice el operador D en ,e2 del operador E. >ara o1tener m8s detalles' ,ea la seccin OCadenas almacenadas en tipos VariantO en O7emas a,an2ados so1re VariantO. Adem8s de poder actuar como otros tipos de datos est8ndar' los Variant tam1i+n pueden contener tres ,alores especialesU mpt(' @ull ( rror. l ,alor mpt( A ,eces necesitar8 sa1er si se <a asignado un ,alor a una ,aria1le e4istente. 5na ,aria1le Variant tiene el ,alor mpt( antes de asignarle un ,alor. l ,alor mpt( es un ,alor especial distinto de 0' una cadena de longitud cero 9OO: o el ,alor @ull. >uede pro1ar el ,alor mpt( con la .uncin Ismpt(U I. Ismpt(9j: 7<en j ` 0 Cuando un Variant contiene el ,alor mpt(' puede usarlo en e4presionesW se trata como un 0 o una cadena de longitud cero' dependiendo de la e4presin. l ,alor mpt( desaparece tan pronto como se asigna cual6uier ,alor 9inclu(endo 0' una cadena de longitud cero o @ull: a una ,aria1le Variant. >uede esta1lecer una ,aria1le Variant de nue,o como mpt( si asigna la pala1ra cla,e mpt( al Variant. l ,alor @ull l tipo de dato Variant puede contener otro ,alor especialU @ull. @ull se utili2a com)nmente en aplicaciones de 1ases de datos para indicar datos desconocidos o 6ue .altan. De1ido a la .orma en 6ue se utili2a en las 1ases de datos' @ull tiene algunas caracter?sticas )nicasU 120
%as e4presiones 6ue utili2an @ull dan como resultado siempre un @ull. As?' se dice 6ue @ull se OpropagaO a tra,+s de e4presionesW si cual6uier parte de la e4presin da como resultado un @ull' la e4presin entera tiene el ,alor @ull. Al pasar un @ull' un Variant 6ue contenga un @ull o una e4presin 6ue d+ como resultado un @ull como argumento de la ma(or?a de las .unciones <ace 6ue la .uncin de,uel,a un @ull. %os ,alores @ull se propagan a tra,+s de .unciones intr?nsecas 6ue de,uel,en tipos de datos Variant. 7am1i+n puede asignar un @ull mediante la pala1ra cla,e @ullU j ` @ull >uede usar la .uncin Is@ull para pro1ar si una ,aria1le Variant contiene un @ullU I. Is@ull9G: And Is@ull9\: 7<en j ` @ull lse j ` 0 nd I. $i asigna @ull a una ,aria1le de un tipo 6ue no sea Variant' se producir8 un error intercepta1le. Asignar @ull a una ,aria1le Variant no pro,oca ning)n error ( el @ull se propagar8 a tra,+s de e4presiones 6ue contengan ,aria1les Variant 9@ull no se propaga a tra,+s de determinadas .unciones:. >uede de,ol,er @ull desde cual6uier procedimiento &unction con un ,alor de de,olucin de tipo Variant. @ull no se asigna a las ,aria1les a menos 6ue se <aga e4pl?citamente' por lo 6ue si no utili2a @ull en su aplicacin' no tendr8 6ue escri1ir cdigo 6ue comprue1e su e4istencia ( lo trate. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de cmo usar @ull en e4presiones' ,ea O@ullO en la )e(erencia del lenguaje. l ,alor rror n un Variant' rror es un ,alor especial 6ue se utili2a para indicar 6ue se <a producido una condicin de error en un procedimiento. $in em1argo' a di.erencia de otros tipos de error' no se produce el tratamiento de errores a ni,el normal de aplicacin. sto le permite a usted o a la propia aplicacin elegir alternati,as 1asadas en el ,alor del 121
error. %os ,alores de error se crean con,irtiendo n)meros reales en ,alores de error mediante la .uncin CVrr. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de cmo usar el ,alor rror en e4presiones' ,ea O&uncin CVrrO en la )e(erencia del lenguaje. >ara o1tener m8s in.ormacin acerca del tratamiento de errores' ,ea el cap?tulo 1* ODepurar el cdigo ( tratar erroresO. >ara o1tener m8s in.ormacin acerca del tipo de dato Variant' ,ea O7emas a,an2ados so1re VariantO. ;atrices $i <a programado en otros lenguajes' pro1a1lemente (a conocer8 el concepto de matrices. %as matrices le permiten <acer re.erencia por el mismo nom1re a una serie de ,aria1les ( usar un n)mero 9?ndice: para distinguirlas. sto le a(uda a crear cdigo m8s pe6ue-o ( simple en muc<as situaciones' (a 6ue puede esta1lecer 1ucles 6ue traten de .orma efciente cual6uier n)mero de casos mediante el n)mero del ?ndice. %as matrices tienen un l?mite superior e in.erior ( los elementos de la matri2 son contiguos dentro de esos l?mites. >uesto 6ue Visual Basic asigna espacio para cada n)mero de ?ndice' e,ite declarar las matrices m8s grandes de lo necesario. @ota %as matrices mostradas en esta seccin son matrices de ,aria1les' declaradas en el cdigo. $on distintas de las matrices de controles 6ue se especifca al esta1lecer la propiedad Inde4 de los controles en tiempo de dise-o. %as matrices de ,aria1les siempre son contiguasW a di.erencia de las matrices de controles' no puede cargar ( descargar elementos de la mitad de la matri2. 7odos los elementos de una matri2 tienen el mismo tipo de datos. >or supuesto' cuando el tipo de dato es Variant' los elementos indi,iduales pueden contener distintas clases de datos 9o1jetos' cadenas' n)meros' etc.:. >uede declarar una matri2 de cual6uiera de los tipos de datos .undamentales' inclu(endo los tipos defnidos por el usuario 9descritos en la seccin OCreacin de sus propios tipos de datosO' en O;8s acerca de la programacin O: ( ,aria1les de o1jetos 9descritas en O>rogramacin con o1jetosO:. n Visual Basic <a( dos tipos de matricesU las matrices de tamao ,jo 6ue tienen siempre el mismo tama-o ( las matrices din$micas cu(o tama-o cam1ia en tiempo de ejecucin. %as matrices din8micas se descri1en con m8s detalle en la seccin O;atrices din8micasO' m8s adelante en este mismo cap?tulo. 122
Declarar matrices de tama-o fjo 0a( tres .ormas de declarar una matri2 de tama-o fjo' dependiendo del alcance 6ue desee 6ue tenga la matri2U >ara declarar una matri. p"blica' utilice la instruccin >u1lic en la seccin Declaraciones de un mdulo para declarar la matri2. >ara crear una matri. a nivel de mdulo' utilice la instruccin >ri,ate en la seccin Declaraciones de un mdulo para declarar la matri2. >ara crear una matri. local' utilice la instruccin >ri,ate en un procedimiento para declarar la matri2. sta1lecer los l?mites superior e in.erior Cuando declare una matri2' ponga a continuacin del nom1re de la matri2 el l?mite superior entre par+ntesis. l l?mite superior no puede e4ceder el inter,alo de un tipo de dato %ong 9Q2.1!3.!8*."!8 a 2.1!3.!8*."!3:. >or ejemplo' estas declaraciones de matrices pueden aparecer en la seccin Declaraciones de un mduloU Dim Contadores91!: As Integer a 1/ elementos. Dim $umas920: As Dou1le a 21 elementos. >ara crear una matri2 p)1lica' simplemente utilice >u1lic en lugar de DimU >u1lic Contadores91!: As Integer >u1lic $umas920: As Dou1le %as mismas declaraciones dentro de un procedimiento utili2an DimU Dim Contadores91!: As Integer Dim $umas920: As Dou1le %a primera declaracin crea una matri2 de 1/ elementos' con n)meros de ?ndice 6ue ,an de 0 a 1!. %a segunda crea una matri2 de 21 elementos' con n)meros de ?ndice 6ue ,an de 0 a 20. l l?mite in.erior predeterminado es 0. >ara especifcar el l?mite in.erior' proporcinelo e4pl?citamente 9como tipo de dato %ong: mediante la pala1ra cla,e 7oU Dim Contadores91 7o 1/: As Integer Dim $umas9100 7o 120: As $tring 12*
n las anteriores declaraciones' los n)meros de ?ndice de Contadores ,an de 1 a 1/ ( los n)meros de ?ndice de $umas ,an de 100 a 120. ;atrices 6ue contienen otras matrices s posi1le crear una matri2 Variant ( llenarla con otras matrices de distintos tipos de datos. l cdigo siguiente crea dos matrices' una 6ue contiene enteros ( otra 6ue contiene cadenas. $e declara entonces una tercera matri2 Variant ( se llena con las matrices de enteros ( cadenas. >ri,ate $u1 Command1_ClicS9: Dim intG As Integer a Declara la ,aria1le de contador. a Declara ( llena una matri2 de enteros. Dim contadoresA9/: As Integer &or intG ` 0 7o ! contadoresA9intG: ` / @e4t intG a Declara ( llena una matri2 de cadenas. Dim contadoresB9/: As $tring &or intG ` 0 7o ! contadoresB9intG: ` OadisO @e4t intG Dim arrG92: As Variant a Declara una matri2 nue,a de dos a miem1ros. arrG91: ` contadoresA9: a %lena la matri2 con las otras a matrices. arrG92: ` contadoresB9: ;sgBo4 arrG91:92: a ;uestra un miem1ro de cada a matri2. ;sgBo4 arrG92:9*: nd $u1 ;atrices multidimensionales A ,eces necesitar8 <acer un seguimiento de la in.ormacin relacionada de una matri2. >or ejemplo' para <acer un seguimiento de cada p?4el de la pantalla del e6uipo' necesitar8 re.erirse a sus coordenadas G e \. sto se puede <acer mediante una matri2 multidimensional para almacenar los ,alores. n Visual Basic puede declarar matrices de ,arias dimensiones. >or ejemplo' la instruccin siguiente declara una matri2 1idimensional de 10 por Q10 en un procedimientoU $tatic ;atri2A99' 9: As Dou1le 12!
$e puede declarar una o am1as dimensiones con l?mites in.eriores e4pl?citosU $tatic ;atri2A91 7o 10' 1 7o 10: As Dou1le >uede <acer 6ue tenga m8s de dos dimensiones. >or ejemploU Dim ;ultiD9*' 1 7o 10' 1 7o 1/: sta declaracin crea una matri2 6ue tiene tres dimensiones con tama-os de ! por 10 por 1/. l n)mero total de elementos es el producto de las tres dimensiones' es decir' "00. @ota Cuando comience a agregar dimensiones a una matri2' el almacenamiento total 6ue necesita la matri2 se incrementa considera1lemente' por lo 6ue de1e usar las matrices multidimensionales con sumo cuidado. 7enga especial cuidado con las matrices Variant' (a 6ue son m8s grandes 6ue otros tipos de datos. 5sar 1ucles para manipular matrices >uede procesar efcientemente una matri2 multidimensional mediante 1ucles &or anidados. >or ejemplo' estas instrucciones iniciali2an cada elemento de ;atri2A a un ,alor 1as8ndose en su u1icacin en la matri2U Dim I As Integer' f As Integer $tatic ;atri2A91 7o 10' 1 7o 10: As Dou1le &or I ` 1 7o 10 &or f ` 1 7o 10 ;atri2A9I' f: ` I g 10 E f @e4t f @e4t I >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de los 1ucles' ,ea Ostructuras de 1ucleO' m8s adelante en este mismo cap?tulo. Instrucciones Open 0Instrucci!n1 Acti,a operaciones de entradaVsalida 9V$: con un arc<i,o. $inta4is 12/
#pen rutaacceso J&or modoL JAccess accesoL Jblo/uearL As JALn"meroarc&ivo J%en`longitudregistroL %a sinta4is de la instruccin #pen consta las siguientes partesU >arte Descripcin rutaacceso =e6uerido. 4presin de cadena 6ue especifca un nom1re de arc<i,oW puede incluir el directorio o carpeta ( la unidad de disco. modo =e6uerido. >ala1ra cla,e 6ue especifca el modo de arc<i,oU Append' Binar(' Input' #utput o =andom. $i no se especifca' el arc<i,o se a1re con acceso =andom. acceso #pcional. >ala1ra cla,e 6ue especifca las operaciones permitidas en el arc<i,o a1iertoU =ead' Hrite o =ead Hrite. blo/uear #pcional. >ala1ra cla,e 6ue especifca las operaciones permitidas en el arc<i,o a1ierto por otros procesosU $<ared' %ocS =ead' %ocS Hrite ( %ocS =ead Hrite. n"meroarc&ivo =e6uerido. 5n n)mero de arc<i,o ,8lido entre 1 ( /11 inclusi,e. >ara o1tener el n)mero del siguiente arc<i,o disponi1le se utili2a la .uncin &ree&ile. longitudregistro #pcional. @)mero igual o in.erior a *2.3"3 1(tes. n arc<i,os a1iertos para acceso aleatorio' este ,alor es la longitud del registro. >ara arc<i,os secuenciales' este ,alor es el n)mero de caracteres almacenados en 1).er. Comentarios Antes de poder ejecutar una operacin de V$ en un arc<i,o' +ste de1e estar a1ierto. #pen asigna un 1).er para operaciones de V$ con el arc<i,o ( determina el modo de acceso 6ue se de1e utili2ar con el 1).er. $i el arc<i,o especifcado con rutaacceso no e4iste' se crea al a1rir un arc<i,o en los modos Append' Binar(' #utput o =andom. $i el arc<i,o (a lo <a a1ierto otro proceso ( no se permite el tipo de acceso especifcado' la operacin #pen .racasa ( se produce un error. %a cl8usula %en se ignora si modo es Binar(. 12"
Importante n los modos Binar(' Input ( =andom se puede a1rir un arc<i,o utili2ando un n)mero de arc<i,o distinto sin necesidad de cerrarlo antes. n los modos Append ( #utput de1e cerrar el arc<i,o para poder a1rirlo con un n)mero de arc<i,o distinto. Close 0Instrucci!n1 7ermina las operaciones de entradaVsalida 9V$: en un arc<i,o a1ierto con la instruccin #pen. $inta4is Close Jlistan"merosarc&ivosL l argumento opcional listan"merosarc&ivos puede estar constituido por uno o m8s n)meros de arc<i,o usando la siguiente sinta4is' donde n"meroarc&ivo es cual6uier n)mero de arc<i,o ,8lidoU JJALn"meroarc&ivoL J' JALn"meroarc&ivoL . . . Comentarios $i omite listan"merosarc&ivos' se cierran todos los arc<i,os acti,os a1iertos con la instruccin #pen. Cuando se cierran arc<i,os 6ue se a1rieron para #utput o Append' el 1).er fnal de salida se gra1a en el 1).er del sistema operati,o 6ue corresponde a ese arc<i,o. 7odo el espacio del 1).er asociado con el arc<i,o cerrado se li1era. Cuando se ejecuta la instruccin Close' la asociacin de un arc<i,o con su n)mero de arc<i,o termina. Input 4 0Instrucci!n1 %ee datos de un arc<i,o secuencial a1ierto ( asigna esos datos a ,aria1les. $inta4is Input An"meroarc&ivo' listavariables %a sinta4is de la instruccin Input A consta de las siguientes partesU >arte Descripcin 123
n"meroarc&ivo =e6uerido. Cual6uier n)mero de arc<i,o ,8lido. listavariables =e6uerido. %ista de ,aria1les delimitada por comas 6ue se asignan a los ,alores 6ue se leen de un arc<i,oW no puede ser una matri2 o una ,aria1le de o1jeto. $in em1argo' es posi1le usar ,aria1les 6ue descri1en elementos de una matri2 o de un tipo defnido por el usuario. Comentarios %os datos le?dos con Input A se escri1en normalmente en un arc<i,o con Hrite A. 5se esta instruccin slo con arc<i,os a1iertos en modo Input o Binar(. Cuando se leen datos num+ricos o cadenas est8ndar' se asignan tal cual a ,aria1les. %a siguiente ta1la ilustra la manera en 6ue se trata la entrada de otros tipos de datosU Datos Valor asignado a la ,aria1le >unto ( coma de delimitacin o l?nea en 1lanco mpt( A@5%%A @ull A7=5A o A&A%$A 7rue o &alse Ayyyy-mm-dd &&0mm0ssA l d?a o la <ora representadas por la e4presin A==#= errornumberA errornumber 9la ,aria1le es un tipo Variant eti6uetada como un error: $e ignoran las comillas do1les 9OO: en la entrada de datos. %os elementos de datos de un arc<i,o de1en aparecer en el mismo orden 6ue tienen las ,aria1les en listavariables ( de1en coincidir con ,aria1les del mismo tipo de datos. $i una ,aria1le es num+rica ( los datos no lo son' se asigna un ,alor cero a esa ,aria1le. $i se llega al fn del arc<i,o cuando se est8 introduciendo un elemento de datos' se da por terminada la entrada ( se produce un error. 128
@ota >ara introducir correctamente en ,aria1les mediante Input A los datos le?dos de un arc<i,o' utilice siempre la instruccin Hrite A' en lugar de >rint A' para gra1ar la in.ormacin en los arc<i,os. %a utili2acin de Hrite A garanti2a 6ue cada campo de datos separado se delimite correctamente. 5rint 4 0Instrucci!n1 scri1e en un arc<i,o secuencial los datos con .ormato de presentacin. $inta4is >rint An"meroarc&ivo' JlistasalidaL %a sinta4is de la instruccin >rint A consta las siguientes partesU >arte Descripcin n"meroarc&i vo =e6uerido. Cual6uier n)mero de arc<i,o ,8lido. listasalida #pcional. 4presin o lista de e4presiones para imprimir. Valor l argumento listasalida tiene los ,alores siguientesU Jk$pc9n: h 7a1J9n:LlLJe%presinLJposicincar$cterL >arte Descripcin $pc9n: $e utili2a para insertar caracteres de espacio en la salida' donde n es el n)mero de caracteres de espacio para insertar. 7a19n: $e utili2a para colocar el punto de insercin en una n)mero de columna a1soluta' donde n es el n)mero de columna. 5tilice 7a1 sin argumentos para colocar el punto de insercin al comien2o de la siguiente 2ona de impresin. e%presin 4presin num+rica o e4presin de cadena 6ue se ,a a imprimir. 129
posicincar$cter specifca el punto de insercin del car8cter siguiente. $e utili2a un punto ( coma 9W: para especifcar 6ue el punto de insercin de1e estar inmediatamente despu+s del )ltimo car8cter mostrado. 5tilice 7a19n: para colocar el punto de insercin en un n)mero de columna a1soluta. 5tilice 7a1 sin argumentos para colocar el punto de insercin al comien2o de la siguiente 2ona de impresin. $i se omite posicincar$cter' el siguiente car8cter se imprime en la l?nea siguiente. Comentarios %os datos 6ue se escri1en en un arc<i,o con >rint A se leen normalmente con %ine Input A o Input. $i omite listasalida ( slo inclu(e un separador de listas despu+s de n"meroarc&ivo' se imprime una l?nea en 1lanco en el arc<i,o. $e pueden separar ,arias e4presiones por medio de un espacio en 1lanco o de un punto ( coma. n el caso de datos de tipo Boolean se imprime 7rue o &alse. %as pala1ras cla,e 7rue ( &alse no se traducen' cual6uiera 6ue sea la confguracin regional. %os datos de tipo Date se escri1en en el arc<i,o utili2ando el .ormato corto de .ec<a est8ndar reconocido por el sistema. Cuando no se pone el componente correspondiente a la .ec<a o a la <ora' o +ste es igual a cero' slo se escri1e en el arc<i,o la parte suministrada. @o se escri1e nada en el arc<i,o si los datos de listasalida son de tipo mpt(. $in em1argo' si listasalida es @ull' @ull se escri1e en el arc<i,o. >ara datos de rror' la salida aparece como rror cdigoerror. %a pala1ra cla,e rror no se traducen' cual6uiera 6ue sea la confguracin regional. 7odos los datos 6ue se escri1en en el arc<i,o con >rint A se adaptan regionalmenteW es decir' se da .ormato al dato usando el separador decimal adecuado. >uesto 6ue >rint A escri1e una imagen de los datos en el arc<i,o' de1e delimitar los datos para 6ue se impriman correctamente. $i utili2a 7a1 sin argumentos para mo,er la posicin de impresin a la siguiente 2ona de impresin' >rint A tam1i+n escri1e en el arc<i,o los espacios entre campos de impresin. 1*0
@ota $i en el .uturo desea leer datos de un arc<i,o por medio de la instruccin Input A' utilice la instruccin Hrite A en ,e2 de la instruccin >rint A para escri1ir los datos en el arc<i,o. %a utili2acin de Hrite A asegura la integridad de cada campo de datos separado' al delimitarlo adecuadamente' de modo 6ue se pueda leer otra ,e2 utili2ando Input A. %a utili2acin de Hrite A asegura tam1i+n 6ue los datos se puedan leer correctamente en cual6uier confguracin regional. Di 0Instrucci!n1 Declara ,aria1les ( les asigna espacio de almacenamiento. $inta4is Dim JHit<,entsL nombre'variableJ9Jsub#ndicesL:L JAs J@eML tipoL J' JHit<,entsL nombre'variableJ9Jsub#ndicesL:L JAs J@eML tipoLL . . . %a sinta4is de la instruccin Dim consta de las siguientes partesU >arte Descripcin Hit<,ents #pcional. >ala1ra cla,e 6ue especifca 6ue nombre'variable es una ,aria1le de o1jeto utili2ada para responder a e,entos desencadenados por un o1jeto Acti,eG. Hit<,ents solamente es ,8lido en mdulos de clase. >uede declarar tantas ,aria1les indi,iduales como desee mediante Hit<,ents' pero no puede crear matrices con Hit<,ents. @o puede utili2ar @eM con Hit<,ents. nombre' variable =e6uerido. @om1re de la ,aria1leW sigue las con,enciones est8ndar de nom1re de ,aria1le. sub#ndices #pcional. Dimensiones de la ,aria1le de matri2W se pueden declarar <asta "0 dimensiones m)ltiples. l argumento sub#ndices utili2a la sinta4is siguienteU Jin(erior 7oL superior J' Jin(erior 7oL superiorL . . . Cuando no se declara espec?fcamente en in(erior' el l?mite in.erior de una matri2 se controla mediante la instruccin #ption Base. ste l?mite in.erior es cero si no <a( ninguna instruccin #ption Base. @eM #pcional. >ala1ra cla,e 6ue <a1ilita la creacin impl?cita de un o1jeto. $i utili2a @eM cuando declara la ,aria1le de o1jeto' se crea una nue,a instancia del o1jeto como 1*1
primera re.erencia' de .orma 6ue no tiene 6ue utili2ar la instruccin $et para asignar la re.erencia del o1jeto. %a pala1ra cla,e @eM no se puede utili2ar para declarar ,aria1les de cual6uier tipo de datos' intr?nseco' para declarar instancias de o1jetos dependientes ni con Hit<,ents. tipo #pcional. 7ipo de datos de la ,aria1leW puede ser B(te' Boolean' Integer' %ong' Currenc(' $ingle' Dou1le' Decimal 9actualmente no admitida:' Date' $tring 9para cadenas de longitud ,aria1le:' $tring g lengt& 9para cadenas de longitud fja:' #1ject' Variant' un tipo defnido por el usuario' o un tipo de o1jeto. 5tilice una cl8usula distinta As tipo para cada ,aria1le 6ue defna. Comentarios %as ,aria1les declaradas con Dim en el ni,el de mdulo est8n disponi1les para todos los procedimientos disponi1les slo dentro de ese mdulo. n el ni,el de procedimiento' las ,aria1les slo est8n disponi1les dentro de ese procedimiento. 5tilice la instruccin Dim en el ni,el de mdulo o de procedimiento para declarar el tipo de datos de una ,aria1le. >or ejemplo' la siguiente instruccin declara una ,aria1le como Integer. Dim @)meroDempleados As Integer 7am1i+n puede utili2ar una instruccin Dim para declarar el tipo de o1jeto de una ,aria1le. %a siguiente l?nea declara una ,aria1le para una nue,a instancia de una <oja de c8lculo. Dim G As @eM HorSs<eet $i no utili2a la pala1ra cla,e @eM al declarar una ,aria1le de o1jeto' la ,aria1le 6ue se refere al o1jeto de1e asignarse a un o1jeto e4istente mediante la instruccin $et antes de su uso. 0asta 6ue se le asigne un o1jeto' la ,aria1le de o1jeto declarada tiene el ,alor especial @ot<ing' el cual indica 6ue no se refere a ninguna instancia en particular de un o1jeto. 7am1i+n puede utili2ar la instruccin Dim con par+ntesis ,ac?os para declarar matrices din8micas. Despu+s de declarar una matri2 din8mica' use la instruccin =eDim dentro de un procedimiento para defnir el n)mero de dimensiones ( elementos de la matri2. $i intenta ,ol,er a 1*2
declarar una dimensin para una ,aria1le de matri2 cu(o tama-o se <a especifcado e4pl?citamente en una instruccin >ri,ate' >u1lic o Dim' ocurrir8 un error. $i no especifca un tipo de datos o un tipo de o1jeto ( no e4iste ninguna instruccin De.tipo en el mdulo' la ,aria1le predeterminada ser8 Variant. Cuando se iniciali2an ,aria1les' una ,aria1le num+rica se iniciali2a con 0' una cadena de longitud ,aria1le se iniciali2a con una cadena de longitud 0 9OO: ( una cadena de longitud fja se llena con ceros. %as ,aria1les Variant se iniciali2an con mpt(. Cada elemento de una ,aria1le de un tipo defnido por el usuario se iniciali2a como si .uera una ,aria1le distinta. @ota Cuando utili2a la instruccin Dim en un procedimiento' generalmente pone la instruccin Dim al principio del mismo. #ption 4plicit 9Instruccin: $e usa en el ni,el de mdulo para .or2ar declaraciones e4pl?citas de todas las ,aria1les en dic<o mdulo. $inta4is Option E,plicit Comentarios $i se usa' la instruccin #ption 4plicit de1e aparecer en un mdulo antes de cual6uier procedimiento. Cuando #ption 4plicit aparece en un mdulo' de1e declarar e4pl?citamente todas las ,aria1les mediante las instrucciones Dim' >ri,ate' >u1lic' =eDim o $tatic. $i intenta usar un nom1re de ,aria1le no declarado' ocurrir8 un error en tiempo de compilacin. $i no usa la instruccin #ption 4plicit todas las ,aria1les no declaradas son Variant' a menos 6ue el tipo predeterminado est+ especifcado de otra manera con una instruccin De.tipo. @ota 5tilice #ption 4plicit para e,itar escri1ir incorrectamente el nom1re de una ,aria1le e4istente o para e,itar con.usiones en el cdigo' donde el alcance de la ,aria1le no est8 claro. 1**
Option Base 0Instrucci!n1 $e usa en el ni,el de mdulo para declarar el l?mite in.erior predeterminado para su1?ndices de matri2. $inta4is #ption Base k0 h 1l Comentarios Como la 1ase predeterminada es 0' la instruccin #ption Base nunca se re6uiere. $in em1argo' si usa la instruccin de1e aparecer en un mdulo antes de cual6uier procedimiento. #ption Base slo puede aparecer una ,e2 en un mdulo ( de1e preceder a las declaraciones de matri2 6ue inclu(en las dimensiones. @ota %a cl8usula 7o en las instrucciones Dim' >ri,ate' >u1lic' =eDim ( $tatic proporciona una .orma m8s Ze4i1le de controlar el inter,alo de los su1?ndices de una matri2. $in em1argo' si no esta1lece e4pl?citamente el l?mite in.erior con una cl8usula 7o' puede usar #ption Base para cam1iar el l?mite in.erior predeterminado a 1. %a 1ase de una matri2 creada con la .uncin Arra( o la pala1ra cla,e >aramArra( es ceroW #ption Base no a.ecta a >aramArra( 9o la .uncin Arra(' cuando se califca con el nom1re de su 1i1lioteca de tipo' por ejemplo VBA.Arra(:. %a instruccin #ption Base slo a.ecta el l?mite in.erior de las matrices en el mdulo donde se u1ica la instruccin. De)tipo 0Instrucciones1 $e usan en el ni,el de mdulo para esta1lecer el tipo de datos predeterminado para ,aria1les' argumentos pasado a procedimientos' ( el ,alor de,uelto por los procedimientos &unction ( >ropert( Pet cu(os nom1res comien2an con los caracteres especifcados. $inta4is De.Bool intervalo'letrasJ' intervalo'letrasL . . . De.B(te intervalo'letrasJ' intervalo'letrasL . . . De.Int intervalo'letrasJ' intervalo'letrasL . . . De.%ng intervalo'letrasJ' intervalo'letrasL . . . 1*!
De.Cur intervalo'letrasJ' intervalo'letrasL . . . De.$ng intervalo'letrasJ' intervalo'letrasL . . . De.D1l intervalo'letrasJ' intervalo'letrasL . . . De.Dec intervalo'letrasJ' intervalo'letrasL . . . De.Date intervalo'letrasJ' intervalo'letrasL . . . De.$tr intervalo'letrasJ' intervalo'letrasL . . . De.#1j intervalo'letrasJ' intervalo'letrasL . . . De.Var intervalo'letrasJ' intervalo'letrasL . . . l argumento re6uerido intervalo'letras posee la sinta4is siguienteU letra1JQletra2L %os argumentos letra1 ( letra2 especifcan el inter,alo de nom1res para el cual puede esta1lecer un tipo de datos predeterminado. Cada argumento representa la primera letra del nom1re de la ,aria1le' argumento' procedimiento &unction o procedimiento >ropert( Pet ( puede ser cual6uier letra del a1ecedario. n intervalo'letras no se distingue entre ma()sculas ( min)sculas. Comentarios l nom1re de la instruccin determina el tipo de datosU Instrucci n 7ipo de datos De.Bool Boolean De.B(te B(te De.Int Integer De.%ng %ong 1*/
De.Cur Currenc( De.$ng $ingle De.D1l Dou1le De.Dec Decimal 9no se admite actualmente: De.Date Date De.$tr $tring De.#1j #1ject De.Var Variant >or ejemplo' en el siguiente .ragmento de programa' ;ensaje es una ,aria1le de cadenaU De.$tr AQF . . . ;ensaje ` Ospacio de pila insufciente.O 5na instruccin De.tipo slo a.ecta al mdulo donde se usa. >or ejemplo' una instruccin De.Int en un mdulo slo a.ecta al tipo de datos predeterminado de las ,aria1les' los argumentos pasados a procedimientos ( el tipo de,uelto para los procedimientos &unction ( >ropert( Pet declarados en ese mduloW el tipo de datos predeterminado de ,aria1les' argumentos ( tipos de,ueltos en otros mdulos no se ,en a.ectados. $i no se declara e4pl?citamente con una instruccin De.tipo' el tipo de datos predeterminado para todas las ,aria1les' todos los argumentos' todos los procedimientos &unction ( todos los procedimientos >ropert( Pet es Variant. Cuando especifca un inter,alo de letras' generalmente defne el tipo de datos para ,aria1les 6ue comien2an con las letras de los 128 primeros caracteres del juego de caracteres. $in em1argo' cuando especifca el 1*"
inter,alo de letras AYj' esta1lece el tipo de datos predeterminado para todas las ,aria1les' inclu(endo cual6uiera 6ue comience con caracteres internacionales pro,enientes de la parte e4tendida del juego de caracteres 9128Y2//:. 7ras especifcar el inter,alo AYj no es posi1le seguir redefniendo cual6uier su1inter,alo de ,aria1les mediante instrucciones De.tipo. De <ec<o' una ,e2 defnido un inter,alo' si inclu(e una letra defnida anteriormente en otra instruccin De.tipo3 ocurrir8 un error. $in em1argo' puede especifcar e4pl?citamente el tipo de datos de cual6uier ,aria1le' defnida o no' mediante una instruccin Dim con una cl8usula As tipo. >or ejemplo' puede usar el siguiente cdigo en el ni,el de mdulo para defnir una ,aria1le como Dou1le incluso aun6ue el tipo de datos predeterminado sea IntegerU De.Int AQj Dim >orcentajeImpuesto As Dou1le %as instrucciones De.tipo no a.ectan a elementos de tipos defnidos por el usuario (a 6ue estos de1en declararse e4pl?citamente. &or666Ne,t 0Instrucci!n1 =epite un grupo de instrucciones un n)mero especifcado de ,eces. $inta4is &or contador ` principio 7o ,n J$tep incrementoL JinstruccionesL J4it &orL JinstruccionesL @e4t JcontadorL %a sinta4is de la instruccin &or...@e4t consta de las siguientes partesU >arte Descripcin !ontador =e6uerido. Varia1le num+rica 6ue se utili2a como contador de 1ucle. %a ,aria1le no puede ser Booleana ni un elemento de matri2. 1*3
4rincipiot =e6uerido. Valor inicial del contador. 5in =e6uerido. Valor fnal del contador. 6ncremento #pcional. Cantidad en la 6ue cam1ia el contador cada ,e2 6ue se ejecuta el 1ucle. $i no se especifca' el ,alor predeterminado de incremento es uno. 6nstrucciones #pcional. 5na o m8s instrucciones entre &or ( @e4t 6ue se ejecutan un n)mero especifcado de ,eces. Comentarios l argumento incremento puede ser positi,o o negati,o. l ,alor del argumento incremento determina la manera en 6ue se procesa el 1ucle' como se muestra a continuacinU Valor l 1ucle se ejcuta si >ositi,o o 0 contador m` ,n @egati,o contador i` ,n 5na ,e2 6ue se inicia el 1ucle ( se <an ejecutado todas las instrucciones en el 1ucle' incremento se suma a contador. n este punto' las instrucciones del 1ucle se pueden ejecutar de nue,o 9si se cumple la misma prue1a 6ue caus 6ue el 1ucle se ejecutara inicialmente: o 1ien se sale del 1ucle ( la ejecucin contin)a con la instruccin 6ue sigue a la instruccin @e4t. $ugerencia Cam1iar el ,alor de contador mientras est8 dentro de un 1ucle <ace di.?cil su lectura ( depuracin. $e pueden colocar en el 1ucle cual6uier n)mero de instrucciones 4it &or como una manera alternati,a de salir del mismo. %a instruccin 4it &or' 6ue se utili2a a menudo en la e,aluacin de alguna condicin 9por 1*8
ejemplo' I....7<en:' transfere el control a la instruccin 6ue sigue inmediatamente a la instruccin @e4t. $e pueden anidar 1ucles &or...@e4t' colocando un 1ucle &or...@e4t dentro de otro. >ara ello' proporcione a cada 1ucle un nom1re de ,aria1le )nico como su contador. %a siguiente construccin es correctaU &or I ` 1 7o 10 &or f ` 1 7o 10 &or I ` 1 7o 10 ... @e4t I @e4t f @e4t I @ota $i omite un contador en una instruccin @e4t' la ejecucin contin)a como si se <u1iera incluido. $e produce un error si se encuentra una instruccin @e4t antes de su instruccin &or correspondiente. &orat 0&unci!n1 De,uel,e un tipo Variant 9$tring: 6ue contiene una e4presin .ormateada de acuerdo a las instrucciones contenidas en una e4presin de .ormato. $inta4is &ormat9e%presinJ' (ormatoJ' primerd#adesemanaJ' primerd#adeaoLLL: %a sinta4is de la .uncin &ormat consta de las siguientes partesU >arte Descripcin e%presin =e6uerido. Cual6uier e4presin ,8lida. (ormato #pcional. 5na e4presin de .ormato defnida por el 1*9
usuario o con nom1re ,8lida. primerd#adesem ana #pcional. 5na constante 6ue especifca el primer d?a de la semana. primerd#adeao #pcional. 5na constante 6ue especifca la primera semana del a-o. Valores l argumento primerd#adesemana tiene estos ,aloresU Constante Valor Descripcin ,15se$(ste m 0 5tili2a el ,alor de A>I @%$. ,1$unda( 1 Domingo 9predeterminado: ,1;onda( 2 %unes ,17uesda( * ;artes ,1Hednesd a( ! ;i+rcoles ,17<ursda( / fue,es ,1&rida( " Viernes ,1$aturda( 3 $81ado 1!0
l argumento primerd#adeao tiene estos ,aloresU Constante Valor Descripcin ,15se$(stem 0 5tili2a el ,alor de A>I @%$. ,1&irstfan1 1 Comien2a con la semana donde est8 el 1 de enero 9predeterminado:. ,1&irst&ourDa(s 2 Comien2a con la primera semana del a-o 6ue tenga cuatro d?as como m?nimo. ,1&irst&ullHeeS * Comien2a con la primera semana completa del a-o. Comentarios >ara dar .ormatp 0aga esto @)meros 5tilice .ormatos num+ricos con nom1re predefnidos o cree .ormatos num+ricos defnidos por el usuario. &ec<as ( <oras 5tilice .ormatos de .ec<aV<ora con nom1re predefnidos o cree .ormatos de .ec<aV<ora defnidos por el usuario. @)meros seriales de .ec<a ( <ora 5tilice .ormatos de .ec<a ( <ora o .ormatos num+ricos. Cadenas Cree sus propios .ormatos de cadena defnidos por el usuario. 1!1
$i intenta dar .ormato a un n)mero sin especifcar (ormato' &ormat proporciona una .uncionalidad similar a la de la .uncin $tr. $in em1argo' los n)meros positi,os a los 6ue se les <a dado .ormato de cadena de caracteres mediante &ormat carecen del espacio inicial reser,ado para mostrar el signo del ,alor' mientras 6ue los con,ertidos utili2ando $tr conser,an el espacio inicial. 2ig"t 0&unci!n1 De,uel,e un tipo Variant 9$tring: 6ue contiene un n)mero especifcado de caracteres del lado derec<o de una cadena. $inta4is =ig<t9string3 leng&t: %a sinta4is de la .uncin =ig<t tiene estos argumentos con nom1reU >arte Descripcin string =e6uerido. 4presin de cadena desde la cual se de,uel,en los caracteres 6ue est8n m8s a la derec<a. $i string contiene @ull' se de,uel,e @ull. leng&t =e6uerido' un tipo Variant 9%ong:. 4presin num+rica 6ue indica cu8ntos caracteres se ,an a de,ol,er. $i es 0' se de,uel,e una cadena de longitud cero 9OO:. $i es ma(or o igual al n)mero de caracteres en string' se de,uel,e la cadena completa. Comentarios >ara determinar el n)mero de caracteres en string' utilice la .uncin %en. @ota 5tilice la .uncin =ig<tB con datos de 1(te incluidos en una cadena. n lugar de especifcar el n)mero de caracteres para de,ol,er' longitud especifca el n)mero de 1(tes. &oratos nu$ricos de%nidos por el usuario 0)unci!n &orat1 %a ta1la siguiente identifca los caracteres 6ue puede utili2ar para crear .ormatos defnidos por el usuarioU 1!2
Car8cter Descripcin @inguno ;uestra el n)mero sin .ormato. 90: ;arcador de posicin de d?gito. ;uestra un d?gito o un cero. $i la e4presin tiene un d?gito en la posicin donde aparece el 0 en la cadena de .ormato' se muestra el d?gitoW de lo contrario' se muestra un cero en esa posicin. $i el n)mero tiene menos d?gitos 6ue ceros 9a cual6uier lado del separador decimal: en la e4presin de .ormato' se muestran los ceros a la i26uierda o a la derec<a. $i el n)mero tiene m8s d?gitos a la derec<a del separador decimal 6ue ceros <a( a la derec<a del separador decimal en la e4presin de .ormato' se redondea el n)mero en tantos lugares decimales como ceros e4istan. $i el n)mero tiene m8s d?gitos a la i26uierda del separador decimal 6ue ceros <a( a la i26uierda del separador decimal en la e4presin de .ormato' se muestran los d?gitos adicionales sin modifcacin. 9A: ;arcador de posicin de d?gito. ;uestra un d?gito o nada. $i la e4presin tiene un d?gito en la posicin donde aparece A en la cadena de .ormato' se muestra el d?gitoW de lo contrario' no se muestra nada en esa posicin. ste s?m1olo .unciona como el marcador de posicin del d?gito 0' e4cepto en 6ue no se muestran los ceros a la i26uierda o a la derec<a si el n)mero tiene los mismos o menos d?gitos 6ue caracteres A <a( a cual6uier lado del separador decimal en la e4presin de .ormato. 9.: ;arcador de posicin decimal. n algunas confguraciones regionales' se utili2a una coma como separador decimal. l marcador de posicin decimal determina cu8ntos d?gitos se muestran a la i26uierda ( a la derec<a del separador decimal. $i la e4presin de .ormato contiene slo signos de n)mero a la i26uierda de este s?m1olo' los n)meros menores de 1 comien2an con un separador decimal. $i se desea 6ue siempre se muestre un cero a la i26uierda en los n)meros .raccionarios' utilice 0 como marcador de posicin del primer d?gito a la i26uierda del separador decimal. l car8cter real utili2ado como marcador de posicin decimal en la salida con .ormato depende del .ormato de n)mero 1!*
reconocido por el sistema. 9n: ;arcador de posicin de porcentaje. %a e4presin se multiplica por 100. l car8cter de porcentaje 9n: se inserta en la posicin donde aparece en la cadena de .ormato. 9': $eparador de millar. n algunas confguraciones regionales' se utili2a un punto como separador de millar. l separador de millar separa los millares de las centenas en un n)mero 6ue tiene cuatro o m8s lugares a la i26uierda del separador decimal. $e especifca el uso est8ndar del separador de millar si el .ormato contiene un separador de millar rodeado por los marcadores de posicin de d?gitos 90 o A:. Dos separadores de millar ad(acentes o un separador de millar inmediatamente a la i26uierda del separador decimal 9aun6ue no se especif6ue un decimal: signifca Oescalar el n)mero di,idi+ndolo por 1000' redonde8ndolo si es necesarioO. >or ejemplo' puede utili2ar la cadena de .ormato OAA0''O para representar 100 millones como 100. %os n)meros menores 6ue un milln se muestran como 0. Dos separadores de millar ad(acentes en cual6uier posicin di.erente a la inmediatamente a la i26uierda del separador decimal se consideran simplemente como se-al de 6ue se est8 usando un separador de millar. l car8cter real utili2ado como separador de millar en la salida con .ormato depende del .ormato de n)mero reconocido por el sistema. 9U: $eparador de <ora. n algunas confguraciones regionales se pueden utili2ar otros caracteres para representar el separador de <ora. l separador de <ora separa <oras' minutos ( segundos cuando los ,alores de <ora tienen .ormato. l car8cter real utili2ado como separador de <ora en .ormato ,iene determinado por las confguraciones del sistema. 9V: $eparador de .ec<a. n algunas confguraciones regionales se pueden utili2ar otros caracteres para representar el separador de .ec<a. l separado de .ec<a separa el d?a' el mes ( el a-o cuando los ,alores de .ec<a tienen .ormato. l car8cter real utili2ado como separador de .ec<a en .ormato ,iene determinado por las confguraciones del sistema. 1!!
9Q E eQ eE: &ormato de notacin cient?fca. $i la e4presin de .ormato contiene al menos un marcador de posicin de d?gito90 o A: a la derec<a de Q' E' eQ o eE' el n)mero se muestra en .ormato cient?fco ( se inserta o e entre el n)mero ( su e4ponente. l n)mero de marcadores de posicin de d?gito a la derec<a determina el n)mero de d?gitos en el e4ponente. 5tilice Q o eQ para colocar un signo menos junto a los e4ponentes negati,os ( E o eE para incluir un signo m8s junto a los e4ponentes positi,os. Q E o 9 : ;uestra un car8cter literal. >ara mostrar un car8cter di.erente a los enumerados' escri1a delante una 1arra in,ersa 9X: o escr?1alo entre comillas do1les 9O O:. 9X: ;uestra el car8cter siguiente en la cadena de .ormato. >ara mostrar un car8cter 6ue tiene un signifcado especial como un car8cter literal' escri1a delante 1arra in,ersa 9X:. %a 1arra in,ersa propiamente dic<a no se muestra. 5tili2ar la 1arra in,ersa es igual 6ue poner entre comillas do1les el car8cter siguiente. >ara mostrar una 1arra in,ersa' utilice dos 1arras in,ersas 9XX:. jemplos de caracteres 6ue no se pueden mostrar como caracteres literales son los caracteres de .ormato de .ec<a ( de <ora 9a' c' d' <' m' n' p' 6' s' t' M' (' V ( U:' los caracteres de .ormato num+rico 9A' 0' n' ' e' coma ( punto: ( los caracteres de .ormato de cadena 9p' D' m' i ( [:. 9OABCO: ;uestra la cadena 6ue <a( entre comillas do1les 9O O:. >ara incluir una cadena con (ormato desde el cdigo' de1e utili2ar C<r9*!: para encerrar el te4to 9*! es el cdigo de car8cter para las comillas do1les 9O O:. 1!/
C!digo ASCII &undaentos de prograaci!n Introducci!n a los procediientos >uede simplifcar las tareas de programacin si di,ide los programas en componentes lgicos m8s pe6ue-os. stos componentes' llamados procedimientos3 pueden con,ertirse en 1lo6ues 18sicos 6ue le permiten mejorar ( ampliar Visual Basic. %os procedimientos resultan mu( )tiles para condensar las tareas repetiti,as o compartidas' como c8lculos utili2ados .recuentemente' manipulacin de te4to ( controles' ( operaciones con 1ases de datos. 0a( dos ,entajas principales cuando se programa con procedimientosU %os procedimientos le permiten di,idir los programas en unidades lgicas discretas' cada una de las cuales se puede depurar m8s .8cilmente 6ue un programa entero sin procedimientos. %os procedimientos 6ue se utili2an en un programa pueden actuar como 1lo6ues de construccin de otros programas' normalmente con pocas o ninguna modifcacin. 1!"
n Visual Basic se utili2an ,arios tipos de procedimientosU >rocedimientos $u1 6ue no de,uel,en un ,alor. >rocedimientos &unction 6ue de,uel,en un ,alor. >rocedimientos >ropert( 6ue pueden de,ol,er ( asignar ,alores' as? como esta1lecer re.erencias a o1jetos. >ara o1tener m8s in.ormacin %os procedimientos >ropert( se descri1en en O>rogramar con o1jetosO. >ara aprender m8s acerca de los procedimientos $u1 ( &unction' ,ea los temas siguientesU >rocedimientos $u1 An8lisis de los procedimientos $u1 ( cmo usarlos. >rocedimientos &unction Introduccin a los procedimientos &unction ( cmo usarlos. 7ra1ajar con procedimientos Introduccin a las llamadas a procedimientos desde una aplicacin. >asar argumentos a procedimientos $e muestra cmo pasar datos a procedimientos mediante argumentos. 5rocediientos Su* 5n procedimiento $u1 es un 1lo6ue de cdigo 6ue se ejecuta como respuesta a un e,ento. Al di,idir el cdigo de un mdulo en procedimientos $u1' es m8s sencillo encontrar o modifcar el cdigo de la aplicacin. %a sinta4is de un procedimiento $u1 es la siguienteU J>ri,ateh>u1licLJ$taticL$u1 nombre4rocedimiento 9argumentos: instrucciones nd $u1 Cada ,e2 6ue se llama al procedimiento se ejecutan las instrucciones 6ue <a( entre $u1 ( nd $u1. $e pueden colocar los procedimientos $u1 en mdulos est8ndar' mdulos de clase ( mdulos de .ormulario. De .orma predeterminada' los procedimientos $u1 son >u1lic en todos los mdulos' lo 6ue signifca 6ue se les puede llamar desde cual6uier parte de la aplicacin. 1!3
%os argumentos de un procedimiento son como las declaraciones de ,aria1lesW se declaran ,alores 6ue se pasan desde el procedimiento 6ue <ace la llamada. =esulta mu( )til en Visual Basic distinguir entre dos tipos de procedimientos $u1' procedimientos generales ( procedimientos de evento. >rocedimientos generales 5n procedimiento general indica a la aplicacin cmo reali2ar una tarea espec?fca. 5na ,e2 6ue se defne un procedimiento general' se le de1e llamar espec?fcamente desde la aplicacin. >or el contrario' un procedimiento de e,ento permanece inacti,o <asta 6ue se le llama para responder a e,entos pro,ocados por el usuario o desencadenados por el sistema. B>or 6u+ crear procedimientos generalesC 5na ra2n es 6ue muc<os procedimientos de e,ento distintos pueden necesitar 6ue se lle,en a ca1o las mismas acciones. s una 1uena estrategia de programacin colocar las instrucciones comunes en un procedimiento distinto 9un procedimiento general: ( <acer 6ue los procedimientos de e,ento lo llamen. sto elimina la necesidad de duplicar cdigo ( tam1i+n <ace 6ue la aplicacin sea m8s .8cil de mantener. >or ejemplo' la aplicacin de ejemplo VC= utili2a un procedimiento general al 6ue llaman los e,entos ClicS de distintos 1otones de despla2amiento. %a fgura /.3 muestra la utili2acin de un procedimiento general. l cdigo de los e,entos ClicS llama al procedimiento $u1 Button;anager 6ue ejecuta su propio cdigo ( de,uel,e el control al procedimiento de e,ento ClicS. &igura /.3 Cmo llaman los procedimientos de e,ento a procedimientos generales 5rocediientos de e#ento Cuando un o1jeto en Visual Basic reconoce 6ue se <a producido un e,ento' llama autom8ticamente al procedimiento de e,ento utili2ando el 1!8
nom1re correspondiente al e,ento. Como el nom1re esta1lece una asociacin entre el o1jeto ( el cdigo' se dice 6ue los procedimientos de e,ento est8n adjuntos a .ormularios ( controles. 5n procedimiento de e,ento de un control com1ina el nom1re real del control 9especifcado en la propiedad @ame:' un car8cter de su1ra(ado 9_: ( el nom1re del e,ento. >or ejemplo' si desea 6ue un 1otn de comando llamado cmd>la( llame a un procedimiento de e,ento cuando se <aga clic en +l' utilice el procedimiento cmd>la(_ClicS. 5n procedimiento de e,ento de un .ormulario com1ina la pala1ra O&ormO' un car8cter de su1ra(ado ( el nom1re del e,ento. $i desea 6ue un .ormulario llame a un procedimiento de e,ento cuando se <ace clic en +l' utilice el procedimiento &orm_ClicS. 9Como los controles' los .ormularios tienen nom1res )nicos' pero no se utili2an en los nom1res de los procedimientos de e,ento.: $i est8 utili2ando el .ormulario ;DI' el procedimiento de e,ento com1ina la pala1ra O;DI&ormO' un car8cter de su1ra(ado ( el nom1re del e,ento' como ;DI&orm_%oad. 7odos los procedimientos de e,ento utili2an la misma sinta4is general. $inta4is de un e,ento de control $inta4is de un e,ento de .ormulario >ri,ate $u1 nombrecontrol7ombreevento 9argumentos : instrucciones nd $u1 >ri,ate $u1 &orm_nombreevento 9argumentos: instrucciones nd $u1 Aun6ue puede escri1ir procedimientos de e,ento nue,os' es m8s sencillo usar los procedimientos de cdigo 6ue .acilita Visual Basic' 6ue inclu(en autom8ticamente los nom1res correctos de procedimiento. >uede seleccionar una plantilla en la ,entana ditor de cdigo si selecciona un o1jeto en el cuadro #1jeto ( selecciona un procedimiento en el cuadro >rocedimiento. 7am1i+n es con,eniente esta1lecer la propiedad @ame de los controles antes de empe2ar a escri1ir los procedimientos de e,ento para los mismos. $i cam1ia el nom1re de un control tras ,incularle un procedimiento' de1er8 cam1iar tam1i+n el nom1re del procedimiento para 6ue coincida con el nue,o nom1re del control. De lo contrario' 1!9
Visual Basic no ser8 capa2 de <acer coincidir el control con el procedimiento. Cuando el nom1re de un procedimiento no coincide con el nom1re de un control' se con,ierte en un procedimiento general. >ara o1tener m8s in.ormacin Visual Basic reconoce una gran ,ariedad de e,entos para cada clase de .ormulario ( control. >ara o1tener una e4plicacin de los e,entos' ,ea la )e(erencia del lenguaje. 5rocediientos &unction Visual Basic inclu(e .unciones incorporadas o intr?nsecas' como $6r' Cos o C<r. Adem8s' puede usar la instruccin &unction para escri1ir sus propios procedimientos &unction. %a sinta4is de un procedimiento &unction es la siguienteU J>ri,ateh>u1licLJ$taticL&unction nombre4rocedimiento 9argumentos: JAs tipoL instrucciones nd &unction Al igual 6ue un procedimiento $u1' un procedimiento &unction es un procedimiento di.erente 6ue puede tomar argumentos' reali2ar una serie de instrucciones ( cam1iar el ,alor de los argumentos. A di.erencia de los procedimientos $u1' los procedimientos &unction pueden de,ol,er un ,alor al procedimiento 6ue reali2a la llamada. 0a( tres di.erencias entre los procedimientos $u1 ( &unctionU Peneralmente' se llama a una .uncin inclu(endo el nom1re ( los argumentos del procedimiento en la parte derec<a de una instruccin o e4presin ma(or 9valor)etorno 8 (uncin9::. %os procedimientos &unction tienen tipos de datos' al igual 6ue las ,aria1les. sto determina el tipo del ,alor de,uelto. 9n ausencia de la cl8usula As' el tipo es el tipo predeterminado Variant.: $e de,uel,e un ,alor asign8ndole al propio nombre4rocedimiento. Cuando el procedimiento &unction de,uel,e un ,alor' se puede con,ertir en parte de una e4presin ma(or. >or ejemplo' podr?a escri1ir una .uncin 6ue calculara el tercer lado' o <ipotenusa' de un tri8ngulo rect8ngulo' dados los ,alores de los otros dos ladosU &unction 0ipotenusa 9A As Integer' B As Integer: _ As $tring 1/0
0ipotenusa ` $6r9A q 2 E B q 2: nd &unction $e llama a un procedimiento &unction de la misma .orma 6ue a las .unciones incorporadas en Visual BasicU %a1el1.Caption ` 0ipotenusa9CInt97e4t1.7e4t:' CInt97e4t2.7e4t:: strG ` 0ipotenusa9Hidt<' 0eig<t: >ara o1tener m8s in.ormacin >ara o1tener m8s detalles acerca del procedimiento &unction' ,ea O&unction 9Instruccin:O en la )e(erencia del lenguaje. %as t+cnicas utili2adas para llamar a todos los tipos de procedimientos se e4plican en la seccin O%lamar a procedimientosO' m8s adelante en este mismo cap?tulo. 7ra1ajar con procedimientos Crear procedimientos nue,os >ara crear un procedimiento general nue,o scri1a el enca1e2ado de un procedimiento en la ,entana Cdigo ( presione @7=A=. l enca1e2ado del procedimiento puede ser tan simple como $u1 o &unction seguido de un nom1re. >or ejemplo' puede especifcar cual6uiera de los siguientesU $u1 Actuali2ar&orm 9: &unction #1tenerCoord 9: Visual Basic responde completando la plantilla del nue,o procedimiento. $eleccionar procedimientos e4istentes >ara ,er un procedimiento en el mdulo actual >ara ,er un procedimiento general e4istente' seleccione O9Peneral:O en el cuadro #1jeto de la ,entana Cdigo ( seleccione el procedimiento en el cuadro >rocedimiento. Yo 1ienY >ara ,er un procedimiento de e,ento' seleccione el o1jeto apropiado en el cuadro #1jeto de la ,entana Cdigo ( seleccione el e,ento en el cuadro >rocedimiento. >ara ,er un procedimiento de otro mdulo 1/1
1. n el men) Ver' elija 4aminador de o1jetos. 2. $eleccione el pro(ecto en el cuadro >ro(ectoVBi1lioteca. *. $eleccione el mdulo en la lista Clases ( el procedimiento en la lista ;iem1ros de. !. lija Ver defnicin. %lamar a procedimientos %as t+cnicas de llamada a procedimientos ,ar?an dependiendo del tipo de procedimiento' dnde est+ u1icado ( cmo se utilice en la aplicacin. %as secciones siguientes descri1en cmo llamar a procedimientos $u1 ( &unction. %lamar a procedimientos $u1 5n procedimiento $u1 difere de un procedimiento &unction en 6ue al procedimiento $u1 no se le puede llamar mediante su nom1re en una e4presin. %a llamada a un procedimiento $u1 es una instruccin )nica. Adem8s' un procedimiento $u1 no de,uel,e un ,alor en su nom1re como <ace una .uncin. $in em1argo' al igual 6ue &unction' un procedimiento $u1 puede modifcar los ,alores de las ,aria1les 6ue se le pasan. 0a( dos .ormas de llamar a un procedimiento $u1U a Am1as instrucciones llaman a un $u1 denominado ;i>roc. Call ;i>roc 9>rimerArgumento' $egundoArgumento: ;i>roc >rimerArgumento' $egundoArgumento #1ser,e 6ue cuando utili2a la sinta4is Call' de1e poner los argumentos entre par+ntesis. $i omite la pala1ra cla,e Call' de1er8 tam1i+n omitir los par+ntesis alrededor de los argumentos. Llaar a procediientos &unction @ormalmente se llama a un procedimiento de .uncin 6ue se <a escrito de la misma .orma en 6ue se llama a una .uncin intr?nseca de Visual Basic como A1sW es decir' utili2ando su nom1re en una e4presinU a %as instrucciones siguientes llamar?an a una .uncin _ a llamada 7oDec. >rint 10 g Adec G ` Adec I. Adec ` 10 7<en De1ug.>rint O&uera del inter,aloO 1/2
G ` #tra&uncin910 g Adec: 7am1i+n es posi1le llamar a una .uncin igual 6ue se llama a un procedimiento $u1. %as instrucciones siguientes llaman a la misma .uncinU Call \ear9@oM: \ear @oM Cuando llama a una .uncin de esta manera' Visual Basic desec<a el ,alor de,uelto. %lamar a procedimientos en otros mdulos $e puede llamar a los procedimientos p)1licos de otros mdulos desde cual6uier parte del pro(ecto. @ecesitar8 especifcar el mdulo 6ue contiene el procedimiento al 6ue est8 llamando. %as t+cnicas para <acerlo ,ar?an' dependiendo de si el procedimiento est8 u1icado en un mdulo est8ndar' de .ormulario o de clase. >rocedimientos en .ormularios 7odas las llamadas 6ue se <acen desde .uera del mdulo de .ormulario de1en se-alar al mdulo de .ormulario 6ue contiene el procedimiento. $i un procedimiento llamado $ome$u1 est8 en un mdulo de .ormulario llamado &orm1' puede llamar al procedimiento en &orm1 mediante esta instruccinU Call &orm1.$ome$u19argumentos: >rocedimientos en mdulos de clase Al igual 6ue llamar a un procedimiento en un .ormulario' llamar a un procedimiento en un mdulo de clase re6uiere 6ue la llamada al procedimiento est+ califcada con una ,aria1le 6ue se-ale a una instancia de la clase. >or ejemplo' DemoClass es una instancia de una clase llamada Class1U Dim DemoClass as @eM Class1 DemoClass.$ome$u1 $in em1argo' a di.erencia de un .ormulario' no se puede usar el nom1re de la clase como califcador cuando se <ace re.erencia a una instancia de la clase. De1e declararse primero la instancia de la clase como una ,aria1le de o1jeto 9en este caso' DemoClass: ( el nom1re de la clase de1e <acer re.erencia a ella. 1/*
>ara o1tener m8s in.ormacin >uede encontrar m8s detalles so1re ,aria1les de o1jetos ( mdulos de clase en O>rogramar con o1jetosO. 5rocediientos en !dulos est/ndar $i el nom1re de un procedimiento es )nico' no necesita incluir el nom1re del mdulo en la llamada. 5na llamada desde dentro o .uera del mdulo <ar8 re.erencia a ese procedimiento )nico. 5n procedimiento es )nico si slo aparece en un lugar. $i dos o m8s mdulos contienen un procedimiento con el mismo nom1re' de1e califcarlo con el nom1re del mdulo. 5na llamada a un procedimiento com)n desde el mismo mdulo ejecuta el procedimiento de ese mdulo. >or ejemplo' con un procedimiento llamado Common@ame en ;odule1 ( ;odule2' una llamada a Common@ame desde ;odule2 ejecutar8 el procedimiento Common@ame de ;odule2 ( no el procedimiento Common@ame de ;odule1. n una llamada a un nom1re de procedimiento com)n desde otro mdulo' de1e especifcar el mdulo del procedimiento. >or ejemplo' si desea llamar al procedimiento Common@ame de ;odule2 desde ;odule1' utiliceU ;odule2.Common@ame9argumentos: >asar argumentos a procedimientos @ormalmente el cdigo de un procedimiento necesita cierta in.ormacin so1re el estado del programa para reali2ar su tra1ajo. sta in.ormacin consiste en ,aria1les 6ue se pasan al procedimiento cuando se le llama. Cuando se pasa una ,aria1le a un procedimiento' se llama argumento. 7ipos de datos de los argumentos %os argumentos de los procedimientos 6ue escri1a tienen el tipo de dato Variant de .orma predeterminada. $in em1argo' puede declarar otros tipos de datos para los argumentos. >or ejemplo' la .uncin siguiente acepta una cadena ( un enteroU &unction Fu+Comer 9D?a$emana As $tring' 0ora _ As Integer: As $tring a De,uel,e el men) del almuer2o 1as8ndose en el d?a ( la <ora. I. D?a$emana ` OViernesO t<en Fu+Comer ` O>escadoO lse Fu+Comer ` O>olloO 1/!
nd I. I. 0ora i ! 7<en Fu+Comer ` ODemasiado tardeO nd &unction >ara o1tener m8s in.ormacin Anteriormente en este cap?tulo encontrar8 m8s detalles acerca de los tipos de datos de Visual Basic. 7am1i+n puede consultar los tipos de datos espec?fcos en la )e(erencia del lenguaje. >asar argumentos por ,alor $lo se pasa una copia de la ,aria1le cuando se pasa un argumento por ,alor. $i el procedimiento cam1ia el ,alor' el cam1io a.ecta slo a la copia ( no a la ,aria1le propiamente dic<a. 5tilice la pala1ra cla,e B(Val para indicar un argumento pasado por ,alor. >or ejemploU $u1 Cuentas 9B(Val int@umCuenta as Integer: . . a >onga a6u? sus instrucciones. . nd $u1 >asar argumentos por re.erencia >asar argumentos por re.erencia le da al procedimiento acceso al contenido real de la ,aria1le en su u1icacin de direccin de memoria. Como resultado' el procedimiento al 6ue se <a pasado el ,alor de la ,aria1le se puede modifcar de .orma permanente. %a .orma predeterminada de pasar ,alores en Visual Basic es por re.erencia. $i especifca el tipo de dato de un argumento 6ue se pasa por re.erencia' de1e pasar un ,alor de ese tipo para el argumento. >uede eludirlo si pasa una e4presin en ,e2 de un tipo de dato como argumento. Visual Basic e,al)a la e4presin ( la pasa como el tipo re6uerido si puede. %a .orma m8s sencilla de con,ertir una ,aria1le en una e4presin es ponerla entre par+ntesis. >or ejemplo' para pasar una ,aria1le declarada como entero a un procedimiento 6ue espera una cadena como argumento' de1er?a <acer lo siguienteU $u1 >rocedimientoFue%lama 9: Dim intG As Integer intG ` 12 g * &oo9intG: nd $u1 1//
$u1 &oo9Bar As $tring: ;sgBo4 Bar al ,alor de Bar es la cadena O*"O. nd $u1 5sar argumentos opcionales >uede especifcar argumentos a un procedimiento como opcionales si coloca la pala1ra cla,e #ptional en la lista de argumentos. $i especifca un argumento opcional' todos los argumentos su1siguientes de la lista de argumentos de1en ser tam1i+n opcionales ( se de1en declarar con la pala1ra cla,e #ptional. %os dos .ragmentos de cdigo de ejemplo 6ue se muestran a continuacin suponen 6ue <a( un .ormulario con un 1otn de comando ( un cuadro de lista. >or ejemplo' este cdigo proporciona todos los argumentos como opcionalesU Dim str@om1re As $tring Dim strAddress As $tring $u1 %ist7e4t9#ptional 4 As $tring' #ptional ( _ As $tring: %ist1.AddItem 4 %ist1.AddItem ( nd $u1 >ri,ate $u1 Command1_ClicS9: str@om1re ` Osunom1reO strDireccin ` 12*!/ a $e proporcionan am1os argumentos. Call %ist7e4t9str@om1re' strDireccin: nd $u1 $in em1argo' este cdigo no proporciona todos los argumentos como opcionalesU Dim str@om1re As $tring Dim ,arDireccin As Variant $u1 %ist7e4t94 As $tring' #ptional ( As Variant: %ist1.AddItem 4 I. @ot Is;issing9(: 7<en %ist1.AddItem ( nd I. nd $u1 >ri,ate $u1 Command1_ClicS9: str@om1re ` Osunom1reO a @o se proporciona el segundo 1/"
a argumento. Call %ist7e4t9str@om1re: nd $u1 n caso de 6ue no se proporcione un argumento opcional' se asigna el argumento como un tipo Variant con el ,alor mpt(. l ejemplo anterior muestra cmo pro1ar si se <an perdido argumentos opcionales mediante la .uncin Is;issing. >roporcionar un ,alor predeterminado a un argumento opcional 7am1i+n es posi1le especifcar un ,alor predeterminado para un argumento opcional. l siguiente ejemplo de,uel,e un ,alor predeterminado si no se pasa el argumento opcional al procedimiento &unctionU $u1 %ist7e4t94 As $tring' #ptional ( As _ Integer ` 12*!/: %ist1.AddItem 4 %ist1.AddItem ( nd $u1 >ri,ate $u1 Command1_ClicS9: str@om1re ` Osunom1reO a @o se proporciona el segundo a argumento. Call %ist7e4t9str@om1re: a Agrega Osunom1reO ( O12*!/O. nd $u1 5sar un n)mero indefnido de argumentos Peneralmente' el n)mero de argumentos en la llamada a un procedimiento de1e ser el mismo 6ue los especifcados en el procedimiento. 5sar la pala1ra cla,e >aramArra( le permite especifcar 6ue el procedimiento aceptar8 un n)mero ar1itrario de argumentos. so le permite escri1ir .unciones como $umU Dim 4 As Integer Dim ( As Integer Dim int$um As Integer $u1 $um9>aramArra( int@ums9:: &or ac< 4 In int@ums ( ` ( E 4 @e4t 4 int$um ` ( nd $u1 1/3
>ri,ate $u1 Command1_ClicS9: $um 1' *' /' 3' 8 %ist1.AddItem int$um nd $u1 Crear instrucciones m8s sencillas mediante argumentos con nom1re n muc<as .unciones' instrucciones ( m+todos incorporados' Visual Basic proporciona la opcin de usar argumentos con nombre como m+todo a1re,iado para escri1ir ,alores de argumentos. Con los argumentos con nom1re puede proporcionar cual6uiera o todos los argumentos' en cual6uier orden' asignando un ,alor al argumento con nom1re. >ara ello' escri1a el nom1re del argumento ( un signo de dos puntos seguido del signo igual ( el ,alor 9;iArgumentoU` O5nValorO: ( colocando esta asignacin en cual6uier secuencia delimitada con comas. #1ser,e 6ue los argumentos del ejemplo siguiente est8n en orden in,erso al de los argumentos esperadosU &unction %ist7e4t9str@om1re As $tring' #ptional strDireccin As $tring: %ist1.AddItem str@om1re %ist2.AddItem strDireccin nd $u1 >ri,ate $u1 Command1_ClicS9: %ist7e4t strDireccinU`O12*!/O' str@om1reU`O$u nom1reO nd $u1 sto resulta especialmente )til si sus procedimientos tienen ,arios argumentos opcionales 6ue no siempre necesita especifcar. Determinar el soporte de argumentos con nom1re >ara determinar 6u+ .unciones' instrucciones ( m+todos aceptan argumentos con nom1re' utilice la caracter?stica In.ormacin r8pida autom8tica de la ,entana Cdigo' comprue1e el 4aminador de o1jetos o ,ea la )e(erencia del lenguaje. 7enga en cuenta lo siguiente cuando tra1aje con argumentos con nom1reU l %os m+todos de o1jetos de la 1i1lioteca de o1jetos de Visual Basic 9VB: no aceptan argumentos con nom1re' ni tampoco lo <acen todas las pala1ras cla,e del lenguaje de la 1i1lioteca de o1jetos de Visual Basic para aplicaciones 9VBA:. n la sinta4is' los argumentos con nom1re se muestran en negrita ( cursi,a. 7odos los dem8s argumentos se muestran slo en cursi,a. 1/8
Importante @o puede usar argumentos con nom1re para e,itar especifcar argumentos re6ueridos. $lo puede omitir los argumentos opcionales. n las 1i1liotecas de o1jetos de Visual Basic 9VB: ( Visual Basic para aplicaciones 9VBA:' el 4aminador de o1jetos pone los argumentos opcionales entre corc<etes J L. >ara o1tener m8s in.ormacin Vea OB(ValO' OB(=e.O' O#ptionalO ( O>aramArra(O en la )e(erencia del lenguaje. Introducci!n a las estructuras de control %as estructuras de control le permiten controlar el Zujo de ejecucin del programa. $i no se controla mediante instrucciones de control de Zujo' la lgica del programa Zuir8 por las instrucciones de i26uierda a derec<a ( de arri1a a a1ajo. Aun6ue se pueden escri1ir algunos programas sencillos con un Zujo unidireccional ( aun6ue se puede controlar parte del Zujo mediante operadores para regular la precedencia de las operaciones' la ma(or parte del poder ( utilidad de un lenguaje de programacin deri,a de su capacidad de cam1iar el orden de las instrucciones mediante estructuras ( 1ucles. >ara sa1er m8s acerca de estructuras de control espec?fcas' ,ea los temas siguientesU structuras de decisin Introduccin a las estructuras de decisin utili2adas para 1i.urcar. structuras de 1ucle Introduccin a las estructuras de 1ucle utili2adas para repetir procesos. 7ra1ajar con estructuras de control Conceptos 18sicos del tra1ajo con estructuras de control en el cdigo. Estructuras de decisi!n %os procedimientos de Visual Basic pueden pro1ar condiciones (' dependiendo de los resultados de la prue1a' reali2ar di.erentes operaciones. ntre las estructuras de decisin 6ue acepta Visual Basic se inclu(en las siguientesU I....7<en I....7<en...lse $elect Case 1/9
I....7<en 5se la estructura I....7<en para ejecutar una o m8s instrucciones 1asadas en una condicin. >uede usar la sinta4is de una l?nea o un blo/ue de ,arias l?neasU I. condicin 7<en instruccin I. condicin 7<en instrucciones nd I. !ondicin normalmente es una comparacin' pero puede ser cual6uier e4presin 6ue d+ como resultado un ,alor num+rico. Visual Basic interpreta este ,alor como 7rue o &alseW un ,alor num+rico cero es &alse ( se considera 7rue cual6uier ,alor num+rico distinto de cero. $i condicin es 7rue' Visual Basic ejecuta todas las instrucciones 6ue siguen a la pala1ra cla,e 7<en. >uede usar la sinta4is de una l?nea o de ,arias l?neas para ejecutar una instruccin 1asada en una condicin 9estos dos ejemplos son e6ui,alentes:U I. cual6uier&ec<a m @oM 7<en cual6uier&ec<a ` @oM I. cual6uier&ec<a m @oM 7<en cual6uier&ec<a ` @oM nd I. #1ser,e 6ue el .ormato de una )nica l?nea de I....7<en no utili2a la instruccin nd I.. $i desea ejecutar m8s de una l?nea de cdigo cuando condicin sea 7rue' de1e usar la sinta4is de 1lo6ue de ,arias l?neas I....7<en...nd I.. I. cual6uier&ec<a m @oM 7<en cual6uier&ec<a ` @oM 7imer1.na1led ` &alse a Desacti,a el control 7imer. nd I. I....7<en...lse 5tilice un 1lo6ue I....7<en...lse para defnir ,arios 1lo6ues de instrucciones' uno de los cuales se ejecutar8U I. condicin1 7<en Jblo/ue de instrucciones 1L JlseI. condicin2 7<en Jblo/ue de instrucciones 2LL ... 1"0
Jlse Jblo/ue de instrucciones nLL nd I. Visual Basic e,al)a primero condicin1. $i es &alse' Visual Basic procede a e,aluar condicin2 ( as? sucesi,amente' <asta 6ue encuentre una condicin 7rue. Cuando encuentra una condicin 7rue' Visual Basic ejecuta el 1lo6ue de instrucciones correspondientes ( despu+s ejecuta el cdigo 6ue sigue a nd I.. #pcionalmente' puede incluir un 1lo6ue de instrucciones lse' 6ue Visual Basic ejecutar8 si ninguna de las condiciones es 7rue. I....7<en...lseI. es un caso especial de I....7<en...lse. #1ser,e 6ue puede tener cual6uier n)mero de cl8usulas lseI. o ninguna. >uede incluir una cl8usula lse sin tener en cuenta si tiene o no cl8usulas lseI.. >or ejemplo' la aplicacin podr?a reali2ar distintas acciones dependiendo del control en 6ue se <a(a <ec<o clic de una matri2 de controles de men)U >ri,ate $u1 mnuCut_ClicS 9Inde4 As Integer: I. Inde4 ` 0 7<en a Comando Cortar. Cop(Acti,eControl a %lama a procedimientos generales. ClearActi,eControl lseI. Inde4 ` 1 7<en a Comando Copiar. Cop(Acti,eControl lseI. Inde4 ` 2 7<en a Comando Borrar. ClearActi,eControl lse a Comando >egar. >asteActi,eControl nd I. nd $u1 #1ser,e 6ue siempre puede agregar m8s cl8usulas lseI. a la estructura I....7<en. $in em1argo' esta sinta4is puede resultar tediosa de escri1ir cuando cada lseI. compara la misma e4presin con un ,alor distinto. >ara estas situaciones' puede usar la estructura de decisin $elect Case. >ara o1tener m8s in.ormacin Vea OI....7<en...lse 9Instruccin:O en la )e(erencia del lenguaje. 1"1
$elect Case Visual Basic proporciona la estructura $elect Case como alternati,a a I....7<en...lse para ejecutar selecti,amente un 1lo6ue de instrucciones entre ,arios 1lo6ues de instrucciones. %a instruccin $elect Case o.rece posi1ilidades similares a la instruccin I....7<en...lse' pero <ace 6ue el cdigo sea m8s legi1le cuando <a( ,arias opciones. %a estructura $elect Case .unciona con una )nica e4presin de prue1a 6ue se e,al)a una ,e2 solamente' al principio de la estructura. Visual Basic compara el resultado de esta e4presin con los ,alores de cada Case de la estructura. $i <a( una coincidencia' ejecuta el 1lo6ue de instrucciones asociado a ese CaseU $elect Case e%presin4rueba JCase listaE%presiones1 Jblo/ue de instrucciones 1LL JCase listaE%presiones2 Jblo/ue de instrucciones 2LL . . . JCase lse Jblo/ue de instrucciones nLL nd $elect Cada listaE%presiones es una lista de uno o m8s ,alores. $i <a( m8s de un ,alor en una lista' se separan los ,alores con comas. Cada blo/ue de instrucciones contiene cero o m8s instrucciones. $i m8s de un Case coincide con la e4presin de prue1a' slo se ejecutar8 el 1lo6ue de instrucciones asociado con la primera coincidencia. Visual Basic ejecuta las instrucciones de la cl8usula 9opcional: Case lse si ning)n ,alor de la lista de e4presiones coincide con la e4presin de prue1a. >or ejemplo' suponga 6ue agrega otro comando al men) dicin en el ejemplo I....7<en...lse. >odr?a agregar otra cl8usula lseI. o podr?a escri1ir la .uncin con $elect CaseU >ri,ate $u1 mnuCut_ClicS 9Inde4 As Integer: $elect Case Inde4 Case 0 a Comando Cortar. Cop(Acti,eControl a %lama a procedimientos generales. ClearActi,eControl Case 1 a Comando Copiar. Cop(Acti,eControl 1"2
Case 2 a Comando Borrar. ClearActi,eControl Case * a Comando >egar. >asteActi,eControl Case lse .rm&ind.$<oM a ;uestra el cuadro de di8logo Buscar. nd $elect nd $u1 #1ser,e 6ue la estructura $elect Case e,al)a una e4presin cada ,e2 al principio de la estructura. >or el contrario' la estructura I....7<en...lse puede e,aluar una e4presin di.erente en cada instruccin lseI.. $lo puede sustituir una estructura I....7<en...lse con una estructura $elect Case si la instruccin I. ( cada instruccin lseI. e,al)a la misma e4presin. Estructuras de *ucle %as estructuras de 1ucle le permiten ejecutar una o m8s l?neas de cdigo repetidamente. %as estructuras de 1ucle 6ue acepta Visual Basic sonU Do...%oop &or...@e4t &or ac<...@e4t Do...%oop 5tilice el 1ucle Do para ejecutar un 1lo6ue de instrucciones un n)mero indefnido de ,eces. 0a( algunas ,ariantes en la instruccin Do...%oop' pero cada una e,al)a una condicin num+rica para determinar si contin)a la ejecucin. Como ocurre con I....7<en' la condicin de1e ser un ,alor o una e4presin 6ue d+ como resultado &alse 9cero: o 7rue 9distinto de cero:. n el ejemplo de Do...%oop siguiente' las instrucciones se ejecutan siempre ( cuando condicin sea 7rueU Do H<ile condicin instrucciones %oop Cuando Visual Basic ejecuta este 1ucle Do' primero e,al)a condicin. $i condicin es &alse 9cero:' se salta todas las instrucciones. $i es 7rue 1"*
9distinto de cero:' Visual Basic ejecuta las instrucciones' ,uel,e a la instruccin Do H<ile ( prue1a la condicin de nue,o. >or tanto' el 1ucle se puede ejecutar cual6uier n)mero de ,eces' siempre ( cuando condicin sea distinta de cero o 7rue. @unca se ejecutan las instrucciones si condicin es &alse inicialmente. >or ejemplo' este procedimiento cuenta las ,eces 6ue se repite una cadena de destino dentro de otra cadena repitiendo el 1ucle tantas ,eces como se encuentre la cadena de destinoU &unction ContarCadenas 9cadenalarga' destino: Dim posicin' contador posicin ` 1 Do H<ile In$tr9posicin' cadenalarga' destino: posicin ` In$tr9posicin' cadenalarga' destino: _ E 1 contador ` contador E 1 %oop ContarCadenas ` contador nd &unction $i la cadena de destino no est8 en la otra cadena' In$tr de,uel,e 0 ( no se ejecuta el 1ucle. #tra ,ariante de la instruccin Do...%oop ejecuta las instrucciones primero ( prue1a condicin despu+s de cada ejecucin. sta ,ariacin garanti2a al menos una ejecucin de instruccionesU Do instrucciones %oop H<ile condicin 0a( otras dos ,ariantes an8logas a las dos anteriores' e4cepto en 6ue repiten el 1ucle siempre ( cuando condicin sea &alse en ,e2 de 7rue. 0ace el 1ucle cero o m8s ,eces 0ace el 1ucle al menos una ,e2 Do 5ntil condicin instrucciones %oop Do instrucciones %oop 5ntil condicin 1"!
&or666Ne,t %os 1ucles Do .uncionan 1ien cuando no se sa1e cu8ntas ,eces se necesitar8 ejecutar las instrucciones del 1ucle. $in em1argo' cuando se sa1e 6ue se ,an a ejecutar las instrucciones un n)mero determinado de ,eces' es mejor elegir el 1ucle &ord@e4t. A di.erencia del 1ucle Do' el 1ucle &or utili2a una ,aria1le llamada contador 6ue incrementa o reduce su ,alor en cada repeticin del 1ucle. %a sinta4is es la siguienteU &or contador ` iniciar 7o ,nali.ar J$tep incrementoL instrucciones Ne,t 7contador8 %os argumentos contador' iniciar' ,nali.ar e incremento son todos num+ricos. @ota l argumento incremento puede ser positi,o o negati,o. $i incremento es positi,o' iniciar de1e ser menor o igual 6ue ,nali.ar o no se ejecutar8n las instrucciones del 1ucle. $i incremento es negati,o' iniciar de1e ser ma(or o igual 6ue ,nali.ar para 6ue se ejecute el cuerpo del 1ucle. $i no se esta1lece $tep' el ,alor predeterminado de incremento es 1. Al ejecutar el 1ucle &or' Visual BasicU 1. sta1lece contador al mismo ,alor 6ue iniciar. 2. Comprue1a si contador es ma(or 6ue ,nali.ar. $i lo es' Visual Basic sale del 1ucle. 9$i incremento es negati,o' Visual Basic comprue1a si contador es menor 6ue ,nali.ar.: *. jecuta instrucciones. !. Incrementa contador en 1 o en instrucciones' si se especifc. /. =epite los pasos 2 a !. ste cdigo imprime los nom1res de todas las .uentes de pantalla disponi1lesU >ri,ate $u1 &orm_ClicS 9: Dim I As Integer &or i ` 0 7o $creen.&ontCount >rint $creen.&onts9i: 1"/
@e4t nd $u1 n la aplicacin de ejemplo VC=' el procedimiento 0ig<lig<tButton utili2a un 1ucle &or...@e4t para pasar por la coleccin de controles del .ormulario VC= ( mostrar el control $<ape apropiadoU $u1 0ig<lig<tButton9;(Control As Variant: Dim i As Integer &or i ` 0 7o .rmVC=.Controls.Count Q 1 I. 7(pe#. .rmVC=.Controls9i: Is $<ape 7<en I. .rmVC=.Controls9i:.@ame ` ;(Control 7<en .rmVC=.Controls9i:.Visi1le ` 7rue lse .rmVC=.Controls9i:.Visi1le ` &alse nd I. nd I. @e4t nd $u1 &or ac<...@e4t l 1ucle &or ac<...@e4t es similar al 1ucle &or...@e4t' pero repite un grupo de instrucciones por cada elemento de una coleccin de o1jetos o de una matri2 en ,e2 de repetir las instrucciones un n)mero especifcado de ,eces. sto resulta especialmente )til si no sa1e cu8ntos elementos <a( en la coleccin. 0e a6u? la sinta4is del 1ucle &or ac<...@e4tU &or ac< elemento In grupo instrucciones @e4t elemento >or ejemplo' el siguiente procedimiento $u1 a1re Bi1lio.md1 ( agrega el nom1re de cada ta1la a un cuadro de lista. $u1 %ist7a1leDe.s9: Dim o1jD1 As Data1ase Dim ;(7a1leDe. as 7a1leDe. $et o1jD1 ` #penData1ase9OcUX,1X1i1lio.md1O' _ 7rue' &alse: &or ac< ;(7a1leDe. In o1jD1.7a1leDe.s9: %ist1.AddItem ;(7a1leDe..@ame @e4t ;(7a1leDe. nd $u1 1""
7enga en cuenta las restricciones siguientes cuando utilice &or ac<...@e4tU >ara las colecciones' elemento slo puede ser una ,aria1le Variant' una ,aria1le #1ject gen+rica o un o1jeto mostrado en el 4aminador de o1jetos. >ara las matrices' elemento slo puede ser una ,aria1le Variant. @o puede usar &or ac<...@e4t con una matri2 de tipos defnidos por el usuario por6ue un Variant no puede contener un tipo defnido por el usuario. 7ra1ajar con estructuras de control Estructuras de control anidadas >uede colocar estructuras de control dentro de otras estructuras de control 9como un 1lo6ue I....7<en dentro de un 1ucle &or...@e4t:. $e dice 6ue una estructura de control colocada dentro de otra estructura de control est8 anidada. >uede anidar las estructuras de control en Visual Basic en tantos ni,eles como desee. s una pr8ctica com)n crear estructuras de decisin anidadas ( estructuras de 1ucle m8s legi1les sangrando el cuerpo de la estructura de decisin o de 1ucle. >or ejemplo' este procedimiento imprime todos los nom1res de .uentes comunes de la impresora ( de la pantallaU >ri,ate $u1 &orm_ClicS9: Dim $&ont' >&ont &or ac< $&ont In $creen.&onts9: &or ac< >&ont In >rinter.&onts9: I. $&ont ` >&ont 7<en >rint $&ont nd I. @e4t >&ont @e4t $&ont nd $u1 #1ser,e 6ue el primer @e4t cierra el 1ucle &or interior ( 6ue el )ltimo &or cierra el 1ucle &or e4terior. Del mismo modo' en instrucciones I. anidadas' las instrucciones nd I. se aplican autom8ticamente a la anterior instruccin I. m8s cercana. %as estructuras Do...%oop anidadas .uncionan de una .orma parecidaW la instruccin %oop m8s interior coincide con la instruccin Do m8s interior. 1"3
$alir de una estructura de control %a instruccin 4it le permite salir directamente de un 1ucle &or' un 1ucle Do' un procedimiento $u1 o un procedimiento &unction. %a sinta4is de la instruccin 4it es sencillaU 4it &or puede aparecer tantas ,eces como sea necesario dentro de un 1ucle &or ( 4it Do puede aparecer tantas ,eces como sea necesario dentro de un 1ucle DoU &or contador ` iniciar 7o ,nali.ar J$tep incrementoL Jblo/ue de instruccionesL J4it &orL Jblo/ue de instruccionesL @e4t JcontadorJ' contadorL J'...LL Do JkH<ile h 5ntill condicinL Jblo/ue de instruccionesL J4it DoL Jblo/ue de instruccionesL %oop %a instruccin 4it Do .unciona con todas las ,ariantes de la sinta4is del 1ucle Do. 4it &or ( 4it Do son mu( )tiles (a 6ue' algunas ,eces' resulta apropiado salir inmediatamente de un 1ucle sin reali2ar m8s iteraciones o instrucciones dentro del 1ucle. >or ejemplo' en el ejemplo anterior 6ue imprim?a las .uentes comunes de la impresora ( de la pantalla' el cdigo sigue comparando las .uentes de impresora contra una .uente de pantalla aun6ue se <a(a encontrado una coincidencia con una .uente de impresora anterior. 5na ,ersin m8s efciente de la .uncin saldr?a del 1ucle tan pronto como se encontrara una coincidenciaU >ri,ate $u1 &orm_ClicS9: Dim $&ont' >&ont &or ac< $&ont In $creen.&onts9: &or ac< >&ont In >rinter.&onts9: I. $&ont ` >&ont 7<en >rint $.ont 4it &or a $ale del 1ucle interior. nd I. @e4t >&ont @e4t $&ont nd $u1 1"8
Como muestra este ejemplo' la instruccin 4it aparece ,arias ,eces dentro de una instruccin I. o una instruccin $elect Case anidada en el 1ucle. Cuando utilice la instruccin 4it para salir de un 1ucle' el ,alor de la ,aria1le contador difere' dependiendo de cmo <a(a salido del 1ucleU Cuando termina un 1ucle' la ,aria1le contador contiene el ,alor del l?mite superior m8s el paso. Cuando sale de un 1ucle prematuramente' la ,aria1le contador conser,a su ,alor seg)n las reglas usuales del alcance. Cuando sale antes del fnal de una coleccin' la ,aria1le contador contiene @ot<ing si se trata de un tipo de dato #1ject ( mpt( si es un tipo de dato Variant. Salir de un procediiento Su* o &unction 7am1i+n puede salir de un procedimiento desde una estructura de control. %a sinta4is de 4it $u1 ( 4it &unction es similar a la de 4it &or ( 4it Do de la seccin anterior' O$alir de una estructura de controlO. 4it $u1 puede aparecer tantas ,eces como sea necesario' en cual6uier parte del cuerpo de un procedimiento $u1. 4it &unction puede aparecer tantas ,eces como se necesite' en cual6uier parte del cuerpo de un procedimiento &unction. 4it $u1 ( 4it &unction son mu( )tiles cuando el procedimiento <a reali2ado todo lo 6ue ten?a 6ue <acer ( se 6uiere ,ol,er inmediatamente. >or ejemplo' si desea modifcar el ejemplo anterior para 6ue imprima slo la primera .uente com)n de impresora ( de pantalla 6ue encuentre' podr?a usar 4it $u1U >ri,ate $u1 &orm_ClicS9: Dim $&ont' >&ont &or ac< $&ont In $creen.&onts9: &or ac< >&ont In >rinter.&onts9: I. $&ont ` >&ont 7<en >rint $.ont 4it $u1 a $ale del procedimiento. nd I. @e4t >&ont @e4t $&ont nd $u1 1"9
Especi%caciones, liitaciones y )oratos de arc"i#os de Visual Basic n este ap+ndice se descri1en los re6uisitos de sistema' las limitaciones de un pro(ecto de Visual Basic' los tipos de arc<i,os 6ue se pueden incluir en el pro(ecto de Visual Basic ( las descripciones de los arc<i,os de .ormulario 9..rm: ( de pro(ecto 9.,1p:. @ota A pesar de 6ue muc<as de estas limitaciones se descri1en en t+rminos de un n)mero espec?fco' tenga en cuenta 6ue otras condiciones 9como la memoria disponi1le ( los recursos del sistema: pueden imponer una restriccin antes de 6ue se llegue a ese l?mite. 7emas =e6uisitos del sistema para aplicaciones de Visual Basic =e6uisitos del sistema para las aplicaciones creadas en Visual Basic. %imitaciones de los pro(ectos %imitaciones 6ue restringen la .orma de escri1ir cdigo' el n)mero de controles 6ue puede usar en una aplicacin o la manera en 6ue se administra la entrada de datos. &ormatos de arc<i,os de pro(ecto %os arc<i,os de tiempo de dise-o ( de ejecucin 6ue se pueden incluir en el pro(ecto de Visual Basic. structuras de .ormularios Descripciones de los arc<i,os de .ormulario 9..rm: ( de pro(ecto 9.,1p:. Liitaciones de los proyectos 5n )nico pro(ecto puede contener <asta *2.000 OidentifcadoresO 9cual6uier pala1ra cla,e no reser,ada:' 6ue inclu(en entre otros .ormularios' controles' mdulos' ,aria1les' constantes' procedimientos' .unciones ( o1jetos. #1ser,e 6ue el n)mero real de identifcadores se limita a la memoria disponi1le. %os nom1res de ,aria1les en Visual Basic no pueden tener m8s de 2// caracteres ( los nom1res de .ormularios' controles' mdulos ( clases 130
pueden tener un m84imo de !0 caracteres. Visual Basic no impone ning)n l?mite en cuanto al n)mero de o1jetos distintos de un pro(ecto. &ormatos de arc<i,os de pro(ecto ;icroso.t Visual Basic utili2a ( crea una serie de arc<i,os tanto en tiempo de dise-o como en tiempo de ejecucin. %os arc<i,os 6ue el pro(ecto o la aplicacin re6uerir8n dependen de su alcance ( .uncionalidad. 4tensiones de arc<i,os de pro(ecto Visual Basic crea ,arios arc<i,os cuando se crea ( compila un pro(ecto. stos se pueden di,idir como sigueU tiempo de dise-o' otros desarrollos ( tiempo de ejecucin. %os arc<i,os de tiempo de dise-o son los ladrillos de su pro(ectoU por ejemplo' mdulos de Basic 9.1as: ( mdulos de .ormulario 9..rm:. #tros procesos ( .unciones del entorno de desarrollo de Visual Basic crean di,ersos arc<i,osU por ejemplo' arc<i,os de dependencias del Asistente de empa6uetado ( distri1ucin 9.dep:. Arc<i,os ,arios ( de tiempo de dise-o %a siguiente ta1la muestra todos los arc<i,os de tiempo de dise-o ( otros arc<i,os 6ue se pueden crear al desarrollar una aplicacinU 4tensin Descripcin .1as ;dulo de Basic .cls ;dulo de clase .ctl Arc<i,o de control de usuario .ct4 Arc<i,o 1inario de control de usuario .dca Cac<+ de dise-ador acti,o .dd. Arc<i,o de in.ormacin CAB del Asistente de empa6uetado ( distri1ucin 131
.dep Arc<i,o de dependencias del Asistente de empa6uetado ( distri1ucin .do1 Arc<i,o de .ormulario de documento Acti,eG .do4 Arc<i,o 1inario de .ormulario de documento Acti,eG .dsr Arc<i,o de dise-ador acti,o .ds4 Arc<i,o 1inario de dise-ador acti,o .dMs Arc<i,o de secuencia de guiones del Asistente para despliegue ..rm Arc<i,o de .ormulario ..r4 Arc<i,o 1inario de .ormulario .log Arc<i,o de registro de errores de carga .oca Arc<i,o de cac<+ de 1i1lioteca de tipos de controles .pag Arc<i,o de p8gina de propiedades .pg4 Arc<i,o 1inario de p8gina de propiedades .res Arc<i,o de recursos .tl1 Arc<i,o 7(pe%i1 de Automati2acin remota .,1g Arc<i,o de pro(ecto de grupo de Visual Basic .,1l Arc<i,o de control de licencia .,1p Arc<i,o de pro(ecto de Visual Basic .,1r Arc<i,o de registro de Automati2acin remota 132
.,1M Arc<i,o de espacio de tra1ajo de pro(ecto de Visual Basic .,12 Arc<i,o de inicio del Asistente .Mct >lantilla 07;% de clase de He1. Arc<i,os de tiempo de ejecucin Al compilar la aplicacin' todos los arc<i,os necesarios de tiempo de ejecucin se inclu(en en los arc<i,os ejecuta1les de tiempo de ejecucin. %a siguiente ta1la muestra los arc<i,os de tiempo de ejecucinU 4tensi n Descripcin .dll Componente Acti,eG en proceso .e4e Arc<i,o ejecuta1le o componente Acti,eG .oc4 Control Acti,eG .,1d Arc<i,o de estado de documento Acti,eG .Mct >lantilla 07;% de clase de He1 Con#enciones de codi%caci!n de Visual Basic ste ap+ndice presenta un conjunto de con,enciones de codifcacin 6ue sugerimos para los programas de Visual Basic. %as con,enciones de codifcacin son pautas de programacin 6ue no est8n en.ocadas a la lgica del programa' sino a su estructura ( apariencia .?sica. &acilitan la lectura' comprensin ( mantenimiento del cdigo. %as con,enciones de codifcacin pueden incluirU 13*
Con,enciones de nom1res para o1jetos' ,aria1les ( procedimientos. &ormatos estandari2ados para eti6uetar ( comentar el cdigo. Instrucciones de espaciado' .ormato ( sangr?a. n las secciones siguientes se e4plica cada una de estas 8reas ( se dan ejemplos de su uso correcto. 7emas B>or 6u+ e4isten las con,enciones de codifcacinC %a ra2n principal de usar un conjunto co<erente de con,enciones de codifcacin es estandari2ar la estructura ( el estilo de codifcacin de una aplicacin de .orma 6ue el autor ( otras personas puedan leer ( entender el cdigo .8cilmente. Con,enciones de nom1res de o1jetos %os o1jetos de1en lle,ar un prefjo co<erente 6ue .acilite la identifcacin del tipo de o1jeto. n esta seccin se inclu(e una lista de las con,enciones recomendadas para controles' o1jetos de acceso a datos ( men)s. Con,enciones de nom1res de constantes ( ,aria1les ste tema inclu(e una lista de las con,enciones recomendadas para las constantes ( ,aria1les permitidas por Visual Basic. 7am1i+n e4plica cuestiones relacionadas con la identifcacin del tipo de datos ( su alcance. Con,enciones de codifcacin estructurada Adem8s de las con,enciones de nom1res' las con,enciones de codifcacin estructurada' como comentarios al cdigo ( sangr?a co<erente' pueden mejorar muc<o la legi1ilidad del cdigo. n este tema se e4plican los est8ndares de estas 8reas. B>or 6u+ e4isten las con,enciones de codifcacinC %a ra2n principal de usar un conjunto co<erente de con,enciones de cdigo es estandari2ar la estructura ( el estilo de codifcacin de una aplicacin de .orma 6ue el autor ( otras personas puedan leer ( entender el cdigo .8cilmente. 13!
%as con,enciones de codifcacin correctas dan como resultado un cdigo .uente preciso' legi1le ( sin am1igredad' 6ue es co<erente con otras con,enciones del lenguaje ( lo m8s intuiti,o posi1le. Con,enciones de codifcacin m?nimas 5n conjunto de con,enciones de codifcacin de propsito general de1e defnir los re6uisitos m?nimos necesarios para conseguir los o1jeti,os e4plicados anteriormente' dejando li1ertad al programador para crear la lgica ( el Zujo .uncional del programa. l o1jeti,o es <acer 6ue el programa sea .8cil de leer ( de entender sin o1struir la creati,idad natural del programador con imposiciones e4cesi,as ( restricciones ar1itrarias. >or tanto' las con,enciones sugeridas en este ap+ndice son 1re,es ( sugerentes. @o muestran todos los o1jetos ( controles posi1les' ni especifcan todos los tipos de comentarios in.ormati,os 6ue podr?an ser )tiles. Dependiendo del pro(ecto ( de las necesidades espec?fcas de la organi2acin' 6ui28s desee ampliar estas instrucciones para 6ue inclu(an elementos adicionales comoU Con,enciones para o1jetos espec?fcos ( componentes desarrollados internamente o comprados a otros pro,eedores. Varia1les 6ue descri1an las acti,idades comerciales o instalaciones de la organi2acin. Cual6uier otro elemento 6ue el pro(ecto o la empresa considere importante para conseguir ma(or claridad ( legi1ilidad. >ara o1tener m8s in.ormacin >ara o1tener m8s in.ormacin acerca de las restricciones so1re los nom1res de procedimientos' ,aria1les ( constantes' ,ea OConceptos 18sicos del cdigoO en OConceptos 18sicos del cdigoO. Con,enciones de nom1res de o1jetos %os o1jetos de1en lle,ar nom1res con un prefjo co<erente 6ue .acilite la identifcacin del tipo de o1jeto. A continuacin se o.rece una lista de con,enciones recomendadas para algunos de los o1jetos permitidos por Visual Basic. >refjos sugeridos para controles 7ipo de control >refjo jemplo 13/
Barra de despla2amiento <ori2ontal <s1 <s1Volumen Barra de despla2amiento <ori2ontal ligera lM<s1 lM<s1Volumen Barra de despla2amiento lisa .s1 .s1;o,er Barra de despla2amiento ,ertical ,s1 ,s1Indice Barra de despla2amiento ,ertical ligera lM,s1 lM,s1A-o Barra de estado sta sta&ec<a0ora Barra de <erramientas tl1 tl1Acciones Barra de progreso prg prgCargarArc<i,o Botn animado ani aniBu2on Botn de comando ligero lMcmd lMcmdFuitar Botn de n)mero spn spn>aginas Botn de opcin opt optPenero Botn de opcin ligero lMopt lMopt@i,elntrada Botones de comando cmd cmd$alir Casilla de ,erifcacin c<S c<S$olo%ectura Casilla de ,erifcacin ligera lMc<S lMc<SPuardar Comunicaciones com com&a4 Contenedor #% ole ole0ojaCalculo 13"
Control 9se usa en procedimientos cuando el tipo espec?fco es desconocido: ctr ctrActual Control desli2ante sld sldscala Cronmetro tmr tmrAlarma Cuadr?cula grd grd>recios Cuadr?cula de datos dgd dgd7itulos Cuadr?cula enla2ada a datos d1grd d1grd=esultadosConsul ta Cuadr?cula ;$ &le4 msg msgClientes Cuadro com1inado de datos d1c d1cAutor Cuadro com1inado de imagen imgc1o imgc1o>roducto Cuadro com1inado enla2ado a datos d1c1o d1c1oIdioma Cuadro com1inado ligero lMc1o lMc1oAleman Cuadro com1inado' cuadro de lista desplega1le c1o c1oIngles Cuadro de imagen pic picVPA Cuadro de lista lst lstCodigos Cuadro de lista de arc<i,os fl fl#rigen Cuadro de lista de directorios dir dir$ource Cuadro de lista de unidades dr, dr,Destino 133
Cuadro de lista enla2ada a datos d1lst d1lst7ipo7ra1ajo Cuadro de lista ligero lMlst lMlstCentroCostos Cuadro de te4to t4t t4tApellido Cuadro de te4to ligero lMt4t lMoptCalle Datos dat datBi1lio Datos AD# ado adoBi1lio Datos remotos rd rd7itulos Di8logo com)n dlg dlgA1rirArc<i,o ti6ueta l1l l1l;ensajeA(uda &ic<as ta1 ta1#pciones 0ierarc<ical &le4grid Ze4 Ze4>edidos &orma s<p s<pCirculo &ormulario .rm .rmntrada Pauge gau gaustado Pr8fco gra graPanancias Imagen img imgIcono In.ormacin del sistema s(s s(s;onitor %?nea lin linVertical %ista de datos d1l d1lditor 138
%ista de im8genes ils ils7odosIconos ;arco .ra .raIdioma ;arco ligero lM.ra lM.ra#pcionesPuardar ;CI mci mciVideo ;ensaje ;A>I mpm mpmn,iar;ensaje ;en) mnu mnuA1rirArc<i,o ;$ C<art c< c<Ventas>or=egion ;$ 7a1 mst mst>rimero >anel *D pnl pnlPrupo >icture clip clp clpBarra0erramientas =epetidor de datos drp drp51icacion =ic<7e4tBo4 rt. rt.In.orme $elector de .ec<a dtp dtpditado $esin ;A>I mps mps$esin 5pDoMn upd updDireccin Visor de 8r1ol tre tre#rgani2acin Visor de lista l,M l,Mnca1e2ados Vista de mes m,M m,M>eriodo 139
>refjos sugeridos para los o1jetos de acceso a datos 9DA#: 5se los prefjos siguientes para indicar #1jetos de acceso a datos 9DA#:. #1jeto de 1ase de datos >refjo jemplo Base de datos d1 d1Cuentas Campo Zd ZdDireccion Conjunto de registros rec rec>re,ision Contenedor con conIn.ormes Defnicin de consulta 6r( 6r(Ventas>or=egi on Defnicin de ta1la t1d t1dClientes Documento doc docIn.ormeVenta s spacio de tra1ajo Msp Msp;io Prupo grp grp&inan2as endice i4 id4dad ;otor de 1ase de datos d1e d1efet >ar8metro prm prmCodigo7area =elacin rel relDeptDemplea dos 5suario usr usr@ue,o 180
Algunos ejemplosU Dim d1Bi1lio As Data1ase Dim recditores;AD As =ecordset' strInstruc$F% As $tring Const DB_=AD#@%\ ` ! a sta1lece la constante. aA1re la 1ase de datos. $et d1Bi1lio ` #penData1ase9OBIB%I#.;DBO: a sta1lece el te4to para la instruccin $F%. strInstruc$F% ` O$%C7 g &=#; ditores H0= O D Ostado ` a;ADaO a Crea el nue,o o1jeto =ecordset. $et recditores;AD ` d1.#pen=ecordset9strInstruc$F%' _ d1$lo%ectura: >refjos sugeridos para men)s %as aplicaciones suelen usar muc<os controles de men)' lo 6ue <ace )til tener un conjunto )nico de con,enciones de nom1res para estos controles. %os prefjos de controles de men)s se de1en e4tender m8s all8 de la eti6ueta inicial OmnuO' agregando un prefjo adicional para cada ni,el de anidamiento' con el t?tulo del men) fnal en la )ltima posicin de cada nom1re. n la ta1la siguiente <a( algunos ejemplos. $ecuencia del t?tulo del men) @om1re del controlador del men) Arc<i,o A1rir mnuArc<i,oA1rir Arc<i,o n,iar correo mnuArc<i,on,iarCorreo Arc<i,o n,iar .a4 mnuArc<i,on,iar&a4 &ormato Car8cter mnu&ormatoCaracter A(uda Contenido mnuA(udaContenido Cuando se usa esta con,encin de nom1res' todos los miem1ros de un grupo de men)s determinado se muestran uno junto a otro en la ,entana >ropiedades de Visual Basic. Adem8s' los nom1res del control de men) documentan claramente los elementos de men) a los 6ue est8n adjuntos. 181
Selecci!n de pre%jos para otros controles >ara los controles no mostrados arri1a' de1e intentar esta1lecer un est8ndar de prefjos )nicos de dos o tres caracteres 6ue sean co<erentes. $olamente se de1en usar m8s de tres caracteres si proporcionan m8s claridad. >ara controles deri,ados o modifcados' por ejemplo' ampl?e los prefjos anteriores para 6ue no <a(a dudas so1re 6u+ control se est8 usando realmente. >ara los controles de otros pro,eedores' se de1e agregar al prefjo una a1re,iatura del nom1re del .a1ricante en min)sculas. >or ejemplo' una instancia de control creada a partir del marco *D incluido en la dicin >ro.esional de Visual Basic podr?a lle,ar el prefjo .ra*d para e,itar con.usiones so1re 6u+ control se est8 usando realmente. Con#enciones de no*res de constantes y #aria*les Adem8s de los o1jetos' las constantes ( ,aria1les tam1i+n re6uieren con,enciones de nom1res 1ien compuestas. n esta seccin se muestran las con,enciones recomendadas para las constantes ( ,aria1les permitidas por Visual Basic. 7am1i+n se e4plican cuestiones relacionadas con la identifcacin del tipo de datos ( su alcance. %as ,aria1les se de1en defnir siempre con el menor alcance posi1le. %as ,aria1les glo1ales 9p)1licas: pueden crear m86uinas de estado enormemente complejas ( <acer la lgica de una aplicacin mu( di.?cil de entender. %as ,aria1les glo1ales tam1i+n <acen muc<o m8s di.?cil mantener ( ,ol,er a usar el cdigo. n Visual Basic las ,aria1les pueden tener el alcance siguienteU Alcance Declaracin Visi1le en @i,el de procedimiento a>ri,atea en procedimiento' su1procedimiento o .uncin l procedimiento en el 6ue est8 declarada @i,el de mdulo a>ri,atea en la seccin Declaraciones de un mdulo de .ormulario o de cdigo 9..rm' .1as: 7odos los procedimientos del mdulo de .ormulario o de cdigo 182
Plo1al a>u1lica en la seccin Declaraciones de un mdulo de cdigo 9.1as: n toda la aplicacin n una aplicacin de Visual Basic' las ,aria1les glo1ales se de1en usar slo cuando no e4ista ninguna otra .orma cmoda de compartir datos entre .ormularios. Cuando <a(a 6ue usar ,aria1les glo1ales' es con,eniente declararlas todas en un )nico mdulo agrupadas por .unciones ( dar al mdulo un nom1re signifcati,o 6ue indi6ue su fnalidad' como >u1lic.1as. 5na pr8ctica de codifcacin correcta es escri1ir cdigo modular siempre 6ue sea posi1le. >or ejemplo' si la aplicacin muestra un cuadro de di8logo' colo6ue todos los controles ( el cdigo necesario para ejecutar la tarea del di8logo en un )nico .ormulario. sto a(uda a tener el cdigo de la aplicacin organi2ado en componentes )tiles ( minimi2a la so1recarga en tiempo de ejecucin. A e4cepcin de las ,aria1les glo1ales 96ue no se de1er?an pasar:' los procedimientos ( .unciones de1en operar slo so1re los o1jetos 6ue se les pasan. %as ,aria1les glo1ales 6ue se usan en los procedimientos de1en estar identifcadas en la seccin Declaraciones al principio del procedimiento. Adem8s' los argumentos se de1en pasar a los procedimientos $u1 ( &unction mediante B(Val' a menos 6ue sea necesario e4pl?citamente cam1iar el ,alor del argumento 6ue se pasa. 5re%jos de alcance de #aria*les A medida 6ue aumenta el tama-o del pro(ecto' tam1i+n aumenta la utilidad de reconocer r8pidamente el alcance de las ,aria1les. sto se consigue escri1iendo un prefjo de alcance de una letra delante del tipo de prefjo' sin aumentar demasiado la longitud del nom1re de las ,aria1les. Alcance >refjo jemplo Plo1al g gstr@om1re5suario @i,el de mdulo m m1ln>rogresoDelCalc 18*
ulo %ocal del procedimiento @inguno d1lVelocidad 5na ,aria1le tiene alcance glo1al si se declara como >u1lic en un mdulo est8ndar o en un mdulo de .ormulario. 5na ,aria1le tiene alcance de nivel de mdulo si se declara como >ri,ate en un mdulo est8ndar o en un mdulo de .ormulario' respecti,amente. @ota %a co<erencia es crucial para usar esta t+cnica de .orma producti,aW el corrector de sinta4is de Visual Basic no interceptar8 las ,aria1les de ni,el de mdulo 6ue comiencen con OpO. Constantes l cuerpo del nom1re de las constantes se de1e escri1ir en ma()sculas ( min)sculas' con la letra inicial de cada pala1ra en ma()sculas. Aun6ue las constantes est8ndar de Visual Basic no inclu(en in.ormacin de tipo de datos ( el alcance' los prefjos como i' s' g ( m pueden ser mu( )tiles para entender el ,alor ( el alcance de una constante. >ara los nom1res de constantes' se de1en seguir las mismas normas 6ue para las ,aria1les. >or ejemploU mint;84%ista5suario a %?mite de entradas m84imas para a la lista de usuarios 9,alor a entero' local del mdulo: gstr@ue,a%?nea a Car8cter de nue,a l?nea a9cadena' glo1al de la a aplicacin: Varia*les Declarar todas las ,aria1les a<orra tiempo de programacin por6ue reduce el n)mero de errores de1idos a erratas 9por ejemplo' a@om1re5suario7mp .rente a s@om1re5suario7mp .rente a s@om1re5suario7emp:. n la fc<a ditor del cuadro de di8logo #pciones' acti,e la opcin Declaracin de ,aria1les re6uerida. %a instruccin #ption 4plicit re6uiere 6ue declare todas las ,aria1les del programa de Visual Basic. 18!
%as ,aria1les de1en lle,ar un prefjo para indicar su tipo de datos. #pcionalmente' ( en especial para programas largos' el prefjo se puede ampliar para indicar el alcance de la ,aria1le. 7ipos de datos de ,aria1les 5se los prefjos siguientes para indicar el tipo de datos de una ,aria1le. %ong lng lngDistancia #1ject o1j o1jActi,o $ingle sng sng;edia $tring str str@om1re& 7ipo defnido por el usuario udt udtmpleado Variant ,nt ,ntC<ecS$um 18/
No*res descripti#os de #aria*les y procediientos l cuerpo de un nom1re de ,aria1le o procedimiento se de1e escri1ir en ma()sculas ( min)sculas ( de1e tener la longitud necesaria para descri1ir su .uncionalidad. Adem8s' los nom1res de .unciones de1en empe2ar con un ,er1o' como Iniciar@om1re;atri2 o CerrarDi8logo. >ara nom1res 6ue se usen con .recuencia o para t+rminos largos' se recomienda usar a1re,iaturas est8ndar para 6ue los nom1res tengan una longitud ra2ona1le. n general' los nom1res de ,aria1les con m8s de *2 caracteres pueden ser di.?ciles de leer en pantallas VPA. Cuando se usen a1re,iaturas' <a( 6ue asegurarse de 6ue sean co<erentes en toda la aplicacin. Alternar aleatoriamente entre Cnt ( Contar dentro de un pro(ecto pro,oca una con.usin innecesaria. 7ipos defnidos por el usuario n un pro(ecto grande con muc<os tipos defnidos por el usuario' suele ser )til dar a cada uno de estos tipos un prefjo de tres caracteres slo su(o. $i estos prefjos comien2an con OuO' ser8 .8cil reconocerlos cuando se est+ tra1ajando con tipos defnidos por el usuario. >or ejemplo' OucliO se podr?a usar como prefjo para las ,aria1les de un tipo Cliente defnido por el usuario. Con,enciones de codifcacin estructurada Adem8s de las con,enciones de nom1res' las con,enciones de codifcacin estructurada' como comentarios al cdigo ( sangr?as co<erentes' pueden mejorar muc<o la legi1ilidad del cdigo. Con,enciones de comentarios al cdigo 7odos los procedimientos ( .unciones de1en comen2ar con un comentario 1re,e 6ue descri1a las caracter?sticas .uncionales del procedimiento 96u+ <ace:. sta descripcin no de1e descri1ir los detalles de implementacin 9cmo lo <ace:' por6ue a ,eces cam1ian con el tiempo' dando como resultado un tra1ajo innecesario de mantenimiento de los comentarios o' lo 6ue es peor' comentarios errneos. l propio cdigo ( los comentarios de l?neas necesarios descri1ir8n la implementacin. %os argumentos 6ue se pasan a un procedimiento se de1en descri1ir cuando sus .unciones no sean o1,ias ( cuando el procedimiento espera 18"
6ue los argumentos est+n en un inter,alo espec?fco. 7am1i+n <a( 6ue descri1ir' al principio de cada procedimiento' los ,alores de,ueltos de .unciones ( las ,aria1les glo1ales 6ue modifca el procedimiento' en especial los modifcados a tra,+s de argumentos de re.erencia. %os 1lo6ues del comentario de enca1e2ado del procedimiento de1en incluir los siguientes enca1e2ados de seccin. n la seccin siguiente' ODar .ormato al cdigoO' <a( algunos ejemplos. nca1e2ado de seccin Descripcin del comentario &inalidad %o 6ue <ace el procedimiento 9no cmo lo <ace:. >remisas %ista de cada ,aria1le e4terna' control' arc<i,o a1ierto o cual6uier otro elemento 6ue no sea o1,io. .ectos %ista de cada ,aria1le e4terna' control o arc<i,o a.ectados ( el e.ecto 6ue tiene 9slo si no es o1,io:. ntradas 7odos los argumentos 6ue puedan no ser o1,ios. %os argumentos se escri1en en una l?nea aparte con comentarios de l?nea. =esultados 4plicacin de los ,alores de,ueltos por las .unciones. =ecuerde los puntos siguientesU Cada declaracin de ,aria1le importante de1e incluir un comentario de l?nea 6ue descri1a el uso de la ,aria1le 6ue se est8 declarando. %as ,aria1les' controles ( procedimientos de1en tener un nom1re 1astante claro para 6ue los comentarios de l?nea slo sean necesarios en los detalles de implementacin complejos. Al principio del mdulo .1as 6ue contiene las declaraciones de constantes gen+ricas de Visual Basic del pro(ecto' de1e incluir un 183
resumen 6ue descri1a la aplicacin' enumerando los principales o1jetos de datos' procedimientos' algoritmos' cuadros de di8logo' 1ases de datos ( dependencias del sistema. Algunas ,eces puede ser )til un pseudocdigo 6ue descri1a el algoritmo. Dar .ormato al cdigo Como muc<os programadores usan toda,?a pantallas VPA' <a( 6ue ajustarse al espacio de la pantalla en la medida de lo posi1le ( <acer 6ue el .ormato del cdigo siga reZejando la estructura lgica ( el anidamiento. stos son algunos indicadoresU %os 1lo6ues anidados est8ndar' separados por ta1uladores' de1en lle,ar una sangr?a de cuatro espacios 9predeterminado:. l comentario del es6uema .uncional de un procedimiento de1e lle,ar una sangr?a de un espacio. %as instrucciones de ni,el superior 6ue siguen al comentario del es6uema de1en lle,ar una sangr?a de un ta1ulador' con cada 1lo6ue anidado separado por una sangr?a de un ta1ulador adicional. >or ejemploU aggggggggggggggggggggggggggggggggggggggggggggggggggggg a &inalidadU 51ica el primer caso encontrado de un a usuario especifcado en la matri2 %ista5suario. a ntradasU a str%ista5suario9:U lista de usuarios para 1uscar. a str5suarioDestU nom1re del usuario 1uscado. a =esultadosU endice del primer caso de rs5suarioDest a encontrado en la matri2 ras%ista5suario. a $i no se encuentra el usuario de destino' a de,uel,e Q1. aggggggggggggggggggggggggggggggggggggggggggggggggggggg &unction int&ind5ser 9str5ser%ist9: As $tring' str7arget5suer As _ $tring:As Integer Dim i As Integer a Contador de 1ucle. Dim 1ln&ound As Integer a Indicador de a destino encontrado. int&ind5ser ` Q1 i ` 0 H<ile i m` 51ound9str5ser%ist: and @ot 1ln&ound I. str5ser%ist9i: ` str7arget5ser 7<en 1ln&ound ` 7rue int&ind5ser ` i nd I. Hend 188
nd &unction Agrupacin de constantes %as ,aria1les ( constantes defnidas se de1en agrupar por .unciones en lugar de di,idirlas en 8reas aisladas o arc<i,os especiales. %as constantes gen+ricas de Visual Basic se de1en agrupar en un )nico mdulo para separarlas de las declaraciones espec?fcas de la aplicacin. #peradores D ( E 5se siempre el operador D para unir cadenas ( el operador E cuando tra1aje con ,alores num+ricos. l uso del operador E para concatenar puede causar pro1lemas cuando se opera so1re dos ,aria1les Variant. >or ejemploU ,ntVar1 ` O10'01O ,ntVar2 ` 11 ,nt=esult ` ,ntVar1 E ,ntVar2 a,nt=esult ` 21'01 ,nt=esult ` ,ntVar1 D ,ntVar2 a,nt=esult ` 10'0111 Crear cadenas para ;sgBo4' InputBo4 ( consultas $F% Cuando est+ creando una cadena larga' use el car8cter de su1ra(ado de continuacin de l?nea para crear m)ltiples l?neas de cdigo' de .orma 6ue pueda leer o depurar la cadena .8cilmente. sta t+cnica es especialmente )til cuando se muestra un cuadro de mensaje 9;sgBo4: o un cuadro de entrada 9InputBo4:' o cuando se crea una cadena $F%. >or ejemploU Dim ;sg As $tring ;sg ` Osto es un p8rra.o 6ue estar8 en unO _ D O cuadro de mensajes. l te4to est8 separado enO _ D O ,arias l?neas de cdigo en el cdigo .uente' O _ D Olo 6ue .acilita al programador la tarea de leer ( depurar.O ;sgBo4 ;sg Dim C7A As $tring C7A ` O$%C7 gO _ D O &=#; 7?tuloO _ D O H0= J&ec<a de pu1licacinL i 1988O Consulta7?tulos.$F% ` C7A ANE9O :I;I5EDIA 189
Operaciones */sicas %as operaciones 6ue se pueden <acer con matrices pro,ienen de sus aplicaciones' so1re todo de las aplicaciones en 8lge1ra lineal. De ese modo las operaciones' o su .orma mu( particular de ser implementadas' no son )nicas. Sua o adici!n7editar < editar c!digo8 $ean . $e defne la operacin de sua o adici!n de atrices como una operacin 1inaria tal 6ue ( donde en el 6ue la operacin de suma en la )ltima e4presin es la operacin 1inaria correspondiente pero en el campo . >or ejemplo' la entrada es igual a la suma de los elementos ( lo cual es . Veamos un ejemplo m8s e4pl?cito. $ea @o es necesario 6ue las matrices sean cuadradasU A la lu2 de +stos ejemplos es inmediato ,er 6ue dos matrices se pueden sumar solamente si am1as tienen el mismo tama-o. %a suma de matrices en el caso de 6ue las entradas est+n en uncampo ser8n la asociati,idad' la conmutati,idad' e4istencia de elemento neutro aditi,o ( e4istencia de in,erso aditi,o. ssto es as? (a 6ue +stas son propiedades de los campos en los 6ue est8n las entradas de la matri2. A continuacin se presentan las propiedades. Propiedades[editar editar cdigo] $ean ' donde es un campo entonces se cumplen las siguientes propiedades para la operacin 1inaria Asociati#idad 190
Deostraci!n6 Dada la defnicin de la operacin 1inaria se sigue el resultado (a 6ue de1ido a 6ue para todo . Conutati#idad Deostraci!n Dada la defnicin de la operacin 1inaria se sigue el resultado (a 6ue de1ido a 6ue para todo . E,istencia del eleento neutro aditi#o 4iste tal 6ue Deostraci!n 7mese tal 6ue para cual6uier 9dnde este )ltimo es el elemento neutro aditi,o en el campo' el cual e4iste necesariamente:. ntonces para cual6uier se sigue 6ue (a 6ue para cual6uier ' dado 6ue las entradas est8n en un campo. E,istencia del in#erso aditi#o 4iste tal 6ue a esta matri2 se le denota por . Deostraci!n Dada tmese tal 6ue . ntonces W luego' por las propiedades de campo donde es el in,erso aditi,o de en el campo para cual6uier . n e.ecto' +stas propiedades dependen el conjunto en el 6ue est+n las entradas' como se <a dic<o antes' aun6ue en las aplicaciones generalmente los campos usados son 9los n)meros reales: ( 9los n)meros complejos:. >or como se defni la operacin 1inaria adicin se dice 6ue +sta operacin es una operacin interna por lo 6ue se cumple 191
intr?nsecamente la propiedad de 6ue es cerrado 1ajo adicin. Con +stas propiedades se tiene 6ue es un grupo a1eliano. n el caso en 6ue el conjunto al 6ue pertenecen las entradas de la matri2 sea un anillo ' la operacin de adicin de matrices contin)a dotando de estructura de grupo a1eliano a ' (a 6ue 1ajo un anillo se tiene 6ue es un grupo a1eliano. n el caso de 6ue las entradas est+n en un grupo ' +ste necesita ser ungrupo a1eliano para 6ue la adicin de matrices siga dotando de estructura de grupo a1eliano a . 5roducto por un escalar7editar < editar c!digo8 $ean ( . $e defne la operacin de producto por un escalar como una .uncin tal 6ue ( donde en donde el producto es la operacin 1inaria correspondiente pero en el campo . >or ejemplo' la entrada es igual al producto . Veamos un ejemplo m8s e4pl?cito. $ea ( 7am1i+n es inmediato o1ser,ar 6ue el producto por un escalar da como resultado una matri2 del mismo tama-o 6ue la original. 7am1i+n el producto por un escalar depender8 de la estructura alge1raica en la 6ue las entradas est8n. n el caso de 6ue est+n en un campo ser8n dos distri1uti,idades 9una respecto de suma de matrices ( otra respecto de suma en el campo:' asociati,idad ( una propiedad concerniente al producto por el elemento neutro multiplicati,o del campo. A continuacin se presentan las propiedades. Propiedades[editar editar cdigo] $ean ( ' donde es un campo' entonces se cumplen las siguientes propiedades para la operacin producto por un escalar Asociati#idad Deostraci!n6 Dada la defnicin de la operacin se sigue el resultado (a 6ue de1ido a 6ue para todo . 192
Distri*uti#idad respecto de la sua de atrices Deostraci!n Dada la defnicin de la operacin se sigue el resultado (a 6ue de1ido a 6ue para todo . Distri*uti#idad respecto de la sua en el capo Deostraci!n Dada la defnicin de la operacin se sigue el resultado (a 6ue de1ido a 6ue para todo . 5roducto por el neutro ultiplicati#o del capo Deostraci!n Dada la defnicin de la operacin se sigue el resultado (a 6ue de1ido a 6ue para todo . >or como se defni la operacin de producto por escalares se dice 6ue es cerrado 1ajo producto por escalares. Con +stas propiedades ( las de la adicin se tiene 6ue es un espacio ,ectorial con las operaciones de suma ( producto por escalares defnidas antes. n el caso de 6ue las entradas ( los escalares no est+n en un campo sino en un anillo entonces no necesariamente e4iste el neutro multiplicati,o. n caso de 6ue e4ista' con lo cual el anillo es un anillo con uno' se dice 6ue es un mdulo so1re . A<ora' a partir de las propiedades 18sicas se puede demostrar inmediatamente 6ue Deostraci!n Dada la defnicin de la operacin se sigue el resultado (a 6ue para todo . Deostraci!n Dada la defnicin de la operacin se sigue el resultado (a 6ue para todo de1ido a 6ue para todo . Deostraci!n Dada la defnicin de la operacin se sigue el resultado (a 6ue como en un campo no <a( di,isores de 19*
cero entonces para todo implica 6ue o para todo ' i.e. . @o es posi1le un caso en el 6ue slo algunas entradas de la matri2 sean cero ( el escalar sea no nulo (a 6ue en esos casos estar?amos diciendo 6ue <a( di,isores de cero ( llegar?amos a una contradiccin' (a 6ue la suposicin es 6ue las entradas ( los escalares est8n en un campo. Deostraci!n Dada la defnicin de la operacin se sigue el resultado (a 6ue de1ido a 6ue para todo . ste )ltimo resultado permite usar la notacin sin riesgo de am1igredad. 5roducto7editar < editar c!digo8 Diagrama es6uem8tico 6ue ilustra el producto de dos matrices ( dando como resultado la matri2 . l producto de matrices se defne de una manera mu( peculiar ( <asta capric<osa cuando no se conoce su origen. l origen pro,iene del papel de las matrices como representaciones de aplicaciones lineales. As? el producto de matrices' como se defne' pro,iene de la composicin de aplicaciones lineales. n este conte4to' el tama-o de la matri2 corresponde con las dimensiones de los espacios ,ectoriales entre los cuales se esta1lece la aplicacin lineal. De ese modo el producto de matrices' representa la composicin de aplicaciones lineales. n e.ecto' en ciertas 1ases tenemos 6ue se puede representar como donde es la representacin de un ,ector de en la 1ase 6ue se <a elegido para en .orma de ,ector columna. $i 19!
tenemos dos aplicaciones lineales ( entonces ( ' luego la aplicacin se representar8 como donde es el producto de las representaciones matriciales de . @tese 6ue la composicin no se puede dar entre cual6uier aplicacin sino entre aplicaciones 6ue ,a(an de ' en particular de1e de <a1er una relacin entre las dimensiones de los espacios ,ectoriales. 5na ,e2 dic<o +sto podemos defnir el producto de la siguiente manera. $ean ( . $e defne el producto de atrices como una .uncin tal 6ue ( donde para toda ' es decir . >or ejemplo' la entrada . Veamos un ejemplo m8s e4pl?cito. $ean ( dnde la matri2 producto es como <a1?amos esta1lecido en la defnicinU una matri2 . $in tomar en cuenta la moti,acin 6ue ,iene desde las aplicaciones lineales' es e,idente ,er 6ue si ignoramos la defnicin de la .uncin de producto de matrices ( slo se toma en cuenta la defnicin de las entradas' el producto no estar8 1ien defnido' (a 6ue si no tiene el mismo n)mero de columnas 6ue de flas entonces no podremos esta1lecer en donde aca1a la sumaU si la aca1amos en el ma(or de +stos n)meros <a1r8 sumandos 6ue no est8n defnidos (a 6ue una de las matrices no tendr8 mas entradas' mientras 6ue si tomamos el menor <a1r8 entradas de alguna de las matrices 6ue no se tomen en cuenta. As? es necesario 6ue tenga el iso n'ero de colunas -ue de %las para -ue e,ista. Como se puede suponer tam1i+n' las propiedades de +sta operacin ser8n m8s limitadas en la generalidad (a 6ue adem8s de las limitaciones impuestas por la naturale2a de las entradas est8 esta limitacin respecto a tama-o. s claro' adem8s' 6ue el producto de matrices no siempre es una operacin interna. 19/
Propiedades[editar editar cdigo] $ean matrices con entradas en ' donde es un campo' entonces se cumplen las siguientes propiedades para el producto de matrices 9considerando 6ue los productos e4istan: Asociati#idad Deostraci!n6 Dada la defnicin de la operacin se sigue el resultado (a 6ue' si ' ( por lo 6ue dond e de1ido a 6ue para todo . A6u? estamos considerando 6ue es ' es ( es . Distri*uti#idad respecto de la sua de atrices por la derec"a Deostraci!n Dada la defnicin de la operacin se sigue el resultado (a 6ue de1ido a 6ue para todo . A6u? estamos considerando 6ue es ' es ( es . Distri*uti#idad respecto de la sua de atrices por la i+-uierda Deostraci!n Dada la defnicin de la operacin se sigue el resultado (a 6ue de1ido a 6ue para todo . A6u? estamos considerando 6ue es ' es ( es . l producto de matrices no es conmutati,o' si lo .uera la composicin de .unciones lineales ser?a conmutati,a ( eso en general no sucede. #1,iamente e4isten casos particulares de algunos tipos de matrices en los 6ue si <a( conmutati,idad. n el caso en 6ue tengamos tendremos 6ue el producto entre matrices en tam1i+n est8 en . n ese caso adem8s de espacio ,ectorial es 19"
un 8lge1ra so1re un campo. n el caso de 6ue el conjunto al 6ue pertenecen las entradas sea un anillo conmutati,o con uno entonces adem8s de mdulo es un 8lge1ra so1re un anillo. ;as a)n con el producto de matrices es un anillo. 2ango7editar < editar c!digo8 l rango de una matri2 es la dimensin de la imagen de la aplicacin lineal representada por ' 6ue coincide con la dimensin de los espacios ,ectoriales generados por las flas o columnas de . .raspuesta7editar < editar c!digo8 %a traspuesta de una matri2 ' donde no es necesariamente un campo' es una matri2 tal 6ue . >or ejemplo la entrada . Veamos un ejemplo m8s e4pl?cito. $ea entonces su traspuesta es As?' in.ormalmente podr?amos decir 6ue la traspuesta es a6uella matri2 6ue se o1tiene de la original cam1iando flas por columnas. %as notaciones usuales para denotar la traspuesta de una matri2 son . %a trasposicin de matrices tiene las siguientes propiedades 9donde a<ora si el conjunto de entradas de1e ser al menos un anillo conmutati,o:U $i representa una aplicacin lineal' entonces la matri2 descri1e la traspuesta de la aplicacin lineal. Sistea de ecuaciones lineales n matem8ticas ( 8lge1ra lineal' un sistea de ecuaciones lineales' tam1i+n conocido como sistea lineal de ecuaciones o 193
simplemente sistea lineal' es un conjunto de ecuaciones lineales 9es decir' un sistema de ecuaciones en donde cada ecuacin es de primer grado:' defnidas so1re un cuerpo o un anillo conmutati,o. 5n ejemplo de sistema lineal de ecuaciones ser?a el siguienteU l pro1lema consiste en encontrar los ,alores desconocidos de las ,aria1les % 1 ' % 2 ( % * 6ue satis.acen las tres ecuaciones. l pro1lema de los sistemas lineales de ecuaciones es uno de los m8s antiguos de la matem8tica ( tiene una infnidad de aplicaciones' como en procesamiento digital de se-ales' an8lisis estructural' estimacin' prediccin ( m8s generalmente en programacin lineal as? como en la apro4imacin de pro1lemas no lineales de an8lisis num+rico. Sisteas lineales reales7editar < editar c!digo8 n esta seccin se anali2an las propiedades de los sistemas de ecuaciones lineales so1re el cuerpo ' es decir' los sistemas lineales en los cuales los coefcientes de las ecuaciones sonn)meros reales. 2epresentaci!n gr/%ca7editar < editar c!digo8 %a interseccin de dos planos6ue no son paralelos coincidentes es una recta. 5n sistema con incgnitas se puede representar en el nQ espacio correspondiente. 198
n los sistemas con 2 incgnitas' el uni,erso de nuestro sistema ser8 el plano 1idimensional' mientras 6ue cada una de las ecuaciones ser8 representada por una recta. %a solucin ser8 el punto 9o l?nea: donde se interse6uen todas las rectas representan a las ecuaciones. $i no e4iste ning)n punto en el 6ue se interse6uen al mismo tiempo todas las l?neas' el sistema es incompati1le' o lo 6ue es lo mismo' no tiene solucin. n el caso de un sistema con * incgnitas' el uni,erso ser8 el espacio tridimensional' siendo cada ecuacin un plano dentro del mismo. $i todos los planos intersecan en un )nico punto' las coordenadas de este ser8n la solucin al sistema. $i' por el contrario' la interseccin de todos ellos es una recta o incluso un plano' el sistema tendr8 infnitas soluciones' 6ue ser8n las coordenadas de los puntos 6ue .orman dic<a l?nea o superfcie. >ara sistemas de ! m8s incgnitas' la representacin gr8fca no e4iste' por lo 6ue dic<os pro1lemas no se en.ocan desde esta ptica. .ipos de sisteas7editar < editar c!digo8 %os sistemas de ecuaciones se pueden clasifcar seg)n el n)mero de soluciones 6ue pueden presentar. De acuerdo con ese caso se pueden presentar los siguientes casosU Sistea copati*le si tiene solucin' en este caso adem8s puede distinguirse entreU Sistea copati*le deterinado cuando tiene una )nica solucin. Sistea copati*le indeterinado cuando admite un conjunto infnito de soluciones. Sistea incopati*le si no tiene solucin. Fuedando as? la clasifcacinU %os sistemas incompati1les geom+tricamente se caracteri2an por 9<iper:planos o rectas 6ue se cru2an sin cortarse. %os sistemas 199
compati1les determinados se caracteri2an por un conjunto de 9<iper:planos o rectas 6ue se cortan en un )nico punto. %os sistemas compati1les indeterminados se caracteri2an por 9<iper:planos 6ue se cortan a lo largo de una recta Jo m8s generalmente un <iperplano de dimensin menorL. Desde un punto de ,ista alge1raico los sistemas compati1les determinados se caracteri2an por6ue el determinante de la matri2 es di.erente de ceroU Algoritmo para determinar si un sistema es compatible[editar editar cdigo] >odemos a,eriguar si un sistema es o no compati1le mediante el 7eorema de =ouc<+Q&ro1enius 6ue esta1lece 6ue un sistema de ecuaciones lineales es compati1le slo si el rango de su matri2 ampliada coincide con el de su matri2 de coefcientes. $upongamos 6ue el sistema es compati1le. $i el ,alor com)n de los rangos de las matrices coincide con el n)mero de ,aria1les' el sistema es copati*le deterinadoW en caso contrario' es copati*le indeterinado. Sistemas compatibles indeterminados[editar editar cdigo] 5n sistema so1re un cuerpo ; es copati*le indeterinado cuando posee un n)mero infnito de soluciones. >or ejemplo' el siguiente sistemaU 7anto la primera como la segunda ecuacin se corresponden con la recta cu(a pendiente es ( 6ue pasa por el punto ' por lo 6ue am1as intersecan en todos los puntos de dic<a recta. l sistema es compati1le por <a1er solucin o interseccin entre las rectas' pero es indeterminado al ocurrir esto en infnitos puntos. n este tipo de sistemas' la solucin gen+rica consiste en e4presar una o m8s ,aria1les como .uncin matem8tica del resto. n los sistemas lineales compati1les indeterminados' al menos una de sus ecuaciones se puede <allar como com1inacin lineal del resto' es decir' es linealmente dependiente. %a condicin necesaria para 6ue un sistema sea compati1le indeterminado es 6ue el determinante de la matri2 del sistema sea 200
cero al igual 6ue el rango de la matri2 ampliada ( menor al numero de incognitas9( por tanto uno de sus auto,alores ser8 0:U De <ec<o' de las dos condiciones anteriores se desprende' 6ue el conjunto de soluciones de un sistema compati1le indeterminado es un su1espacio ,ectorial. \ la dimensin de ese espacio ,ectorial coincidir8 con la multiplicidad geom+trica del auto,alor cero. Sistemas incompatibles[editar editar cdigo] De un sistema se dice 6ue es incopati*le cuando no presenta ninguna solucin. >or ejemplo' supongamos el siguiente sistemaU %as ecuaciones se corresponden gr8fcamente con dos rectas' am1as con la misma pendiente' Al ser paralelas' no se cortan en ning)n punto' es decir' no e4iste ning)n ,alor 6ue satis.aga a la ,e2 am1as ecuaciones. ;atem8ticamente un sistema de estos es incompati1le cuando el rango de la matri2 del sistema es in.erior al rango de la matri2 ampliada. 5na condicin necesaria para 6ue esto suceda es 6ue el determinante de la matri2 del sistema sea ceroU 3$todos de soluci!n a sisteas de ecuaciones lineales Sustitucin[editar editar cdigo] l m+todo de sustitucin consiste en despejar en una de las ecuaciones cual6uier incgnita' pre.eri1lemente la 6ue tenga menor coefciente' para' a continuacin' sustituirla en otra ecuacin por su ,alor. n caso de sistemas con m8s de dos incgnitas' la seleccionada de1e ser sustituida por su ,alor e6ui,alente en todas las ecuaciones e4cepto en la 6ue la <emos despejado. n ese instante' tendremos un sistema con una ecuacin ( una incgnita menos 6ue el inicial' en el 6ue 201
podemos seguir aplicando este m+todo reiteradamente. >or ejemplo' supongamos 6ue 6ueremos resol,er por sustitucin este sistemaU n la primera ecuacin' seleccionamos la incgnita por ser la de menor coefciente ( 6ue posi1lemente nos .acilite m8s las operaciones' ( la despejamos' o1teniendo la siguiente ecuacin. l siguiente paso ser8 sustituir cada ocurrencia de la incgnita en la otra ecuacin' para as? o1tener una ecuacin donde la )nica incgnita sea la . Al resol,er la ecuacin o1tenemos el resultado ' ( si a<ora sustituimos esta incgnita por su ,alor en alguna de las ecuaciones originales o1tendremos ' con lo 6ue el sistema 6ueda (a resuelto. Igualacin[editar editar cdigo] l m+todo de igualacin se puede entender como un caso particular del m+todo de sustitucin en el 6ue se despeja la misma incgnita en dos ecuaciones ( a continuacin se igualan entre s? la parte derec<a de am1as ecuaciones. 7omando el mismo sistema utili2ado como ejemplo para el m+todo de sustitucin' si despejamos la incgnita en am1as ecuaciones nos 6ueda de la siguiente maneraU Como se puede o1ser,ar' am1as ecuaciones comparten la misma parte i26uierda' por lo 6ue podemos afrmar 6ue las partes derec<as tam1i+n son iguales entre s?. 202
5na ,e2 o1tenido el ,alor de la incgnita ' se sustitu(e su ,alor en una de las ecuaciones originales' ( se o1tiene el ,alor de la . %a .orma m8s .8cil de tener el m+todo de sustitucin es reali2ando un cam1io para despejar 4 despu+s de a,eriguar el ,alor de la (. Reduccin[editar editar cdigo] ste m+todo suele emplearse ma(oritariamente en los sistemas lineales' siendo pocos los casos en 6ue se utili2a para resol,er sistemas no lineales. l procedimiento' dise-ado para sistemas con dos ecuaciones e incgnitas' consiste en trans.ormar una de las ecuaciones 9generalmente' mediante productos:' de manera 6ue o1tengamos dos ecuaciones en la 6ue una misma incgnita apare2ca con el mismo coefciente ( distinto signo. A continuacin' se suman am1as ecuaciones produci+ndose as? la reduccin o cancelacin de dic<a incgnita' o1teniendo as? una ecuacin con una sola incgnita' donde el m+todo de resolucin es simple. >or ejemplo' en el sistemaU @o tenemos m8s 6ue multiplicar la primera ecuacin por para poder cancelar la incgnita . Al multiplicar' dic<a ecuacin nos 6ueda as?U $i sumamos esta ecuacin a la segunda del sistema original' o1tenemos una nue,a ecuacin donde la incgnita <a sido reducida ( 6ue' en este caso' nos da directamente el ,alor de la incgnita U 20*
l siguiente paso consiste )nicamente en sustituir el ,alor de la incgnita en cual6uiera de las ecuaciones donde aparec?an am1as incgnitas' ( o1tener as? 6ue el ,alor de es igual aU Mtodo grfco[editar editar cdigo] =ectas 6ue pasan por el puntoU 92'!: Consiste en construir la gr8fca de cada una de las ecuaciones del sistema. l m+todo 9manualmente aplicado: solo resulta efciente en el plano cartesiano' es decir para un espacio de dimensin 2. l proceso de resolucin de un sistema de ecuaciones mediante el m+todo gr8fco se resuel,e en los siguientes pasosU 1. $e despeja la incgnita 9(: en am1as ecuaciones. 2. $e constru(e para cada una de las dos ecuaciones de primer grado o1teniendo la ta1la de ,alores correspondientes. *. $e representan gr8fcamente am1as rectas en los ejes coordenados. !. n este )ltimo paso <a( tres posi1ilidadesU 1. $i am1as rectas se cortan' las coordenadas del punto de corte son los )nicos ,alores de las incgnitas 94'(:. O$istema compati1le determinadoO. 2. $i am1as rectas son coincidentes' el sistema tiene infnitas soluciones 6ue son las respecti,as coordenadas de todos los puntos de 20!
esa recta en la 6ue coinciden am1as. t$istema compati1le indeterminadou. *. $i am1as rectas son paralelas' el sistema no tiene solucin en los reales pero si en los complejos. Mtodo de Gauss[editar editar cdigo] l m+todo de eliminacin de Pauss o simplemente m+todo de Pauss consiste en con,ertir un sistema lineal de n ecuaciones con n incgnitas' en uno escalonado' en el 6ue la primera ecuacin tiene n incgnitas' la segunda ecuacin tiene n Q 1 incgnitas' ...' <asta la )ltima ecuacin' 6ue tiene 1 incgnita. De esta .orma' ser8 .8cil partir de la )ltima ecuacin e ir su1iendo para calcular el ,alor de las dem8s incgnitas. J4pandirL Ejeplo de eliminacin de Gauss Eliminacin de Gauss-Jordan 5na ,ariante de este m+todo' denominada eliminacin de PaussQfordan' es un m+todo aplica1le )nicamente a los sistemas lineales de ecuaciones' ( consistente en triangular la matri2 aumentada del sistema mediante trans.ormaciones elementales' <asta o1tener ecuaciones de una sola incgnita' cu(o ,alor ser8 igual al coefciente situado en la misma fla de la matri2. ste procedimiento es similar al anterior de reduccin' pero ejecutado de manera reiterada ( siguiendo un cierto orden algor?tmico. J4pandirL Ejeplo de eliminacin de Gauss !ordan Regla de "ramer[editar editar cdigo] Art#culo principal0 =egla de Cramer %a regla de Cramer da una solucin para sistemas compati1les determinados en t+rminos de determinantes ( adjuntos dada porU 20/
Donde A j es la matri2 resultante de rempla2ar la jQ+sima columna de A por el ,ector columna *. >ara un sistema de dos ecuaciones ( dos incgnitasU %a regla de Cramer da la siguiente solucinU @otaU Cuando en la determinante original det9A: el resultado es 0' el sistema indica m)ltiples o sin coincidencia. Soluci!n de sisteas lineales en un anillo %os m+todos para resol,er el sistema 91: so1re un anillo son mu( di.erentes a los considerados anteriormente. De <ec<o la ma(or?a de m+todos usados en cuerpos' como la regla de Cramer' son inaplica1les en anillos de1ido a 6ue no e4isten in,ersos multiplicati,os. %a e4istencia de solucin del sistema 91: so1re los enteros re6uiere ,arias condicionesU 1. >ara cada i es di,isor de . 2. $i la condicin anterior se cumple para un determinado i e4iste un conjunto de enteros .ormado por el conjunto de enteros 6ue satis.ace la iQ+sima ecuacin' ( e4istir8 solucin si la interseccin . 20"