Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Qu es un ob(eto?
2ada !ormulario 3"entana4* men/ o control -ue se crea con Visual Basic es un mdulo autocontenido llamado objeto. 'os blo-ues b sicos de construccin de una aplicacin con Visual Basic son los ob(etos& 2ada ob(eto tiene un con(unto de caracter.sticas ) un comportamiento de!inido 3 propiedades, mtodos y eventos) -ue lo di!erencian de otros tipos de ob(eto& ,n otras palabras* un ob(eto !ormulario 5a sido dise6ado para cumplir determinada !uncin en una aplicacin* ) no es lo mismo -ue un ob(eto men/&
Propiedades
,l con(unto de datos -ue describen las caracter.sticas de un ob(eto se le conoce como sus propiedades. Para un !ormulario tenemos por e(emplo* las propiedades BackColor 3color de !ondo4* Height 3altura4& Algunas propiedades no solo determinan el aspecto -ue tiene el ob(eto* sino -ue adem s pueden determinar su comportamiento7 por e(emplo* la propiedad Ma Button establece si el !ormulario tendr o no el botn Maximizar. 'a presencia o ausencia de este botn determinar si el !ormulario se puede o no ma8imi0ar&
#todos
'os mtodos son un con(unto de procedimientos -ue permiten -ue un ob(eto e(ecute una accin o tarea sobre s. mismo& Por e(emplo* para un !ormulario tenemos el mtodo Hide -ue 5ar -ue el !ormulario se oculte7 o el mtodo !ho" -ue 5ar -ue el !ormulario se "uel"a a mostrar&
,"entos
1n evento es una accin -ue es reconocida por el ob(eto& 1n e"ento ocurre 3se dispara4 como resultado de la interaccin del usuario con el ob(eto& <ambin puede dispararse debido a la e(ecucin de cdigo 3sentencias4 o como resultado de la interaccin de otro ob(eto con el ob(eto de poseedor del e"ento& Para un !ormulario tenemos por e(emplo7 el e"ento #oad -ue se dispara cuando se carga el !ormulario7 o el e"ento Click para un botn de comando* se dispara cuando se 5ace clic sobre l&
2uadro&9ombre:;t8t2ontrase6a; 2uadro&Pass%ord25ar:;>;
Botn&9ombre:;cmdIngresar; Botn&<.tulo:;Ingresar;
Para dise6ar esta "entana 3Formulario4* del con(unto de ob(etos de Visual Basic seleccionamos un ob(eto tipo %ormulario 3Form4& 'uego a la propiedad &ombre 39ame4 le asignamos el "alor 'rm(ntrada) a la propiedad *+tulo le asignamos el "alor Bienvenidos a ,esti$n y !istemas. Dentro del !ormulario se colocan los controles& Para -ue el usuario pueda ingresar un dato 3por e(emplo* la contrase6a4 colocamos en la "entana un control tipo Cuadro de *e to 3<e8tBo847 a continuacin establecemos su propiedad &ombre en t tContrase-a, ) su propiedad .ass"ordChar es un > 3asterisco4 para -ue el dato ingresado sea reempla0ado por asteriscos slo en la pantalla* para -ue no se pueda "isuali0ar&
2uadro de Aerramientas
Ventana de 2digo
Ventana de Propiedades
Barra de Mens
Presenta los comandos -ue se usan para traba(ar con Visual Basic& Adem s de los men/s est ndar 4rchivo, (dici$n, Ver, Ventana y 4yuda, contiene otros men/s para tener acceso a !unciones espec.!icas de programacin* como .royecto, %ormato o 5epuraci$n.
Barra de Herramientas
Permite un acceso directo 3solo un clic4 a muc5as de las operaciones m s !recuentes utili0adas durante el desarrollo de aplicaciones&
Cuadro de Herramientas
2ontiene todos los ob(etos ) controles -ue se pueden a6adir a los !ormularios para crear aplicaciones&
Diseador de Formularios
Funciona como una "entana en la -ue se puede personali0ar el dise6o de la inter!a0 de usuario 3"entana4 de una aplicacin&
Explorador de Proyectos
'ista de los arc5i"os 3!ormularios* mdulos* etc&4 del pro)ecto actual& 1n .royecto es una coleccin de arc5i"os -ue utili0a para construir una aplicacin&
entana de Propiedades
'ista los "alores de las propiedades del !ormulario o control seleccionado -ue pueden ser modi!icados durante el dise6o del !ormulario o control&
entana de C!digo
Funciona como un editor para escribir el cdigo 3sentencias4 de la aplicacin&
"yuda en l#nea
Visual Basic proporciona una amplia a)uda en l.nea& ,l arc5i"o de A)uda contiene muc5o cdigo de e(emplo -ue se puede copiar directamente a una aplicacin& 'a a)uda de Visual Basic es sensible al conte8to& Para emplear la a)uda sensible al conte8to en la "entana de cdigo* escriba la palabra para la cual desea in!ormacin* ) luego presione %6& Por e(emplo* si desea in!ormacin acerca de la sentencia 7pen* escriba 7pen ) presione F1&
$i%ros en Pantalla
Adem s de la a)uda sensible al conte8to* el 2DCDB# de Visual Basic inclu)e una "ersin en l.nea de la documentacin impresa para Visual Basic& Para acceder a los 'ibros en Pantalla* 5aga clic en #ibros en .antalla dentro del men/ 4yuda de Visual Basic&
$a entana de C!digo
'a "entana o editor de cdigo de Visual Basic proporciona de manera autom tica in!ormacin rele"ante a medida -ue se ingresa cdigo& Por e(emplo* si se escribe el nombre de un control* seguido de un punto* las propiedades ) mtodos para ese control ser n mostrados autom ticamente en un cuadro de lista& 'uego se puede escoger la propiedad o mtodo deseado para completar la sentencia&
M&todo '
<eniendo el cuadro de Aerramientas o un Formulario "isible , 5aga doble clic en el control -ue desea a6adir en el Cuadro de Herramientas( los controles se ubican en el centro del !ormulario* uno encima de otro* luego 5a) -ue mo"erlos a la posicin deseada dentro del !ormulario&
M&todo )
1& Aaga clic sobre el control en el 2uadro de Aerramientas& ?& 1bi-ue el puntero del #ouse 3una cru04 sobre el !ormulario en la es-uina superior i0-uierda donde desea colocar el control& @& Dealice un clic sostenido mientras arrastra el puntero a la es-uina superior derec5a donde colocar el control& E& +uelte el botn del #ouse& ,stos cuatro pasos se repiten con cada control -ue desea a6adir al !ormulario&
Formulario
*rmino 2ontroles
2uando un programa es controlado por e*entos( usted escribe cdigo -ue se e(ecuta en respuesta a e"entos in"ocados por el usuario& Di!iere de la programaci!n procedural( en la cual el programa comien0a en la primera l.nea de cdigo ) sigue un !lu(o de!inido llamando procedimientos cuando es necesario& 'a programacin controlada por e"entos es la esencia de las inter!aces gr !icas de usuario7 el usuario acciona ) el cdigo responde&
Qu es un pro)ecto?
2uando desarrolla una aplicacin* Visual Basic crea un arc5i"o especial llamado 4rchivo de .royecto para administrar todos los dem s arc5i"os de la aplicacin& ,l 4rchivo de .royecto es simplemente una lista de todos los arc5i"os ) ob(etos asociados con el pro)ecto* as. como in!ormacin sobre las opciones del entorno& ,sta in!ormacin se actuali0a cada "e0 -ue se guarda el pro)ecto& <odos los arc5i"os ) ob(etos tambin se pueden compartir con otros pro)ectos& 1n pro)ecto est compuesto por los siguientes arc5i"os: *ipo de archivo Pro)ecto ( tensi$n &"bp 5escripci$n Deali0a el seguimiento de todos los componentes de la aplicacin& Inclu)e el !ormulario* los ob(etos sobre el !ormulario ) el cdigo -ue se e(ecuta cuando ocurre un e"ento en el !ormulario& 2ontiene procedimientos !ub ) %unction -ue pueden ser in"ocados por cual-uier !ormulario u ob(eto sobre el !ormulario& 3opcional4 5escripci$n
Formulario
&!rm &!r8
&bas
( tensi$n
&oc8
2ontroles adicionales a los controles est ndar proporcionados por #icroso!t u otras empresas& 3opcional4 2ontiene la de!inicin de clase* mtodos ) propiedades de un nue"o tipo de ob(eto& 3opcional4
#dulo de clase
&cls
Decursos
&res
2ontiene in!ormacin binaria usada por la aplicacin& +on usados generalmente cuando se crean programas para m/ltiples lengua(es& 3opcional4
2uando 5a completado todos los arc5i"os del pro)ecto puede con"ertir el pro)ecto en un arc5i"o e(ecutable 3&e8e4& Nota: Con las ediciones Pro+esional y Empresarial de arc,i*os e-ecuta%les, como arc,i*os .ocx y .dll. isual Basic tam%i&n puede crear otro tipo de
2uando se usa esta con"encin de nombres* todos los miembros de un grupo de men/s determinado se muestran uno (unto a otro en la "entana Propiedades de Visual Basic& Adem s* los nombres del control de men/ documentan claramente los elementos del men/ a los -ue est n ad(untos&
Formularios
Parte 1: Introduccin al desarrollo con Visual Basic N
,l !ormulario es el principal medio de comunicacin entre el usuario ) la aplicacin& 'os usuarios interact/an con los controles sobre el !ormulario para ingresarle datos ) obtener resultados&
Propiedades
BacK2olor Border+t)le 2aption 2ontrolBo8 ,nabled Icon 'e!t ) <op #a8Button #inButton 9ame $indo%+tate 2olor de !ondo del !ormulario& ,stilo del borde del !ormulario& <e8to en la barra de t.tulo del !ormulario& <rueOFalse& Determina si tiene o no el cuadro de control& <rueOFalse& Determina si est 5abilitado para responder a las acciones del usuario& Icono -ue se muestra cuando el !ormulario est minimi0ado& 1bicacin del !ormulario& <rueOFalse& Determina si tiene o no el botn Maximizar. <rueOFalse& Determina si tiene o no el botn Minimizar. 9ombre del !ormulario& ,stado inicial del !ormulario 3normal* ma8imi0ado o minimi0ado4
E*entos
Acti"ate 2licK Deacti"ate 'oad 1nload Bcurre cuando el !ormulario se con"ierte en la "entana acti"a& Bcurre cuando 5ace clic sobre el !ormulario& Bcurre cuando el !ormulario de(a de ser la "entana acti"a& Bcurre cuando se carga un !ormulario& Bcurre cuando un !ormulario est a punto de descargarse&
M&todos
Aide De!res5 +etFocus +5o% Bculta el !ormulario& Actuali0a el contenido del !ormulario& 'e entrega el en!o-ue al !ormulario& Aace "isible el !ormulario&
1I
2ontroles B sicos
2ontrol ,ti-ueta 2ontrol 2uadro de <e8to
2ontrol Botn de 2omando 2on los controles* los usuarios pueden operar ) obtener los resultados de una aplicacin& Puede a6adir controles a un !ormulario seleccionando la 5erramienta adecuada del Cuadro de Herramientas. ,ntre los controles m s comunes a utili0ar en una aplicacin tenemos: ,ti-ueta 3'abel4* 2uadro de <e8to 3<e8tBo84 ) Botn de 2omando 32ommandButton4&
11
Propiedades
Alignment Auto+i0e 2aption 9ame Font Alineacin del te8to dentro del control& <rueOFalse& Determina si el tama6o del control se a(usta autom ticamente al te8to -ue contiene& <e8to -ue muestra el control& 9ombre del control& ,stablece la !uente* estilo ) tama6o para el te8to del control&
Propiedades
,nabled <rueOFalse& ,stablece un "alor -ue determina si el control puede responder a e"entos generados por el usuario& Font ,stablece la !uentes* estilo ) tama6o para el te8to del control& 'ocKed <rueOFalse& Determina si es posible modi!icar el te8to en el control& #a8'engt5 ,stablece la longitud m 8ima permitida para el te8to en el control& #ulti'ine ,stablece si el control puede aceptar m/ltiples l.neas de te8to& 9ame 9ombre del control& Pass%ord25ar 2ar cter utili0ado para ocultar el te8to -ue realmente contiene el control& <e8t <e8to -ue realmente contiene ) muestra el control& Visible ,stablece si el control ser "isible para el usuario&
E*entos
25ange =otFocus Pe)Do%n 'ostFocus Bcurre cuando cambia el te8to -ue contiene el control& Bcurre cuando el control recibe el en!o-ue& Bcurre cuando el usuario presiona una tecla mientras el control tiene el en!o-ue& Bcurre cuando el control pierde el en!o-ue&
M&todos
De!res5 +etFocus Actuali0a el te8to del control& #ue"e el en!o-ue al control&
Propiedades
2ancel <rueOFalse& ,stablece si el botn se comportar como el botn cancelar en el !ormulario ) se in"ocar su e"ento Click cada "e0 -ue se presione la tecla (!C&
1?
E*entos
2licK Bcurre cuando se 5ace clic sobre el botn&
M&todos
+etFocus #ue"e el en!o-ue al botn&
,stableciendo Propiedades
Al dise6ar la inter!ase de usuario de una aplicacin Visual Basic* se deben establecer la propiedades para los controles 3ob(etos4 creados&
,ste cdigo establece la propiedad *e t del cuadro de te8to t8tData txtData.Text = "Hola mundo" 'Establece el valor del texto
+i se omite el nombre de la propiedad* se establece la propiedad predeterminada del control& 'a propiedad predeterminada de un cuadro de te8to es la propiedad *e t& 'a propiedad predeterminada de una eti-ueta es la propiedad Caption& 'as siguientes l.neas de cdigo establecen las propiedades predeterminadas te8t ) caption de un cuadro de te8to ) de una eti-ueta& txtData = "Se establece la propiedad Text del cuadro de texto" lblData = "Se establece la propiedad Caption de la eti ueta"
1@
Procedimientos de ,"ento
Visual Basic in"oca autom ticamente procedimientos de e"ento en respuesta a acciones del teclado* del ratn o del sistema& Por e(emplo* los botones de comando tienen un procedimiento de e"ento 2licK& ,l cdigo -ue se escriba en el procedimiento de e"ento 2licK es e(ecutado cuando el usuario 5aga clic en un botn de comando& Para abrir la "entana de cdigo* 5aga doble clic en el control o !ormulario* 5aga clic en la orden C$digo del men/ Ver. 2ada control tiene un con(unto !i(o de procedimientos de e"ento& 'os procedimientos de e"ento para cada control son mostrados en un cuadro de lista despegable en la "entana de cdigo& ,l siguiente cdigo muestra el procedimiento de e"ento 2licK para un botn de comando llamado cmdBP& "rivate Sub cmd#$%Clic&'( )sgBox "Hola" End Sub
1E
1F
Barra de Di"isin
1G
$a Barra de Di*isi!n
Desde el men/ entana puede e(ecutar el comando Di*idir para di"idir la "entana de cdigo en dos partes* cada una de las cuales se despla0a separadamente& Puede entonces "er di!erentes partes de su cdigo al mismo tiempo& 'a in!ormacin -ue aparece en el cuadro Bb(eto ) Procedimiento se re!iere al cdigo en la parte -ue tiene el en!o-ue& ,l mismo comando utili0ado para di"idir la "entana puede utili0arlo para cerrar una de sus partes o tambin lo puede 5acer arrastrando la barra de di"isin 5acia la parte superior o in!erior de la "entana&
El Bot!n er Procedimiento
,stablece -ue en la "entana de cdigo se edite un procedimiento a la "e0&
,ditando 2digo
1se las caracter.sticas de edicin de Visual Basic para -ue su cdigo sea m s ! cil de leer&
5angr#a
1se la sangr.a para di!erenciar partes de su cdigo* tales como estructuras repetiti"as ) condicionales& Para aplicar sangr.a a una seccin de sentencias de un cdigo use la tecla *ab o el comando 4plicar sangr+a del men/ (dici$n& +e !orma similar* !hi't R *ab o el comando 4nular sangr+a del men/ (dici$n -uitar una sangr.a a las l.neas seleccionadas& Veamos el siguiente e(emplo: "rivate Sub cmd*ngresar%Clic&'( *+ ,en'Trim'txt-suario((=. T/en txt-suario.SetFocus Else*+ ,en'Trim'txtContrase0a((=. T/en txtContrase0a.SetFocus Else*+ txtContrase0a = 123"S4 T/en )sgBox 1,a clave ingresada es correcta4 -nload )e Else )sgBox 1,a clave ingresada no es v5lida4 txtContrase0a.SelStart=. txtContrase0a.Sel,engt/= ,en'Trim'txtContrase0a((
Parte ?: #ane(o de Formularios 1H
Comentarios
,l a6adir documentacin ) comentarios a su cdigo permite comprender me(or lo -ue 5ace el cdigo& ,sto tambin a)uda a comprender el cdigo si necesita "ol"er a re"isarlo en alguna !ec5a posterior& 1n comentario se inicia con el car cter apstro!e 3T4* de modo -ue todo el te8to -ue contin/e a este car cter ser ignorado en la e(ecucin de la aplicacin& Veamos el siguiente e(emplo: "rivate Sub cmd,impiar%Clic&'( 'Este procedimiento limpia la ventana de identi+icaci=n txt-suario.Text = "" ',impia el cuadro de texto -suario txtContrase0a.Text = "" ',impia el cuadro de texto Contrase0a txt-suario.SetFocus ' )ueve el en+o ue al cuadro de texto -suario End Sub
Funci!n MsgBox67
'os cuadros de mensa(e o!recen un modo simple ) r pido de consultar a los usuarios por in!ormacin simple o para permitirles tomar decisiones sobre el camino -ue su programa debe tomar& Puede usar esta !uncin para mostrar di!erentes tipos de mensa(e ) botones con los cuales el usuario da una respuesta&
1L
Buttons
<itle Aelp!ile
2onte8t
Valores ,l argumento buttons puede asumir los siguientes "alores: Constante VbBPBnl) VbBP2ancel VbAbortDetr)Ignore VbWes9o2ancel VbWes9o VbDetr)2ancel Vb2ritical VbQuestion Constante Vb,8clamation VbIn!ormation VbDe!aultButton1 VbDe!aultButton? VbDe!aultButton@ Valor I 1 ? E F 1G @? Valor EL GE I ?FG F1? Descripcin #uestra solamente el botn Aceptar& #uestra los botones Aceptar ) 2ancelar& #uestra los botones Anular* Deintentar e Ignorar& @ #uestra los botones +.* 9o ) 2ancelar& #uestra los botones +. ) 9o& #uestra los botones Deintentar ) 2ancelar& #uestra el icono de mensa(e cr.tico& #uestra el icono de pregunta de ad"ertencia& Descripcin #uestra el icono de mensa(e de ad"ertencia& #uestra el icono de mensa(e de in!ormacin& ,l primer botn es el predeterminado& ,l segundo botn es el predeterminado& ,l tercer botn es el predeterminado&
1N
,l primer grupo de "alores 3I a F4 describe el n/mero ) el tipo de los botones mostrados en el cuadro de di logo7 el segundo grupo 31G* @?* EL* GE4 describe el estilo del icono* el tercer grupo 3I* ?FG* F1?* HGL4 determina el botn predeterminado ) el cuarto grupo 3I* EING4 determina la modalidad del cuadro de mensa(es& 2uando se suman n/meros para obtener el "alor !inal del argumento buttons* se utili0a solamente un n/mero de cada grupo& Nota8 Estas constantes las especi+ica isual Basic. Por tanto( el nom%re de las mismas puede utilizarse en cual1uier lugar del c!digo en *ez de sus *alores reales.
Valores devueltos Constante VbBK Vb2ancel VbAbort VbDetr) VbIgnore VbWes Vb9o Valor 1 ? Descripcin Aceptar 2ancelar @ Anular E Deintentar Ignorar +. 9o
F G H
Nota: 5i desea omitir algn argumento( de%e incluir el delimitador de coma correspondiente o utilizar argumentos con nom%re. (jemplos Str)sg = "7Desea continuar8" Estilo = vb<es!o ; vbExclamation ; vbDe+aultButton@ StrTitulo = "6esponda" 6pta = )sgBox'str)sg9 Estilo9 StrTitulo ( *+ 6pta= vb<es T/en AAAAAAAAAAA AAAAAAAAAAA Else AAAAAAAAAAA AAAAAAAAAAA End *+
Str)sg = "7Desea continuar8" iEstilo = vb<es!o ; vbExclamation ; vbDe+aultButton@ StrTitulo = "6esponda" i6pta = )sgBox' "romptB=str)sg9 TitleB= StrTitulo9 ButtonsB= iEstilo (
Parte ?: #ane(o de Formularios ?I
Funci!n InpuBox67
'a !uncin InputBo8 muestra un mensa(e en un cuadro de di logo* espera -ue el usuario escriba un te8to o 5aga clic en un botn ) de"uel"e un tipo +tring con el contenido del cuadro de te8to& strCodigo = *nputBox'"*ngrese el c=digo del cliente a buscarB"9 % "BCs ueda"9 "C,*...D"(
%ormato InputBo83 prompt U* titleV U* de!aultV U* 8posV U*)posV U* 5elp!ile* conte8tV 4 ,l !ormato de la !uncin InpuBo8 consta de los siguientes argumentos con nombre: Parte Prompt Descripcin De-uerido& ,8presin de cadena -ue se muestra como mensa(e en el cuadro de di logo& 'a longitud m 8ima de prompt es de apro8imadamente de 1I?E caracteres* seg/n el anc5o de los caracteres utili0ados& +i prompt consta de m s de una l.nea* puede separarlos utili0ando un car cter de retorno de carro 325r31@44* un car cter de a"ance Descripcin de l.nea 325r31I44 o una combinacin de los caracteres de retorno de carro X a"ance de l.nea 325r31@4 ) 325r31I44 entre cada l.nea ) la siguiente& Bpcional& ,8presin de cadena -ue se muestra en la barra de t.tulo del cuadro de di logo& +i omite title* en la barra de t.tulo se coloca el nombre de la aplicacin& Bpcional& ,8presin de cadena -ue se muestra en el cuadro de te8to como respuesta predeterminada& +i omite de!ault* se muestra el cuadro de te8to "ac.o& Bpcional& ,8presin numrica -ue especi!ica* la distancia en sentido 5ori0ontal entre el borde i0-uierdo del cuadro de di logo ) el borde i0-uierdo de la pantalla& +i se omite 8pos* el cuadro de di logo se centra 5ori0ontalmente&
?1
Parte
Aelp!ile
2onte8t
Comentarios +i el usuario 5ace clic en Cancelar* la !uncin de"uel"e una cadena de caracteres de longitud cero 3M;4& Nota: 5i desea omitir algunos argumentos( de%e incluir el delimitador de coma correspondiente o utilizar argumentos con nom%re.
2onstantes Prede!inidas
Visual Basic reconoce cierta cantidad de constantes prede!inidas -ue pueden se usadas en cual-uier parte de su cdigo en lugar de "alores numricos& Puede 5acer -ue su cdigo sea m s ! cil de leer ) escribir mediante el uso de estas constantes& Adem s* los "alores de estas constantes pueden cambiar en "ersiones posteriores de Visual Basic* su uso permitir -ue su cdigo sea compatible& Por e(emplo* la propiedad =indo"!tate de un !ormulario puede aceptar las siguientes constantes: Constante Vb9ormal Vb#inimi0ed Vb#a8imi0ed Valor I 1 ? 5escripci$n 9ormal #inimi0ado #a8imi0ado
Por e(emplo* para establecer el estado del !ormulario 'rm(ntrada en ma8imi0ado* la sentencia ser.a: +rmEntrada.EindoFState = vb)aximiGed
#ane(o de Formularios
9ormalmente la inte!a0 de una aplicacin est compuesta por "arios !ormularios& 2uando Visual Basic inicia la aplicacin* autom ticamente se muestra el !ormulario de arran-ue* mientras -ue los otros !ormularios deben ser mostrados ) ocultados a tra"s de cdigo& ,l mtodo o !uncin usado depende de lo -ue deseamos 5acer& *area 2argar un !ormulario en memoria* pero sin mostrarlo 2argar o mostrar el !ormulario& #ostrar un !ormulario cargado& Bcultar u !ormulario Bcultar un !ormulario ) descargarlo de
Parte ?: #ane(o de Formularios
Mtodo o 0nstrucci$n 1se la sentencia #oad* o 5aga re!erencia a una propiedad o control sobre el !ormulario& 1se el mtodo !ho"& 1se el mtodo !ho". 1se el mtodo Hide. 1se la sentencia 1nload.
??
M&todo 5,o9
#uestra un !ormulario& +i el !ormulario no est cargado al momento de e(ecutar el mtodo +5o%* Visual Basic lo cargar autom ticamente& %ormato 9ombreDelFormulario&+5o% (jemplo FrmEntrada.S/oF
5entencia $oad
2arga un !ormulario a la memoria* pero no lo muestra& %ormato 'oad 9ombreDelFormulario (jemplo ,oad FrmEntrada
E*ento $oad
,l e"ento #oad ocurre cuando el !ormulario es cargado en la memoria& ,sto sucede cuando se usa la sentencia #oad* o cuando se in"oca el mtodo !ho" ) el !ormulario a/n no est cargado en memoria& 9ormalmente* este e"ento se utili0a para establecer algunas propiedades del !ormulario* los controles -ue se encuentran en l* o "ariables a ni"el del !ormulario& (jemplos> "rivate Sub Form%,oad'( +rm*ngreso.,e+t = 'Screen.Eidt/ A +rm*ngreso.Eidt/( H @ +rm*ngreso.Top = 'Screen.Heig/t A +rm*ngreso.Heig/t( H @ End Sub
?@
M&todo Hide
Bculta un !ormulario* pero no lo descarga de memoria& %ormato 9ombreDelFormulario&Aide (jemplo> +rm*ngreso.Hide
5entencia :nload
Descarga un !ormulario de memoria %ormato 1nload 9ombreDelFormulario Comentarios 'a descarga de un !ormulario puede ser necesario o con"eniente en a-uellos casos en los -ue la memoria utili0ada se necesite para alguna otra tarea o cuando sea necesario restablecer las propiedades a sus "alores originales& Antes de descargar un !ormulario se e(ecuta el e"ento 1nload 3Form_Unload . +i establece el argumento Cancelar a *rue en este e"ento* no se descargar el !ormulario& !ugerencia 1se la palabra Me para re!erirse al !ormulario actual&
?E
E*ento :nload
Bcurre cuando un !ormulario est a punto de descargarse& ,ste e"ento se desencadena por-ue un usuario cierra el !ormulario mediante el comando Cerrar del men/ Control o una sentencia 1nload. ,l par metro Cancelar, es un entero -ue determina si el !ormulario es descargado& +i Cancelar es I* el !ormulario se descarga& ,stablecer Cancelar a cual-uier "alor distinto de cero impide -ue el !ormulario sea descargado& (jemplo "rivate Sub Form%-nload'Cancel 2s *nteger( Dim i6pta 2s *nteger i6pta = )sgBox'17Esta seguro de cerrar la ventana849 % Jb<es!o ; vb:uestion9 1)ensa?e4( *+ i6pta = vb!o T/en Cancel = True End *+ End Sub
I Descarga el +ormulario actual "rivate Sub cmdCerrarAClic& ' ( -nload )e End Sub
,l ,ditor de men/s
,sta 5erramienta permite crear men/s personali0ados para la aplicacin ) de!inir sus propiedades& Para ingresar* estando en tiempo de dise6o* 5aga clic en el men/ Herramientas ) luego en la orden (ditor de Men9s o en el botn e-ui"alente de la barra de 5erramientas est ndar&
'ista de men/s
Nota:
?G
Para dar al usuario acceso a tra"s del teclado a un elemento del men/* escriba el signo Q delante de una letra& ,n tiempo de e(ecucin* esta letra aparecer subra)ada 3el signo Q no ser "isible4 ) el usuario tendr acceso al men/ o al comando si presiona las teclas 4#* ) la correspondiente a la letra subra)ada& +i necesita -ue apare0ca en el men/ el signo Q* deber escribir dos signos Q consecuti"os& 9ame 'e permite escribir un nombre de control para el elemento del men/& ,l nombre de control es un identi!icador -ue slo se utili0a para tener acceso al elemento del men/ en el cdigo* no aparece en ning/n men/& Inde8 'e permite asignar un "alor numrico -ue determina la posicin del control en una matri0 de controles& ,sta posicin no tiene ninguna relacin con la ubicacin del control en la pantalla& +5ortcut 'e permite seleccionar una tecla de mtodo abre"iado para cada comando& Aelp2onte8tID 'e permite asignar un "alor numrico /nico para el Id& de conte8to& ,ste "alor se utili0a para encontrar el tema de A)uda apropiado en el arc5i"o de A)uda identi!icado mediante la propiedad AelpFile& 9egotiatePosition 'e permite seleccionar la propiedad 9egotiatePosition del men/& ,sta propiedad determina si el men/ aparece o no en un !ormulario contenedor ) cmo aparece& 25ecKed 'e permite 5acer -ue apare0ca inicialmente una marca de "eri!icacin a la i0-uierda de un elemento del men/& +e utili0a normalmente para indicar si una opcin de alternar est acti"ada o no& ,nabled 'e permite seleccionar si el elemento del men/ debe responder a e"entos& Desacti"e esta opcin si desea -ue el elemento del men/ no est disponible ) apare0ca atenuado& Visible 'e permite 5acer -ue un elemento apare0ca en el men/& $indo%'ist Determina si el control del men/ contiene una lista de !ormularios secundarios #DI abiertos en una aplicacin #DI& Flec5a a la derec5a Pasa el men/ seleccionado a un ni"el in!erior cada "e0 -ue 5ace clic en el botn& Puede crear 5asta cuatro ni"eles de submen/s& Flec5a a la i0-uierda Pasa el men/ seleccionado a un ni"el superior cada "e0 -ue 5ace clic en el botn& Puede crear 5asta cuatro ni"eles de submen/s& Flec5a arriba 2ada "e0 -ue se 5ace clic en este botn* el elemento seleccionado del men/ se mue"e 5acia arriba una posicin dentro del mismo ni"el de men/& Flec5a aba(o 2ada "e0 -ue se 5ace clic en este botn* el elemento seleccionado del men/ se mue"e 5acia aba(o una posicin dentro del mismo ni"el de men/& ,s un cuadro de lista -ue muestra en orden (er r-uico todos los elementos del men/& 'os elementos de los submen/s aparecen indentados para indicar su ubicacin o su ni"el en la (erar-u.a& +elecciona la l.nea siguiente& Inserta una l.nea en el cuadro de lista* inmediatamente encima de la l.nea actualmente
'ista #en/s
+iguiente Insertar
?H
2ancelar
El
control
.oolBar
1n control *oolbar contiene una coleccin de ob(etos Button utili0ados para crear una barra de 5erramientas asociada a una aplicacin& Comentarios 9ormalmente* una barra de 5erramientas contiene botones -ue corresponden a elementos de men/ de una aplicacin* proporcionando una inter!a0 gr !ica al usuario -ue le permite tener acceso a las !unciones ) comandos empleados con m s !recuencia en esa aplicacin& ,l control *oolbar le permite crear barras de 5erramientas agregando ob(etos Button a una coleccin Buttons7 cada ob(eto Button puede tener te8to opcional o una imagen* proporcionados por un control 0mage#ist asociado& Puede mostrar una imagen en un botn con la propiedad 0mage o mostrar te8to con la propiedad Caption* o ambos* para cada ob(eto Button& ,n tiempo de dise6o puede agregar ob(etos Button al control utili0ando la .?gina de propiedades del control <oolbar& ,n tiempo de e(ecucin* puede agregar o -uitar botones de la coleccin Buttons mediante los mtodos 4dd ) @emove& Para programar el control *oolbar* agregue cdigo al e"ento ButtonClick para -ue responda al botn seleccionado& <ambin puede determinar el comportamiento ) la apariencia de cada ob(eto Button mediante la propiedad !tyle& Por e(emplo* si a cuatro botones se les asigna el estilo Button,roup* slo se podr presionar uno de ellos ) al menos uno estar siempre presionado& 'a !acilidad de uso se me(ora considerablemente programando descripciones *ool*ip*e t de cada ob(eto Button& Para mostrar in!ormacin sobre 5erramientas* la propiedad !ho"*ips debe establecerse a <rue&
?L
El
Control
Image$ist
1n control 0mage#ist contiene una coleccin de ob(etos #ist0mage* a cada uno de los cuales se puede 5acer re!erencia mediante su .ndice o su cla"e& ,l control 0mage#ist no est concebido para utili0arlo en solitario* sino como punto de almacenamiento central para proporcionar cmodamente im genes a otros controles& Comentarios Puede usar el control 0mage#ist con cual-uier control -ue asigne un ob(eto .icture a una propiedad .icture& ,s posible agregar im genes de di!erentes tama6os al control 0mage#ist* pero todas se a(ustan al mismo tama6o& ,l tama6o de los ob(etos de #ist0mage est determinado por uno de los siguientes "alores: ,l "alor de las propiedades 0mage=idth ) 0mageHeight antes de agregar alguna imagen& 'as dimensiones de la primera imagen agregada& 9o 5a) ninguna limitacin en cuanto al tama6o de la imagen* pero el n/mero total de im genes -ue se puede cargar est limitado por la cantidad de memoria disponible& Durante el dise6o del programa puede agregar im genes mediante la !ic5a ,eneral del cuadro de di logo .ropiedades del control 0mage#ist& ,n tiempo de e(ecucin puede agregar im genes mediante el mtodo 4dd para la coleccin #ist0mages& Nota8 $os controles Toolbar e Image&ist +orman parte del grupo de controles "cti*e4 adicionales Microso+t ;indo9s Common Controls <.= 6arc,i*o C/MC.$>)./C47. Para usarlos en su aplicaci!n de%e agregar el arc,i*o C/MC.$>)./C4 al proyecto. Cuando distri%uya su aplicaci!n( instale el arc,i*o C/MC.$>)./C4 en la carpeta 5ystem o 5ystem>) 6en plata+ormas con ;indo9s ?.7 de Microso+t ;indo9s del usuario.
Propiedad MDIC,ild
De"uel"e o establece un "alor -ue indica si un !ormulario debe mostrarse como !ormulario secundario #DI dentro de un !ormulario #DI& ,s de slo lectura en tiempo de e(ecucin& 'os "alores admitidos para la propiedad #DI25ild son: Valor <rue False 5escripci$n ,l !ormulario es #DI secundario ) se mostrar dentro del !ormulario #DI primario& 3Predeterminado4 ,l !ormulario no es #DI secundario&
Comentarios 1tilice esta propiedad al crear una aplicacin con inter!a0 de m/ltiples documentos 3#DI4& ,n tiempo de e(ecucin* los !ormularios -ue tengan establecida a <rue esta propiedad se mostrar n dentro de un !ormulario #DI& 'os !ormularios #DI secundarios pueden ma8imi0arse* minimi0arse ) despla0arse* siempre dentro del !ormulario #DI primario& 2uando traba(e con !ormularios #DI secundarios* tenga en cuenta lo siguiente: ,n tiempo de e(ecucin* cuando un !ormulario #DI secundario se ma8imi0a* su t.tulo se combina con el del !ormulario #DI primario& ,n tiempo de dise6o* los !ormularios #DI secundarios se muestran de la misma !orma -ue el resto ) slo se mostrar n dentro del !ormulario primario en tiempo de e(ecucin& ,l icono de un !ormulario #DI secundario en la "entana Pro)ecto es distinto de los iconos de otros tipos de !ormularios& 'os !ormularios #DI secundarios no pueden ser modales& ,l entorno operati"o #icroso!t $indo%s controla el tama6o ) la posicin iniciales de los !ormularios #DI secundarios* a menos -ue los estable0ca espec.!icamente en el procedimiento de e"ento 'oad& +i se 5ace re!erencia a un !ormulario #DI secundario antes de cargar el !ormulario #DI primario* ste se cargar autom ticamente& +in embargo* si se 5ace re!erencia al !ormulario #DI primario antes de cargar un !ormulario #DI secundario* el !ormulario #DI secundario no se cargar &
@I
*ipo de 5ato
B)te Boolean Integer 'ong 3entero largo4 +ingle 3coma !lotanteO precisin simple4 Double 3coma !lotanteO precisin doble4 2urrenc) 3entero a escala4 Decimal
L b)tes
L b)tes 1E b)tes
Date Bb(ect +tring 3longitud "ariable4 +tring 3longitud !i(a4 Variant 3con n/meros4 Variant 3con caracteres4 De!inido por usuario 3utili0ando <)pe4
Desde 1 a GF&EII apro8imadamente 2ual-uier "alor numrico 5asta el inter"alo de un tipo Double
?? b)tes R ,l mismo inter"alo para un tipo +tring de longitud "ariable& longitud de la cadena el 9/mero re-uerido ,l inter"alo de cada elemento es el mismo -ue el inter"alo de su tipo por los elementos de datos
Nota: $as matrices de cual1uier tipo de datos re1uieren )= %ytes de memoria m2s cuatro %ytes para cada dimensi!n de matriz( m2s el nmero de %ytes 1ue ocupan los propios datos. Por e-emplo( los datos de una matriz unidimensional 1ue constan de cuatro elementos de datos tipo Integer de dos %ytes cada uno( ocupan oc,o %ytes. $os oc,o %ytes 1ue re1uieren los datos m2s los )@ %ytes
@1
necesarios para la matriz suman un re1uisito total de memoria de >) %ytes para dic,a matriz. :n tipo ariant 1ue contiene una matriz re1uiere ') %ytes m2s 1ue la matriz por s# sola.
Convierten una e presi$n en Boolean B)te 2urrenc) Date Double Integer 'ong +ingle +tring Variant ,rror
Nota: $os *alores 1ue se pasan a una +unci!n de con*ersi!n de%en ser *2lidos para el tipo de dato de destino o se producir2 un error. Por e-emplo( si intenta con*ertir un tipo &ong en un Integer( el tipo de &ong de%e de estar en el inter*alo *2lido del tipo de dato Integer.
Variables
'as "ariables se utili0an para almacenar "alores temporalmente durante la e(ecucin de una aplicacin& 'as "ariables tienen un nombre 3la palabra -ue utili0a para re!erirse al "alor -ue contiene la "ariable4 ) un tipo de dato 3-ue determina la clase de dato -ue la "ariable puede almacenar4&
Declaraci!n de aria%les
Declarar una "ariable es decirle al programa algo de antemano& +e declara una "ariable mediante la instruccin 5im, proporcionando un nombre a la "ariable* seg/n la siguiente sinta8is:
Parte @: <ipos de datos* constantes ) "ariables @?
5im nombreC"ariable U4s tipoV 'as "ariables -ue se declaran en un procedimiento mediante la sentencia 5im slo e8isten mientras se e(ecuta el procedimiento& 2uando termina el procedimiento* desaparece el "alor de la "ariable& Adem s* el "alor de una "ariable de un procedimiento es local a dic5o procedimiento7 es decir* no puede tener acceso a una "ariable de un procedimiento desde otro procedimiento& ,stas caracter.sticas le permiten utili0ar los mismos nombres de "ariables en distintos procedimientos sin preocuparse por posibles con!lictos o modi!icaciones accidentales& ,l nombre de una "ariable debe cumplir con los siguientes re-uisitos: Debe comen0ar con una letra& 9o puede incluir un punto o un car cter de declaracin de tipo 3Y*Q*Z*[*\*]4& 9o debe e8ceder de ?FF caracteres& Debe ser /nica en el mismo alcance* -ue es el inter"alo desde el -ue se puede 5acer re!erencia a la "ariable: un procedimiento* !ormulario* etc& 'a cl usula opcional 4s tipo de la sentencia 5im le permite de!inir el tipo de dato o de ob(eto de la "ariable -ue "a a declarar& 'os tipos de datos de!inen el tipo de in!ormacin -ue almacena la "ariable& Algunos e(emplos de tipos de datos son !tring, 0nteger ) Currency. 'as "ariables tambin pueden contener ob(etos de Visual Basic u otras aplicaciones& Algunos e(emplos de tipos de ob(eto de Visual Basic* o clases* son Bb(ect* Form1 ) <e8tBo8& Aa) otras !ormas de declarar "ariables: Declarar una "ariable en la seccin Declaraciones de un mdulo de !ormulario* est ndar o de clase* en "e0 de un procedimiento* 5ace -ue la "ariable est disponible para todos los procedimientos del mdulo& Declarar una "ariable mediante la palabra cla"e .ublic 5ace -ue est accesible para toda la aplicacin& Declarar una "ariable local mediante la palabra cla"e !tatic conser"a su "alor aun-ue termine el procedimiento&
Declaraci!n Impl#cita
9o tiene por -u declarar una "ariable antes de utili0arla& Por e(emplo* podr.a escribir una !uncin donde no 5iciera !alta declarar *empVal antes de utili0arla: Function 6aLG 'num( TempJal = 2bs 'num( 6aLG = S r'TempJal( End Function Visual Basic crea autom ticamente una "ariable con ese nombre* -ue puede utili0ar como si la 5ubiera declarado e8pl.citamente& Aun-ue es cmodo* puede pro"ocar errores sutiles en el cdigo si se e-ui"oca de nombre de "ariable& Por e(emplo* suponga -ue 5a escrito esta !uncin: Function 6aLG 'num( TempJal = 2bs 'num( 6aLG = S r 'TemJal( End Function
@@
A primera "ista* parece igual& Pero como se 5a escrito errneamente la "ariable *empVal en la tercera l.nea* la !uncin de"ol"er siempre cero& 2uando Visual Basic encuentra un nombre nue"o* no puede a"eriguar si realmente desea declarar una "ariable nue"a o simplemente 5a escrito de !orma errnea una "ariable e8istente* por lo -ue crea una "ariable nue"a con ese nombre&
Declaraci!n Expl#cita
Para e"itar problemas al e-ui"ocarse de nombre en las "ariables* puede con!igurar Visual Basic para -ue le a"ise siempre -ue encuentre un nombre -ue no se 5a)a declarado e8pl.citamente como una "ariable& Para declarar "ariables de !orma e8pl.cita: Inclu)a esta sentencia en la seccin Declaraciones Aenerales del mdulo de clase* de !ormulario o est ndar: #ption Explicit C o bien C
,n el men/ Herramientas, eli(a 7pciones* 5aga clic en la !ic5a (ditor ) acti"e la opcin 5eclaraci$n de variables re2uerida. ,sto inserta autom ticamente la sentencia 7ption ( plicit en los mdulos nue"os* pero no en los )a creados* por lo -ue tendr -ue agregar manualmente 7ption ( plicit a los mdulos e8istentes en el pro)ecto& +i 5ubiera tenido e!ecto dic5a instruccin en el mdulo de !ormulario o mdulo est ndar -ue contiene la !uncin @a+A, Visual Basic 5abr.a reconocido <empVal ) <emVal como "ariables no declaradas ) 5abr.a generado errores para ambas& Deber.a* por tanto* declara e8pl.citamente <empVal: Function 6aLG 'num( Dim TempJal TempJal = 2bs 'num( 6aLG = S r 'TemJal( End Fuction
.9blico 9o es aplicable& 9o
@E
al procedimiento donde se declaran& 9i"el de mdulo 'as "ariables son pri"adas al mdulo donde se declaran&
puede declarar "ariables p/blicas dentro de un procedimiento& 'as "ariables est n disponibles para todos los mdulos&
2onstantes
A menudo "er -ue el cdigo contiene "alores constantes -ue reaparecen una ) otra "e0& B puede -ue el cdigo dependa de ciertos n/meros -ue resulten di!.ciles de recordar 3n/meros -ue* por s. mismos* no tienen un signi!icado ob"io4& ,n estos casos* puede me(orar muc5o la legibilidad del cdigo ) !acilitar su mantenimiento si utili0a constantes& 1na constante es un nombre signi!icati"o -ue sustitu)e a un n/mero o una cadena -ue no
Parte @: <ipos de datos* constantes ) "ariables @F
"ar.a& Aun-ue una constante recuerda ligeramente a una "ariable* no puede modi!icar una constante o asignarle un "alor nue"o como ocurre con una "ariable& Aa) dos or.genes para las constantes: 2onstantes intr*nsecas o de'inidas por el sistema proporcionadas por Visual Basic& 'as constantes simblicas o de'inidas por el usuario se declaran mediante la instruccin Const.
+e puede utili0ar tambin la instruccin Const para de!inir constantes de cadena: "ublic Const conJersion = 1 .S.D..24 Const con!ombreClave = 1Enigma4 Puede colocar m s de una declaracin de constante en una /nica l.nea si las separa con comas: "ublic Const con"i=M.DN9 con)ax"lanetas=P9 con"ob)undial=QE;.P
A menudo* la e8presin del lado derec5o del signo igual 3 : 4 es un n/mero o cadena literal* pero tambin puede ser una e8presin -ue d como resultado un n/mero o una cadena 3aun-ue la expresi!n no puede contener llamadas a !unciones4& Puede incluso de!inir constantes en trminos de constantes pre"iamente de!inidas: Const con"i@ = con"i K @ 1na "e0 -ue de!ina las constantes* puede colocarlas en el cdigo para 5acerlo m s legible& Por e(emplo: Static SistemaSolar 'D To con)ax"lanetas( *+ num"ersonas U con"op)undial T/en Exit Sub
@G
Para crear una constante disponible en toda la aplicacin* declare la constante en la seccin 5eclaraciones ,enerales de un mdulo est ndar ) colo-ue delante de Const la palabra cla"e .ublic. 9o se pueden declarar las constantes p/blicas en un mdulo de clase o de !ormulario&
=lobal
,n toda de aplicacin
,n una aplicacin de Visual Basic* las "ariables globales se deben usar slo cuando no e8ista ninguna otra !orma cmoda de compartir datos entre !ormularios& 2uando 5a)a -ue usar "ariables globales* es con"eniente declararlas todas en un /nico mdulo agrupadas por !unciones ) dar al mdulo un nombre signi!icati"o -ue indi-ue su !inalidad* como P/blicas&
@H
1na pr ctica de codi!icacin correcta es escribir cdigo modular siempre -ue sea posible& Por e(emplo* si la aplicacin muestra un cuadro de di logo* colo-ue todos los controles ) el cdigo necesario para e(ecutar la tarea del di logo en un /nico !ormulario& ,sto a)uda a tener cdigo de la aplicacin organi0ado en componentes /tiles ) minimi0a la sobrecarga en tiempo de e(ecucin& A e8cepcin de las "ariables globales 3 -ue no se deber.an pasar4* los procedimientos ) !unciones deben operar slo sobre los ob(etos -ue se les pasan&
4lcance
.re'ijo
1na "ariable tiene alcance glo%al si se declara como .ublic en un mdulo est ndar o en un mdulo de !ormulario& 1na "ariable tiene alcance de ni*el de m!dulo si se declara como .rivate en un mdulo est ndar o en un mdulo de !ormulario* respecti"amente& Nota: $a co,erencia es crucial para usar esta t&cnica de +orma producti*aC el corrector de sintaxis de isual Basic no interceptar2 las *aria%les de ni*el de m!dulo 1ue comience con DpE.
Constantes
,l nombre de las constantes se debe escribir en ma)/sculas ) min/sculas* con la letra inicial de cada palabra en ma)/sculas& Aun-ue las constantes est ndar de Visual Basic no inclu)en in!ormacin de tipo de datos ) el alcance de una constante& Para los nombres de constantes* se deben seguir las mismas normas -ue para las "ariables& Por e(emplo: mint)5x,ista-suario I I I I I ,Lmite de entradas m5ximas para la lista de usuarios 'valor entero9 local del m=dulo( Car5cter de nueva lLnea 'cadena9 global de la aplicaci=n(
gstr!ueva,Lnea
aria%les
Declarar todas las "ariables a5orra tiempo de programacin por-ue reduce el n/mero de errores debidos a nombres de "ariables errados 3por e(emplo* a9ombre1suario<mp !rente a s9ombre1suario<mp !rente a s9ombre1suario<emp4& ,n la !ic5a (ditor del cuadro de di logo 7pciones* acti"e la opcin 5eclaraci$n de variables re2uerida. 'a instruccin 7ption ( plicit re-uiere -ue declare todas las "ariables del programa de Visual Basic& 'as "ariables deben lle"ar un pre!i(o para indicar su tipo de datos& Bpcionalmente* ) en especial para programas largos* el pre!i(o se puede ampliar para indicar el alcance de la "ariable&
@L
@N
!inta is .ype ?om%reDel?ue*o.ipo ?om%reDelElemento' "s .ipoDato ?om%reDelElemento) "s .ipoDato ?om%reDelElemento> "s .ipoDato ... ... End .ype (jemplo T>pe 6egEmpleado EmpC=digo 2s *nteger Emp!ombre 2s String K N. EmpCargo 2s String K DO End T>pe
"rreglo de aria%les
1n arreglo es una coleccin de elementos del mismo tipo con un nombre com/n& 'os elementos son identi!icados por el nombre com/n ) un .ndice& !inta is Dim ?om%reDel"rreglo6 Dimensi!n'( Dimensi!n)( ... 7 "s .ipoDeDato Visual Basic soporta 5asta GI dimensiones& Al declarar las dimensiones se puede indicar un solo n/mero* en cu)o caso se entiende -ue dic5a dimensin "a de cero 5asta el n/mero indicado& <ambin es posible indicar e8pl.citamente el inicio ) trmino de la dimensin& (jemplo Dim ,istaD '@.( 2s *nteger ' @D elementos9 del . al @. Dim ,ista@ 'D to @.( 2s *nteger ' @. elementos9 del D al @. Dim Tabla 'D to D.9 D to @.( 2s String ' Tabla de D. x @.
"rreglos Din2micos
Aa) situaciones en las cuales se desea usar un arreglo* pero al momento del dise6o no se sabe sus dimensiones& Para este tipo de situaciones Visual Basic permite declaraciones de arreglos del siguiente modo: Dim x ' ( 2s *nteger ... ... 6edim x 'lst,ista.,istCount(
EI
2uando se redimensiona un arreglo* los "alores almacenados anteriormente se pierden* por-ue cada elemento es reiniciali0ado con cero o null dependiendo del tipo de dato del elemento& +i se desea preser"ar los "alores debemos usar la palabra cla"e .reserve en la sentencia de redimensionamiento& 6edim "reserve x ' int!CmeroDeElementos (
BP,DADBD,+
"ritm&ticos
^ > O #od R Q ,8ponenciacin #ultiplicacin Di"isin Di"isin entera Desiduo entero 3,(m: A #od B4 +uma Desta 2oncatenacin de cadenas
Comparaci!n
: _` _: `: 'iKe Igual Distinto #enor -ue #enor o igual #a)or o igual 2ompara dos cadenas > 2ero o m s caracteres 3,(m: cad 'iKe Mma>;4 ? 2ual-uier car cter \ 2ual-uier d.gito 3ICN4 UlistaV cual-uier car cter en lista UalistaV cual-uier car cter -ue no esta en lista 1sado para comparar dos "ariables de re!erencia a ob(etos
Is
$!gicos
And Br Jor 9ot MW; lgico MB; lgico MB; ,8clusi"o 9egacin
E1
Estructuras de Decisi!n
'os procedimientos de Visual Basic pueden probar condiciones )* dependiendo de los resultados* reali0ar di!erentes operaciones& ,ntre las estructuras de decisin -ue acepta Visual Basic se inclu)en las siguientes: I+....,en I+....,en...Else 5elect Case
0'...*hen 1se la estructura 0'...*hen para e(ecutar una o m s instrucciones basadas en una condicin& Puede utili0ar la sinta8is de una l.nea o un blo-ue de "arias l.neas: I+ condici!n T$en 5entencias I+ condici!n T$en 5entencias "nd I+
Condicin normalmente es una comparacin* pero puede ser cual-uier e8presin -ue d como resultado un "alor numrico& Visual Basic interpreta este "alor como *rue o %alse7 un "alor numrico cero es %alse ) se considera *rue cual-uier "alor numrico distinto de cero& +i condicin es *rue, Visual Basic e(ecuta todas las sentencias -ue siguen a la palabra cla"e *hen. Puede utili0ar sinta8is de una l.nea o de "arias l.neas para e(ecutar una sentencia basada en una condicin* los siguientes dos e(emplos son e-ui"alentes: *+ cual uierFec/a V !oF T/en Cual uierFec/a = !oF
T/en
Bbser"e -ue el !ormato de una /nica l.nea de 0'...*hen no utili0a la instruccin (nd 0'. +i se desea e(ecutar m s de una l.nea de cdigo cuando condicin sea *rue, debe utili0ar la sinta8is de blo-ue de "arias l.neas 0'...*hen...(nd 0'. *+ cual uierFec/a V !oF T/en
E?
= =
!oF False
*+
0'...*hen...(lse 1tilice un blo-ue 0'...*he...(lse para de!inir "arios blo-ues de sentencias* uno de los cuales se e(ecutar : I+ condici!n' T$en F%lo1ue de sentencias 'G ,"lseI+ condici!n) T$en F%lo1ue de sentencias )GG ... ,"lse F%lo1ue de sentencias nGG "nd I+ Visual Basic e"al/a primero condici$n6. +i es %alse* Visual Basic procede a e"aluar condici$nF ) as. sucesi"amente* 5asta -ue encuentre una condicin *rue. 2uando encuentra una condicin *rue, Visual Basic e(ecuta el blo-ue de instrucciones correspondientes ) despus e(ecuta el cdigo -ue sigue a (nd 0'. Bpcionalmente* puede incluir un blo-ue de instrucciones (lse, -ue Visual Basic e(ecutar sin ninguna de las condiciones es *rue. 0'...*hen...(lse0' es un caso especial de 0'...*hen...(lse. Bbser"e -ue puede tener cual-uier n/mero de cl usula (lse0' o ninguna& Puede incluir una cl usula (lse sin tener en cuenta si tiene o no cl usula (lse0'. Por e(emplo* la aplicacin podr.a reali0ar distintas acciones dependiendo del control en -ue se 5a)a 5ec5o clic de una matri0 de controles de men/: "rivate Sub mnuCut%Clic& '*ndex 2s *nteger( *+ *ndex = . T/en I Comando Cortar Cop>2ctiveControl I ,lama a procedimientos Clear2ctiveControl Else*+ *ndex = D T/en I Comando Copiar Cop>2ctiveControl Else*+ *ndex = @ T/en I Comando Borrar Clear2ctiveControl Else I Comando "egar "aste2ctiveControl End *+ End Sub
generales
E@
*+ Clave-suario=4DS*4 T/en I "ermite al usuario entrar al sistema ... ... Else I )ostrar un mensa?e advirtiendo error en la clave ... ... End *+
"rivate Sub DeterminaCondici=n ' ( *+ Jal 'txt"romedio( U=DM T/en txtCondici=n = 12probado4 Else*+ Jal 'txt"romedio( U= D. T/en txtCondici=n = 12sistente4 Else txtCondici=n = 1Desaprobado4 End *+ End Sub Bbser"e -ue siempre puede agregar m s cl usulas (lse0' a la estructura 0'...*hen. +in embargo* esta sinta8is puede resultar tediosa de escribir cuando cada (lse0' compara la misma e8presin con un "alor distinto& Para estas situaciones* puede utili0ar la estructura de decisin !elect Case. !elect Case Visual Basic proporciona la estructura !elect Case como alternati"a a 0'...*hen...(lse para e(ecutar selecti"amente un blo-ue de sentencias entre "arios blo-ues& 'a sentencia !elect Case o!rece posibilidades similares a la instruccin 0'...*hen...(lse, pero 5ace -ue el cdigo sea m s legible cuando 5a) "arias opciones& 'a estructura !elect Case !unciona con una /nica e8presin de prueba -ue se e"al/a una "e0 solamente* al principio de la estructura& Visual Basic compara el resultado de esta e8presin con los "alores de cada Case de la estructura& +i 5a) una coincidencia* e(ecuta el blo-ue de sentencias asociado a ese Case> #elec Case expresi!nBprue%a ,Case listaBexpresiones' F%lo1ue de sentencias 'GG ,Case listaBexpresiones) F%lo1ue de sentencias )GG . . . ,Case "lse F%lo1ue de sentencias nGG "nd #elect 2ada lista_expresiones es una lista de uno a m s "alores& +i 5a) m s de un "alor en una lista* se separan los "alores con comas& 2ada blo-.e de sentencias contiene cero o m s instrucciones& +i m s de un Case coincide con la e8presin de prueba* slo se e(ecutar el blo-ue de instrucciones asociado
Parte E: ,structuras de control EE
con la primera coincidencia& Visual Basic e(ecuta las instrucciones de la cl usula 3opcional4 Case (lse si ning/n "alor de la lista de e8presiones coincide con la e8presin de prueba& Por e(emplo* suponga -ue agrega otro comando al men/ (dici$n en el e(emplo 0'...*hen...(lse. Podr.a agregar otra cl usula (lse0' o podr.a escribir la !uncin con !elect Case> "rivate Sub mnuCut%Clic& '*ndex 2s *nteger( Select Case *ndex Case . I Comando Cortar Cop>2ctiveControl I ,lama a procedimientos generales Clear2ctiveControl Case D I Comando copiar. Cop>2ctiveControl Case @ I Comando borrar. Clear2ctiveControl Case M I Comando "egar. "aste2ctiveControl Case Else +rmFind.S/oF I )uestra el cuadro de I di5logo Buscar. End Select End Sub
Select Case Tipo-suario Case 1Supervisor4 I "roporciona al usuario privilegios de Supervisor ... ... Case 1-suario4 I "roporciona al usuario privilegios de -suario ... ... Case Else I "roporciona al usuario privilegio de invitado ... ... End Select
Bbser"e -ue la estructura !elect Case e"al/a una e8presin cada "e0 -ue al principio de la estructura& Por el contrario* la estructura 0'...*hen...(lse puede e"aluar una e8presin di!erente en cada sentencia (lse0'. +lo puede sustituir una esructura 0'...*hen...(lse con una estructura !elect Case si la intruccin 0' ) cada instruccin (lse0' e"al/a la misma e8presin&
EF
7tros (jemplos *+ Jentas U D..... T/en strDscto = Format '..D.9 1Fixed4( Else*+ Jentas U O.... T/en strDscto = Format '...O9 1Fixed4( Else strDscto = Format '...@9 1Fixed4( End *+
Select Case Cantidad Case D sngDscto Case @9 M sngDscto Case N To Q sngDscto Case Else sngDscto End Select
int6pta = )sgBox '13uarda cambios antes de salir4 9 vb<es!o( Select Case int6pta Case vb<es 3uardarCambios -nload )e Case vb!o -nload )e End Select
Estrucuras de 3epeticion
'as estructuras de repeticin o bucle le permiten e(ecutar una o m s l.neas de cdigo repetidamente& 'as estructuras de repeticin -ue acepta Visual Basic son: Do&&&'oop For&&&9e8t For ,ac5&&&9e8t
5o...#oop 1tilice el bucle 5o para e(ecutar un blo-ue de sentencias un n/mero inde!inido de "eces& Aa) algunas "ariantes en la sentencia 5o...#oop, pero cada una e"al/a una condicin numrica para determinar si
EG
contin/a la e(ecucin& 2omo ocurre con 0'...*hen, la condicin debe ser un "alor o una e8presin -ue d como resultado %alse 3cero4 o *rue 3distinto de cero4& ,n el siguiente e(emplo de 5o...#oop, las sentencias se e(ecutan siempre ) cuando condicin sea *rue> Do /$ile condici!n 5entencias &oop 2uando Visual Basic e(ecuta este bucle 5o, primero e"al/a condicin. +i condicin es %alse 3cero4* se salta todas las sentencias. +i es *rue 3distinto de cero4 Visual Basic e(ecuta las sentencias* "uel"e a la instruccin 5o =hile ) prueba la condicin de nue"o& Por tanto* el bucle se puede e(ecutar cual-uier n/mero de "eces* siempre ) cuando condicin sea distinta de cero o *rue. 9unca se e(ecutan las sentencias si condicin es %alse inicialmente& Por e(emplo* este procedimiento cuenta las "eces -ue se repite una cadena destino dentro de otra cadena repitiendo el bucle tantas "eces como se encuentre la cadena de destino: Function ContarCadenas 'cadenalarga9 destino( Dim posici=n9 contador posici=n = D Do E/ile *nStr 'posici=n9 cadenalarga9 destino( posici=n = *nStr 'posici=n9 cadenalarga9 destino(;D contador = contador ; D ,oop ContarCadenas = contador End Function +i la cadena destino no est en la otra cadena* 0n!tr de"uel"e I ) no se e(ecuta el bucle& Btra "ariante de la instruccin 5o...#oop e(ecuta las sentencias primero ) prueba la condicin despus de cada e(ecucin& ,sta "ariacin garanti0a al menos una e(ecucin de sentencias: Do 5entencias &oop /$ile condici!n Aa) otras dos "ariantes an logas a las dos anteriores* e8cepto en -ue repiten el bucle siempre ) cuando condicin sea %alse en "e0 de *rue. Hace el bucle cero o m?s veces Do Until condici!n 5entencias &oop Hace el bucle al menos una veA Do 5entencias &oop Until condici!n
EH
%or...&e t 'os bucles 5o !uncionan bien cuando no se sabe cu ntas "eces se necesitar e(ecutar las sentencias del bucle& +in embargo* cuando se sabe -ue se "a a e(ecutar las sentencias un n/mero determinado de "eces* es me(or elegir el bucle %or...&e t. A di!erencia del bucle 5o, el bucle %or utili0a una "ariable llamada contador -ue incrementa o reduce su "alor en cada repeticin del bucle& 'a sinta8is es la siguiente: For contador H iniciar To +inalizar F#tep incrementoG 5entencias Next FcontadorG 'os argumentos contador, iniciar, 'inaliAar e incremento son todos numricos& Nota: El argumento incremento puede ser positi*o o negati*o. 5i incremento es positi*o( iniciar de%e ser menor o igual 1ue +inali0ar o no se e-ecutar2n las sentencias del %ucle. 5i incremento es negati*o( iniciar de%e ser mayor o igual 1ue +inali0ar para 1ue se e-ecute el cuerpo del %ucle. 5i no se esta%lece #tep, el *alor predeterminado de incremento es '. Al e(ecutar el bucle %or, Visual Basic: 1& ,stablece contador al mismo "alor -ue iniciar. ?& 2omprueba si contador es ma)or -ue +inali0ar. +i lo es* Visual Basic sale del bucle& 3+i incremento es negati"o* Visual Basic comprueba si contador es menor -ue +inali0ar.4 @& ,(ecuta las sentencias. E& Incrementa contador en 1 o en incremento, si se especi!ic& F& Depite los pasos ? a E& ,ste cdigo imprime los nombres de todas las !uentes de pantalla disponibles: "rivate Sub FormAClic& ' ( Dim * 2s *nteger For i = . To Screen.FontCount "rint Screen.Fonts 'i( !ext End Sub
%or (ach...&e t ,l bucle %or (ach...&e t es similar al bucle %or...&e t, pero repite un grupo de sentencia por cada elemento de una coleccin de ob(etos o de una matri0 en "e0 de repetir las sentencias un n/mero especi!icado de "eces& ,sto resulta especialmente /til si no se sabe cu ntos elementos 5a) en la coleccin& Ae a-u. la sinta8is del bucle %or (ach...&e t> For "ac$ elemento In grupo 5entencias Next elemento Por e(emplo* el siguiente procedimiento !ub abre la base de datos Biblio&mdb ) agrega el nombre de cada tabla a un cuadro de lista&
Set ob?Db = #penDatabase'"cBH2rc/ivos de programaHDevstudioH" W % "vbHbiblio.mdb"9 True9 False( For Eac/ TableDe+ *n ob?Db.TableDe+s ' ( ,istD.2dd*tem TableDe+.!ame !ext TableDe+ End Sub <enga en cuenta las restricciones siguientes cuando utilice %or (ach...&e t> Para las colecciones* elemento slo puede ser una "ariable Variant, una "ariable 7bject genrica o un ob(eto mostrado en el ,8aminador de ob(etos& Para las matrices* elemento slo puede ser una "ariable Variant. 9o puede utili0ar %or (ach...&e t con una matri0 de tipos de!inidos por el usuario por-ue un Variant no puede contener un tipo de!inido por el usuario& ,l siguiente e(emplo 5abilita todos los C.adro de Texto del !ormulario> "rivate Sub )odoEdici=n ' ( Dim control For Eac/ control *n +ormD.Controls *+ T>pe#+ control *s TextBox T/en Control.Enabled = True End *+ !ext control End Sub
EN
2uando utilice la instruccin ( it para salir de un bucle* el "alor de la "ariable contador di!iere* dependiendo de cmo 5a)a salido del bucle: 2uando termina un bucle* la "ariable contador contiene el "alor del l.mite superior m s el paso& 2uando sale de un bucle prematuramente* la "ariable contador conser"a su "alor seg/n las reglas usuales del alcance& 2uando sale antes del !inal de una coleccin* la "ariable contador contiene &othing si se trata de un tipo de dato 7bject ) (mpty si es un tipo de dato Variant.
FI
Propiedades
2aption ,nabled 9ame Visible <.tulo de marco& Determina si est 5abilitado para responder a las acciones del usuario& 9ombre del control& Determina si el Marco ) los controles -ue contiene est n "isibles o no&
2ontrol
2asilla
de
Veri!icacin
325ecKBo84
'as casillas de "eri!icacin se utili0an para proporcionar al usuario opciones de tipo +iO9o o VerdaderoOFalso& 2uando el usuario selecciona una opcin 3acti"a la casilla4* aparece una marca de "eri!icacin 34 dentro de la casilla&
Propiedades
2aption ,nabled usuario& 9ame Value Descripcin -ue acompa6a a la casilla& <rueOFalse& Determina si est 5abilitado para responder a las acciones del 9ombre del control& I X 1nc5ecKed 3Vac.o* no marcado4 1 X 25ecKed 3#arcado4 ? X =ra)ed 3=ris* Inde!inido4 Determina si la casilla est "isible o no&
Visible
E*entos
2licK Bcurre cuando el usuario 5ace clic sobre la casilla&
F1
,stos controles se utili0an para -ue el usuario seleccione una opcin de un grupo opciones& 'a opcin seleccionada tiene un punto en el centro&
Propiedades
2aption ,nabled usuario& 9ame Value Visible Descripcin -ue acompa6a a la opcin& <rueOFalse& Determina si est 5abilitado para responder a las acciones del 9ombre del control& <rueOFalse* marcado o no marcado& <rueOFalse& Determina si el botn est "isible o no&
E*entos
2licK Bcurre cuando el usuario 5ace clic sobre el botn&
Arreglo de 2ontroles
2uando creamos un arreglo de controles* todos los controles -ue !orman el arreglo deben tener el mismo nombre 3Propiedad 9ame4* la propiedad 0nde establece el .ndice de cada control en el arreglo* esta propiedad comien0a desde I& 1n arreglo de controles es un grupo de controles -ue comparten el mismo: <ipo de ob(eto 9ombre del control Procedimientos de e"ento
F?
(jemplo 'a inter!a0 mostrada tiene un arreglo de controles para seleccionar el reporte* el procedimiento de e"ento es el mismo para cual-uier elemento del arreglo&
,l cdigo para el e"ento clic es: "rivate Sub opt6eporte%Clic&'*ndex 2s *nteger( Select Case *ndex Case .9 D +ra6ango.Enabled = False lblDesde.Enabled = False lblHasta.Enabled = False txtDesde.Enabled = False txtHasta.Enabled = False Case @ +ra6ango.Enabled = True lblDesde.Enabled = True
Parte F: 2ontroles ,st ndar Adicionales ) Procedimientos F@
lblHasta.Enabled = True txtDesde.Enabled = True txtHasta.Enabled = True txtDesde.SetFocus End Select End Sub
2ontrol Barra de Despla0amiento Barra de Despla0amiento Aori0ontal 3A+crollBar4 Barra de Despla0amiento Vertical 3V+crollBar4
+on usuados con !recuencia para permitir r pidos despla0amientos a tra"s de una lista grande de items& Por e(emplo: arc5i"os* indicadores de posicin actual de una escala de "alores* indicadores de "olumen en un sistema de audio&
Propiedades
'arge25ange #a8 #in 9ame +mall25ange Value De 1 a @?HGH& 2antidad de cambio cuando el usuario 5ace clic en el despla0amiento largo& # 8imo "alor de despla0amiento cuando el botn se encuentra en la posicin m s alta& Valor predeterminado: @?HGH& #.nimo "alor del despla0amiento cuando el botn se encuentra en la posicin m s ba(a& Valor predeterminado: I& 9ombre ddel control& De 1 a @?HGH& 2antidad de cambio cuando el usuario 5ace clic en la !lec5a de despla0amiento& Valor actual en la escala de "alores&
E*ento
25ange Bcurre cuando el usuario se despla0a o se cambia el "alor de la propiedad Value&
FE
lst=aseosas
Propiedades
,nabled 'ist 'ist2ount 'istInde8 #ulti+elect 9ame 9e%Inde8 +elected <rueOFalse& Determina si el control responde a las acciones del usuario& Arreglo con los elementos de la lista& 9/mero de elementos de la lista& ,lemento seleccionado& ,stablece si es posible seleccionar "arios elementos o uno solo& 9ombre del control& Indice del /ltimo elemento a6adido al 2uadro de 'ista& Arreglo de "alores lgicos paralelo ) del mismo tama6o al arreglo list* indica -ue elementos 5an sido seleccionados 3<rue4 de la lista& +e utili0a en lugar de #ist0nde cuando establecemos la propiedad Multiselect en 1 ?& <rueOFalse& ,stablece los elementos se ordenan al!abticamente& ,stablece el comportamiento del control& De"uel"e el elemento seleccionado en el cuadro de lista7 el "alor de retorno es siempre e-ui"alente al -ue de"uel"e la e8presin 'ist3'istInde84& ,s de slo lectura en tiempo de dise6o ) es de slo lectura en tiempo de e(ecucin&
M&todos
AddItem Demo"eItem Permite a6adir nue"os elementos a la lista& Permite eliminar elementos de la lista&
E*entos
2licK Bcurre cuando el usuario interact/a con el control&
E-emplos
Muestra en el Cuadro de *e to t t,aseosa el elemento seleccionado "rivate Sub lst3aseosas%Clic&'( txt3aseosa.Text = lst3aseosas.Text End Sub
FF
4-ade un nuevo elemento al Cuadro de #ista lst,aseosas "rivate Sub cmd2gregar%Clic&'( Dim str!uevoElemento 2s String str!uevoElemento = *nputBox'"*ngrese una nueva gaseosaB"9 % "!ueva gaseosa"( *+ Trim'str!uevoElemento( VU "" T/en lst3aseosas.2dd*tem str!uevoElemento End *+ End Sub
(limina el elemento actual del Cuadro de #ista lst,aseosas "rivate Sub cmdEliminar%Clic&'( *+ lst3aseosas.,ist*ndex VU AD T/en lst3aseosas.6emove*tem lst3aseosas.,ist*ndex End *+ End Sub
Propiedades
,nabled 'ist 'ist2ount 'istInde8 9ame 9e%Inde8 +orted +t)le <e8t <rueOFalse& Determina si el control responde a las acciones del usuario& Arreglo con los elementos de la lista& 9/mero de elementos de la lista ,lemento seleccionado& 9ombre del control& Indice del /ltimo elemento a6adido al cuadro de lista& <rueOFalse& ,stablece si los elementos se ordenan al!abticamente& ,stablece el comportamiento del control& <e8to -ue contiene el control&
M&todos
AddItem Demo"eItem Permite a6adir nue"os elementos a la lista& Permite eliminar elementos de la lista&
E*entos
2licK Bcurre cuando el usuario interact/a con la lista del control&
FG
25ange
Propiedad 5tyle
,sta propiedad establece el comportamiento del control ComboBo , ) puede tomar los siguientes "alores: Constante Valor 5escripci$n "b2omboDropDo%n I 3Predeterminado4 2uadro combinado desplegable& Inclu)e una lista desplegable ) un cuadro de te8to&,l 1suario puede seleccionar datos en la lista o escribir en cuadro de te8to& 2uadro combinado simple& Inclu)e un cuadro de te8to ) una lista* -ue no se despliega& ,l usuario puede seleccionar datos en la lista o escribir en el cuadro de te8to& ,l tama6o de un cuadro combinado simple inclu)e las partes de edicin ) de lista& De !orma predeterminada* el tama6o de un cuadro combinado simple no muestra ning/n elemento de la lista& Incremente la propiedad Height para mostrar m s elementos de la lista& 'ista desplegable& ,ste estilo slo permite la seleccin desde la lista desplegable&
"b2ombo+imple
"b2omboDropCDo%n'ist ?
E-emplo
,n la siguiente inter!a0 se ilustra el uso del control ComboBo ) la propiedad !tyle.
lbl=aseosa
lbl,ncuestado
Muestra la gaseosa seleccionada por el usuario en la eti2ueta lbl,aseosa "rivate Sub cbo3aseosas%Clic&'( lbl3aseosa.Caption = cbo3aseosas.Text End Sub
FH
4ctualiAa la eti2ueta lbl,aseosa cuando el usuario modi'ica el control cbo,aseosas "rivate Sub cbo3aseosas%C/ange'( lbl3aseosa.Caption = cbo3aseosas.Text End Sub Muestra el encuestado seleccionado por el usuario en la eti2ueta lbl(ncuestado "rivate Sub cboEncuestados%Clic&'( lblEncuestado.Caption = cboEncuestados.Text End Sub Muestra en la eti2ueta lblCiudad el elemento seleccionado del control "rivate Sub cboCiudades%Clic&'( lblCiudad.Caption = cboCiudades.Text End Sub cboCiudades
Procedimientos
,8isten dos tipos de procedimientos con los -ue se traba(a en Visual Basic: los procedimientos de e"ento ) los procedimientos generales&
Procedimientos de ,"ento
Visual Basic in"oca autom ticamente procedimientos de e"ento en respuesta a acciones del teclado* del ratn o del sistema& Por e(emplo* los botones de comando tienen un procedimiento de e"ento 2licK& ,l cdigo -ue se escriba en el procedimiento de e"ento 2licK es e(ecutado cuando el usuario 5aga clic en un botn de comando& 2ada control tiene un con(unto !i(o de procedimientos de e"ento& 'os procedimientos de e"ento para cada control son mostrados en un cuadro de lista despegable en la "entana de cdigo&
Procedimientos =enerales
'os procedimientos generales son procedimientos !ub o %unction -ue son creados para -ue lle"en a cabo tareas espec.!icas* estos deben ser in"ocados de manera e8pl.cita& Para crear un procedimiento general* se debe abrir la "entana de cdigo ) 5acer clic en la orden 4gregar procedimiento del men/ Herramientas& <ambin se puede crear un nue"o procedimiento escribiendo el encabe0ado de procedimiento !ub* seguido por el nombre del procedimiento* en una l.nea en blanco dentro de la "entana de cdigo& +i se tiene cdigo duplicado en "arios procedimientos de e"ento* se puede colocar el cdigo en un procedimiento general ) luego in"ocar al procedimiento general desde los procedimiento de e"ento&
Procedimientos 5u%
'os procedimientos !ub no retornan "alores& Por e(emplo: "ublic Sub Seleccionar'Cuadro 2s TextBox( Cuadro.SelStart = . Cuadro.Sel,engt/ = ,en'Cuadro.Text( End Sub
FL
'os procedimientos !ub son in"ocados especi!icando slo el nombre del procedimiento* o empleando la instruccin Call con el nombre del procedimiento& Por e(emplo: Call Seleccionar'TextD( +i se emplea la instruccin Call* se debe encerrar la lista de argumentos entre parntesis& +i se omite Call* tambin se deben omitir los parntesis alrededor de la lista de argumentos&
Procedimientos Function
'os procedimientos %unction de"uel"en "alores& ,n el siguiente e(emplo* el procedimiento %unction recibe un n/mero ) de"uel"e ese n/mero al cuadrado& "ublic Function Cuadrado'! 2s *nteger( 2s *nteger Cuadrado = ! K ! End Function +i se desea guardar el "alor de"uelto* se debe usar parntesis cuando se in"o-ue a la !uncin* como se muestra a continuacin: 6esultado = Cuadrado 'O( +i se omiten los parntesis* se puede ignorar el "alor de"uelto ) no guardarlo en una "ariable& ,sto puede ser /til si se -uiere e(ecutar una !uncin ) no se desea el "alor de"uelto& Por e(emplo: Cuadrado O
FN
,l siguiente cdigo declara un procedimiento .ublic& "ublic Sub )i"roc'( End Sub +i se declara el procedimiento en un mdulo de !ormulario* puede ser llamado con el siguiente cdigo& FormD.)i"roc +i se declara el procedimiento en un mdulo est ndar* puede ser llamado con el siguiente cdigo& )i"roc +i se declara un procedimiento con el mismo nombre en dos mdulos est ndar* se debe especi!icar el nombre del mdulo como se muestra en el siguiente cdigo& )oduleD.)i"roc
GI
Aerramientas de Depuracin
Visual Basic proporciona 5erramientas interacti"as para locali0ar errores en tiempo de e(ecucin ) errores en la lgica del programa& +e puede acceder a todas las 5erramientas de depuracin empleando el men/ 5epuraci$n o la barra de 5erramientas 5epuraci$n& 'as 5erramientas de depuracin en Visual Basic inclu)en:
Expresiones de inspecci!n
,mplee las e8presiones de inspeccin para e8aminar una "ariable o e8presin en particular& ,l "alor de cada e8presin de inspeccin es actuali0ado en los puntos de interrupcin
Pila de llamadas
,mplee Pila de llamadas para "isuali0ar todas las llamadas a procedimientos acti"as ) rastrear la e(ecucin de una serie de procedimientos anidados&
$a *entana inmediato
,n modo de interrupcin* se puede probar una sentencia e(ecutable escribindola en la "entana inmediato& Visual Basic e(ecuta la sentencia inmediatamente de modo -ue se pueda e"aluar el cdigo&
$a *entana locales
,sta "entana autom ticamente "isuali0a todas las "ariables declaradas en el procedimiento actual* (unto con sus "alores&
G1
Validacin de Datos
+e puede pre"enir algunos errores en el ingreso de datos ) me(orar el uso de una aplicacin "alidando in!ormacin mientras es ingresada a los campos de la aplicacin&
G?
Para comprobar cada tecla oprimida en un !ormulario* se debe establecer la propiedad Gey.revie" de un !ormulario a *rue& ,l !ormulario recibe primero el e"ento del teclado ) luego lo recibe el control& ,l siguiente cdigo 5abilita el botn Aceptar luego de ingresar datos en todos los campos& "rivate Sub Form%,oad'( )e.$e>"revieF = True cmd2ceptar.Enabled = False End Sub "rivate Sub Form%$e>-p'$e>Code 2s *nteger9 S/i+t 2s *nteger( ' Se /abilita el bot=n 2ceptar s=lo si todos los cuadros de texto % tienen datos Dim Control2ct 2s Control For Eac/ Control2ct *n Controls *+ T>pe#+ Control2ct *s TextBox T/en *+ Control2ct.Text = "" T/en ' El cuadro de texto est5 vacLo cmd2ceptar.Enabled = False Exit Sub End *+ ' Se podrLan veri+icar otro tipo de controles si % +uera necesario End *+ !ext cmd2ceptar.Enabled = True 'Todos los cuadros de texto tienen datos End Sub
G@
1na manera sencilla de "alidar todos los campos de un !ormulario al mismo tiempo es poniendo el cdigo de "alidacin en el e"ento 2licK del botn 4ceptar& ,n esta caso* la aplicacin le permite al usuario completar el ingreso de datos en todos los campos del !ormulario ) luego "alidarlos& 'a aplicacin establece el en!o-ue en el primer campo -ue contiene los datos incorrectos& ,l siguiente cdigo "alida todos los campos numricos del !ormulario mostrado anteriormente& "rivate Sub cmd2ceptar%Clic&'( *+ !ot '*s!umeric'txtEdad.Text(( T/en )sgBox "*ngrese la edad correctamente" txtEdad.SetFocus Else*+ !ot '*s!umeric'txtSueldo.Text(( T/en )sgBox "*ngrese el sueldo correctamente" txtSueldo.SetFocus Else )sgBox "Datos correctos" -nload )e End *+ End Sub
,l siguiente cdigo cancela el e"ento 1nload ) pregunta al usuario antes de cerrar el !ormulario& "rivate Sub Form%:uer>-nload'Cancel as *nteger9 -nload)ode as *nteger( Dim i6espuesta *nteger i6espuesta = )sgBox '"76ealmente desea salir8"9 vb<es!o( *+ i6espuesta = vb!o T/en Cancel=True
Parte G: Depuracin* Validacin* ) #anipulacin de errores GE
End *+ End Sub Notas8 Cuando se cierra un o%-eto !DIForm( el e*ento 0uery:nload ocurre primero para el +ormulario MDI principal y despu&s en todos los +ormularios secundarios MDI. 5i ningn +ormulario cancela el e*ento 0uery:nload( ocurre el e*ento :nload primero en todos los dem2s +ormularios y despu&s en un +ormulario MDI principal. Cuando un +ormulario secundario o un o%-eto Form se cierra( el e*ento 0uery:nload de ese +ormulario ocurre antes 1ue el e*ento :nload del +ormulario. Cuando una aplicaci!n se cierra( puede utilizar los procedimientos de e*ento 0uery:nload o :nload para esta%lecer la propiedad Cancel a Tr.e( deteniendo el proceso de cierre. 5in em%argo( el e*ento 0uery:nload ocurre en todos los +ormularios antes de 1ue se descargue ninguno de ellos y el e*ento :nload ocurre con+orme se descarga cada +ormulario.
'"*ngrese el nombre de la aplicaci=nB"( 6esume '*ntentar nuevamente Else 6esume !ext 'E?ecutar la siguiente instrucci=n End *+ Else )sgBox "Error desconocido" End *+ End Sub ,n el cdigo o rutina de manipulacin de errores* se emplean las propiedades ) mtodos del ob(eto (rr para "eri!icar -ue error ocurri* borrar un "alor de error o desencadenar un error&
GG
5i utiliza una instrucci!n 3es.me en otro sitio 1ue no sea una rutina de manipulaci!n de errores( ocurre un error.
GH
Adem s del arc5i"o e(ecutable* se debe de proporcionar di"ersas D''bs ) otros arc5i"os a los usuarios& +e deber.a crear un programa de instalacin -ue instale la aplicacin en la computadora del usuario& (l 4sistente para instalar aplicaciones de Visual Basic 5ace sencilla la tarea de crear discos o una carpeta de distribucin para una aplicacin& 'os usuarios pueden luego e(ecutar el programa de instalacin en sus computadoras para instalar ) registrar los arc5i"os apropiados&
GL
1n control Dri"e'istBo8 permite al usuario seleccionar una unidad de disco " lida en tiempo de e(ecucin& 1tilice este control para mostrar una lista de todas las unidades " lidas del sistema de un usuario& Puede crear cuadros de di logo -ue permitan al usuario abrir un arc5i"o de una lista de un disco en cual-uier unidad disponible&
Propiedades
Dri"e 'ist 'ist2ount 'istInde8 De"uel"e o establece la unidad seleccionada en tiempo de e(ecucin& 9o est disponible en tiempo de dise6o& 2ontiene la lista de cone8iones de unidad e!ecti"as& De"uel"e el n/mero de cone8iones con unidades de disco& De"uel"e o establece el .ndice del elemento seleccionado actualmente en el control& 9o est disponible en tiempo de dise6o&
E*entos
25ange Bcurre cuando el usuario selecciona una nue"a unidad o cuando se cambia la con!iguracin de la propiedad Dri"e mediante cdigo&
Propiedades
'ist 'ist2ount 'istInde8 Pat5 2ontiene una lista de todos los directorios& De"uel"e el n/mero de subdirectorios del directorio actual& Indica el .ndice de la ruta de acceso actual& ,l "alor de la propiedad Pat5 es una cadena -ue indica una ruta de acceso* como 2:cBb o 2:c$indo%sc+)stem&
E*entos
25ange Bcurre cuando el usuario 5ace doble clic en un nue"o directorio o cuando se cambia la con!iguracin de la propiedad Pat5 mediante cdigo&
2ontrol
2uadro
de
'ista
de
Arc5i"os
3File'istBo84
,l control File'istBo8 encuentra ) muestra los arc5i"os del directorio especi!icado por la propiedad Pat5 en tiempo de e(ecucin& 1tilice este control para mostrar una lista de los arc5i"os seleccionados por tipo& Puede crear cuadros de di logo en la aplicacin -ue* por e(emplo* permitan al usuario seleccionar un arc5i"o o un grupo de arc5i"os&
Parte H: 2ontroles ,st ndar A"an0ados ) Acceso a Datos GN
Propiedades
File9ame De"uel"e o establece el nombre de un arc5i"o seleccionado& 'ist 2ontiene una lista con los arc5i"os del directorio e8pandido actualmente -ue coinciden con la propiedad Pattern& 9o se inclu)e la ruta de acceso& 'ist2ount De"uel"e el n/mero de arc5i"os del directorio actual -ue coinciden con el "alor de la propiedad Pattern& 'istInde8 De"uel"e o establece el .ndice del elemento seleccionado actualmente& Pat5 ,l "alor de la propiedad Pat5 es una cadena -ue indica una ruta de acceso* como 2:cBb o 2:c$indo%sc+)stem& Pattern De"uel"e o establece un "alor -ue indica los nombres de arc5i"o mostrados en un control File'istBo8 en tiempo de e(ecucin&
E*entos
2licK Bcurre cuando el usuario presiona ) suelta un botn del ratn en un control File'istBo8&
Propiedades
Picture +tretc5 De"uel"e o establece un gr !ico -ue se mostrar en el control& <ambin se le puede asignar un gr !ico de"uelto por la !uncin 'oadPicture& <rueOFalse& De"uel"e o establece un "alor -ue indica si un gr !ico cambia su tama6o para a(ustarse al de un control Image&
Comentarios El control Image utiliza menos recursos del sistema y actualiza con m2s rapidez 1ue un control Pict.re1ox( pero s!lo admite un su%con-unto de las propiedades( los e*entos y los m&todos de Pict.re1ox. :se la propiedad 5tretc, para determinar si el gr2+ico se escala para a-ustarse al control o *ice*ersa. "un1ue puede colocar un control Image dentro de un contenedor( un control Image no puede actuar como contenedor.
Funcin 'oadPicture34
2arga un gr !ico en un ob(eto Picture* un control PictureBo8 o un control Image& %ormato> 'oadPicture3?om%reDe"rc,i*oAr2+ico4 <ambin se puede usar la !uncin #oad.icture3) para asignar un icono a un !ormulario o al puntero del ratn mostrado en pantalla& (jemplos de la 'unci$n #oad.icture3)>
HI
dr"1nidad
Frame1
dirDirectorio Image1
!il'ista
(l c$digo para los controles es el siguiente> "rivate Sub drv-nidad%C/ange'( dirDirectorio."at/ = drv-nidad.Drive End Sub "rivate Sub dirDirectorio%C/ange'( +il,ista."at/ = dirDirectorio."at/ End Sub
"rivate Sub +il,ista%Clic&'( *mageD."icture = ,oad"icture'dirDirectorio."at/ W % "X" W +il,ista.+ilename( FrameD.Caption = +il,ista.+ilename FormD.*con = ,oad"icture'dirDirectorio."at/ W % "X" W +il,ista.+ilename( End Sub
H1
Propiedades
,nabled <rueOFalse& Acti"a o desacti"a el control& +i se desacti"a el control *imer, estableciendo ,nabled a False* se cancelar la cuenta atr s establecida por la propiedad Inter"al del control& De"uel"e o establece el n/mero de milisegundos entre las llamadas al e"ento <imer de un control *imer& 'os "alores admitidos para milisegundos son I* -ue desacti"a el control *imer* o de 1 a GFF@F& ,l m 8imo* GFF@F milisegundos* e-ui"ale a poco m s de un minuto&
Inter"al
E*entos
<imer Bcurre cuando 5a transcurrido un inter"alo preestablecido para el control *imer&
t8t#ensa(e
cmd,stablece r
cmd+alir
H?
Compara la hora actual con la hora ingresada en el cuadro t tHora cada segundo y muestra el mensaje establecido en caso de 2ue sean iguales, desactiva el control temporiAador y restaura la ventana a su tama-o normal. "rivate Sub TimerD%Timer'( Dim /ora 2s String /ora = Format'Time9 "//Bmm"( *+ /ora = txtHora.Text T/en Beep )sgBox txt)ensa?e.Text9 vb#$#nl> ; vb*n+ormation9 ")ensa?e" TimerD.Enabled = False FormD.EindoFState = . End *+ End Sub
H@
HE
'a ma)or.a de sistemas de bases de datos emplean el modelo de base de datos relacional& ,ste modelo presenta los datos como una coleccin de tablas& 1na tabla es un grupo lgico de in!ormacin relacionada& Por e(emplo* la base de datos 9eptuno contiene una tabla -ue almacena a los empleados* ) otra almacena los pedidos de una compa6.a !icticia& 'a base de datos 9eptuno&mdb es una base de datos de e(emplo incluida con #icroso!t Access&
$a Cla*e Principal
Parte H: 2ontroles ,st ndar A"an0ados ) Acceso a Datos HF
2ada tabla debe de tener una cla"e principal* -ue es un campo 3o una combinacin de campos4 -ue es /nico para cada registro en la tabla& Por e(emplo* el campo Id,mpleado es la cla"e principal para la tabla ,mpleados& 1na tabla puede tambin tener cla"es !or neas* -ue son campos -ue 5acen re!erencia a una cla"e principal de otra tabla& Por e(emplo* en la base de datos 9eptuno* la tabla Pedidos tiene un campo llamado Id2liente& ,ste campo es una cla"e !or nea por-ue 5ace re!erencia a un cliente de la tabla 2lientes& ,n "e0 de duplicar toda la in!ormacin del cliente por cada pedido* slo se ingresa la cla"e principal del cliente a -uien pertenece el pedido* como la cla"e principal es /nica por cada cliente* 5a) un solo cliente por cada pedido* ) un cliente puede tener muc5os pedidos& ,n trminos de una base de datos* la relacin entre la tabla 2lientes ) la tabla Pedidos es una relacin del tipo unoCaC"arios&
3egistros
1n registro contiene in!ormacin acerca de un solo ingreso en una tabla& =eneralmente* no se desea -ue dos registros en una tabla tengan los mismos datos& Por e(emplo* un registro en la tabla ,mpleados contiene in!ormacin acerca de un /nico empleado&
Campos
2ada campo en una tabla contiene una parte de la in!ormacin& Por e(emplo* la tabla ,mpleados inclu)e campos para el Id del empleado* Apellidos* 9ombre* etc&
Indices
'os .ndices de una tabla de una base de datos son listas ordenadas -ue son m s r pidas para las b/s-uedas -ue las tablas en s.& Para 5abilitar un acceso m s r pido a una base de datos* la ma)or.a de bases de datos emplean uno o m s .ndices& Por e(emplo* la tabla ,mpleados tiene un .ndice para la columna Id,mpleado&
HG
enla0ado* dic5os cambios se actuali0ar n autom ticamente en la base de datos en cuanto el usuario se desplace a otro registro& #uc5os controles intr.nsecos o est ndar de Visual Basic permiten ser enla0ados a datos* como es el caso de los controles CheckBo * 0mage* #abel* .ictureBo * *e tBo * #istBo * ComboBo ) los contenedores 7#(& 'a siguiente ilustracin es un e(emplo de un !ormulario -ue contiene un control 5ata ) dos controles enla0ados&
Nota8 Para acceder a una %ase de datos dBase( Paradox( o Btrie*e( se de%e esta%lecer la propiedad DatabaseName a la carpeta 1ue contiene los arc,i*os de la %ase de datos( y la propiedad Connect al tipo apropiado de %ase de datos.
,nla0ar 2ontroles
Despus de establecer los "alores de las propiedades para el control 5ata* es necesario enla0ar al control 5ata controles indi"iduales ) despus especi!icar -u campo de la tabla mostrar cada control& 1& ?& ,n tiempo de dise6o* establecer la propiedad 5ata!ource del control enla0ado a datos al control 5ata& ,n tiempo de dise6o o en tiempo de e(ecucin* especi!icar -ue campo se desea mostrar en el control enla0ado estableciendo la propiedad 5ata%ield& 'a propiedad 5ata%ield puede ser establecida en tiempo de dise6o o en tiempo de e(ecucin&
HH
$a Propiedad Connect
,sta propiedad especi!ica el tipo de base de datos a abrir& Puede incluir argumentos tales como un nombre de usuario 3user ID4 ) una contrase6a&
$a Propiedad Exclusi*e
'a propiedad ( clusive determina si se tiene o no un uso e8clusi"o de la base de datos& +i esta propiedad se establece a *rue* ) luego se abre sin problemas la base de datos* ninguna otra aplicacin podr abrirla 5asta -ue sea cerrada&
$a Propiedad 3ead/nly
,sta propiedad determina si se puede o no actuali0ar o grabar cambios en la base de datos& +i no se tiene planeado 5acer cambios en la base de datos* es m s e!iciente establecer la propiedad @ead7nly a *rue&
$a Propiedad 3ecordset
'a propiedad @ecordset es un ob(eto -ue contiene el con(unto de registros de"ueltos por el control 5ata& ,sta propiedad contiene a su "e0 propiedades ) mtodos -ue pueden ser usados para traba(ar con los registros de"ueltos&
El M&todo 3e+res,
,l mtodo @e'resh renue"a el ob(eto @ecordset& +i se cambia la propiedad @ecord!ource en tiempo de e(ecucin* se debe in"ocar al mtodo @e'resh para reno"ar el recordset& ,l siguiente cdigo muestra como emplear el mtodo @e'resh& DataD.6ecordSource = "SE,ECT K F6#) Empleados " W % "EHE6E Y*dEmpleadoZ = " W txt*dEmp.Text DataD.6e+res/
,l Bb(eto Decordset
,n una aplicacin de base de datos* los usuarios traba(an con el control 5ata para despla0arse entre registros dentro de la base de datos& 'os usuarios pueden 5acer clic en los botones del control 5ata para a"an0ar o retroceder registro a registro o para ir directamente al primer o al /ltimo registro&
L0u& es un 3ecordsetM
HL
<odo el con(unto de registros al -ue 5ace re!erencia un control 5ata se denomina con(unto de registros o @ecordset& ,l @ecordset se almacena en la memoria* trans!irindose al disco si es necesario& Para manipular el @ecordset* se emplea la propiedad @ecordset del control 5ata& ,l @ecordset contiene el registro actual& 'a in!ormacin del registro actual es mostrada por los controles enla0ados& +e puede cambiar la posicin del registro actual 5aciendo clic en el control 5ata o escribiendo cdigo -ue emplee mtodos del ob(eto @ecordset&
Para emplear el ob(eto @ecordset de un control 5ata determinado* se debe especi!icar la propiedad @ecordset del control Data* como se muestra en el siguiente cdigo& DataD.6ecordset.)ove!ext ')ueve el registro actual al siguiente *+ DataD.6ecordset.E#F T/en DataD.6ecordset.)ove,ast
HN
LI
Para cancelar cual-uiera de estas acciones* asigne al argumento action el "alor "bDataAction2ancel& "l 4rg.mento #a5e ,l argumento sa*e indica si "a a guardarse o no el registro& +i sa*e es *rue* los datos enla0ados 5an cambiado& Para cancelar la accin de guardar puede asignar a sa*e el "alor %alse& ,l siguiente cdigo pide al usuario -ue con!irme los cambios 5ec5os a la base de datos& +i el usuario responde 9o* los cambios ser n cancelados& "rivate Sub DataD%Jalidate '2ction 2s *nteger9 Save 2s *nteger(
L1
Dim i6espuesta as *nteger *+ Save = True T/en i6espuesta = )sgBox '"7Desea guardar los cambios8" 9 vb<es!o( *+ i6espuesta = vb!o T/en Save = False DataD.-pdateControls '2ctualiGa los campos End *+ End *+ End Sub
L?
L@
:sar
el
Control
DBArid
,l control de cuadr.cula enla0ada a datos 3control 5B,rid4 permite -ue los usuarios de su aplicacin de base de datos traba(en con "arios registros a la "e0& !ostrar m7ltiples registros 5B,rid es un control Acti"eJ -ue muestra una serie de !ilas ) columnas -ue representan registros ) campos de un ob(eto @ecordset& 2uando asigne a la propiedad 5ata!ource del control 5B,rid un control 5ata* el control 5B,rid se llenar autom ticamente de datos ) se establecer n autom ticamente sus encabe0ados de columna a partir del con(unto de registros del control 5ata& Al contrario -ue la ma)or.a de los controles enla0ados a datos* el control 5B,rid le permite "er ) modi!icar "arios registros simult neamente& ,n la siguiente ilustracin se muestra un !ormulario -ue utili0a un control 5B,rid para presentar registros procedentes de la base de datos 9eptuno&
.ara a-adir el control 5B,rid a un proyecto 1& Aacer clic en la orden Componentes del men/ .royecto& ?& ,n la !ic5a Controles* seleccionar Microso't 5ata Bound ,rid Control* ) luego 5acer clic en 4ceptar& ,l control 5B,rid tiene "arias propiedades -ue especi!ican cmo se comporta el control& Por e(emplo* si asigna a la propiedad 4llo"1pdate el "alor *rue* un usuario puede modi!icar los datos del control& <ambin puede establecer propiedades para columnas indi"iduales del control 5B,rid& Puede cambiar el t.tulo de la columna* cambiar el campo de datos al -ue se enla0a la columna* agregar "alores predeterminados* etc& 1& ?& @& .ara establecer propiedades de columnas Bprima el botn secundario del ratn sobre el control 5B,rid& Aaga clic en la orden .ropiedades& Aaga clic en Columnas&
Puede cambiar el t.tulo de la columna* cambiar el campo de datos al -ue se enla0a la columna* agregar "alores predeterminados* etc& Para establecer los encabe0ados de las columnas del control 5B,rid* luego de 5aberlo enla0ado a un control 5ata* oprima el botn secundario del ratn sobre el control en tiempo de dise6o* ) luego 5aga clic en la orden @ecuperar campos& 8btener 9 establecer el texto de la celda act.al 1tilice la coleccin Columns del control 5B,rid para recuperar el te8to de la celda seleccionada actualmente en tiempo de e(ecucin& Por e(emplo:
Parte H: 2ontroles ,st ndar A"an0ados ) Acceso a Datos LE
)sgBox DB3ridD.Columns'DB3ridD.Col(.Text Para cambiar la in!ormacin del control DB=rid* cambie el ob(eto Decordset asociado& Por e(emplo* si el control 5B,rid est enla0ado al recordset Data1* se e(ecutar.a el siguiente cdigo: DataD.6ecordset.Edit DataD.6ecordset.Fields'"!ombre"roducto"( = "Disco duro" DataD.6ecordset.-pdate Usar el e5ento 1e+oreUpdate ,l e"ento Be!ore1pdate tiene lugar antes de -ue se mue"an datos desde un control 5B,rid al b/!er de copia del control 5ata& Puede "alidar los datos ) cancelar la actuali0acin si es necesario&
.ara combinar celdas 1& ,stable0ca la propiedad MergeCells a un "alor di!erente a cero& ?& ,stable0ca las propiedades arreglo Merge@o"3) ) MergeCol3) a *rue para las !ilas ) columnas -ue desee combinar& Por e(emplo* para combinar las celdas en la tabla Detalles de pedidos* a6ada el siguiente cdigo al !ormulario donde se encuentra el control M!%le ,rid& "rivate Sub Form%,oad'( )SFlex3ridD.)ergeCells = +lex)ergeFree )SFlex3ridD.)ergeCol'.( = True End Sub
:sar
el
Control
DBCom%o
LF
Puede utili0ar el control de cuadro de lista enla0ado a datos 3 5B#ist4 o el cuadro combinado enla0ado a datos 35BCombo4 para presentar autom ticamente una lista de "alores de un Decordset& ,sto resulta /til para proporcionar "alores " lidos al usuario& 8btener in+ormacin de .na tabla de b7s-.eda <ambin puede utili0ar estos controles en aplicaciones de etabla de b/s-uedae& Por e(emplo* puede presentar una lista de nombres de categor.a " lidos 3en "e0 de Id&4 ) utili0ar el Id& correspondiente cuando el usuario agregue o modi!i-ue datos& 'a ilustracin siguiente muestra un !ormulario -ue utili0a el control 5BCombo para presentar nombres de categor.as de la tabla Productos&
"stablecer propiedades del control D1Combo Para determinar el "alor -ue se presenta en el control 5BCombo* asigne a la propiedad @o"!ource un nombre de control 5ata ) a la propiedad #ist%ield un nombre de campo& ,l cuadro combinado enla0ado a datos contiene todos los "alores de ese campo& Para determinar -u campo de la base de datos se actuali0a cuando un usuario cambia un "alor* estable0ca las propiedades 5ata!ource ) 5ata%ield& Para establecer la relacin entre la tabla -ue contiene los "alores de b/s-ueda ) la tabla -ue se est modi!icando realmente* estable0ca la propiedad BoundColumn&
LG