0% encontró este documento útil (0 votos)
322 vistas454 páginas

Libro Visual Basic IIVersion Oro DCLC

Cargado por

tonyscat3234
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
322 vistas454 páginas

Libro Visual Basic IIVersion Oro DCLC

Cargado por

tonyscat3234
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 454

Hijo mío, no te olvides de mi ley, y tu corazón guarde mis mandamientos; Porque largura de días

y años de vida y paz te aumentarán. Nunca se aparte de ti la misericordia y la verdad; Átalas a tu


cuello, escríbelas en la tabla de tu corazón; Y hallarás gracia y buena opinión ante los ojos de
Dios y de los hombresÀ Proverbios 3:1-4.

c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

Todos los derechos reservados


2005-2008
Ô  



    

  


!    "   #
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Ô  



    

  

$ % $ $ &$'
   
%  () *+
  "


+  $ $ &$'
   
  ""  + 
  "

 ,- 
$ + .'$ * $$
  % 


$/  0 
$  % $+ 1$ 
   2 "- 


"  
$1 $ (1&
   2 "- 


c



*3 (%*$ )* $+ $* (
4566789

7
c

Aradecimie os

c
c más sincero agradecimiento a mi padre 3ë, ser supremo, creador del universo y todas las
Dis
cosas dentro de él, cuya gloria sea toda para él por los siglos de los siglos, Amén.
c
c
Infinitas gracias a todos los lectores de la primera edición de este libro que gracias a ellos he
c
obtenido la inspiración necesaria para poder escribir esta segunda edición.
c
Losc siguientes revisores aportaron comentarios y sugerencias cuidadosas para el mejoramiento del
manuscrito
c de esta edición: ë  
   ,
      
ë  
  ë  !"       # 
c
$ .
c
Unc agradecimiento muy especial a mi compañero de trabajo GicÀ Ja Fra cisco Me a Maño , ya
quec ha sido desde un principio un apoyo incondicional para las elaboraciones de mis proyectos,
además
c de considerarlo como un padre para mi.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0


c

3erechos del aor y modo de disribció

c
Ñnc el presente apartado se especifica la forma de distribuir este libro y los derechos propios del
autor del libro.
c
c
3    
c
c
c libro es exclusivamente una obra del ë À Carlos Ma el Rodríez Bcarelly y no puede
Ñste
serc alterado ni modificado bajo ninguna condición sin antes haber sido consultado con el mismo.
c
c
3      
c
c à Ñste libro puede ser utilizado en cualquier institución educativa (colegios, universidades,
c institutos, politécnicos, internados, etc.).
c
à No se permite ventas de este libro para obtener beneficios económicos.
c
c à Se debe considerar el nombre del autor en la bibliografía de cualquier manuscrito si se
c copia alguna porción de texto de este libro.
c
c à Ñl libro se distribuye de forma digital pero puede ser impreso en hojas de papel.
c
à Las distribuciones impresas en hojas de papel deben tener a totalidad el número de hojas
c obtenidas en el documento en su formato digital, incluyendo la portada del libro.
c
c
 #  

c
c
c à Ñl autor no se hace responsable del mal uso del conocimiento obtenido por este libro.
c à Ñl autor no se hace responsable de las sanciones aplicadas por la violación de los derechos
c del autor.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0


u c

c
c
u
c
c
c
c
c
c Próloo ¦


c c
c
ë rodc cció a la proramació
c orie ada a objeos V 
c
Ñl Ñcë3 (Ñ or o ë erado de
c
desacrrollo) de Visal Basic 6À0
 
c c
ë rodccció a los co roles más
c
sc ales de Visal Basic 6À0  
c c
c
ë rodc cció al Ge aje Basic
c
 
c c
c
c
c
Gos me s  

c
c
c
c a i erfaz de sario
G
c

V V
c
c
c
c
c
Gos Archivos 


c
c
c
ë rodc cció a las Bases de daos
c


c
c
c
c Trcos de la red  
c c
c
c
A exos y Bibliorafía  V
c
Ing. Carlos Danuel Rodríguez Bucarelly
c
c

u  
c
c
cPróloo
c c
CAPÌUG
c c ë: ëTR3UCCë A GA PR RAMACë RëÑTA3A A BJÑT 5
c1À1 Coc cepo de proramació orie ada a objeos (P)««««««««««««««««««
c 6
c1À2 Proramas orie ados a eve os«««««««««««««««««««««««««««« 6
c Creació
1À3 c de proramas para el e or o de Wi dows««««««««««««««««««ÀÀ 7
c Ñleme
1À4 c os de  a aplicació e el e or o de Wi dowsÀ 7
c c m 1.4.1 Formularios y controles««««««««««««««««««««««««««««. 7
c c m 1.4.2 Nombre de controles y objetos««««««««««««««««««««««««« 8
c m 1.4.3 Propiedades, clase y estado de objetos««««««««««««««««««««« 8
c m 1.4.4 Dodo de diseño y Dodo de ejecución««««««««««««««««««««««
c c m 1.4.5 Procedimientos«««««««««««««««««««««««««««««««.. 9
c 10
c m 1.4.6 Ñventos««««««««««««««««««««««««««««««««««« 11
c
c c m 1.4.7 Détodos««««««««««««««««««««««««««««««««««... 12
c c m 1.4.8 Dódulos««««««««««««««««««««««««««««««««««... 13
m 1.4.9 Ñncapsulación, herencia, polimorfismo y mensajes en objetos«««««««««««. 14
c Pre
1À5 c as y ejercicios propesos«««««««««««««««««««««««««««À 15
c c
CAPÌTUG
c c ëë: ÑG Ñë3 (ÑTR ëTÑ RA3 3Ñ 3ÑARRGG) 3Ñ VëUAG BAëC 6À0 18
c2À1 ¿Q
c es Visal Basic?ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ
19
c2À2 Hisoria
c y versio es de Visal Basic««««««««««««««««««««««««««À 19
c2À3 Ñl cÑë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0««««««««««««««« 20
c c m 2.3.1 La barra de menús««««««««««««««««««««««««««««««. 21
c m 2.3.2 La barra de herramientas estándar«««««««««««««««««««««««.
c m 2.3.3 La caja de herramientas (Toolbox)«««««««««««««««««««««««. 22
c 22
c m 2.3.4 Los formularios (Forms)««««««««««««««««««««««««««««
c 23
c c m 2.3.5 Ñl explorador de proyectos (Project Ñxplorer)««««««««««««««««««.. 23
c c m 2.3.6 La ventana de propiedades (Properties Windows)««««««««««««««««.. 24
c c m 2.3.7 La ventana de esquema de formularios (Form Layout Window)««««««««««... 24
m 2.3.8 La ventana explorador de formulario (Form Ñxplorer Window)«««««««««««. 25
c2À4 Gacayda de M3 Gibrary«««««««««««««««««««««««««««««««
25
c c m 2.4.1 Instalación de DSDN Library«««««««««««««««««««««««««...
26
c c m 2.4.2 Comprender el visor de DSDN Library«««««««««««««««««««««.. 26
c c m 2.4.3 Seleccionar la documentación adecuada««««««««««««««««««««. 27
c c m 2.4.4 Buscar información en el visor de DSDN Library««.««««««««««««««« 27
c m 2.4.4.1 Ñxplorar mediante la Tabla de contenido««««««««««««««««. 28
c m 2.4.4.2 Ñncontrar información con el índice««««««««««««««««««..
c c 28
c m 2.4.4.3 Ñncontrar información con la búsqueda de texto completo««««««««.. 29
c m 2.4.4.4 Crear una lista de temas favoritos«««««««««««««««««««. 30
c
2À5 Ñl cÑdior de Códio (Code Ñdior)«««««««««««««««««««««««««««ÀÀ 31
c
c c m 2.5.1 Características del Ñditor de Código (Code Ñditor)««««««««««««««««. 31
m 2.5.2 Personalizar el Ñditor de Código (Code Ñditor)«««««««««««««««««« 32
2À6c Ñl c3eprador (3eber)«««««««««««««««««««««««««««««««ÀÀ
33
c c m 2.6.1 Depurar utilizando puntos de parada (Breakpoints)««««««««««««««««.
34
c c m 2.6.2 Depurar paso a paso por instrucciones (Step Into)««««««««««««««««.. 34
c c m 2.6.3 Depurar paso a paso por procedimientos (Step Over)««««««««««««««« 34
c c m 2.6.4 Depurar paso a paso para salir (Step Out)«««««««««««««««««««« 34
c m 2.6.5 Ventana de Locales (Locals Window)«««««««««««««««««««««« 35
c m 2.6.6 Ventana Inmediato (Immediate Window)««««««««««««««««««««...
c c m 2.6.7 Ventana Inspección (Watch Window)««««««««««««««««««««««. 36
c 36
c m 2.6.8 Inspección rápida (Quick Watch)«««««««««««««««««««««««« 36
c
c m 2.6.9 Pila de llamadas (Call Stack)«««««««««««««««««««««««««... 37
c Pre as para co esar«««««««««««««««««««««««««««««««ÀÀ
2À7 37
c
c

c
c

c u  
c
c
CAPÌTUG
c ëëë: ëTR3UCCë A G CTRGÑ MÁ UUAGÑ 3Ñ VëUAG BAëC 6À0 38
c
c3À1 Gos co roles más sales e Visal Basic 6À0«««««««««««««««««««««ÀÀ
c 40
c
c c m 3.1.1 Los botones de comando (CommandButton)««««««««««««««««««« 40
c m 3.1.1.1 Propiedades de los botones de comando«««««««««««««««« 40
c
m 3.1.1.2 Uso de las propiedades en el Ñditor de Código«««««««««««««.. 49
c c m 3.1.1.3 Ñventos sobre los botones de comando««««««««««««««««.. 50
c c m 3.1.1.4 Détodos de los botones de comando««««««««««««««««.«.. 80
c c m 3.1.1.5 Ñjercicios prácticos«««««««««««««««««««««««««.. 84
c c m 3.2.1 Las etiquetas (Labels)««««««««««««««««««««««««««««... 94
c c m 3.2.1.1 Propiedades de las etiquetas«««««««««««««««««««««. 94
c c
m 3.2.1.2 Ñventos sobre las etiquetas«««««««««««««««««««««« 104
c m 3.2.1.3 Ñjercicios propuestos««««««««««««««««««««««««.. 129
c m 3.3.1 Las cajas de texto (TextBox)«««««««««««««««««««««««««« 130
c
c c m 3.3.1.1 Propiedades de las cajas de texto«««««««««««««««««««. 130
c c m 3.3.1.2 Ñventos sobre las cajas de texto«««««««««««««««««««... 134
c m 3.3.1.3 Détodos de las cajas de texto««««««««««««««««««««« 161
c m 3.3.1.4 Ñjercicios prácticos«««««««««««««««««««««««««.. 161
c c m 3.4.1 Los botones de opción (OptionButton)«««««««««««««««««««««... 166
c c m 3.4.1.1 Propiedades de las botones de opción«««««««««««««««««. 166
c c m 3.4.1.2 Ñventos sobre los botones de opción«««««««««««««««««... 166
c c m 3.4.1.3 Détodos de los botones de opción««««««««««««««««««« 166
c c m 3.4.1.4 Ñjercicios prácticos«««««««««««««««««««««««««.. 166
c m 3.5.1 La cajas de verificación (CheckBox)««««««««««««««««««««««.. 173
c m 3.5.1.1 Propiedades de las cajas de verificación««««««««««««««««. 173
c c
c m 3.5.1.2 Ñventos sobre las cajas de verificación««««««««««««««««« 173
c m 3.5.1.3 Détodos de las cajas de verificación«««««««««««««««««« 173
c
c c m 3.5.1.4 Ñjercicios prácticos«««««««««««««««««««««««««.. 173
c c m 3.6.1 La barras de desplazamiento (ScrollBars)««««««««««««««««««««. 176
m 3.6.1.1 Propiedades de las barras de desplazamiento«««««««««««««... 176
c c m 3.6.1.2 Ñventos sobre las barras de desplazamiento««««««««««««««.. 177
c c m 3.6.1.3 Ñjercicios prácticos«««««««««««««««««««««««««.. 177
c c m 3.7.1 Las cajas de lista (ListBox)««««««««««««««««««««««««««.. 182
c c m 3.7.1.1 Propiedades de las cajas de lista«««««««««««««««««««. 182
c c m 3.7.1.2 Ñventos sobre las cajas de lista«««««««««««««««««««« 184
c m 3.7.1.3 Détodos de las cajas de lista«««««««««««««««««««««. 184
c m 3.7.1.4 Ñjercicios prácticos«««««««««««««««««««««««««.. 188
c c m 3.7.1.5 Ñjercicios propuestos««««««««««««««««««««««««.. 191
c c m 3.8.1 Las cajas combinadas (ComboBox)««««««««««««««««««««««... 192
c
c m 3.8.1.1 Ñjercicios prácticos«««««««««««««««««««««««««.. 192
c m 3.9.1 Ñl control tiempo (Timer)«««««««««««««««««««««««««««.. 193
c c
m 3.9.1.1 Propiedades del control tiempo««««««««««««««««««««. 193
c c m 3.9.1.2 Ñjercicios prácticos«««««««««««««««««««««««««.. 194
c c m 3.10.1 Controles relacionados con ficheros (FileList, DirList y DriveList)«««««««««.. 196
c c m 3.10.1.1 Conectar los controles de ficheros««««««««««««««««««. 196
c c m 3.10.1.2 Ñjercicios prácticos««««««««««««««««««««««««« 197
c3À2 Ñl cco rol de cadros de diáloo (Commo d3ialo)««««««««««««««««««« 200
c c m 3.2.1 Los cuadros de dialogo Abrir y Guardar (Open/Save)«««««««««««««««. 203
c c m 3.2.1.1 Ñjercicios prácticos«««««««««««««««««««««««««.. 206
c c m 3.2.2 Ñl cuadro de diálogo Imprimir (Print)««««««««««««««««««««««.. 207
c c m 3.2.2.1 Ñjercicios prácticos«««««««««««««««««««««««««.. 209
c m 3.2.3 Ñl cuadro de diálogo Fuente (Font)««««««««««««««««««««««« 211
c m 3.2.3.1 Ñjercicios prácticos«««««««««««««««««««««««««.. 212
c m 3.2.4 Ñl cuadro de diálogo Color««««««««««««««««««««««««««..c 214
c

c
c

c u  
c
c
c m 3.2.4.1 Ñjercicios prácticos«««««««««««««««««««««««««.. 214
c3À3 c
Arrelo e los co roles«««««««««««««««««««««««««««««««« 216
c3À4 c
Fira co los co roles más sales de Visal Basic 6À0««««««««««««««««À 218
c
cCAPÌTUG ëV: ëTR3UCCë AG GÑ UAJÑ BAëCc
c 219
c
4À1 Ñl Ge aje Basic««««««««««««««««««««««««««««««««««« 221
c c m 4.1.1 Antecedentes««««««««««««««««««««««««««««««««.. 221
c c m 4.1.2 Nacimiento y primeros años««««««««««««««««««««««««««. 221
c c m 4.1.3 Crecimiento Ñxplosivo««««««««««««««««««««««««««««.. 222
c c m 4.1.4 Perfeccionamiento««««««««««««««««««««««««««««««. 222
c4À2 Coc cepos básicos««««««««««««««««««««««««««««««««««À 223
c c mm 4.2.1 Identificadores«««««««««««««««««««««««««««««««« 223
c 4.2.2 Palabras reservadas«««««««««««««««««««««««««««««. 224
c m 4.2.3 Tipos de datos«««««««««««««««««««««««««««««««« 225
c
c c m 4.2.3.1 Clasificación de los tipos de datos««««««««««««««««««« 225
c c m 4.2.3.1.1 Tipos enteros (Byte, Integer, Long)««««««««««««««. 226
c m 4.2.3.1.2 Tipos reales (Single, Double, Currency)««««««««««««. 226
c m 4.2.3.1.3 Tipos cadena (String)««««««««««««««««««««. 226
c c m 4.2.3.1.4 Tipos lógicos (Boolean)«««««««««««««««««««. 227
c c m 4.2.3.1.5 Tipos variados (Variant)«««««««««««««««««««. 227
c c m 4.2.4 Constantes«««««««««««««««««««««««««««««««««.. 227
c c m 4.2.4.1 Declaración de constantes««««««««««««««««««««««. 277
c c m 4.2.4.2 Declaración de constantes públicas««««««««««««««««««. 228
c m 4.2.4.3 Declaración de constantes privadas««««««««««««««««««. 231
c m 4.2.4.4 Declaración de constantes locales««««««««««««««««««« 231
c c m 4.2.5 Variables««««««««««««««««««««««««««««««««««.
c 232
c m 4.2.5.1 Declaración de una variable«««««««««««««««««««««... 232
c
c c m 4.2.5.1.1 Declaración de una variable pública«««««««««««««« 233
c m 4.2.5.1.2 Declaración de una variable privada«««««««««««««« 233
c m 4.2.5.1.3 Declaración de una variable local««««««««««««««« 233
c c m 4.2.5.2 Nombre descriptivos de las variables«««««««««««««««««... 234
c c m 4.2.5.3 Almacenar y recuperar datos en variables«««««««««««««««.. 234
c c m 4.2.5.4 Operaciones aritméticas con variables«««««««««««««««««. 234
c c m 4.2.5.5 Ñjercicios propuestos««««««««««««««««««««««««.. 237
c c m 4.2.6 Operaciones de entrada y salida««««««««««««««««««««««««. 237
c m 4.2.6.1 Función InputBox««««««««««««««««««««««««««. 237
c m 4.2.6.2 Función DsgBox««««««««««««««««««««««««««.. 239
c c
4À3 Ñsrcras de co rol selecivas«««««««««««««««««««««««««««ÀÀÀ 244
c c m 4.3.1 Ñxpresiones lógicas«««««««««««««««««««««««««««««.. 244
c
c m 4.3.1.1 Operadores aritméticos«««««««««««««««««««««««.. 245
c m 4.3.1.2 Operadores de relación«««««««««««««««««««««««.. 245
c c
m 4.3.1.3 Operadores lógicos«««««««««««««««««««««««««. 245
c c m 4.3.1.3.1 Operador lógico AND««««««««««««««««««««. 246
c c m 4.3.1.3.2 Operador lógico OR««««««««««««««««««««« 246
c c m 4.3.1.3.3 Operador lógico NOT««««««««««««««««««««. 246
c c m 4.3.2 La sentencia If«««««««««««««««««««««««««««««««« 246
c c m 4.3.3 La sentencia Case««««««««««««««««««««««««««««««. 250
4À4
c Ñsrcras de co rol repeiivas«««««««««««««««««««««««««««ÀÀ 251
c m 4.4.1 Ñl Bucle For«Next«««««««««««««««««««««««««««««.. 251
c c m 4.4.2 Ñl Bucle Do...Loop«««««««««««««««««««««««««««««« 255
c c m 4.4.3 Ñl Bucle While«Wend««««««««««««««««««««««««««««. 256
c c m 4.4.4 Ñl Bucle For Ñach«Next«««««««««««««««««««««««««««. 257
c m 4.4.5 Ñjercicios propuestos««««««««««««««««««««««««««««« 259
cc
c
cc

c
c

c u  
c
4À5
c
c Gas f cio es e el le aje Basic««««««««««««««««««««««««««« 259
c c m 4.5.1 Funciones predefinidas««««««««««««««««««««««««««««. 260
c c m 4.5.1.1 Funciones aritméticas««««««««««««««««««««««««.. 260
c c m 4.5.1.2 Funciones trigonométricas««««««««««««««««««««««.. 263
c m 4.5.1.3 Funciones matemáticas derivadas««««««««««««««««««« 264
c
m 4.5.1.4 Funciones de conversión de tipo de datos«««««««««««««««.. 265
c Funciones de manipulación de cadenas de caracteres«««««««««««««««««.
cm 4.5.1.5 266
c c m 4.5.1.5.1 Concatenación de cadenas«««««««««««««««««... 266
c c m 4.5.1.5.2 Obtener subcadenas««««««««««««««««««««.. 267
c c m 4.5.1.5.3 Funciones especiales««««««««««««««««««««. 269
c c m 4.5.1.5.4 Longitud de una cadena««««««««««««««««««« 272
c m 4.5.1.6 Ñjercicios prácticos«««««««««««««««««««««««««..
c m 4.5.2 Funciones definidas por el usuario«««««««««««««««««««««««. 273
c 281
4À6 c
c ë rodcció a las esrcras de daos««««««««««««««««««««««««« 282
c c m 4.6.1 Los Arrays«««««««««««««««««««««««««««««««««... 282
c c m 4.6.1.1 Arrays unidimensionales: vectores««««««««««««««««««« 283
c m 4.6.1.1.1 Declaración de un Array unidimensional«««««««««««« 284
c m 4.6.1.1.2 Almacenar y leer datos en un Array unidimensional««««««« 284
c c m 4.6.1.1.3 Operaciones con los elementos de un Array unidimensional«««. 286
c c m 4.6.1.1.4 Ñjercicios prácticos«««««««««««««««««««««. 287
c c m 4.6.1.2 Arrays multidimensionales: tablas y matrices««««««««««««««.. 288
c c m 4.6.1.2.1 Recorrido por las filas y columnas de un Array multidimensional«.. 288
c c m 4.6.1.2.2 Declaración de un Array multidimensional«««««««««««. 289
c m 4.6.1.2.3 Almacenando y leer datos en un Array multidimensional««««« 290
c m 4.6.1.2.4 Ñjercicios propuestos««««««««««««««««««««. 293
c c
4À7
c Pre as para co esar«««««««««««««««««««««««««««««««ÀÀ 293
c
c
CAPÌTUG c V: G MÑ c
c
5À1
c ¿Q
c so los me s?ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ 294
5À2
c c
Ñleme os de los me sÀ «««««««««««««««««««««««««««««««À 295
5À3
c Ñl cÑdior de Me  (Me  Ñdior)««««««««««««««««««««««««««««À 296
c 5.3.1 Descripción de los elementos del Ñditor de Denús««««««««««««««««« 296
c
5.3.2 Creación de menús en Visual Basic 6.0«««««««««««««««««««««.. 297
c c 5.3.3 Creación de submenús««««««««««««««««««««««««««««... 203
c5À4 Ñve c os sobre los me s«««««««««««««««««««««««««««««««ÀÀ 304
c5À5 Ñjercicios
c propesos««««««««««««««««««««««««««««««««« 304
c c
c c
CAPÌTUG Vë: GA ëTÑRFAZ 3ÑG UUARëc 305
c
c
c6À1 Gos formlarios«««««««««««««««««««««««««««««««««««« 306
c c m 6.1.1 Concepto de formulario««««««««««««««««««««««««««««. 306
c c m 6.1.2 Propiedades de los formularios. ««««««««««««««««««««««««. 306
c c m 6.1.3 Ñventos de los formularios. ««««««««««««««««««««««««««. 311
c c m 6.1.4 Trabajando con múltiples formularios. «««««««««««««««««««««.. 315
m 6.1.4.1 Descargar un formulario. ««««««««««««««««««««««« 317
c c m 6.1.4.2 Cargar un formulario. ««««««««««««««««««««««««. 317
c c m 6.1.4.3 Interactuar con controles de distintos formularios. «««««««««««« 318
c Coc roles com es de ve a as««««««««««««««««««««««««««««À
6À2 320
c c m 6.2.1 Ñl control ImageList (Lista de Imágenes). «««««««««««««««««««« 321
c c m 6.2.1.1 Configurando el control ImageList. ««««««««««««««««««. 322
c m 6.2.1.2 Ñxtraer las imágenes de un ImageList. ««««««««««««««««.. 324
c m 6.2.1.3 Ñjercicio práctico. «««««««««««««««««««««««««« 324
c
c
c
c

c
c

c u  
c
c
mc 6.2.2 Control TreeView. «««««««««««««««««««««««««««««««««... 328
c c m 6.2.2.1 Configurar el control TreeView en tiempo de diseño. ««««««««««... 328
c c m 6.2.2.2 Propiedades más importantes del control TreeView«««««««««««.. 330
c c m 6.2.2.3 Cómo añadir objetos Node (Nodos). «««««««««««««««««« 330
c m 6.2.2.4 Cómo leer el texto del Nodo seleccionado. ««««««««««««««« 333
c
m 6.2.2.5 Ñliminar uno o todos los elementos del control TreeView. ««««««««.. 334
c c m 6.2.2.6 Ñjercicios práctico. «««««««««««««««««««««««««. 334
c c m 6.2.3 Control ListView. ««««««««««««««««««««««««««««««.. 338
c c m 6.2.3.1 Configurar el control ListView en tiempo de diseño. «««««««««««. 338
c c m 6.2.3.2 Cómo añadir encabezados en modo de diseño. ««««««««««««« 340
c c m 6.2.3.3 Cómo añadir encabezados en modo de ejecución. «««««««««««.. 341
c c
m 6.2.3.4 Cómo añadir objetos ListItem (Filas). «««««««««««««««««.. 341
c m 6.2.3.5 Leer los datos de una o varias columnas. «««««««««««««««.. 344
c m 6.2.3.6 Ordenar el contenido de las columnas. ««««««««««««««««... 345
c
c c m 6.2.3.7 Búsqueda de elementos. ««««««««««««««««««««««... 345
c c m 6.2.3.8 Ñjercicios práctico. «««««««««««««««««««««««««.. 345
c c m 6.2.4 Control ToolBar. ««««««««««««««««««««««««««««««« 348
m 6.2.4.1 Configurar el control ToolBar en tiempo de diseño. «««««««««««.. 348
c c m 6.2.4.2 Cómo reaccionar ante las acciones del usuario. ««««««««««««... 351
c c m 6.2.4.3 Crear menús dentro de los botones (ButtonDenu). «««««««««««.. 352
c c m 6.2.5 Control TabStrip. ««««««««««««««««««««««««««««««... 353
c c m 6.2.5.1 Configurando el control TabStrip en tiempo de diseño. «««««««««« 353
c c m 6.2.5.2 Agregar objetos Tab. ««««««««««««««««««««««««.. 354
c m 6.2.5.3 Cómo determinar la ficha pulsada por el usuario. ««««««««««««. 355
c m 6.2.5.4 Preparación de los contenedores. ««««««««««««««««««« 356
c c m 6.2.6 Ñjercicios propuestos. ««««««««««««««««««««««««««««..
c 358
c
c
c
CAPÌTUG Vëë: G ARCHëVc 360
c
c Coc cepo de Archivo«««««««««««««««««««««««««««««««««ÀÀ
7À1 361
c
c7À2 Caracerísica de los Archivos«««««««««««««««««««««««««««««À 361
7À3
c Creació
c de  archivo aleaorio (si formao) desde Visal Basic 6À0««««««««««ÀÀ 362
7À4 Almace amie o de i formació  archivo de exo««««««««««««««««««ÀÀ 363
c c
7À5 Gecra de  archivo aleaorio (si formao)««««««««««««««««««««««À 367
c c m 7.5.1 Lectura de un archivo utilizando un bucle. «««««««««««««««««««... 369
c c m 7.5.2 Creación de un editor sencillo. ««««««««««««««««««««««««... 371
c Archivos
7À7 c co esrcra de base de daos«««««««««««««««««««««««ÀÀ 376
c Crear
7À8 c  archivo co esrcra de base de daos e Visal Basic 6À0««««««««««ÀÀÀ 377
c Ñjercicios
7À9 c propesos««««««««««««««««««««««««««««««««« 401
c
c
cCAPÌTUG Vëëë: ëTR3UCCë  A GA BAÑ 3Ñ 3ATc 402
c c
8À1 c
c ë rodcció a los co cepos de base de daos«««««««««««««««««««««À 403
c m 8.1.1 Concepto de base de datos. «««««««««««««««««««««««««... 403
c
c c m 8.1.2 Ñlementos de una base de datos. «««««««««««««««««««««««. 403
m 8.1.3 Ñstructura de una base de datos. «««««««««««««««««««««««.. 404
c c m 8.1.4 Sistema de Gestión de Base de datos (SGBD). «««««««««««««««««.. 404
c c m 8.1.5 Administrador de base de datos (ABD). ««««««««««««««««««««« 404
c c m 8.1.6 Diseñador de base de datos (DBD). ««««««««««««««««««««««.. 405
c Creació
8À2 c de  a base de daos««««««««««««««««««««««««««««ÀÀÀ 405
8À3
c Coc ecar  a base de daos co Visal Basic 6À0««««««««««««««««««««À 406
c m 8.3.1 Ñl Dodelo de datos ODBC (Open Database Connectivity). ««««««««««««.. 406
c m 8.3.2 Ñl modelo de objetos DAO (Data Access Object). ««««««««««««««««.. 406
c
c m 8.3.3 Ñl modelo de objetos RDO (Remote Data Object). ««««««««««««««««. 407
m 8.3.4 Ñl modelo de objetos ODBCDirect. «««««««««««««««««««««««c 407
c
c

c
c

c u  
c
c
mc 8.3.5 Ñl modelo de objetos OLÑ DB. ««««««««««««««««««««««««««««. 407
c c m 8.3.6 Ñl modelo de objetos ADO (ActiveX Data Object). ««««««««««««««««. 407
8À4
c c
Prepara do la co exió a la base de daos«««««««««««««««««««««««À 408
c c m 8.4.1 Objeto Recordset. ««««««««««««««««««««««««««««««. 409
c m 8.4.1.1 Propiedades del objeto Recordset. ««««««««««««««««««.. 409
c
m 8.4.1.2 Danejo de cursores. ««««««««««««««««««««««««... 411
c c m 8.4.1.3 Control de concurrencia. ««««««««««««««««««««««« 413
c c m 8.4.1.4 Lectura de los campos de un Recordset. «««««««««««««««« 413
c c m 8.4.1.5 Doverse por los registros de un Recordset. ««««««««««««««... 419
c c m 8.4.1.6 Dodificación de registros en un Recordset. ««««««««««««««« 422
c c m 8.4.1.7 Ñliminar el registro activo del Recordset. «««««««««««««««« 423
c c m 8.4.1.8 Inserción de registros en el Recordset. ««««««««««««««««... 423
c m 8.4.1.8 Ñstablecer y leer la posición de un registro en el Recordset. «««««««.. 424
c m 8.4.1.9 Ordenación de los registros de un Recordset. «««««««««««««... 425
c
c c m 8.4.1.10 Búsqueda de registros. ««««««««««««««««««««««« 425
c c m 8.4.1.11 Verificar el estado del Recordset. ««««««««««««««««««.. 429
c c m 8.4.2 Ñventos del objeto Recordset«««««..«««««««««««««««««««« 430
m 8.4.2.1 Sucesos de recuperación de datos. ««««««««««««««««««. 430
c c m 8.4.2.2 Sucesos de navegación«««««««««««««««««««««««.. 431
c c m 8.4.2.3 Sucesos de modificación de datos. ««««««««««««««««««.. 432
c c m 8.4.3 Generación de reportes. «««««««««««««««««««««««««««.. 433
c8À5 Ñjercicios
c propesos««««««««««««««««««««««««««««««««« 436
cTRUC c 3Ñ GA RÑ3c 437
c c la ventana de quitar o agregar programas de Windows. ««««««««««««««««..
9.1
c Abrir 438
9.2 c
c Obtener el directorio desde donde estemos ejecutando nuestro programa. ««««««««««.. 438
c
9.3 Verificar si un archivo existe o no. ««««««««««««««««««««««««««««. 438
c
c
9.4 Capturar la pantalla entera o la ventana activa. ««««««««««««««««««««««..
c9.5 Desplegar la lista de un ComboBox automáticamente. «««««««««««««««««««.
438
c 439
c9.6 Cambiar el fondo de Windows. «««««««««««««««««««««««««««««.. 439
c
c9.7 Comprobar si el sistema posee una tarjeta de sonido. «««««««««««««««««««.. 439
c
c9.8 Apagar el equipo, reiniciar Windows y reiniciar el sistema. «««««««««««««««««... 440
9.9 c un ScrollBar horizontal en una ListBox. «««««««««««««««««««««««.
c Situar 440
c
9.10 c
Centrar una ventana. «««««««««««««««««««««««««««««««««. 441
9.11
c Obtener
c el directorio de Windows y el directorio de Sistema. ««««««««««««««««. 441
9.12
c Crear un efecto Shade al estilo de los sistemas de instalación. «««««««««««««««. 441
9.13
c
Hacer sonar un fichero WAV o una secuencia DIDI. «««««««««««««««««««... 442
c c
9.14 Ocultar y mostrar el cursor. ««««««««««««««««««««««««««««««.. 442
c c
AÑ
c «««««««««««««««««««««««««««««««««««««««««c 443
c
cBëBGë RAFëA««««««««««««««««««««««««««««««««««««««c 445
c c
cc c
cc
c
c c
cc c
cc c
c c
cc
c
cc c
c c
cc
cc c
c
cc

c
c

Próloo

c
Lac mayoría de los usuarios de computadoras que se interesan por el área de la programación, en
su inicialización han querido obtener una documentación capaz de introducirlos de forma adecuada
c
en el manejo de la programación computarizada. Ñste libro garantiza la preparación del interesado
c
mediante ejercicios, cuestionarios, análisis, notas y métodos bien definidos.
c
c edición se ha elaborado específicamente para el manejo de  c c   debido al papel
Ñsta
tanc importante que juegan las  c c   en una aplicación. La mayoría de las aplicaciones
incluidas en este libro manejan  cc  y están dirigidas específicamente al área comercial,
c
por ejemplo: facturación, punto de venta (ptv), almacenes, mantenimiento, consultas, reportes, etc.
c
Sec ha seleccionado como en la primera edición el lenguaje de programación Visal Basic 6À0, que
escun lenguaje de programación orientado a objetos de fácil uso y uno de los más preferidos por los
programadores
c de aplicaciones. Ñxisten otros lenguajes de programación orientado a objetos, tales
como: DÑLPHI, Visual FoxPro, Visual C++, entre otros, que también son muy potentes y muy
c
utilizados por los programadores de aplicaciones.
c
Porc su parte, los programas orientados a objetos (eventos) son los programas típicos de Î ,
c como Î,
 ,   , etc. Cuando uno de estos programas ha arrancado, lo único
tales
quec hace es quedarse a la espera de alguna  del usuario, que en este caso a dicha acción en
la programación orientada a objetos se le llama . Un  es una acción que realiza el
c
usuario hacia un objeto, por ejemplo, cuando el usuario hace clic en un botón de comando, esa
c
acción de hacer clic en el botón se le llama  Click. También cabe mencionar el evento
c
MoseMove (P P c  c  ) que ocurre cuando el usuario mueve el puntero del P
 c por cualquier objeto sobre una ventana.
c
Si usted ha programado con otros métodos de lenguajes de programación, ya sea de  
c
  cc  P , encontrará en la  P c   c c el método más fácil
c
y eficaz para la creación de sus aplicaciones.
c
A cmedida que avance cada capítulo de este libro, notará que ha adquirido los conocimientos
necesarios
c para crear cualquier tipo de aplicación compatible con Î , así como, la base
necesaria para programar en otros lenguajes de programación orientada a objetos.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0


c

ë rodcció a la proramació orie ada a objeos


Capílo 1
c
CTÑë3
c
c
1À1 Co cepo de proramació orie ada a objeos (P)À
1À4c Proramas orie ados a eve osÀ
1À5c Creació de proramas para el e or o de Wi dowsÀ
1À4c Ñleme os de  a aplicació e el e or o de Wi dowsÀ
c m 1.4.1 Formularios y controles.
m 1.4.2 Nombre de controles y objetos.
c
m 1.4.3 Propiedades, clase y estado de objetos.
c m 1.4.4 Dodo de diseño y Dodo de ejecución.
c m 1.4.5 Procedimientos.
c m 1.4.6 Ñventos.
c m 1.4.7 Détodos.
m 1.4.8 Dódulos.
c
m 1.4.9 Ñncapsulación, herencia, polimorfismo y mensajes en objetos.
1À5c Pre as y ejercicios propesosÀ
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a la proramació orie ada a objeos


Capílo 1
c
1À1c Co cepo de proramació orie ada a objeos (P)
c c
La  P c   c c es aquella en la que trabajamos con  visibles, cada uno
dec los cuales posee sus propias   , P   . La  P c   c c
c
 también llamada  cc  c  toma como entidad principal los  de
la cnaturaleza misma que contienen sus propias    y alguna función de utilidad. Ñn el
mundo
c real un  es cualquier cosa material y determinada que tiene alguna función de utilidad
y que posee    oc   iguales o distintas a la de otros , por ejemplo, un
c
carro, una computadora, un televisor, un celular, etc. Ñn el mundo de las computadoras un 
esc todo lo que se ve en una aplicación típica de Windows, Linux, Beos, etc. Los  son, por
c
ejemplo, un c c P ,  c  c c 
,  c P , c c c  ,  c  c
c
   c c  cc  P , en general todo  visible que usted puede observar
enc la pantalla.
c
No podemos definir un  como algo que simplemente se ve en la pantalla, un  es algo
másc abstracto y de inmensa profusión de datos. Un  poseec    o    que
c
definen su aspecto exterior, por ejemplo, el color, el tamaño, el estilo, etc. Un  también posee
P c  y  que son elementos significativos del . Ñstos dos últimos elementos los
explicaremos
c más adelante.
c
Ñn   c   c  losc c con que trabajamos poseen   c P c c ,
c
aunque algunosc  pueden no tener las mismas   c P c oc  que otros
c
 poseen, y también algunos  pueden tener las mismas    de otros .
Unc ejemplo de lo dicho anteriormente podría ser el siguiente: Ñnc Visual Basicc existe un objeto o
control
c llamado TexBox (caja de texto) y tiene una propiedad llamada Tex (texto), que indica el
texto que posee la caja y también existe un objeto o control llamado Comma dBo (botón de
c
comando) que obviamente usted se puede imaginar que no puede tener la propiedad Tex que
c una caja de texto. Otro ejemplo sería: Ñl evento Cha e (cambio) de una TexBox que
posee
c
ocurre cuando el usuario esta escribiendo en la caja de texto, también esta claro que en un
c
Comma dBo (botón de comando) no pueda ocurrir este evento.
c
Otros términos que apreciaremos luego y que están también relacionados con un  son:
c
,  ,   ,  P P,  c c  y P c c . Todos
c vocablos son elementos de la  P c    c c  y son los que le dan
estos
c
verdadera potencia a este leguaje de programación.
c
1À2c Proramas orie ados a eve os
c c
Todas las aplicaciones creadas en un  c c  P c   c c  serán por
c
defecto un  P c  c c. Ñs un  P c  c c porque cuando este
esccargado o ejecutado solo espera a que el usuario realice alguna acción sobre uno de los 
quec posee, por ejemplo, la calculadora de Windows espera a que el usuario haga ÿ  
c con el Douse sobre uno de los cc P  que contienen los números para luego
%
ponerlo en la  cc
, o bien, espera a que el usuario pulse un número (Ñve o KeyPress)
c
desde el teclado para ponerlo en la  cc
.
c
Losc programas o paquetes de programas que utilizamos con frecuencia en Windows son
c P c  c c. Solo cuando el usuario realiza alguna acción sobre los  de

unc programa ocurre un determinadoc cc. Dediante ese  el programa realiza una
operación y luego notifica al usuario sobre los resultados de dicha operación. Puede probar esto
c
cargando cualquier aplicación de Windows ya sea  cÎ o  c
 , cuando este es
c
cargado se queda a la espera de que usted haga algo, por ejemplo, Î espera a que usted
c
escriba alguna carta u otro tipo de documento, así como,
 espera a que el usuario escriba,
porc ejemplo, los valores de alguna nomina de pago. Todo esto dicho anteriormente nos da a
entender que cada programa es capaz de manejar un sin numero de determinados  cc
y que también son capaces de responder a cada uno de ellos.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a la proramació orie ada a objeos


Capílo 1
c c
1À3c Creació de proramas para el e or o de Wi dowsÀ
c c
Ñn   c   c  es posible crear todo tipo de aplicación para Windows, pudiendo incorporar
c las características y elementos de un programa típico de Windows.
todas
c
c Basic 6.0 posee una   cc P   donde es posible encontrar todos los elementos
Visual
quec apreciamos en una aplicación de Windows:   cc  cc
c  cc  c
cc  ccc  c  cc  P c cPcen general,
c
todo  visible en una aplicación de Windows.
c
c
Prácticamente, todos los elementos de interacción entre la aplicación y el usuario de los que
c
dispone Windows pueden ser programados en Visual Basic 6.0 de un modo muy sencillo. Con
asiduidad,
c los programadores crean aplicaciones para Windows con solo algunas líneas de códigos
y pocas operaciones con el mouse y el teclado.
c
c
Algunos programas toman mucho más tiempo que otros para su realización, algunos toman meses,
c años, o simplemente días. Ñl tiempo de duración para la realización de una aplicación,
otros
c
depende exclusivamente de la profundidad del programa y regularmente de la capacidad del
programador.
c c
c
1À4c Ñleme os de  a aplicació e Wi dows
c c
Las aplicaciones en Windows han evolucionado notablemente, incorporando un sin número de
c
elementos gráficos que han permitido un mejor rendimiento por parte de los usuarios así como para
c
el mismo sistema.
c
Ñnc un principio, crear aplicaciones para el entorno de Windows era bastante tedioso para los
programadores,
c debido a que su principal preocupación era la determinación del entorno del
programa y cómo responder a los posibles  del usuario, como cc c ccc
c
   c  c   c c c Pc c Pc c  c   c  c  c c  cTodas estas
c eran las principales preocupaciones del programador, y por ende, aumentaban el periodo de
cosas
c
tiempo para la terminación del programa, además del vasto conocimiento que debía tener en
 c & .
c
Con la aparición de   c   este problema desapareció. Ahora es mucho más fácil crear
c
aplicaciones para Windows sin la preocupación de tantas definiciones de    c  c c
c
. Los errores en Visual Basic no se generan tan frecuentemente y, en caso de que ocurra
unc error, es mucho más fácil de   (  ), debido a que cada  trabaja de forma
independiente,
c es decir, posee su propio  c independientemente de otros . Si un
c genera un error, simplemente habría que, leer la codificación contenida en ese .


Losc elementos principales de una aplicación de Windows son: P  c  c
c
  P c P c c c . Cada uno de estos elementos juega un papel muy
c
importante en una aplicación de Windows.
c
c Formlarios o ve a as
- 1À4À1
c
Ñnc   c   , un P   es considerado como una ventana típica de Windows Ñn este se
colocan todos los   de los que dispone Visual Basic para crear una aplicación. Cada uno de
c
los elementos gráficos que forman parte de una aplicación de Windows es un  c   :
c
botones, cajas de texto, cajas de diálogo, barras de desplazamiento, menús, gráficos, cajas de
c
verificación, y muchos otros elementos son   para Visual Basic.
c
Un P   también se puede considerar como una especie de contenedor para los  cde
una aplicación. Una aplicación puede tener uno o varios P   pero un únicocP  

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a la proramació orie ada a objeos


Capílo 1
c
puede
c ser suficiente para la creación de una potente aplicación. Ñl número de P   va a
depender precisamente del tipo de aplicación y de la cantidad de módulos de trabajo que incluirá la
c
aplicación.
c
c
- 1À4À2 ombre de co roles y objeos
c
c  u  en Visual Basic debe tener un P, por medio del cual se puede hacer
Cada
c
referencia a dicho  en la aplicación. Ñlc Pc ( ame), puede ser el que el programador
desee,
c e incluso Visual Basic proporciona Pc c   para los diversos  . Ñstos
P
c c   hacen referencia al tipo de  y van seguidos de un número, que se
incrementa a medida que se van introduciendo más  c de ese mismo tipo en el P   c
porc ejemplo, Tex1para una caja de texto, Tex2 para otra caja de texto, Comma d1 para un botón
dec comando, Comma d2 para otro botón de comando, así sucesivamente.
c
Losc Pcc  no son recomendables para los   colocados en una aplicación de
Visual
c Basic, debido a que solo hacen referencia al tipo de   pero no al uso que de dicho
 está haciendo el programador en la aplicación. Por ejemplo, si se agregan dos botones de
c
comando en una aplicación (Comma d1, Comma d2), uno para salir de la aplicación y el otro
c cancelar la salida de la aplicación, sería recomendable que el botón de salir lleve por P
para
c
y que el botón de ca celar lleve porcP    y no los Pcc 
Comma
c d1 y Comma d2, ya que en ocasiones no distinguiremos para que utilizamos uno y para
quec utilizamos el otro.
c asignar los P a los   de Visual Basic, existe una convención ampliamente
Para
c
aceptada por la gran mayoría de los programadores; se utilizan siempre tres letras en minúscula,
quec hacen referencia al tipo de   seguido de otras letras (la primera en mayúscula),
c
libremente escogida por el programador, que tienen que hacer referencia al uso que se va a dar a
dicho
c  cen la aplicación

Lac abla 1À1 muestra las abreviaturas de los controles más usuales, junto con la nomenclatura
c
inglesa de la que se derivan.
c
c  u  u
c c  c c  c
c  c
c c  c  c  c
c  c c c c
c  c  c  c   c
c c    c  c  c
c c c c c
c c c c c
c  c  c c   c
c  c  c c c
c  c   c c     c
c c Tabla 1.1. Abreviaturas para los controles más usuales.
c
- 1À4À3 Propiedades, clase y esado de objeosc
c
Sec ha dicho que los  que colocamos en un formulario de Visual Basic, también son llamados
 ,
c cada uno de los cuales posee   cP cc. Las    son las
características
c propias de un cpor ejemplo, imagínese c cc  cc  c !c "#c
c P  c  c c c c c P  .c Ñl carro descrito posee características que definen o
c
proporcionan la apariencia o el estado físico del . A estas    se le denominan
  cy a los valores que poseen dichas   cse lescdenominan  c c. c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0


c

ë rodcció a la proramació orie ada a objeos


Capílo 1
c c
Ñl c ccc puede cambiar en Visual Basic, así como el carro mencionado anteriormente
puede ser que cambie de color, en vez de rojo a negro. Ñn este caso, se dice que el   de la
c
   Color ha cambiado de valor, y por tal razón también ha cambiado el  c cc
c
cc c c . Otro ejemplo sería, un botón de comando de color negro en una aplicación
que c se comporta de la siguiente manera:  c c  c   c c c ccc c
c
c c cc P cc  cc c  
c
Generalmente, los P de las   c de un  o  c son campos que poseen
c
valores lógicos (true o false), numéricos, alfabéticos ó alfanuméricos. Así pues, cada c cc
c
cc  tienen su propio conjunto de   . Se podría decir, que el carro mencionado
c
anteriormente, posee las    c
' c c
 c con los valores -c "#c
$c cc   Ñn representación de   c  se haría de la siguiente manera:
c
CarroÀColor = Rojo
c
CarroÀAño = 2005
c
CarroÀDarca = Honda
c
CarroÀAros = Dagnesio
c
Casic todas las   cde los   de   c  pueden cambiarse en momento que la
aplicación se esta diseñando Pcc !cy también casi siempre cuando la aplicación esta
c
en ejecución Pc c    Para modificar u obtener el  c c c  se hace por
c
medio del Pc  c  ÿ % seguido de un punto (À) y el Pc c c    Por
c
ejemplo, para cambiar el color de una  cc
 llamada Text1, se haría de la siguiente manera:
c
c
Text1.BackColor = vbRed : Donde Tex1 es el Pc c, BackColor el Pcc c
c
c c c c cc   cy vbRed es el color rojo por defecto de   c  .
c Ñn   c  los colores se representan por   y
c  c
 P .
c
Porc otro lado, la  representa la entidad genérica a la que pertenece un , por ejemplo, en
una c aplicación, puede haber varios cc P  cada uno de los cuales es un  que
pertenece
c a una cc llamada Comma dBo (cc P  La  del

c también determina las    de los c de esa , es decir, cadac ,  cc
c c  c tienen su conjunto de   , y cada  oc  tienen valores
c
determinados para las    de su .
c
c
- 1À4À4
c Modo de diseño y Modo de ejecció
c
Anteriormente, se había comentado que en momento que se está diseñando la aplicación se le
c
denomina Pc c  !c y cuando la aplicación se esta ejecutando se le denomina Pc c
c
 ! Las aplicaciones en Visual Basic pueden trabajar en dos modos distintos, que son: Pcc
c
 !c y Pc c   . Ñn Pc c  ! el programador construye interactivamente la
aplicación,
c colocando   en el P   definiendo sus   c y codificando los
 
c P  para gestionar los cde cada  .

Lac aplicación se prueba en Pc c   . Ñn este caso, el programador actúa sobre la
c
aplicación produciendo losc codificados y obteniendo los valores proporcionados por dichos
c
. Hay algunas   c de los  c que solo pueden establecerse en Pc c
 !,
c pero muchas otras pueden cambiarse en Pcc  . Para que una aplicación pase
delc Pcc ! al Pcc   simplemente hay que pulsar la tecla ÈF5], o bien, hacer
clicc en el botón ë iciar (ar) , de la   c c  P  c  . Otra forma no muy
utilizada, es haciendo clic en la opción ë iciar (ar) del menú R (Ñjecar)À

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a la proramació orie ada a objeos


Capílo 1
c c
- 1À4À5
c Procedimie os
c
Un   P  representa la definición o declaración de un . Los   P c se
c
encuentran dentro de los P  y contienen el conjunto de instrucciones que se ejecutan cuando
el cusuario realiza algún  sobre el  o cuando estos son llamados por su P. Un
c
  P  viene representado por un P, los P   c    c c


c c y el código que compone el cuerpo del   P  Algunos   P  sólo
vienen representados con un P, es decir, sin P y otros vienen representados con el
c
Pc c  P c c Pccy elcPc cque activa dicho .
c
Parac definir un   P  se utiliza la palabra clave b, seguida del Pc  c
c
  P  y los Pc  c  c   P c c  , así como el  c  c
c
  P . Cuando hablamos del  c  c   P c nos estamos refiriendo a la
posibilidad de llamar un   P  desde otros P cde la misma aplicación, principalmente
c
desde otros P  
c
c
Ñl alcance de un   P  puede ser declarado de dos formas:    ó  .   
c
cuando el   P  puede ser utilizado en un mismo P  P  c es decir, sólo los
c
  P  dentro del mismo módulo pueden invocar dicho   P . Para declarar un
c
  P  como    se utiliza la palabra clave Privae. c
c c
Ñl calcance de un   P c declarado como  ces mucho más amplio. Un   P c
  puede ser invocado desde otros P  o P   que se encuentren en la misma
c
aplicación. Ñste segundo método de declaración es muy importante cuando un   P  es
c
utilizado con mucha frecuencia en una aplicación. Para declarar un   P  como    se
c la palabra clave Pblic. c
utiliza
c
Ñnc resumen, la representación o formato de un   P  seria el siguiente:

1) c Privae b ó Pblic b È×P% %  P ß (arme os)


c
c Ñ d b
c
c
2) Privae b ó Pblic b È×P% %  P ß È ß (arme os)
c
c Ñ d b
c
c
3) c Privae b ó Pblic b È×P% %  P ß È ß
c Ñ d b
c
c
4) c b È×P% %  P ß ( )
c
Ñ d b
c
Ñnc algunos   P c se omite suc   como lo es en el P c &c Cuando se omite el
c  cdel   P , entonces,   c  c lo interpreta como Privado (Privae).
c
Sec ha dicho anteriormente que todo c c  c c  viene representado por un
  P  y que cada   P  posee códigos que se ejecutan cuando el usuario realiza
c
una acción  sobre el . Por ejemplo, el  Clickcde un cc P  vendría
representado de la siguiente manera:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció a la proramació orie ada a objeos


Capílo 1
c
c
  c' (PP )%( *cc
c
c
ccccccccccccc ccccccccccccc+, c c cc  c  c cc c  c
c
c
c'c
c
c
Las especificaciones anteriores muestran un   P  que representa el  Click de un
c c P . Como explicamos anteriormente, la sentencia    indica que el
c
c
  P  es   c y que sólo puede ser utilizado en un mismo P . Comma d1
c
especifica el nombre delc c c   en este caso el Pc c   del c c
P c . Ñl carácter     o  ÿ% se utiliza para separar el nombre delc y el
nombre del . Ñl término Click indica el nombre del , que especifica que la acción de
c
ese procedimiento se ejecutará cuando el usuario haga click sobre el botón. Los paréntesis ( ) se
c
utilizan para separar los Pcdel Pc c y el Pc c; en este caso, el
c
  P  anterior no posee ningún P.
c
Lac sentencia  se utiliza para salir de la aplicación y en este caso es el cuerpo del procedimiento.
La sentencia  cierra todos los formularios abiertos sin importar la acción que se este realizando
c
sobre ellos. c'indica el fin del   P , es decir, donde finaliza la codificación.
c
Otroc ejemplo de un   P csería el  KeyPress de una &  ( ÿ ((%a
c
 c c' 
)%- c-. c.c/
c
c
c'c
c
c
Ñl ctérmino š   es un  que ocurre cuando el usuario presiona y suelta una tecla sobre
la  cc
. Ñste  puede ser muy útil a la hora de programar una  cc
, debido a
c
que permite obtener el valor numérico de una tecla pulsada sobre la caja.
c
Sec puede observar en este   P  que existen algunas especificaciones dentro de los
c
paréntesis, que en este caso son los P del  KeyPress. Ñl término š 
 es
una c     de tipo entero que almacena el valor Aë de la tecla presionada. Los valores Aë
son Juegos de caracteres de 8 bits del / c .P c c ×P c ×  c .×'/, usado
c
por Dicrosoft Windows, que permite representar hasta 256 caracteres (0±255) con el teclado. As
c
ë eer declara la variable KeyAscii como tipo entero, es decir, como un número sin punto decimal.
c c
c Ñve os
- 1À4À6
c
Yac se ha dicho que las acciones que realiza el usuario sobre un c se llaman . Son
 típicos: hacer clic sobre un botón (eve o Click), hacer doble clic sobre un fichero (eve o
c
3blClick), arrastrar un icono (eve o 3raver), pulsar una tecla o una combinación de teclas
(evec o KeyPress), escribir en una caja de texto (eve o Cha e), o simplemente desplazar el
c
puntero del Douse sobre un objeto (eve o MoseMove).
c
Los c c vienen especificados junto con el   P  del c separado por el carácter
 derscore o sbrayado (_), como vimos anteriormente en las declaraciones dec  P .
c
Ñnc   c   c , existe un sin número de  que estudiaremos más adelante, en la
c
definición de cada uno de los  cde   c  c. La siguiente tabla muestra los 
más comunes de los  cde   c  c.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a la proramació orie ada a objeos


Capílo 1
c c
cÑve o 3escripció
c
Click Ocurre cuando el usuario presiona y suelta un botón del mouse sobre un .
c
c
3blClick Ocurre cuando el usuario presiona y suelta dos veces un botón del mouse sobre un
c
c
c
3ra3rop Ocurre como resultado de arrastrar y soltar con el mouse un  c sobre un
c determinado  ccc
c c
c
3raver Ocurre cuando una operación de arrastrar y colocar está en curso. Puede usar este
c  para controlar el puntero del mouse a medida que entra, sale o descansa
directamente sobre un destino válido.
c
c
oFocs Ocurre cuando unc recibe el enfoque, ya sea mediante una acción del usuario,
c como tabular o hacer clic en el objeto, o cambiando el enfoque en el código
c mediante el método eFocs.
c
c
GosFocs A diferencia del evento anterior, este c ocurre cuando el c pierde el
c enfoque, ya sea mediante tabulaciones o hacer clic sobre otro .
c
Key3ow Ocurre cuando el usuario mantiene presionada una tecla.
c
c
KeyUp Ocurre cuando el usuario termina la operación de pulsar una tecla. Se podría decir,
c que este evento ocurre precisamente al terminar el evento Key3ow .
c
KeyPress
c Ocurre como resultado de presionar y soltar una tecla.
c
Mose3ow Ocurre cuando el usuario presiona un botón del mouse, pero a diferencia del 
c Mose3ow , permite identificar cuales de los tres botones del mouse fue
c presionado y las combinaciones de tecla AGT, MAYÚ y CTRG.
c
MoseUp
c Ñl eventoc MoseUp se produce cuando el usuario suelta el botón del mouse.
MoseUp es un compañero útil a los eventos Mose3ow y MoseMove.
c
c
MoseMove Ñste evento ocurre mientras el usuario mueve o desplaza el puntero del mouse
c sobre un 
c Tabla 1.2 Ñventos más comunes de los controles de Visual Basic 6.0.

Dásc adelante, veremos cmo utilizar cada uno de estos  y cómo se comportan ante algunas
c
situaciones.
c
- 1À4À7
c M
odos
c
Los P  son funciones que también son llamadas desde el programa, pero a diferencia de los
c
  P c no son codificados por el programador. Los P  son llamados desde código
enc Visual Basic de la misma manera como se hace referencia a una propiedad del   Cada
c de  o  cposeen sus propios P , aunque algunosc   tienen P c
tipo
c
comunes.
c
Los P  cen Visual Basiccposeen un P cllamado Hide, que permite ocultar el P  cy
c
otro P cllamado how, que permite mostrar el P  cdespués de haber sido ocultado. Un
c
ejemplo de cómo hacer referencia a uno de estos P  sería el siguiente:
c
m Para ocultar el formulario: Form1ÀHide

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a la proramació orie ada a objeos


Capílo 1
c
Donde
c Form1 indica el Pc c   que en este caso es un formulario, y Hide especifica el
Pc c  P . Para mostrar el formulario se haría de la misma forma, pero en vez de
c
utilizar el P  Hide se utiliza el P  how.
c
c
A continuación, se muestran los métodos más comunes de los   de   c  cac
c c
c M
odo 3escripció
3ra
c Inicia, termina o cancela una operación de arrastre de cualquier   excepto
los   G  #   3
c
c
Move Se utiliza para mover un  c c P  c especificando sus coordenadas
c ÿ#G )% y su tamaño ÿ %c
c
Refresh
c Se utiliza para dibujar o actualizar gráficamente un  c o un P  . Se
utiliza principalmente con los   FileGisBox y 3aa.
c
c
eFocs Ñste P  se utiliza para hacer que un  reciba el enfoque. Ñste P c
c es uno de loscmás usados para los  cde   c  c.
c
howWhasThis
c Permite mostrar un tema seleccionado de un archivo de Ayuda utilizando el
c menú emergente ¿Q
es eso? que ofrece la ayuda de Windows. Ñste P c
es muy útil para proporcionar ayuda interactiva en un menú contextual acerca
c de un  en una aplicación. Ñste P  muestra el tema indicado por la
c propiedad WhasThisHelpë3 del  especificado en la sintaxis.
c
Zorder
c Se utiliza para que un  c oc c c P   se coloque por encima o
c por debajo de otros .
Tabla 1.3 Détodos más comunes de los controles de Visual Basic 6.0.
c
Al cigual que con los , todos estos P  serán ejemplificados y utilizados más adelante
enc los programas resueltos y propuestos en los próximos capítulos.
c
- 1À4À8
c Módlos
c
Un P cse puede definir, como el lugar donde se almacena el  c de una aplicación
enc Visual Basic. Los P cse clasifican en tres tipos que son: P  c ccc c
c
c
- Módlos de formlario
c
Losc P c c P   se almacenan en un archivo con extensión Àfrm, y son la base de la
mayoría
c de las aplicaciones de   c   . Pueden contener   P  que controlen
,   P c   y declaraciones a nivel dec P   de variables, constantes,
c y   P c
. Si examina un P ccP   con un editor de textos, podrá
tipos
verc las descripciones del formulario y sus controles, así como los valores de sus   . Ñl
c
código que se escribe en un P ccP   es específico de la aplicación a la que pertenece
el cP   y puede hacer referencia a cP   uc de la aplicación.
c
- Módlos
c esá dar

Losc P   ctrabajan independientemente de la aplicación y se almacenan en un archivo


conc extensión Àbas. Ñn ocasiones, el programador necesitará declarar P  generales, que
c
contengan códigos que puedan ser utilizados desde variosc P  , para así evitar tener que
c a repetir el código. Pueden contener declaraciones disponibles para toda la aplicación o a
volver
nivel de P cc   c  c    P  
cc  P c  .
Ñs posible reutilizar un P c   en distintas aplicaciones, si tiene cuidado de no hacer
referencia a   o P   por su nombre.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a la proramació orie ada a objeos


Capílo 1
c c
- Módlos
c de clase
c
Los P c c c son la base de la  P c    c c  en Visual Basic y se
c
almacenan en archivos con extensión Àcls. Puede escribir código en P c c  para crear
c
nuevos . Ñstos  nuevos pueden incluir    y P c   . Ñn
c
realidad, los P   sólo son P c c  que pueden tener   y que pueden
c
mostrar ventanas de P  .
c
- 1À4À9
c Ñ capslació , here cia, polimorfismo y me sajes e objeosÀ
c
Los c o   poseen códigos y estructuras internas ocultas para otras entidades. La
c
capacidad de ocultar y aislar el código de un c o  en una aplicación se denomina
 c  . Por ejemplo, un componentec c que realiza una consulta acerca de ingresos
c a un objeto empresarial no tiene que conocer el origen de los datos.
netos
c
Ñxisten c que adquieren o heredan   c y P c de otros  de mayor
c
jerarquía, ya sea de clases superiores o una  . Ñsta capacidad de compartir la estructura
dec otros  de c  c se denomina $  Por ejemplo, podemos tener una
c de equipos de música llamada ALTOSONIDO, imagínese que esta marca lance al mercado
la clínea de equipo de música ALTO SNmX y de esta línea surgen los modelos: ALTO SNmX D1,
ALTO
c SNmX D2 y ALTO SNmX D3. Ñn este caso la cde mayor jerarquía es ALTOSONIDO y las
demás
c son   de esta . La   ALTO SNmX es considerada   de las
  ALTO SNmX D1, ALTO SNmX D2 y ALTO SNmX D3, ya que estas heredan las
c   de la   ALTO SNmX. Ñl ejemplo anterior se podría representar gráficamente
dec la siguiente manera:
c
c
c AGTë3
c
c
c AGT -
c
c
c
c
AGT - M1 AGT - M2 AGT - M3
c
c Figura 1.1 Ñjemplo de jerarquías entre clases y subclases.
c
c
Ñn caso de que la   ALTO SNmX D1 hubiese lanzando el modelo ALTO SNmX D1m001,
c
entonces, la  c ALTO SNmX D1m001 sería unac  de lac  ALTO SNmX D1. De igual
c
manera, si la subclase ALTO SNmX D2 lanza el modelo ALTO SNmX D2m001
c
c término muy importante en la  P c    c c  es el )  que
Otro
significa
c que muchas cpueden proporcionar la misma    o el mismo P  y que el
 que llama no tiene por qué saber lac  a la que pertenece el  que recibe la solicitud
c
antes de ser invocada una    o un P cde dicho objeto.
c
Porc ejemplo, una clase Carros y una clase Dotocicletas podrían tener las dos un P  llamado
c
 . Ñlc P P significa que puede invocar  c sin saber si el  es un Carro
c Dotocicleta. Ñste ejemplo se podría representar gráficamente de la siguiente manera:
o una

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a la proramació orie ada a objeos


Capílo 1
c c
c
®®® Solicitud del método X
c
c Respondiendo a la solicitud X
c >>>
c
c Figura 1.2 Llamada a un método de un objeto cualquiera.
c
Porc otro lado, los P cc no son más que las llamadas a los métodos de dicho .
Porc ejemplo, cuando le decimos a un  Radio que se ponga en funcionamiento, estamos
pasándole el mensaje ³ponte en funcionamiento´.
c
c
Para mandar mensajes a los  utilizamos el    , seguido del P  que
c
deseamos invocar:
c
c
bjeoRadioÀPo eÑ F cio amie o()
c
Ñnc este ejemplo pasamos el P  Po eÑ F cio amie o(). Los paréntesis se especifican en
casoc de que existan Pcde lo contrario no se especifican.
c
1À5 Pre as y ejercicios propesos
c c
ëÀ- cCo ese:
c
1.)c ¿Qué es la programación orientada a objetos?
2.)c ¿Qué es un objeto?
3.) ¿Cuales son los elementos principales de un objeto?
c
4.) Defina: eventos, métodos y propiedades.
5.)c Diga la diferencia entre un evento y un método.
6.)c Dencione algunos eventos de los controles de Visual Basic.
7.)c ¿Qué es un programa orientado a eventos?
8.)c Dencione algunos programas de Windows orientado a eventos.
9.) ¿Cuáles son los elementos principales de una aplicación de Windows?
c
10.) ¿Cuál era la principal preocupación de los programadores de aplicaciones para Windows,
c de la existencia de la programación orientada a objetos?
antes
11.)c ¿Qué es un formulario?
12.)c ¿De que depende el número de formularios que se deben incluir en una aplicación en Visual
Basic?
c
13.) ¿Qué es un nombre de objeto?
c
14.) ¿Qué son nombres por defecto?
15.)c ¿Cuál es la desventaja de los nombres por defecto?
16.)c ¿Cómo se deben especificar los nombres a los controles de Visual Basic?
17.)c Diga las abreviaturas para los controles: CheckBox, ListBox, Label, TextBox, CommandButton,
Shape,
c Image y PictureBox.
18.) Defina: cc cc
c
19.) Diga que hace la diferencia entre dos tipos de controles.
20.)c ¿Qué tipos de valores es posible asignar a las propiedades de un control de Visual Basic?
21.)c Diga como se accede a una   cde un control de Visual Basic.
22.)c Hable del modo de diseño y el modo de ejecución.
23.)c ¿Qué son procedimientos?
24.) Ñspecifique la forma de definir un procedimiento.
c
25.) Diga los modos de declarar un procedimiento y explique cada uno de ellos.
26.)c c¿Qué son códigos ANSI?
27.) Diga que separa un evento del nombre de un procedimiento.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a la proramació orie ada a objeos


Capílo 1
c c
28.)c Diga cuando ocurren los siguientes eventos: Click, DblClick, KeyDown, KeyUp, KeyPress,
LostFocus, GotFocus, DouseDown, DouseUp y DouseDove.
c
29.) Diga la función de los métodos: Drag, Refresh, Dove y SetFocus.
30.)c ¿Qué son módulos?
31.)c Diga como se clasifican los módulos y defina cada uno de ellos.
32.)c Defina: Ñncapsulación, herencia, polimorfismo y mensajes en objetos.
c
ëëÀ- Co ese F o V se crea:
c
1.)c La programación orientada a objetos es un lenguaje de cuarta generación
2.)c La programación orientada a objetos trata de imitar los objetos de la realidad
3.)c Un objeto es simplemente algo que se ve en una ventana típica de Windows
4.)c Todos los objetos poseen propiedades iguales
5.) Algunos objetos poseen propiedades que otros objetos no poseen
c
6.) Algunos objetos poseen propiedades que otros objetos no poseen
7.)c Para que un programa sea orientado a eventos debe ser creado en un lenguaje de
c
programación orientado a objetos
8.)c Ñn Visual Basic no es posible crear cualquier aplicación para Windows
9.)c Todas las aplicaciones en Visual Basic toman el mismo tiempo para su realización
10.) Ñl tiempo para la realización de una aplicación exclusivamente del conocimiento del
c
programador
11.)c Un formulario de Visual Basic también recibe el nombre de ventana
12.)c Una aplicación con varios módulos de trabajo solo debe tener un único formulario
13.)c Ñs posible hacer referencia a un  o  csi este no posee un nombre
14.)c Los nombres por defecto hacen referencia a la utilidad del cen la aplicación
15.) La abreviatura inglesa para el  c '   ces bsv
c
16.) Las propiedades definen las características de un objeto c
17.)c Ñn una línea de comando el punto se utiliza para hacer referencia únicamente a una propiedad
delc objeto
18.)c Ñl estado de un objeto puede cambiar en modo de ejecución
19.)c Un evento puede modificar el estado de un objeto
20.) Cuando un objeto modifica su estado, es porque el valor de unas de sus propiedades ha
c
cambiado
21.)c Ñl signo de igual se utiliza para asignar un valor a una propiedad, a una variable o a una
c
constante
22.)c Todos los objetos en Visual Basic pertenecen a una misma clase
23.)c La clase define las propiedades, métodos y eventos de un objeto
24.) Ñn el modo de diseño es posible ver los valores generados por los procesos de la aplicación
c
25.)c Todos los objetos poseen procedimientos
27.)c Todos los procedimientos incluyen eventos
28.)c Todos los procedimientos deben tener un nombre
29.)c Todos los procedimientos poseen variables, constates y expresiones
30.) La palabra clave Sub se utiliza para declarar un procedimiento
c
31.) Un procedimiento declarado como privado tiene el mismo alcance que un procedimiento
c
declarado Publico
32.)c Ñl carácter underscore o subrayado ( ) separa el evento de los argumentos
33.)c La especificación Ñnd Sub indica el final de un procedimiento
34.)c Los eventos son programados por el usuario mediante los procedimientos
35.) Los métodos son programados por los creadores del objeto
c
36.) Un objeto puede hacer una solicitud a un método de otro objeto
37.)c Los códigos fuente de una aplicación se almacenan en los procedimientos
38.)c Los procedimientos se almacenan dentro de los módulos
39.)c Un formulario es un modulo con extensión .frm
40.) Los módulos estándar pueden ser utilizados en diversas aplicaciones
41.) Los módulos estándar depende exclusivamente del programa

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a la proramació orie ada a objeos


Capílo 1
c c
42.)c La encapsulación oculta el código fuente de un objeto
43.) Todos los objetos heredan las mismas propiedades de otros objetos de su misma clase
c
44.) Polimorfismo significa la capacidad de compartir recursos con otros objetos
45)c Un método es una acción que realiza un objeto sobre si mismo sin la intervención del usuario
c
ëëëÀ-c Complee la abla co las posibles propiedades, esados, eve os y m
odos del
c
siie e objeo:
c
c
c
c
Azul
c
c
9 cm
c 30% Volumen
c Botón de encender y
c apagar
c
c
c 10 cm
c
Propiedades M
odos Ñve os
c
c
Ñjemplo: Ñjemplo: Ñjemplo:
c
Televisor.Color = Azul Televisor.DostrarImagen Televisor SubirVolumen
c
Televisor.Ñncendido = Si
c
c
c
c
c
c
c
ëVÀ-c 3ibje 3 objeos y coloqe ss propiedades, eve os y m
odosÀ
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0


Capílo 2
c c
CTÑë3
c
c
2À1 ¿Q
es Visal Basic?
2À2c Hisoria y versio es de Visal BasicÀ
2À3c Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0À
c m 2.3.1 La barra de menús.
c m 2.3.2 La barra de herramientas estándar.
m 2.3.3 La caja de herramientas (Toolbox).
c
m 2.3.4 Los formularios (Forms).
c m 2.3.5 Ñl explorador de proyectos (Project Ñxplorer).
c m 2.3.6 La ventana de propiedades (Properties Windows).
c m 2.3.7 La ventana de esquema de formularios (Form Layout Window).
c m 2.3.8 La ventana explorador de formulario (Form Ñxplorer Window).
2À4 Ga ayda de M3 GibraryÀ
c
m 2.4.1 Instalación de DSDN Library.
c m 2.4.2 Comprender el visor de DSDN Library.
c m 2.4.3 Seleccionar la documentación adecuada.
c m 2.4.4 Buscar información en el visor de DSDN Library.
c m 2.4.4.1 Ñxplorar mediante la Tabla de contenido.
m 2.4.4.2 Ñncontrar información con el índice.
c
m 2.4.4.3 Ñncontrar información con la búsqueda de texto completo.
c m 2.4.4.4 Crear una lista de temas favoritos.
2À5c Ñl Ñdior de Códio (Code Ñdior)À
c m 2.5.1 Características del Ñditor de Código (Code Ñditor).
c m 2.5.2 Personalizar el Ñditor de Código (Code Ñditor).
2À6 Ñl 3eprador (3eber)À
c
m 2.6.1 Depurar utilizando puntos de parada (Breakpoints).
c m 2.6.2 Depurar paso a paso por instrucciones (Step Into).
c m 2.6.3 Depurar paso a paso por procedimientos (Step Over).
c m 2.6.4 Depurar paso a paso para salir (Step Out).
c m 2.6.5 Ventana de Locales (Locals Window).
m 2.6.6 Ventana Inmediato (Immediate Window).
c
m 2.6.7 Ventana Inspección (Watch Window).
c m 2.6.8 Inspección rápida (Quick Watch).
c m 2.6.9 Pila de llamadas (Call Stack).
2À7c Pre as para co esarÀ
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0


c
Capílo 2
c c
2À1c ¿Q
es Visal Basic?
c c
Visal Basic es un lenguaje de  P c   c c  creado por la Dicrosoft. Ñste
c
lenguaje incorpora todas las herramientas necesarias para la creación de cualquier aplicación para
c
Windows. Con este lenguaje se puede crear desde una simple calculadora hasta un procesador de
textoc de la talla de Word, o una hoja de cálculo como Ñxcel, o bien, cualquier aplicación que se le
ocurra
c al programador.
c
  c   es unc     que se origina del lenguaje de programación Basic. La
c
programación en   c  se basa en un ambiente de desarrollo totalmente grafico, que facilita
la ccreación de interfaces gráficas, y en cierta medida, también la programación misma. Todos los
c
programas que realicemos en   c   serán por defecto, programas con todas las
características
c de una aplicación típica de Windows.
c
2À2 Hisoria y versio es de Visal Basic
c
c
Hace c poco más de 15 años, la realización de aplicaciones para el entorno de Windows era bastante
c
complicada antes de la introducción de   c   1.0 en su primera versión en 1961. Ñsta
versión
c incluyó poco más que la tecnología Pc    que había sido desarrollada
originalmente en Dicrosoft QuickBasic 4.0 y una herramienta compiladora de diseño simple,
c
originalmente diseñada para Windows 3.0 pero que nunca fue utilizada para tal fin.
c
Aproximadamente 12 meses después, el desarrollo y mejora de la versión 1.0 comenzó, Dicrosoft
sacó c al mercado una herramienta desarrolladora para cubrir la exigencia en ese momento del
c
mercado, cuyo nombre en clave fue "Thunder" (Trueno).
c
Después de la mejora de esta primera versión   c   1.0, se propaga a través de toda la
c
comunidad en unos pocos meses. Poco después surge la fiebre de por   c   , un grupo
c
pequeño pero fuerte. Programadores empiezan a transformar las bibliotecas de código en
c
controles. Ñstos controles se distribuían como componentes de   c  , llamados VBXs, o los
c
controles personalizados.
c
Cuando aún no había pasado un año de su salida inicial al mercado, Dicrosoft había comenzado a
c
utilizar   c   para la creación de algunos de sus propios proyectos. A medida que la
c
demanda de Visual Basic aumentaba, los desarrolladores requerirían un   c  más potente.
Para c tratar a esta necesidad creciente, Dicrosoft anunció la disponibilidad de   c   2.0 en
c
noviembre de 1992.
c
La segunda versión de   c  , distribuida en la edición estándar y profesional, proveía a los
c
desarrolladores un funcionamiento perceptiblemente mejorado y mayor capacidad para crear
c
aplicaciones de mayor tamaño y más sofisticadas. Incluía también una ayuda para mejorar la
c
puesta a punto y depuración; proveía de la capacidad de conectarse a bases de datos mediante
ODBC c (conectividad de base de datos abierta), y nuevas y productivas herramientas, por ejemplo,
cc   c c   , sintaxis del código en color, y completo soporte para un / c c
   c0 P (DDI).
c
c
Dientras la adopción de   c   en las corporaciones se expandía, también lo hacía la
c
necesidad de una herramienta para el desarrollador que permitiera aplicaciones datamaware
c
robustas.   c  3.0, anunciado solamente seis meses después de la salida al mercado de la
versión
c 2.0, solucionaba esta necesidad combinando el motor de la base de datos de Dicrosoft
Access 1.1 con un conjunto rico de controles datamaware.
c
Sec anuncian en marzo de 1997 y en junio de 1998 las versiones de   c   5.0 y 6.0,
c
respectivamente. Representaron un paso importante hacia posibilitar a los desarrolladores en
  c c   , programar en los nuevos niveles del funcionamiento, en el ambiente libre que
representa Internet. Las características tales como el compilador del código nativo, introdujeron
aumentos del funcionamiento de hasta el 2.000 por ciento. Ñl Webclass designer (diseñador de clam

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0


c
Capílo 2
c c
sesc Web), simplificó la creación de las aplicaciones de la Web, proporcionando un modelo intuitivo
del objeto para el servidor web, y el diseñador de páginas DHTDL permitió la creación de
c
aplicaciones para Dicrosoft Internet Ñxplorer 4.0, que combinaron la riqueza de HTDL dinámico
c
(DHTDL), con el funcionamiento y la productividad de   c   . Finalmente, con la Control
c
Creation Ñdition (Ñdición de Creación de Controles), los desarrolladores de   c   podrían
c
construir fácilmente los controles Dicrosoft ActiveX de alto rendimiento y con un amplio alcance que
estaban
c destinados a Internet.
c
Hoy en día, se encuentra en el mercado la versión .NÑT de   c  . Con   c  .NÑT,
c c   sigue siendo la herramienta más productiva para la creación de aplicaciones que se
 
c
ejecutan en el sistema operativo Dicrosoft Windows. Ñsta versión, incluye todas las herramientas
dec programación rápida de aplicaciones que los programadores esperan de Dicrosoft, como la
creación,
c con arrastrar y colocar, de aplicaciones para Windows que aprovechan totalmente las
bases de datos y los servicios Web XDL. También   c   .NÑT, ofrece características de
c
Internet móvil que permiten a los programadores crear una interfaz Web móvil única. Ñsta versión
noc solo es más potente, sino que también, ofrece un entorno grafico cien por ciento mejorado, en
c
relación a las versiones anteriores de   c   . Ñl  c c   y otros elementos del Ñë3
c
poseen nuevas características y mejoras que facilitan la lectura y escritura de los   P 
escritos
c en la aplicación.
c
2À3c Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0
c c
Ñl ÑID de   c  c, posee un sin numero de herramientas que hacen de la programación de
c
aplicaciones en Visual Basic mucho más fácil e interactiva. Ñste entorno incluye elementos tales
c barra de menús, barra de controles, barra de herramientas, ventana de propiedades, ventana
como:
dec proyectos, depurador, formularios, etc. Ñstos elementos los podemos apreciar en el momento
quec ejecutamos   c  en nuestro ordenador. Para ejecutar   c  c, haga clic en el
c ë icio>Proramas>Microsof Visal dio 6À0>Microsof Visal Basic 6À0. Cuando se ha
menú
ejecutado   c  c aparece en la pantalla una ventana similar a la mostrada en la siguiente
c
figura:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

Figura 2.1. Ñntorno de Desarrollo de Visual Basic 6.0


c Rodríez Bcarelly
ë À Carlos Ma el

Visal Basic 6À0

Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0


c
Capílo 2
c c
Ñnc esta ventana se pueden distinguir los siguientes elementos:
c
1.m Ga barra de ilo, la barra de me s y la barra de herramie as esá darÀ
2.mc Ga caja de herramie as (ToolBox) con los  cmás comunes.
3.mc Gos formlarios (forms) en gris, en el que se colocan los   de la aplicación. Ñstá dotado
dec una rejilla (grid)), para facilitar la alineación de los   en el P  .
4.mc Ñl explorador de proyeco (Project Ñxplorer), donde se muestran los P   y otros
P  c P  que forman parte de la aplicación.
c
5.m Ga ve a a de propiedades (Properties Windows), en la que se pueden ver las    de
unc cseleccionado sobre un P  cde la aplicación.
6.mc Ga ve a a de esqema de formlarios (Form Layout Window), que muestra y determina la
c
posición inicial de los formularios cuando la aplicación se este ejecutando.
7.mc Ga ve a a explorador de formlarios (Forms Ñxplorer Windows), en esta se muestra el
formulario activo con el cual se esta trabajando en la aplicación.
c
c
Ñxisten otros elementos tales como: Ga ve a a edior de códios (Code Ñditor) y la ve a a
c
deprador (Debugger Windows) para ver valores en variables en tiempo de ejecución. Todo este
c
conjunto de herramientas y de ventanas es lo que se llama Ñntorno Integrado de Desarrollo o IDÑ
(Integrated
c Development Ñnvironment).
c
- 2À3À1
c Ga barra de me s
c
c
c
c Figura 2.2. La barra de menús de Visual Basic 6.0.
cc
Lac barra de menús de Visual Basic 6.0 resulta muy similar a la de cualquier otra aplicación de
Windows,
c tal y como se puede apreciar en la r  c"". Algunos de los menús de esta barra tienen
muy poca novedades, es decir, algunos incluyen las opciones típicas de los menús de cualquier
c
aplicación de Windows.
c
Ñl c menú File tiene pocas novedades. Lo más importante es la distinción entrec  . Un
c
  reúne y organiza todos los ficheros que componen el programa o aplicación. Ñstos
ficheros
c pueden ser P  cP c c cetc.   c  c permite tener más
de un proyecto abierto simultáneamente, lo cual puede ser útil en ocasiones. Con el comando Add
c
Projec« se añade un nuevo proyecto en la ventana Projec Ma aer. Con los comandos pe
c
Projec« o ew Projec se abre o se crea un nuevo proyecto, pero cerrando el o los  
que c estuvieran abiertos previamente. Ñn este menú está el comando Make ProjecameÀexe«,
que c permite crear ejecutables de los  .
c
c
Tampoco el menú Ñdi aporta cambios importantes sobre lo que es lo habitual. Por el contrario el
menúc View, generalmente de poca utilizada, es bastante propio de   c  c. Ñste permite
hacer aparecer en pantalla las distintas ventanas del entorno de desarrollo, así como acceder a un
c
P   o al código relacionado con un  c(que también aparece al hacer doble clic sobre él),
c
y manejarc  y   P 
c
Ñl c menú Proyec permite añadir distintos tipos de elementos a un proyecto. Co Projec
Properies«
c se puede elegir el tipo de proyecto y determinar el formulario con el que se arrancará
la aplicación (' c1 ). Con el comando Compo e s se pueden añadir nuevosc   a
c
la   cc   (Toolbox) que aparece a la izquierda de la pantalla.
c
c
Ñn menú Tools se encuentran los comandos para arrancar el Me  Ñdior y para establecer
c
opciones del programa. Ñn Tools/pio s« se encuentran una serie de opciones que permiten
configurar el Ñë3 de Visal Basic 6À0. Ñn páginas siguientes veremos con más detalles los
elementos que componen la ventana pio s del Ñë3 de Visal Basic 6À0.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0


c
Capílo 2
c c
Porc último, la Ayda (Help) (siempre imprescindible y en el cado de Visal Basic 6À0
particularmente muy bien hecha) que se encuentra en el menú Help, se basa fundamentalmente en
c
una clasificación temática ordenada de la información disponible (Co e s), en una clasificación
c
alfabética de la información (ë dex) y en la búsqueda de información sobre algún tema por el
c
nombre (earch)À
c
c Ga barra de herramie as esá dar
- 2À3À2
c
c c
c Figura 2.3. La barra de herramientas estándar de Visual Basic 6.0.c
c
La Barra de Herramie as Ñsá dar aparece debajo de la barra de menús. Ñsta permite acceder a
lasc opciones más importantes de los menús de   c   . Ñn   c   c  existen cuatro
c
barras de herramientas que son: 0c  c rP  c yc  , por defecto sólo aparece la
barra
c de herramie as esá dar. Haciendo clic con el botón derecho del mouse sobre cualquier
parte
c de la   cc P  , aparece un menú contextual con el que se puede hacer aparecer
y ocultar cualquiera de las barras. Ñsta barra posee algunos elementos típicos de Windows como:
c
c  c   c  c  c  c  c  c c   aunque también posee
c
elementos que son exclusivos del Ñë3 de   c  .
c
c barra posee dos elementos que son propios del Ñë3 de Visual Basic. Ñl primer elemento
Ñsta
marcado
c en rojo, representa el  c c   de los  c en la aplicación. Cuando el
programador mueve un  sobre el P   en modo de diseño podrá observar que los
c
valores del indicador cambian. Ñl primer valor, indica la distancia entre el borde  c(Left) del
c
contenedor y el borde interno izquierdo del  cy,c el segundo valor, indica la distancia entre la
c superior del contenedor y el borde interno  c(Top) del  .
parte
c
Ñl csegundo elemento marcado en rojo, representa el  c c  P !c de los controles en la
aplicación.cÑl primer valor indica la Alra (Heih) de un control seleccionado en la aplicación y, el
c
segundo valor, indica la A chra (Widh) del control. Ñstos valores se representan en una unidad
dec medida llamada Twips. Un   es una unidad independiente de la pantalla utilizada para
c
asegurar que la colocación y la proporción de los elementos de la pantalla de la aplicación son los
mismos
c en todos los sistemas de pantallas. Un   es una unidad de medida de la pantalla igual a
1/20
c de un punto de impresora. Ñxisten aproximadamente 1,440   en una pulgada lógica y 567
  en un centímetro.
c
c
- 2À3À3 Ga caja de herramie as (Toolbox)
c
c La r  c "& muestra la  c c  P  c (Toolbox), que incluye los
c  c con los que se puede diseñar la pantalla de la aplicación. Ñstos
c  c son por ejemplo, botones de comando, etiquetas, cajas de texto,
c imágenes, etc. Si usted no ve la caja de herramientas, entonces, haga clic en
c el menú Ô *ÿÔ % y seleccione, la opción (ÿ&    %
c Para introducir un  cen un P  csimplemente hay que hacer clic con
c el botón izquierdo del Pc sobre el  c deseado y arrastrarlo hacia el
c formulario, o bien, haciendo doble clic sobre el  c de la  c c
c  P  .c
c
Ñl número de  c que pueden aparecer en esta ventana varían con la
c configuración del sistema, pero usted puede agregar nuevos componente a la
c caja de controles. Para agregar nuevos componentes se utiliza el comando
c Compo e s«del menú Projec. Otra forma de activar la ventana
Compo e es, es haciendo un clic derecho sobre cualquier parte de la  c
Figura 2.4. Toolbox. c P  , y seleccionar la opción Compo e s del menú contextual.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0


c

Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0


c
Capílo 2
c c
- 2À3À4
c Gos formlarios (Forms)
c
Los P  cson las zonas de la pantalla sobre las que se diseña el programa y sobre los que se
c
sitúan los   o  P   del ToolBox. Al ejecutar el programa, el rP   se
c
convertirá en la ventana principal de la aplicación, donde aparecerán los botones, las cajas de
c los gráficos, etc. Ñn   c   c  existen dos tipos de formularios que son: P  c
texto,

c   P  ccP   c  cc Pc0/. Ñn este apartado solo tratamos con
los P  c . La r  c"# muestra P  ctípicocde   c  c.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c Figura 2.5. Formulario de Visual Basic 6.0.
Ñl cconjunto de puntos que c aparecen sobre el formulario se llama P o   (rid) que permite
c
alinear los   manualmente de una forma precisa, evitando tener que introducir coordenadas
c
continuamente. Ñsta P c (grid) sólo será visible en el proceso de diseño del programa; al
ejecutarlo
c la P automáticamente desaparece.
c
Un P   de   c  posee todas las características de una ventana de Windows. Si usted
c instalado Windows XP o algún Skin que modifique la apariencia de las ventanas de Windows,
tiene
c también esos cambios en loscP   de   c  . Puede ver que el P   que se
verá
c
muestra en la r  c"# hereda las características de Windows XP.
c
Ñnc Pcc ! usted puede modificar el tamaño de las ventanas especificando sus respectivas
c
propiedades de altura y anchura. También puede modificarlo con unas pequeñas asas que
aparecen
c de forma cuadrada , cuando el P   tiene el enfoque.
c
- 2À3À5
c Ñl explorador de proyecos (Projec Ñxplorer)
c
Ñl 
  cc  visualiza lo distintos P   y
c P  que componen un proyecto. ÑstoscccP  están
c representados por un icono que lo diferencian de los demás
c P . Para visualizar uno de estos P  o P  
c solo debe hacer doble click en el icono que lo representa, o
c bien, hacer click en el botón View bjec c1c 
que se encuentra en la parte superior del explorador de
c proyectos. También puede ver el código fuente de un P 
c seleccionado, haciendo click en el botón View Code c
c (  del 
  c c   Si usted no ve el

  c c  , entonces, pulse la combinación de
Figura 2.6. Ñxplorador de proyectos.
teclas Crl+R.
c c
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0


c
Capílo 2
c c
- 2À3À6
c Ga ve a a de propiedades (Properies Wi dows)
c
Ñn la ventana de propiedades se muestran todas las propiedades
c de un  cccP cseleccionado en la aplicación. Dediante
c esta ventana es posible cambiar los valores de las    de
c cada uno de los  , indicando así, sus    y
c   antes de ejecutar la aplicación.
c
A medida que se van seleccionando los   en la aplicación,
c se puede apreciar, que las    que antes mostraba un  c
c c  desaparecen y se muestran las    del  c
c que ha sido seleccionado actualmente. La cantidad de   
c que aparecen en la   c c    depende de las
   propias de ese  .
c
c Ñn la parte superior de esta ventana se puede apreciar  c  c
c P   , que permite seleccionar cada uno de los  cque
c se encuentran en la aplicación. También posee dos solapas, una
c de ellas permite ordenar alfabéticamente las   cde los
(  y la otra permite organizarla por categoría. Ñn la parte
c
inferior se encuentra un recuadro que describe la función de una
c propiedad seleccionada.
c
c Ñn caso de no ver esta ventana en el Ñë3 de   c   pulse
la tecla ÈF4], o bien, haga clic en #   * del menú
c Ô *ÿÔ %.
c c
c 2.7. Ventana de propiedades.c
Figura
c
c Ga ve a a de esqema de formlarios (Form Gayo Wi dow)
- 2À3À7
c
c Ñsta ventana permite observar y alinear en la pantalla cada uno de
c los P   de una aplicación, es decir, permite indicar la
c posición donde debe de aparecer cada uno de los P  
cuando la aplicación este corriendo o se este ejecutando.
c
c Para indicar la posición de un P   este debe seleccionarse
c manteniendo pulsado el botón izquierdo del mouse y ubicarlo en la
c posición deseada de la pantalla que aparece en c   c c
c    c c P  c También puede indicar la posición
inicial del formulario de la siguiente manera: Desde la   cc
c 2.8. Form Layout Window.c P ccP   haga un clic derecho sobre el formulario al
Figura
c quiere establecer una posición inicial y, a continuación, ubique el puntero del mouse en la
cual
c
opción arp Posició (Posició ë icial). Haga clic sobre una de las posiciones que aparecen
enc el submenú contextual.
c
c
c c
c c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0


c
Capílo 2
c c
- 2À3À8
c Ga ve a a explorador de formlario (Form Ñxplorer Wi dow)
c
, c  c
  ccP   (Form Ñxplorer Windows) muestra el P  ccon el cual se
c trabajando en la aplicación. Ñsta ventana aparece por defecto cada vez que se carga una
esta
c
aplicación y es la única ventana que permite al usuario interactuar con loscP   y  
quec se encuentran en la aplicación. La siguiente figura muestra c   c 
  c 
P
c  a
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c Figura 2.9. La ventana explorador de formularios.c
c
Ñnc la parte superior de la   c
  ccP   se especifica el nombre del proyecto
c
seguido del nombre del P   activo que en este caso es Project1 ± Form1 (Form). Dentro de
esta
c ventana se puede apreciar el P   activo con el cual se esta trabajando en la aplicación.
c
2À4c Ga ayda de M3 Gibrary
c c
3  ) 3  #   *, es la referencia esencial para programadores que utilizan
c
las herramientas de desarrollo de Dicrosoft o tienen como objetivo cualquier plataforma de Internet
c
o Windows. '0×c ,   contiene más de 1,1 GB de información de programación técnica, que
c
incluye código de ejemplo, Developer Knowledge Base, la documentación   c ' , la
c
documentación de SDK, artículos técnicos, anotaciones de seminarios y conferencias, y
especificaciones
c técnicas.
c
Ñsta herramienta es muy importante en el momento que se esta programando en cualquier
c
plataforma de   c' , debido a que es posible obtener cualquier tipo de información, ya sea
dec un comando, de algún mensaje de error o de un tema de interés en especifico. '0×c ,  
proporciona
c toda la ayuda necesaria referente a cada uno de los productos de   c'  '0×c
, 
c  tiene la característica de permitir seleccionar información de un producto en específico,
independientemente de los demás productos de   c ' c A continuación se muestra la
c
ventana de ayuda de '0×c,  ac

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0


c
Capílo 2
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c Figura 2.10. La ventana de ayuda de DSDN Library.c
c c
- 2À4À1
c ë salació de M3 Gibrary
c
Para instalar el '0×c ,   inserte el CD en su unidad de CDmROD. Durante el programa de
c
instalación se le pedirá que elija entre las opciones de instalación Personalizada, Completa y
c
Típica. La opción de configuración Típica permite ejecutar '0×c,   desde el CD. Ñl programa
dec instalación copiará el conjunto mínimo de archivos al disco duro local. Ñstos archivos incluyen
losc archivos de sistema del visor DSDN, los archivos del índice de contenido y los archivos de
Ayuda
c utilizados por los productos de desarrollo de   c' 
c
La instalación personalizada permite especificar la instalación local de un subconjunto de '0×c
c
,   Se copiarán al disco duro local los archivos que seleccione y los archivos mencionados en
la cdescripción de la Instalación típica. Todavía seguirá viendo la tabla de contenido de toda la
c
biblioteca. Si selecciona un contenido que no se instaló localmente, se le pedirá que inserte el CD
dec '0×c,  
c
Lac instalación completa copia todos los archivos a su disco duro local. Ñste tipo de instalación tiene
la ventaja de no solicitar que se inserte el CD de '0×c ,   para buscar algún tipo de
c
información, debido a que todos los archivos se copian en su disco duro local.
c
c Compre der el visor de M3 Gibrary
- 2À4À2
c
Ñsta versión de '0×c ,  c se genera mediante el sistema de Ayuda HTDL de Dicrosoft. Los
archivos de Ayuda HTDL se muestran en una ventana semejante a un explorador, no en la versión
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0


c
Capílo 2
c c
completa
c de Internet Ñxplorer con todas sus barras de herramientas, listas de favoritos e iconos
visibles para el usuario final, sino en una ventana de Ayuda de tres paneles. Ñl panel superior
c
contiene la barra de herramientas, el panel izquierdo contiene los métodos de exploración y el panel
c
derecho muestra el tema, con toda la funcionalidad del explorador intacta. Todo lo que se puede
c
mostrar en Internet Ñxplorer también se puede mostrar en la Ayuda HTDL. Ñl panel de exploración
c
contiene las fichas Co e ido, Í dice, Bsqeda y Favorios como pudimos observar en la r  c
")cde
c la pagina anterior. Si hace clic en los temas en la tabla de contenido, el Índice o la lista de
Favoritos, puede explorar cualquier información de '0×c ,   Ñn la ficha Bsqeda puede
c
encontrar cada aparición de una palabra o frase contenida en cualquier tema.
c
c eleccio ar la docme ació adecada
- 2À4À3
c
c
Anteriormente, se comento que una de las características importantes de la ayuda de '0×c
, c  es que permite seleccionar información de un producto en específico de   c'  Para
seleccionar un tipo de documentación solo debe hacer clic en la caja bco j o Acivo .  c
c
'cde la parte superior del visor '0×c,  , como se muestra en la siguiente figura:
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c Figura 2.11. Selección del tipo de documentación en la ventana de ayuda de DSDN Library.c
cc
Ñnc la figura anterior se muestra seleccionada la 0 P cc  c  . Al seleccionar este
tipo de documentación usted solo podrá obtener información acerca de   c    pero puede
c
cambiar el tipo de documentación cuantas veces usted desee, o bien, puede seleccionar la opción
c c c    para obtener información de todos los productos, en ves de un producto en
c
especifico.
c
Ñsc recomendable que usted configure el tipo de documentación de acuerdo con el producto que
usted este trabajando, por ejemplo, si esta trabajando con   c   , seleccione la
c
0 P cc  c  cde esta manera obtendrá resultados más explicito.
c
c Bscar i formació e el visor de M3 Gibrary
- 2À4À4
c
Hay c varios métodos para encontrar la información que necesita y muchas maneras de combinar
métodos
c para que la búsqueda sea rápida y eficiente. Los métodos de que dispone el visor de
'0×c ,   son: Tabla de contenido, Índice de palabras clave, Búsqueda de texto completo y
Favoritos.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0


c
Capílo 2
c c
- 2À4À4À1
c Ñxplorar media e la Tabla de co e ido
c
Ñste tipo de búsqueda permite obtener información examinando cada uno de los temas por titulo.
Ñsc muy útil cuando se quiere obtener información completa y detallada sobre algún tema en
c
específico. Los temas disponibles se muestran en una lista expandible con sus ramificaciones
c se muestra en la siguiente figura:
como
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c Figura 2.12. Representación grafica de la tabla de contenido en la ayuda de DSDN Library.c
c
- 2À4À4À2 Ñ co rar i formació co el í dice
c
Lac ficha ë dex (Í dice) contiene una lista de palabras claves relacionadas con los muchos de los
c de DSDN Library. Ñste índice es similar a la de un libro
temas
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

Figura 2.13. Ñxplorar temas mediante la ficha Índice.c


c ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0


c

Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0


c
Capílo 2
c c
Para
c bscar  ema media e el í dice
c
1. Ñn el panel de exploración, haga clic en la ficha ë dex (Í dice) y después, escriba o seleccione
c
una palabra clave acerca de la que desee encontrar información.
c
2. cCuando haya seleccionado una palabra clave, haga clic en 3isplay (Mosrar).
c
3. cÑn la lista de temas encontrados, seleccione el tema que desee y, después, haga clic en 3isplay
c
(Mosrar).
c
- 2À4À4À3
c Ñ co rar i formació co la bsqeda de exo compleo
c
Una búsqueda básica de temas se compone de la palabra o frase que desea encontrar. Puede
c
utilizar expresiones comodín, expresiones anidadas, operadores booleanos, coincidencias de
c
palabras similares, la lista de resultados anterior o títulos de temas para afinar la búsqueda.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c Figura 2.14. Búsqueda de información mediante texto completo.c
c
c
c realizar  a bsqeda de exo compleo haa lo siie e:
Para
c
1. cÑn el panel de exploración, haga clic en la ficha earch (Bsqeda) y, después, escriba la
palabra o frase que desee encontrar. Utilice el botón de flecha a la derecha para agregar
c
operadores booleanos a la búsqueda.
c
2. cHaga clic en Gis Topics (Mosrar emas). La búsqueda devolverá las primeras 500
c
coincidencias encontradas.
c
3. Resalte el tema que desee y, después, haga clic en 3isplay (Mosrar). (Opcionalmente, puede
mostrar cualquiera si hace doble clic en él.)
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0


c
Capílo 2
c c
- 2À4À4À4
c Crear  a lisa de emas favorios
c
Para
c crear  a lisa de emas favorios realice los siie es pasos:
c
1. Ñn el panel de exploración, haga clic en la ficha Co e s (Co e ido), ë dex (Í dice) o earch
c
(Bsqeda), y abra un tema que desee convertir en tema favorito.
c
2. cHaga clic en la ficha Favories (Favorios). Ñl tema que abrió en el paso 1 se mostrará en el
c Topics (Tema acal).
área
c
3. cHaga clic en Add (Arear) para agregar el tema a su lista de favoritos.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c Figura 2.15. Agregar temas a la lista de favoritos.c

c
Para volver a  ema favorio:
c
c à Resalte el tema y, después, haga clic en 3isplay (Mosrar), o bien, haga doble clic en el
c nombre del tema.
c
c qiar  ema favorio:
Para
c
à Seleccione el tema y, después, haga clic en Remove (Qiar).

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0


c
Capílo 2
c c
2À5c Ñl Ñdior de Códio (Code Ñdior)
c c
Ñl Ñdior de Códio de   c  c es la ventana en la cual se escriben las sentencias de los
c
  P  y P  de la aplicación. Ñsta ventana se activa de formas diferentes, una de las
c
principales es haciendo doble clic sobre un P   o  cualquiera de sus   También
c
existen otras formas que son muy poco habituales. Una de ellas es seleccionar la opción Code
(Códio),
c del menú View (Ver), o bien, haciendo clic en el botón View Code (Ver Códio), del
Ñxplorador de Proyecos. La siguiente figura muestra el aspecto físico del  cc( a
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c Figura 2.16. Ventana del Ñditor de Código.c
cc
- 2À5À1
c Caracerísicas del Ñdior de Códio (Code Ñdior)
c
Ñsta ventana posee algunos elementos y características que son importantes conocer. Ñl primer
c
recuadro marcado con rojo representa una lista desplegable que posee todos los   que se
c
encuentran en el P  . Puede ver el código de cualquier  del P   haciendo clic
c el Pc  c  cuando la lista ha sido desplegada. Ñl segundo recuadro representa
sobre
otra
c lista desplegable que posee los  de un  seleccionado. Puede cambiar de evento
cada
c vez que sea necesario haciendo clic sobre el Pc  c c cuando el  c este
seleccionado. Un  c esta seleccionado en el  c c (  cuando el cursor se encuentra
c
parpadeando dentro del   P . Ñl tercer recuadro de forma vertical representa el P c
c  del  cc( . Ñn este se marcan los  * ccc    en las líneas

dec códigos de Visual Basic.
c
Unac de las características más destacadas en el  cc(  es la utilización de colores para
hacer diferencia entre las líneas de código. Ñl código escrito por el programador aparece en negro,
lasc palabras claves o sentencias aparecen en azl, los comentarios en verde, los errores en rojo,
etc. Ñsta característica juega un papel importante en el  cc( , ya que permite detectar y
corregir problemas con mayor facilidad.
c ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0


c
Capílo 2
c c
Ñnc la parte superior de la r  c ") encontramos la declaración pio Ñxplici que obliga al
programador a declarar todas las variables que valla a utilizar en la aplicación. Si utiliza una
c
variable que no ha sido declarada, entonces, el programa abortará con un mensaje de error en
c
Pcc  .
c
c
También encontramos dos   P c uno para el Ñve o Click de un botón de comando y
otro
c para el Ñve o Goad de un P  . Dentro de estos dos   P  se ha utilizado
algunosc P   que aparecen de color verde para indicar que en esta zona se escribe el
c
código del   P . Losc P   son parte del código fuente, pero no tienen ningún valor
al cmomento de compilación, es decir, los errores ortográficos y los caracteres utilizados después de
la ccomilla simple (µ) o de la palabra clave Rem no tienen ninguna validez. Los comentarios se
c
utilizan únicamente para incluir notas aclaratorias en un programa.
c
Ñnc esta ventana aparecen dos barras de desplazamiento, una vertical y otra horizontal. Ñstas
barras permiten visualizar el código escrito por el programador cuando este sobrepasa el límite del
c
tamaño de la ventana del  c c ( . Ñstas barras de desplazamiento son similares a las
c del explorador de Internet.
barras
c
c Perso alizar el Ñdior de Códio (Code Ñdior)
- 2À5À2
c
  c   c  posee una herramienta que permite al usuario personalizar el  c c ( .
c
Puede cambiar totalmente la apariencia que tendrá el código de   c   . También esta
c
herramienta permite configurar gran parte del Ñë3 de   c  de una forma muy sencilla.
c
c
Puede personalizar el  cc(  realizando los siguientes pasos:
c
c 1. Haga clic en el menú Tools (Herramie as).
2. Seleccione el comando pio s« (pcio es«).
c 3. Seleccione la ficha Ñdior Forma (Formao del edior).
c 4. Aparecerá la siguiente configuración:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Figura 2.17. Ventana de opciones.c
c
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0


c
Capílo 2
c c
Ñnc esta ventana puede observar los siguientes elementos:
c
1À Colores de códio (Code Colors)
c
c
Determina los colores de primer plano y de fondo utilizados para el tipo de texto seleccionado en el
c
cuadro de lista.
c
c à Gisa de exo: enumera los elementos de texto que tienen colores que se pueden
c personalizar.
c à Forero d (Primer pla o): especifica el color de primer plano para el texto seleccionado
c en Gisa de color de exo.
c
c à Backro d (Fo do): especifica el color de fondo para el texto seleccionado en la Gisa
c de color de exo.
c
c à ë dicador (ë dicaor): especifica el color del indicador de margen.
c
2À Fe e (Fo )
c
c
Ñspecifica la fuente utilizada para todo el código.
c
3À cTamaño
c
Ñspecifica
c el tamaño de la fuente utilizada para todo el código.
c
4À Barra i dicadora al mare
c
c que la barra indicadora de margen sea visible o no.
Hace
c
5À cÑjemplo
c
c
Duestra un texto de ejemplo con la fuente, tamaño y colores seleccionados.
c
2À6c Ñl 3eprador (3eber)
c c
Ñl 3eprador es una herramienta utiliza para la corrección y detección de errores en la aplicación.
c
Hoy en día la mayoría de los entornos de programación poseen potentes herramientas que facilitan
la cdepuración de los programas realizados. La característica principal del 0  es que permite
c
ejecutar parcialmente el programa, deteniendo la ejecución en una línea de código determinada.
También
c permite ver valores de    c c   en tiempo de ejecución. De esta manera es
posible
c detectar la fuente principal de los errores en la aplicación.
c
  c  c posee una barra de herramienta destinada a la depuración de los programas. Ñsta
c se muestra en la siguiente figura:
barra
c
c
c
c
c Figura 2.18. Barra de herramienta de depuración.c

c c
Ñsta barra posee 12 botones cada uno de los cuales tiene una función en específico en el proceso
de depuración. Los primeros tres botones que aparecen marcados en rojo, se utilizan para ejecutar,
detener y finalizar una aplicación. Ñl botón ar (Ñjecar) , se utiliza poner en ejecución una
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0


c
Capílo 2
c c
aplicación,
c es decir, pasar del Pc  ! al Pcc  . Ñl botón Pasar (Break) ,
se utiliza para detener temporalmente la ejecución de un programa. Ñl botón Fi alizar (Ñ d) , se
c
utiliza para cancelar o finalizar la ejecución un programa. Los demás botones se detallan en las
c
próximas secciones.
c
c 3eprar iliza do p os de parada (Breakpoi s)À
- 2À6À1
c
Para ejecutar parcialmente un programa se pueden utilizar varias formas. Una de ellas consiste en
c
incluir Breakpoi s en determinadas líneas de código. Los  *  se indican con un punto
c
grueso delante de la línea de código y un cambio de color, tal como se ve en la r  c ")2. Ñl
c
colocar un  * cen una línea de código implica que la ejecución del programa se detendrá al
c a esa línea. Para insertar  *  debe posicionar el cursor en la línea de código que
llegar
desea
c colocar el Breakpoint y, a continuación, ejecutar una de estas acciones:
c
c
c Haga click en el botón Tole Breakpoi 
1. , de la barra de herramientas de depuración.
c
c Seleccione el comando Tole Breakpoi  del menú 3eb (3eprar).
2.
c Utilice el método abreviado pulsando la tecla ÈF9].
3.
c
c Haga clic sobre el margen izquierdo del  cc( .
4.
c
Cualquiera
c de estos pasos enumerados anteriormente, se utilizan para insertar y quitarc * 
en una línea de código. Puede utilizar el más ergonómico que es pulsando la tecla ÈF9].
c
c 3eprar paso a paso por i srccio es (ep ë o)
- 2À6À2
c
c método ejecuta el código instrucción a instrucción. Ñjecuta la instrucción en el punto de
Ñste
ejecución
c actual. Si la instrucción llama a un   P , la siguiente instrucción que se muestra
es la primera instrucción del   P .
c
c depurar utilizando este método realice una de las siguientes acciones:
Para
c c
1.m Haga clic en el botón ep ë o , de c  cc P  cc .
c
2.m Seleccione el comando ep ë o del menú 3eb (3eprar).
3.mc Utilice el método abreviado pulsando la tecla ÈF8].
c
c 3eprar paso a paso por procedimie os (ep ver)
- 2À6À3
c
Ñsc similar a c c  c c  . La diferencia en el uso es evidente cuando la
instrucción actual contiene una llamada a un procedimiento. c c  c c   P 
c
ejecuta el procedimiento como una unidad y después pasa a la siguiente instrucción del
c
procedimiento actual. Por tanto, la siguiente instrucción mostrada es la próxima instrucción del
c
procedimiento actual, independientemente de si la instrucción actual es una llamada a otro
c
procedimiento. Sólo está disponible en modo de interrupción.
c
Para
c depurar utilizando este método realice una de las siguientes acciones:
c
1.mc Haga clic en el botón ep ver c , de la barra de herramientas de depuración.
2.mc Seleccione el comando ep ver del menú 3eb (3eprar).
3.m Utilice el método abreviado pulsando Mays-ÈF8].
c
c 3eprar paso a paso para salir (ep )
- 2À6À4

Ñjecuta las demás líneas de una función en la que reside el punto de ejecución actual. La siguiente
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0


c
Capílo 2
c c
instrucción
c mostrada es la instrucción que sigue a la llamada ac  P . Todo el código se
ejecuta entre los puntos de ejecución actual y final. Sólo está disponible en modo de interrupción.
c
c depurar utilizando este método realice una de las siguientes acciones:
Para
c
1.mc Haga clic en el botón ep  , de c  cc P  cc .
2.mc Seleccione el comando ep  del menú 3eb (3eprar).
3.m Utilice el método abreviado pulsando Crl-Mays-ÈF8].
c
c Ve a a de Gocales (Gocals Wi dow)
- 2À6À5
c
Lac Ve a a de Gocales presenta automáticamente todas las variables de la pila actual y sus
c
valores cuando la aplicación esta corriendo en Pcc co pasa a Pcc  .
Lac   cc,  se actualiza automáticamente cada vez que cambia de Pcc  ca
Pcc
c   y cada vez que cambia el contexto de pila.
c
A continuación, se muestra un procedimiento codificado para sumar dos valores contenidos en dos
c
variables, donde cada variable tiene un valor inicial. También se ha insertado un  * c para
c
interrumpir el   P c y así poder observar los valores de cada variable en la   c c
, c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c Figura 2.19. Ventana Locales.c
c c
Ñn la r  c ")3 puede observar que en la parte superior de la ventana ,  existen tres
c
campos que son: Ñxpressio (Ñxpresió ), Vale (Valor) y Type (Tipo). Ñn el campo Ñxpresió
sec listan las variables declaradas en el   P , en el campo Valor se listan los valores
c
actuales de cada variable y, en el campo Tipo se muestra el tipo de datos que pueden almacenar
lasc variables.
c
También se puede observar que la variable ma obtiene el valor 25 como resultado del proceso
c = A + B. Donde A tiene asignado el valor 5 y B el valor 20.
ma
c
c activar la ventana ,  siga uno de estos pasos:
Para
1.m Haga clic en el botón Gocals Wi dow , de c  cc P  cc .

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0


c
Capílo 2
c c
2.mc Seleccione el comando Gocals Wi dow del menú View (Ver).
c
- 2À6À6 Ve a a ë mediao (ëmmediae Wi dow)
c
Lac Ve a a ë mediao muestra información resultante de las instrucciones de depuración del
c
código o de los comandos introducidos directamente en la ventana. Ñstá disponible en modo de
c
interrupción.
c
Lac   c/P  permite:
c
c à Probar código problemático o que se haya escrito recientemente.
c
à Consultar o cambiar el valor de una variable mientras se ejecuta una aplicación. Dientras la
c ejecución se detiene, asigne a las variables un nuevo valor igual que se haría en el código.
c
c à Consultar o cambiar el valor de una propiedad mientras se ejecuta una aplicación.
c
c à Llamar a   P  exactamente de la misma forma a como se haría en el código.
c
c à Ver los resultados de la depuración durante la ejecución del programa.
c
Para activar la   c/P  siga uno de estos pasos:
c
1.mc Haga clic en el botón ëmmediae Wi dow , de c  cc P  cc .
2.mc Seleccione el comando ëmmediae Wi dow del menú View (Ver).
3.mc Utilice el método abreviado pulsando Crl- .
c
- 2À6À7
c Ve a a ë specció (Wach Wi dow)
c
Lac Ve a a ë specció muestra las expresiones de inspección actuales. La Ve a a ë specció
aparece automáticamente si las 
 cc   se definen en el proyecto.
c
Si cel contexto de la expresión no está en alcance cuando se entra en el Pc c  , el
c actual no se muestra.
valor
c
c activar la   c/ csiga uno de estos pasos:
Para
c
1.mc Haga clic en el botón Wach Wi dow , de c  cc P  cc .
2.m Seleccione el comando Wach Wi dow del menú View (Ver).
c
c ë specció rápida (Qick Wach)
- 2À6À8
c
c
Duestra el cuadro de diálogo ë specció rápida con el valor actual de la expresión seleccionada.
Sólo
c disponible en Pc c  . Utilice este comando para comprobar el valor actual de
una variable, propiedad, u otra expresión para la que no haya definido una 
 cc  .
c
Seleccione la expresión de la ventana Código o de la ventana Inmediato y después elija el comando
c
ë specció rápida. Para agregar una 
 cc   basada en la expresión en el cuadro
dec diálogo ë specció rápida, elija el botón Arear.
c
c activar el cuadro de dialogoc/ c  ccsiga uno de estos pasos:
Para
c
1.m Haga clic en el botón Qick Wach , de c  cc P  cc .
2.m Seleccione el comando Qick Wach del menú 3eb (3eprar).

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ñl Ñë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0


c
Capílo 2
c c
3.mc Utilice el método abreviado pulsando Mays-F9.
c
- 2À6À9 Pila de llamadas (Call ack)
c
Ñl ccuadro de diálogo Pila de llamadas, enumera los procedimientos que se llaman en la aplicación.
Soloc los procedimientos que han iniciado pero no terminado son los que se muestran en el cuadro
dec dialogo Pila de llamadas. Ñstá opción esta disponible únicamente en Pcc  .
c
Parac activar el cuadro de dialogoc cc P  ccsiga uno de estos pasos:
c
1.m Haga clic en el botón Call ack , de c  cc P  cc .
2.mc Seleccione el comando Call ack del menú View (Ver).
3.mc Utilice el método abreviado pulsando Crl-G.
c
2À7c PRÑ UTA PARA CTÑTAR
c c
ëÀ- cCo ese:
c
c 1. ¿Qué es Visual Basic?
c 2. ¿Qué es un Ñntorno Integrado de Desarrollo?
c 3. ¿Cuál es el lenguaje de programación que da evolución a Visual Basic?
4. Diga cuantas versiones de Visual Basic ha lanzado la Dicrosoft.
c
ëëÀ-c Hable breveme e de la hisoria de Visal BasicÀ
c
c
ëëëÀ-c Habla del Ñë3 de Visal Basic 6À0 y me cio e cada  o de ss eleme osÀ
c
c
ëVÀ-c Co ese:
c
c 1. ¿Cuál es la diferencia que existe entre la barra de menús del ÑID de Visual Basic 6.0 y la
barra de menús estándar?
c 2. Hable de la barra de herramientas estándar.
c 3. ¿Qué son los formularios?
c 4. ¿Qué es la malla o retícula?
c 5. ¿Qué es del Ñxplorador de Proyectos?
c 6. ¿Qué es la Ventana de Propiedades?
7. ¿Para que se utiliza la ventana de esquema de formulario?
c 8. ¿Qué es la ventana de Ñxplorador de Formularios?
c 9. Hable de la ayuda de DSDN Library.
c 10. Diga los pasos para instalar la ayuda de DSDN Library.
c 11. Ñxplique porque es recomendable seleccionar la documentación adecuada.
c 12. Ñxplique las distintas formas de buscar información en la ventana de ayuda de DSDN
Library.
c 13. Diga los pasos para crear una lista de temas favoritos.
c 14. Hable del Ñditor de Código.
c 15. Dencione las características del Ñditor de Código.
c 16. ¿Qué es el Depurador?
c 17. Dencione los distintos modos de depuración.
18. Hable de la Ventana de Locales y la Ventana Inspección.
c 19. ¿Ñn que consiste la Inspección Rápida?
20. Hable del cuadro de dialogo Pila de llamadas.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c
CTÑë3
c
c c
3À1 Gos co roles más sales e Visal Basic 6À0À
c
c m 3.1.1 Los botones de comando (CommandButton).
m 3.1.1.1 Propiedades de los botones de comando.
c m 3.1.1.2 Uso de las propiedades en el Ñditor de Código.
c m 3.1.1.3 Ñventos sobre los botones de comando.
c m 3.1.1.4 Détodos de los botones de comando.
c m 3.1.1.5 Ñjercicios prácticos.
c m 3.2.1 Las etiquetas (Labels).
m 3.2.1.1 Propiedades de las etiquetas.
c m 3.2.1.2 Ñventos sobre las etiquetas.
c m 3.2.1.3 Ñjercicios propuestos.
c m 3.3.1 Las cajas de texto (TextBox).
c m 3.3.1.1 Propiedades de las cajas de texto.
c m 3.3.1.2 Ñventos sobre las cajas de texto.
m 3.3.1.3 Détodos de las cajas de texto.
c m 3.3.1.4 Ñjercicios prácticos.
c m 3.4.1 Los botones de opción (OptionButton).
c m 3.4.1.1 Propiedades de las botones de opción.
c m 3.4.1.2 Ñventos sobre los botones de opción.
c m 3.4.1.3 Détodos de los botones de opción.
m 3.4.1.4 Ñjercicios prácticos.
c m 3.5.1 La cajas de verificación (CheckBox).
c m 3.5.1.1 Propiedades de las cajas de verificación.
c m 3.5.1.2 Ñventos sobre las cajas de verificación.
c m 3.5.1.3 Détodos de las cajas de verificación.
c m 3.5.1.4 Ñjercicios prácticos.
m 3.6.1 La barras de desplazamiento (ScrollBars).
c m 3.6.1.1 Propiedades de las barras de desplazamiento.
c m 3.6.1.2 Ñventos sobre las barras de desplazamiento.
c m 3.6.1.3 Ñjercicios prácticos.
c m 3.7.1 Las cajas de lista (ListBox).
c m 3.7.1.1 Propiedades de las cajas de lista.
m 3.7.1.2 Ñventos sobre las cajas de lista.
c m 3.7.1.3 Détodos de las cajas de lista.
c m 3.7.1.4 Ñjercicios prácticos.
c m 3.7.1.5 Ñjercicios propuestos.
c m 3.8.1 Las cajas combinadas (ComboBox).
c m 3.8.1.1 Ñjercicios prácticos.
m 3.9.1 Ñl control tiempo (Timer).
c m 3.9.1.1 Propiedades del control tiempo.
c m 3.9.1.2 Ñjercicios prácticos.
c m 3.10.1 Controles relacionados con ficheros (FileList, DirList y DriveList).
c m 3.10.1.1 Conectar los controles de ficheros.
c m 3.10.1.2 Ñjercicios prácticos.
3À2c Ñl co rol de cadros de diáloo (Commo d3ialo)À
c m 3.2.1 Los cuadros de dialogo Abrir y Guardar (Open/Save).
c m 3.2.1.1 Ñjercicios prácticos.
c m 3.2.2 Ñl cuadro de diálogo Imprimir (Print).
c m 3.2.2.1 Ñjercicios prácticos.
m 3.2.3 Ñl cuadro de diálogo Fuente (Font).
c m 3.2.3.1 Ñjercicios prácticos.
m 3.2.4 Ñl cuadro de diálogo Color.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c m 3.2.4.1 Ñjercicios prácticos.
3À3 Arrelo e los co rolesÀ
c
3À4 Fira co los co roles más sales de Visal Basic 6À0À
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
3À1c Gos co roles más sales e Visal Basic 6À0
c c
Los   más usuales son aquellos que usamos con mayor frecuencia al momento de crear
unac aplicación. Ñstos  cson por ejemplo: cc P ccc c  cc
c

c  c  cc  P c  c  c P   ccc  c c
c c
c Gos boo es de coma do (Comma dBo )
- 3À1À1
c
Losc c c P  son aquellos botones típicos que vemos
c
frecuentemente en las aplicaciones de Windows, que realizan una operación en
c
especifico, por ejemplo, salir, imprimir, cancelar, etc.
c
Losc cc P  se utilizan principalmente para iniciar, interrumpir o terminar un proceso.
c controles pueden ser activados de múltiples formas como son: Haciendo clic sobre el,
Ñstos
presionando la tecla barra espaciadora o la tecla ÑNTRAR cuando este tiene el  o bien,
c
pulsando desde el teclado su respectivo c  .
c
c botones poseen una gran cantidad dec   c P c c  que definiremos a
Ñstos
c
continuación. Ñs importante recordar que todos los valores de las    de un 
seleccionado
c en la aplicación pueden ser observados y modificados desde la   c c
  .
c
c
- 3À1À1À1 Propiedades de los boo es de coma do
c
c de definir cada una de las    de los cc P , ejecute   c  c,
Antes
y, c a continuación, seleccione la opción a dard Ñ Ñ de la ventana ew Projec (evo
Proyeco), y haga clic en el botón pe (Abrir)À
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c Figura 3.1. Ventana de Nuevo Proyecto.
c
Si cya había iniciado   c   , entonces, haga clic en el menú File (Archivo) y seleccione la
opción ew Projec (evo Proyeco). Después de haber iniciado un nuevo proyecto, inserte un
boó de coma do (Comma d) en el P  , tal y como se ve en la siguiente figura:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció a los co roles más sales de Visal Basic 6À0


c
c Capílo 3
c c
Si cya había iniciado   c   , entonces, haga clic en el menú File (Archivo) y seleccione la
opción ew Projec (evo Proyeco). Después de haber iniciado un nuevo proyecto, inserte un
c
boó de coma do (Comma d) en el P  , tal y como se ve en la siguiente figura:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c Figura 3.2. Botón de comando.
c
c
TA: Recuerde que para insertar un  de la  c c  , solo debe mantener presionado el botón
c
izquierdo del mouse sobre elc  y luego arrastrarlo hasta el P  . También puede hacer doble clic sobre el
 , y este quedará ubicado en el centro del P  .
c
c
Ahora
c observe en la   c c    todas las    que posee un c c
Pc . Podrá observar    tales como:  
##       
#  . Como ha podido notar, un cc P  posee un gran número de   ,
c en este libro solo trabajaremos con las    más importantes de cada  .
pero
c
c
Propiedad 3escripció
c
ame
c Se utiliza para asignarle el nombre al  . Ñste nombre va a permitir identificar
el  de los demás   de la aplicación. Ñsta   c solo esta
c disponible en Pcc !.
c
c Los ombres de objeos (objec ame) se clasifican en dos tipos que son:
c Pc c   y Pc   c c  c   . Los Pc c
c   son aquellos que   c   les asigna cuando son incluidos como
nuevos objetos en una aplicación, es decir, cuando son añadidos por primera vez
c
a un proyecto o un formulario. Ñstos vienen acompañados por un entero único que
c representa el número de orden con el cual se han ido insertando objetos de un
c mismo tipo. Por ejemplo, un nuevo objeto Formlario (Form) será Form1, un
c objeto M3ëForm nuevo será DDIForm1 y el cuarto control TexBox que cree en
c un formulario será Text4. Por otro lado, los P   cc c   son
nombres especificados por el usuario y escritos cómodamente para diferenciarlos
c
de otros objetos de la aplicación.
c Ñjercicio:
c
Ü Verifique que el c c P  este seleccionado. Cuando el botón esta seleccionado
c
aparecen unos pequeños cuadros llamados asas, tal como se muestra en la r  c4". Ñstas asas
permiten
c reducir y aumentar el tamaño del botón.

Ü Busque la propiedad (ame) ( c  P c   c c c   c c   ). Cambie el
Pcc  Comma d1 y escriba cmdalir y, a continuación, presione la tecla ÈÑTÑR].
Ñste será ahora el nuevo nombre del cc P .
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Al casignar el nombre (ame) al cc P  usted no notará ningún cambio en el botón. Ñste
nombre
c será utilizado para identificar el cc P  de los demás   de la aplicación.
c
BackColor Cambia el color del c c P . Para que el botón tome el color
c seleccionado en la propiedad BackColor, usted debe establecer el valor
c ³1- raphical´ en la propiedadcyle del cc P .
c
c Ñjercicio:
c
ó Busque la propiedad yle del botón de comando y seleccione el valor ³1 - raphical´.
c
ó Seleccione la propiedad BackColor y luego haga clic en el botón   c  cccccc.
c
ó Seleccione la ficha Palee (Palea).
c
c ó Aparecerá la paleta de colores de Windows.
c ó Seleccione el color que quiere aplicar al cc P .
c ó Puede observar como el cc P  cambia de
c
color.
c
c
TA 1: Ñl cc P  solo cambiará de color si ha seleccionado
c el valor ³1 ± raphical´ en la propiedad yle.
c
c TA 2: Usted puede utilizar los colores predeterminados del sistema de
c Windows haciendo clic en la ficha ysem (isema).c
c
c CMÑTARë: Cuando usted ha seleccionado un color en la propiedad
BackColor un valor hexadecimal se escribe en la caja de esta propiedad.
c Ñste valor puede ser seleccionado y copiado como texto con el mouse
c para utilizarse desde código en el  cc( .
3.3. Activación de la propiedad BackColor.
c
Capio
c Ñstablece el texto que aparece escrito sobre el objeto, en este caso
sobre el cc P . Si utiliza el carácter (&) ampersa d delante
c de cualquier carácter del texto escrito en la propiedad (  ,
c entonces, ese carácter va a permitir acceder a la función del botón como
c si hubiese echo click sobre el, con solo presionar la tecla control (Crl)
c más el carácter que tiene colocado delante el P .
c
c CMÑTARë: Cuando crea un nuevo objeto, su título predeterminado es el valor
c predeterminado de la propiedad ame. Ñste título predeterminado incluye el
nombre de objeto y un entero, como Comando1 o Formulario1. Para obtener una
c etiqueta más descriptiva, modifique la propiedad Capio .
c
c Ñjercicio:
c
ó Seleccione la propiedad Capio del cc P  y escriba &alir. Ñl P  utilizado
c
delante de la letra ³S´, indica el c   al botón. Podrá observar que el texto escrito en el
botón
c aparece con un  c% debajo de la letra ³´.
c
c
c
c
c
CMÑTARë: Si no encuentra el carácter (&) ampersa d en su teclado, usted puede obtenerlo mediante los valores
Aë, pulsando AGT + 38.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Ñ cabled Habilita o deshabilita el objeto, es decir, indica si el objeto responderá a los
c  del usuario. Ñsta propiedad puede tomar los valores lógicos: Tre y
False. Si el valor de esta propiedad esta en False, entonces, el objeto no
c responderá a ninguna acción que realice el usuario sobre el. Ñl valor por defecto
c de esta propiedad es Tre.
c
c CMÑTARë: La propiedad Ñ abled permite activar o desactivar formularios y controles en
 Pcc  . Por ejemplo, puede desactivar objetos que no se aplican al estado actual de
c la aplicación. También puede desactivar un control empleado fundamentalmente con fines de
c presentación, como un cuadro de texto que proporciona información de sólo lectura.
c Ñjercicio:
c
ó Seleccione la propiedad Ñ abled del cc P .
c
ó Haga
c clic en el botón flecha abajo , y seleccione el valor lógico False.
c
ó Usted no notará ningún cambio en el cc P  hasta que corra la aplicación. Para correr
la caplicación pulse la tecla ÈF5].
c
ó La apariencia del cc P  será la siguiente:
c
c
c
c
ó Haga clic sobre el c c P  y notará que el botón no responde a la acción que usted
c realizando sobre el.
esta
c
ó Haga
c clic sobre el botón Ñ d (Fi alizar) , de la   cc P  c  para finalizar la
aplicación, o bien, haga clic en el botón cerrar , de la ventana de la aplicación.
c
c
ó Seleccione la propiedad Ñ abled y establezca el valor Tre, para habilitar el cc P .
c
3isabledPicre Ñstablece una imagen que aparecerá en el c c P  cuando este
c deshabilitado, es decir, cuando la propiedad Ñ abled este establecida a False.
c Para que la imagen aparezca en el cc P  debe establecer el valor
c ³1 - raphical´ en la propiedad yle.
c c
c Ñjercicio:
c
ó Seleccione la propiedad Ñ abled del cc P  y seleccione el valor lógico False.
c
ó Seleccione la propiedad yle y seleccione el valor ³1- raphical´.
c
ó Seleccione la propiedad 3isabledPicre y haga clic en los tres puntos suspensivos .
c
c la ventana que aparece, busque la imagen ëm01Cap3Àjp. Ñsta imagen se encuentra en la
ó Ñn
carpeta ëmae es del disco que se distribuye con este libro.
c
c
ó Después de haber seleccionado la imagen, haga clic en el botón pe (Abrir).
c
ó Usted no notará ningún cambio hasta que corra la aplicación.
c
ó Pulse
c la tecla ÈF5] para correr la aplicación.
ó Ñlc cc P  aparecerá con una imagen como se muestra a continuación:
c
c
c
c
ó Finalice la aplicación, haciendo clic en el botón Cerrar de la ventana.
ó Seleccione la propiedad Ñ abled y establezca el valor Tre, para habilitar el cc P .

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
cTA: Para quitar la imagen establecida en la propiedad 3isabledPicre haga lo siguiente:
c
1) Seleccione la propiedad 3isabledPicre.
c 2) Haga clic en la caja blanca que dice (Bimap)À
c 3) Presione la tecla pr o 3elee.
c 4) Cuando el la caja blanca aparezca (o e), entonces, se habrá quitado la imagen.
Foc  Permite cambiar el tipo de fuente del texto que aparece en el objeto. Ñl tipo
c de fuente se refiere a las operaciones o efectos que se pueden efectuar
c sobre un texto, por ejemplo, tamaño de letra, negrita, cursiva, subrayado,
tachado, etc.
c
c Ñjercicio:
c
ó Seleccione la propiedad Fo  del cc P .
c
ó Haga
c clic en los tres puntos suspensivos .
c
ó Aparecerá la ventana típica de la fuente de Windows.
c
ó Ahora, cambie el tamaño de la letra a 14 y seleccione eria (Bold) en Ñsilo de fe e (Fo 
c
yle)À
c
ó Haga
c clic en el botón Acepar (K).
ó Ñlc cc P  tomará una apariencia como esta:
c
c
c
c
CMÑTARë: Ñsta propiedad no requiere que se establezca el valor ³1 ± raphical´ en la propiedad yle. Ñl tipo
de fuente se activa en cualquiera de los valores posibles de la propiedad yle.
c
c
c
Heih y Widh Permite cambiar la altura y anchura del objeto. Donde Heih representa la
c altura y Widh la anchura expresada en   (unidad de medida de la
pantalla).
c
c Ñjercicio:
c
ó Seleccione la propiedad Heih y escriba el valor 600 y, a continuación, pulse la tecla ÈÑTÑR].
c
ó Notará
c que la altura del cc P  ha cambiado.
c
ó Seleccione la propiedad Widh y escriba el valor 1500 y, a continuación, pulse la tecla ÈÑTÑR].
c
ó Notará que ahora la anchura del cc P  también ha cambiado.
c
ó Ñl cc P  tendrá una apariencia como esta:
c
c
c
c
c
TA: Los valores de las propiedades Heih y Widh cambian cada vez que usted modifica su tamaño por medio de
c asas del control.
las
c
c
CMÑTARë: Utilice estas propiedades cada vez que necesite asignar un tamaño en especifico a los controles de la
casas, debido,
aplicación. Ñn ocasiones se dificulta en gran manera aumentar o disminuir el tamaño de un control por medio de sus
a que existen tamaños en los controles que no es posible asignar por medio de las asas.
c
También utilice estas propiedades, cuando quiera tener botones del mismo tamaño en una aplicación. Para hacer esto,
solo debe especificar los mismos valores para ambas propiedades.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c y Top
Gef Permite cambiar la posición a la izquierda y superior delc  sobre su
c  rP  c 
c c r P Donde Gef indica la posición a la
izquierda y Top la posición superior. Cuando el valor de la propiedad Gef
c aumenta, entonces, el control se desplaza hacia la derecha y cuando el valor
c disminuye, el control se desplaza a la izquierda. Lo mismo pasa con la propiedad
c Top. Cuando el valor de la propiedad Top aumenta, entonces, el control se
c desplaza hacia abajo y cuando el valor disminuye, el control de desplaza hacia
c arriba.
c Ñjercicio:
c
ó Seleccione la propiedad Gef del cc P  y escriba el valor 0.
c
ó Ñlc cc P  se desplaza hacia la esquina del formulario.
c
ó Seleccione la propiedad Top del cc P  y escriba el valor 0.
c
ó Ñl cc P  se desplaza hacia la esquina superior del formulario, es decir, hacia arriba.
c
c
c
c
c
c
c
c
c
c
TA: Los valores de las propiedades Gef y Top cambian cada vez que el control se mueve con el mouse sobre su
contenedor.
c
c
Picre
c Asigna una imagen (Bitmap) en el objeto. Ñn un cc P  esta propiedad
tendrá efecto siempre y cuando el valor de la propiedad yle este establecido a
c ³1 ± raphical´.
c Ñjercicio:
c
ó Seleccione la propiedad yle y asigne el valor ³1 ± raphical´.
c
ó Seleccione
c la propiedad Picre del cc P .
c
ó Haga clic en los tres puntos suspensivos .
c
ó Ñn la ventana que aparece, busque la imagen ëm02Cap3Àjp. Ñsta imagen se encuentra en la
c
carpeta ëmae es del disco que se distribuye con este libro.
c
ó Después
c de haber seleccionado la imagen, haga clic en el botón Abrir (pe ).
ó Ñlc botón tendrá una apariencia como se muestra en la siguiente figura:
c
c
c
c
c
c
TA 1: Para quitar la imagen delc c c P , aplique los mismos procedimientos especificados en la
c
propiedad 3isabledPicre.

c
TA 2: Algunos formatos de imágenes no son soportados por esta propiedad. Los formatos de imágenes que pueden
ser asignados son los de tipo BDP, GIF, JPÑG, ICO y metaarchivos (.WDF, .ÑDF).

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Tabë
c dex Indica el orden o el número de orden a que le corresponde el  crecibir elc  o
c la atención del programa a medida que se pulse la tecla Tab sobre los   de
la aplicación.
c Ñjercicio:
c
ó Abra
c un nuevo proyecto haciendo clic en el menú File (Archivo) y seleccione ew Projec
(evo proyeco).
c
c aparece una ventana solicitando guardar el proyecto anterior, entonces, haga clic en Yes y, a
ó Si
c
continuación, escriba el nombre del formulario, por ejemplo, FormÑjercicio1-3. Después de haber
escrito
c el nombre del formulario, haga clic en el botón ave ( ardar).
c
ó Aparecerá otra ventana solicitando el nombre del proyecto. Ñscriba Ñjercicio1-3 y, a continuación,
c clic en el botón ave ( ardar).
haga
c
c aparece la ventana orce Code Co rol (Co rol de códio fe e), entonces, haga clic en
ó Si
el cbotón o.
c
ó Ñn la ventana ew Projec (evo Proyeco), seleccione la opción a dard Ñ Ñ y, a
c
continuación, haga clic en K (Acepar).
c
c el formulario inserte tres cc P , tal y como se muestra en la siguiente figura:
ó Ñn
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Pulse
c la tecla ÈF5] para correr la aplicación.
c
ó Dientras la aplicación este en ejecución, pulse la tecla Tab tres veces.
c
ó Podrá observar que cada vez que pulsa la tecla Tab, el   pasa por cada uno de los cc
Pc  de forma secuencial, es decir, en orden. Ñsto es porque el primer cc P  tiene
c
el valor 0 en la propiedad Tabë dex, el segundo botón el valor 1 y el tercer botón el valor 2.
c
c la aplicación, haciendo clic en el botón Cerrar de la ventana de la aplicación.
ó Pare
c
TA 1: Ñl orden de tabulación en la propiedad Tabë dex comienza por el valor 0. Donde 0 representa el primer
c
elemento del orden de tabulación.
c
c
CMÑTARë: Utilice siempre la propiedad Tabë dex en cada una de las ventanas de las aplicaciones que usted
realice, debido, a que una gran parte de los usuarios utilizan la tecla Tab para desplazarse por cada uno de los
elementos de una aplicación. Llevar un orden correcto de tabulación es característico de un buen programador.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
cTA 2: Cuando usted va a guardar un proyecto, Visual Basic solicita que se especifique el nombre de cada uno de los
c
formularios que haya utilizado en la aplicación, incluyendo el nombre del proyecto. Por ejemplo, si usted utiliza diez
formularios, entonces, tendrá que escribir un nombre distinto para los diez formularios y el nombre del proyecto.
c
c
Visible
c Ñstablece si el  estará Visible cuando se ejecute la aplicación. Si el valor de
esta propiedad esta en Tre (verdadero), entonces, el cc P  estará
c visible, de lo contrario, estará Invisible. Ñsta propiedad puede tomar los valores
c lógicos Tre o False.
c
c Ñjercicio:
c
ó Seleccione el tercer cc P  (Command3) del formulario.
c
ó Seleccione la propiedad Visible y asigne el valor lógico False.
c
ó Pulse
c la tecla ÈF5] para correr la aplicación.
c
ó Podrá observar que el tercer cc P  no aparece en la aplicación:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Pare la aplicación, haciendo clic en el botón Cerrar de la ventana de la aplicación.
c
ó Seleccione
c nuevamente el tercer cc P .
c
ó Busque la propiedad Visible y asigne el  cc cTre.
c
c
TA: Los  c c   son aquellos valores iniciales asignados a las propiedades de los objetos. Ñstos
valores son especificados por los programadores de objetos en el momento de su construcción.
c
c
ToolTipTex Se utiliza para mostrar el texto contextual que aparece cuando se coloca el
c puntero del mouse sobre el  oc  .
c
c Ñjercicio:
c
ó Seleccione el primer cc P  (Command1) del formulario.
c
ó Seleccione la propiedad ToolTipTex y escriba:    # $   .
c
ó Seleccione
c el segundo cc P  (Command2).
ó Ñn la propiedad ToolTipTex escriba:      $   .

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Seleccione
c el tercer cc P c(Command3).
ó Ñnc la propiedad ToolTipTex escriba:      $   .
c
ó Pulse la tecla ÈF5] para correr la aplicación.
c
ó Coloque el puntero del mouse sobre cada uno de los cc P  y verá el texto escrito
c
en la propiedad ToolTipTex.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c la aplicación, haciendo clic en el botón Cerrar de la ventana de la aplicación.
ó Pare
c
ó Haga clic en el menú File (Archivo) y, a continuación, haga clic en ave Projec ( ardar
c
proyeco).
c
ó Ñnc la ventana que aparece escriba FormÑjercicio2-3 y haga clic en el botón ave ( ardar). Ñn
el cnombre del proyecto escriba Ñjercicio2-3 y haga clic en el botón ave ( ardar).
c
ó Si aparece la ventana orce Code Co rol (Co rol de códio fe e), entonces, haga clic en
c
el botón o.
c
c
ó Inicie un nuevo proyecto, haciendo clic en ew Projec (evo proyeco) del menú File
c
(Archivo)À
c
ó Ñn la ventana ew Projec (evo Proyeco), seleccione la opción a dard Ñ Ñ y, a
c
continuación, haga clic en K (Acepar).
c
c
c
CMÑTARë 1: La propiedad ToolTipTex se utiliza principalmente en barras de menús para indicar la función de las
c
imágenes presentadas en la barra.
c
c
CMÑTARë 2: No se recomienda utilizar la propiedad ToolTipTex en c c P  que tenga textos
cëmprimir, por ejemplo, un botón para salir que tenga como texto alir, un botón de imprimir que tenga por texto
explicativos,
etc. Si utiliza esta propiedad en estos botones con textos explicativo, solo hágalo para expresar ayuda
c
adicional acerca del botón, por ejemplo, pulse ALTmS para salir.
c
También puede utilizar esta propiedad en cc P  que estén representado por imágenes, por ejemplo, un
c que tenga una imagen de una impresora. Ñn este caso se podría escribir en la propiedad ToolTipTex el texto:
botón
ëmprimir.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
- 3À1À1À2
c Uso de las propiedades e el Ñdior de Códio
Ñnc capítulos anteriores comentamos que la mayoría de las    pueden cambiarse en
c c  !c y que también casi siempre en Pc c    Con mucha frecuencia el
Pc
programador
c necesitará cambiar el  ccc por medio de susc   en Pcc
  . Ñsto se hace dentro del   P cde unc especificando el Pc c,
c
seguido de un punto (À) y el nombre de la    y el valor o el nuevo  c  c 
c
separado por el signo de igualdad (=). Por ejemplo, si tenemos dos c c P  en una
c
aplicación uno para salir con el texto alir y el otro para cancelar con el texto Ca celar. Queremos
quec el texto se muestre cuando la aplicación comience a correr y no cuando la estemos diseñando,
entonces,
c tendríamos que programar dentro del   P  del evento Goad (Cara) del
P  . Para realizar este ejemplo, haga lo siguiente:
c
c un nuevo proyecto, inserte dos cc P .
ó Ñn
c
ó Haga doble clic en cualquier parte del P   ( o sobre los boo es).
c
ó Aparecerá
c la ventana Code Ñdior con el cursor parpadeando dentro del   P  Goad del
c
P  .
c
ó Dentro de este   P  usted va a escribir estas dos líneas de código:
c
c
Command1.Caption = "&Salir"
c
Command2.Caption = "&Cancelar"
c
c
c
ó La siguiente figura ilustra esta codificación:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c Figura 3.4. Ñvento Goad (Cara) de un formulario.

c
c TA: Después de escribir el ombre del objeo y luego digitar el p o, automáticamente aparece una ventana
emergente que te permite explorar todas las propiedades de dicho objeto. Si esta ventana no aparece cuando usted
c digita el p o, entonces, el nombre del objeto no esta bien escrito en la ventana del  c c (  o
c simplemente, no existe en el formulario.
c
CMÑTARë: Utilice siempre el evento Goad de los formularios siempre y cuando quiera realizar alguna operación
antes de iniciar la aplicación. Dás adelante estudiaremos más acerca de los eventos de los formularios.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Pulse
c la tecla ÈF5] para correr la aplicación.
c
c
Ambos botones aparecen con el texto escrito como si se hubiese especificado en la propiedad
Capio
c en Pcc !. Ñsto es, porque se ha codificado dentro del   P  del 
Goad del P  . Ñl evento Goad (Cara) indica que la codificación dentro de ese   P 
c ser evaluada o ejecutada mientras cargue el P  . Ñste  ejecuta el código antes
debe
quec el P   se muestre en pantalla. Si ocurre algún error el P   no se muestra.
c
c la aplicación, haciendo clic en el botón Cerrar de la ventana de la aplicación.
ó Pare
c
ó Guarde la aplicación con los nombres FormÑjercicio3-3 para el P  cy Ñjercicio3-3 para el
c
proyecto.
c
c
TA: Recuerde que todos los co   están representados por un   P . Para ver más acerca de
c   P  puede consultar el subtema 1À4À5 Procedimie os del Capilo 1.
los
c
c
- 3À1À1À3 Ñve os sobre los boo es de coma do
c
Sec ha dicho que los  son las acciones que realizan los usuarios sobre un determinado tipo
dec . Ñstos  están definidos como   P  dentro de cada , donde cadac
 
c P cdeber ser codificado para representar dicho evento.
c
Todos los objetos poseen una serie de eventos que responden a las diferentes acciones del
c
usuario, pero no todos los eventos de los objetos debe de ser codificados, solo los que el
c
programador considere adecuados. Al igual que con las   , trabajaremos únicamente
conc los  más utilizados de los .
c
Ñve o 3escripció
c
Click
c Ocurre cuando el usuario presiona y suelta un botón del mouse. Ñn un cc
c P  este  ocurre cuando se presiona y se suelta el botón izquierdo
del mouse. Ñn otrosc  este  ocurre sin importar cuales de los
c botones del mouse fue presionado.
c
c Sin duda alguna este es uno de los eventos más consultados en cualquier tipo
c de aplicación, por ende, se debe de codificar adecuadamente el procedimiento
c que representa este evento en cada uno de los objetos de la aplicación.
c
c Ñjercicio:
c aplicación muestra dos cc P  que son activados por el  Click. Ñl primer
Ñsta
c
botóncmuestra un mensaje de bienvenida y el segundo botón permite salir de la aplicación.
c
ó Abra un nuevo proyecto e inserte dos cc P .
c
ó Seleccione
c la    (ame) del primer c c P  y escriba cmdAcepar, y en la
c   Capio escriba: &Acepar.

c
ó Seleccione el segundo c c P  y en la    (ame) escriba cmdalir, y en la
c
propiedad Capio escriba: &alir.
c
ó Haga
c doble clic en el primer cc P .
c
ó Aparecerá la ventana del Code Ñdior (Ñdior de códio) con el cursor parpadeando dentro del
  P  Click del cc P .

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Dentro
c del   P cClick escriba la siguiente línea de código:
c
c
DsgBox ("Bienvenido a Visual Basic 6.0")
c
c
ó Ñlc procedimiento codificado quedaría de la siguiente manera:
c
c
Private Sub cmdAceptar Click()
c
c DsgBox ("Bienvenido a Visual Basic 6.0")
c Sub
Ñnd
c
c
c
ó Cierre la ventana del Ñditor de Código.
c
ó Haga
c doble clic en el segundo cc P .
c
ó Dentro del   P  Click del segundo cc P  escriba la siguiente sentencia:
c
c
c
Ñnd
c
ó Ñlc   P  codificado quedaría de la siguiente manera:
c
c
Private Sub cmdSalir Click()
c
c Ñnd
c
c Sub
Ñnd
c
c
ó Pulse
c la tecla ÈF5] para correr la aplicación.
c
ó Haga clic en el botón Acepar.
c
ó Aparecerá una caja de mensaje dando la bienvenida a   c  c:
c
c
c
c
c
c
c
c
c
ó Haga clic en el botón K para cerrar la ventana.
c
ó Haga clic en el botón alir para salir de la aplicación.
c
c
La sentencia MsBox se utiliza para mostrar un mensaje en la pantalla. Ñl texto que se muestra, se
especifica entre comillas y dentro de dos paréntesis, como se mostró anteriormente. Dás adelante

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
hablaremos
c detalladamente sobre esta sentencia.
c
Porc otro lado, la sentencia Ñ d se utiliza para finalizar la aplicación. Ñsta sentencia cierra todos los
c
P   abierto en la aplicación, sin importar desde que P   se halla ejecutado la
c
sentencia Ñ d.
c
TA 1: Un evento Click no solo se activa haciendo clic con un botón del mouse. Ñste evento también puede activarse
c presionar la tecla BARRA ÑPACëA3RA o la tecla ÑTÑR sobre un objeto cc P ccuando este tiene
al
c enfoque. Otra forma de activar el evento Click es asignado mediante código el valor Tre en la propiedad Vale del
el
cc P .
c
c
TA 2: Tenga presente que los  en unc  P  vienen separados por un  derscore ( ) o sbrayado
c lo separa del nombre del objeto. Ñs importante recordar esto, para que tenga claro con cual  usted esta
que
c
trabajando en un   P .

c
c
ó Guarde la aplicación con los nombres FormÑjercicio4-3 para el P  cy, Ñjercicio4-3 para el
c
proyecto.
c
c
3ra3rop Ocurre cuando finaliza una operación de arrastrar y soltar un  sobre otro
c . Ñn los c c P  este  posee tres P que son:
c orce, coorde adas , Y del puntero del mouse. Para que un c se pueda
arrastra debe tener establecido el valor 1 ± Aomaic en la propiedad 3raMode,
c
en caso contrario la operación de arrastrar y soltar nunca iniciará.
c
c Ñl   P  3ra3rop viene representado de la siguiente manera:
c
c Private Sub Objeto DragDrop(Source As Control, X As Single, Y As Single)
c
c Ñnd Sub
c
c
c
c Donde:
c
orce: Representa el control que se esta arrastrando. Ñsta variable que al
c castellano significa origen, hace referencia al  como si se tratase del 
c mismo, es decir, se puede hacer referencia a cualquierc propiedad del 
c especificando la variable orce, seguido del nombre de la   . Por ejemplo,
c orceÀVisible = False, oculta el objeto que identifica el argumento orce.
c : Ñs un número que representa la coordenada horizontal actual del puntero del
c mouse dentro del P   o  cc .
c
c Y: Ñs un número que representa la coordenada vertical actual del puntero del
c mouse dentro del P   o  cc .
c
CMÑTARë: Utilice un procedimiento de evento 3ra3rop para controlar qué ocurre tras
c completarse una operación de arrastrar. Por ejemplo, puede mover el control de origen a una nueva
c ubicación o copiar un archivo de una ubicación a otra.

c Cuando varios controles puedan usarse potencialmente en un argumento origen:


c
ó Utilice la palabra clave Typef con la instrucción ëf para determinar el tipo de control utilizado con
c origen.
ó Utilice la propiedad Ta del control para identificar un control y después utilice un procedimiento de
evento 3ra3rop.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c Ñjercicio:
Ñl csiguiente ejercicio muestra una aplicación con un c c P  que se puede mover de
c
posición manteniendo pulsado el botón izquierdo del Douse y soltándolo en cualquier parte del
P
c  .
c
c un nuevo proyecto e inserte un cc P .
ó Abra
c
ó Seleccione el botón de comando y busque la propiedad 3raMode. Seleccione el valor 1 ±
c
Aomaic para que el botón se puede arrastrar.
c
c
ó Haga doble clic en cualquier parte del P   para activar el  cc  . Tenga en cuenta
noc hacer doble clic en el cc P .
c
ó Aparecerá el cursor parpadeando en el procedimiento que representa el evento Goad (Cara) del
c
formulario. Ñste evento no nos interesa, por tal razón, debemos hacer clic en el evento 3ra3rop
dec la lista de , ubicada en la parte superior del  cc( .
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Aparecerá el   P  que representa el evento 3ra3rop del P  :
c
Private
c Sub Form DragDrop(Source As Control, X As Single, Y As Single)
c
c Sub
Ñnd
c
c
ó Dentro del   P  3ra3rop escriba las siguientes líneas de código:
c
c
Source.Top =Y
c
Source.Left =X
c
c
ó Ñl   P  codificado quedaría de la siguiente manera:
c
c
Private Sub Form DragDrop(Source As Control, X As Single, Y As Single)
c
c Source.Top
Source.Left = X
=Y µColoca el objeto en la coordenada Y del Douse
µColoca el objeto en la coordenada X del Douse
c
Ñnd Sub

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Pulse
c la tecla ÈF5] para correr la aplicación.
c
ó Ahora mueva el cc P  a cualquier parte del P  . Podrá observar que el c
c
c P ctoma la posición actual del puntero del Douse.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Haga clic en el botón Cerrar de la ventana para detener la aplicación.
c
ó Guarde
c la aplicación con los nombres FormÑjercicio5-3 para el P  cy, Ñjercicio5-3 para el
c
proyecto.
c
c
Ñxplicació :
c
c
Anteriormente, explicamos que la variable orce identifica al objeto como si se tratase del mismo.
c
Cuando escribimos orceÀTop = Y estamos queriendo decir Comma d1ÀTop = Y. De igual
c
manera, orceÀGef = estamos queriendo decir Comma d1ÀGef = . Dijimos que es un
numero
c que representa la posición horizontal del puntero del Douse y, la variable Y la posición
vertical. Asignando estos valores en las propiedades Top (Arriba) y Gef (ëzqierda) del cc
c
P  hace posible cambiar la posición del botón. Para más información acerca de las
c   Top y Gef retrocedan algunas páginas atrás, a lasc    de los c c

Pc  de este mismo capitulo.
c
Utilizar
c la variable orce tiene algunas ventajas que se enumeran a continuación:
c 1. Cualquier  que se agregue en elcP   se podrá cambiar de posición, siempre y
c cuando el valor 1 ± Aomaic este establecido en la propiedad 3raMode.
c
c 2. La variable orce identifica el  que se esta arrastrando, sin importar cual sea el  c
c  .
c 3. Ñs posible identificar cual es el  c c  que se arrastra, utilizando la sentencia
c Typef combinada con la instrucción ëf. Ñjemplo: ëf Typef orce ës Comma dBo
c The . Ñste ejemplo verifica si el objeto que se arrastra es un cc P .
c
c
CMÑTARë: Ñste evento combinado con el evento 3raver es muy utilizado en la mayoría de los juegos de mesa.
c ejemplo, los juegos de carta, ajedrez, damas, etc. Ñstos juegos requieren manejar frecuente mente estos dos
Por
eventos, debido a que consisten realmente en arrastrar y soltar algún objeto.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
3raver Ocurre mientras se realiza una operación de arrastrar y soltar. Dientras el usuario
c este arrastrando un objeto sobre su contenedor, el evento 3raver se efectuará
continuamente. Ñste evento permite realizar variedades de operaciones con el
c objeto, principalmente en aplicaciones de video juegos.
c
c Ñste evento posee los mismos argumentos del evento 3ra3rop (orce, , Y), a
c diferencia del argumento ae. Ñste argumento representa un entero que
c corresponde al estado de transición del control que se está arrastrando en relación
al formulario o control de destino. Puede tomar entre tres valores 0, 1 y 2. Cuando el
c   se encuentra en 0 (Ñ rar), indica que el c , se encuentra dentro
c del intervalo de un destino, es decir, el objeto iniciará la operación de arrastre. Ñl
c  c1 (alir), indica que el c  se esta arrastrando fuera del  c
c c c  , es decir, fuera del intervalo del c  . Ñl   2 (obre),
c indica que el c  se ha movido de una posición del destino a otra, es decir,
se encuentra dentro del  c  pero en otra posición.
c
c Ñl   P  3raver viene representado de la siguiente manera:
c
c Private Sub Objeto DragOver(Source As Control, X As Single, Y As Single, State
c As Integer)
c
c Ñnd Sub
c c
c
TA: Ñl termino c   representa el objeto que se esta arrastrando. Un  c  
c representa el conjunto de valores que están comprendidos entre la posición (x, y) del c  que
c se arrastra con relación a su contenedor y el tamaño (altura y anchura) de dicho objeto.
c
c
CMÑTARë: Utilice un procedimiento de evento DragOver para determinar lo que ocurre tras
c iniciarse el arrastre y antes de que un control se coloque en un destino. Por ejemplo, puede comprobar
c un intervalo de destino válido si resalta el destino (establezca la propiedad BackColor o ForeColor
desde el código) o muestra un puntero de arrastre especial (establezca la propiedad 3raëco o
c MosePoi er desde el código).
c
c Utilice el argumento   para determinar las acciones de los puntos de transición claves. Por
ejemplo, podría resaltar un posible destino cuando   se establezca a 0 (Ñntrar) y restaurar la
c apariencia anterior del objeto cuando   se establezca a 1 (Salir).
c
c Ñjercicio:
Ñl csiguiente ejercicio muestra una aplicación con un c c P  que se puede mover de
c
posición manteniendo pulsado el botón izquierdo del Douse y soltándolo en cualquier parte del
P
c  . A diferencia de la aplicación anterior, este ejemplo muestra un icono especial cuando se
esta arrastrando el objeto.
c
c
ó Abra un nuevo proyecto e inserte un cc P .
c
ó Seleccione
c el botón de comando y busque la propiedad 3raMode. Seleccione el valor 1 ±
Aomaic
c para que el botón se puede arrastrar.
c
ó Haga doble clic en cualquier parte del P   para activar el  cc  . Tenga en cuenta
noc hacer doble clic en el cc P .
c
ó Seleccione
c el evento 3ra3rop de la  c  ubicada en la esquina superior derecha del
 cc  .

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 VV


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Aparecerá el   P  que representa el evento 3ra3rop del P  :
c
c
Private Sub Form DragDrop(Source As Control, X As Single, Y As Single)
c
c
c Sub
Ñnd
c
ó Dentro
c del   P  3ra3rop escriba las siguientes líneas de código:
c
Source.Top =Y
c
Source.Left =X
c
c
ó Ñlc   P  codificado quedaría de la siguiente manera:
c
Private Sub Form DragDrop(Source As Control, X As Single, Y As Single)
c
c Source.Top = Y µColoca el objeto en la coordenada Y del Douse
c Source.Left = X µColoca el objeto en la coordenada X del Douse
c Source.DousePointer = 0 µAsigna el puntero normal o predeterminado del Douse
c
Ñnd Sub
c
c
Como
c ha podido notar es la misma codificación del programa anterior, que permite posicionar el
 que se arrastra en cualquier parte del P  , con la única diferencia en que se ha
c
agregado una nueva línea de código orceÀMosePoi er = 0. La propiedad MosePoi er
c
permite cambiar la forma del puntero del Douse en tiempo de ejecución. Ñsta propiedad puede
tomar
c una serie de valores que se muestran en la siguiente tabla:
c
c
Valor P ero Valor P ero Valor P ero Valor P ero
c
0c Default ( ) 5 Size ( ) 10 Up Arrow ( ) 15 Size
1c Arrow ( ) 6
c
Size NÑ SW ( c ) 11 Hourglass ( ) 99 Desde
c2 Cross ( ) 7 Size N S ( ) 12 No Drop ( ) archivo
c
3 ImBeam ( ) 8 Size NWSÑ ( ) 13 ArrowHourglass ( )
4 Icon ( ) 9 Size W Ñ ( ) 14 ArrowQuestion ( )
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
Ahora
c codificaremos para que cuando el usuario este moviendo el objeto sobre el formulario, este
cambie el aspecto del puntero del Douse. Ñsto debe ser codificado en el evento 3raver del
c
cc P  y noc cP  .
c
c
ó Haga doble clic sobre el cc P  y, a continuación, seleccione el evento 3raver de
c
la c  cc ubicada en la esquina superior derecha del  cc  .
c
c
ó Aparecerá el procedimiento que representa el evento 3raver del cc P :
c
c
Private Sub Command1 DragOver(Source As Control, X As Single, Y As Single, State As
c
Integer)
c
c
c Sub
Ñnd
c
ó Dentro
c del   P  3raver escriba las siguientes líneas de código:
c
' Si el Ñstado del argumento (State) se encuentra en 0 (Ñntrar), entonces, cambia
'c el puntero del Douse
c
c If State = 0 Then Source.DousePointer = 15
c
ó Ñlc   P  codificado quedaría de la siguiente manera:
c
c
Private Sub Command1 DragOver(Source As Control, X As Single, Y As Single, State As
c
Integer)
c
' Si el Ñstado del argumento (State) se encuentra en 0, entonces, cambia
c ' el puntero del Douse
c
c If State = 0 Then Source.DousePointer = 15
c
Ñnd Sub
c
cc
c
ó Pulse la tecla ÈF5] para correr la aplicación.
c
ó Ahora mueva el cc P  a cualquier parte del P  . Podrá observar que el c
cc P c toma la posición actual del puntero del Douse. Además, puede observar como el
c
puntero del Douse cambia de apariencia mientras se esta arrastrando el cc P .
c
ó Haga
c clic en el botón Cerrar de la ventana para detener la aplicación.
c
ó Guarde
c la aplicación con los nombres FormÑjercicio6-3 para el P  cy, Ñjercicio6-3 para el
proyecto.
c
c
Ñxplicació
c :
c
Ñsta aplicación se puede dividir en dos partes representadas por dos eventos, el primero 3ra3rop
para posicionar el objeto en la coordenada , Y del Douse, y el segundo 3raver para cambiar el

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
puntero
c del Douse mientras se arrastra el cc P .
c
Sec ha dicho anteriormente, que el evento 3ra3rop ocurre cuando termina una operación de
c
arrastrar y soltar unc c sobre su . Ñn esta aplicación se ha codificado este evento
c
conc tres líneas de código donde las dos primeras la tratamos en la aplicación anterior. La línea de
c
código orceÀMosePoi er = 0 permite establecer el puntero por defecto o predeterminado del
c
Douse.
c
c
Lac propiedad MosePoi er (P ero del Mose), es una propiedad muy utilizada en los  
dec Visual Basic 6.0. Ñsta permite cambiar la apariencia del puntero del Douse, permitiendo
c
seleccionar entre 16 constantes o valores ya explicados en la tabla anterior.
c
c
Usted
c podría preguntarse que hace esta línea de código dentro de este procedimiento (evento). La
c es muy sencilla, el evento 3ra3rop permite realizar cualquier función, siempre y cuando
razón
c
termine la operación de arrastrar y soltar. Por ende, el puntero del Douse debe establecerse a su
c
forma normal o predeterminada cuando el objeto sea colocado en la posición deseada, si no lo
c
hace,
c entonces, el puntero del Douse quedaría cambiado aún cuando halla terminado la operación
dec arrastrar y soltar el objeto.
c
c
Por otro lado, el evento 3raver esta codificado únicamente para cambiar la apariencia del
c
puntero
c del Douse cuando comience a arrastrar el cc P . La única línea de código que
c
podemos ver en este procedimiento es:
c
c
If State = 0 Then Source.DousePointer = 15
c
c
c
Traducido literalmente al castellano:
c
Si cÑsado del objeo es ëal a Cero Ñntonces P ero del boó de coma do es ëal a 15
c
c
Se ha dicho que al iniciar la operación de arrastrar y soltar un objeto, el P ae se
c
c
encontrará en 0 (Ñ rar); esto permite realizar cualquier operación antes de soltar o terminar de
c
arrastrar el objeto. Se ha utilizado el   0 y no el 1 o 2 por la siguiente razón: ³Se quiere
c
cambiar la apariencia del puntero del Douse cuando se inicie la operación de arrastrar y soltar, y
c
esto solo lo proporciona el   0 (Ñ rar)´.
c
c
TA: Utilice la sentencia ëf o Case para verificar cual es el estado actual del objeto.
c
c
CMÑTARë: Utilice la propiedad MosePoi er siempre que quiera cambiar la apariencia del puntero del Douse
sobre un objeto. Ñstablezca el valor 99 en la propiedad MosePoi er cuando quiera cargar un cursor o icono desde
un disco.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
cTA 3: Ñstablezca el valor 99 en la propiedad MosePoi er cuando quiera cargar un cursor o icono desde un
c
disco. Para esto debe cargar el archivo desde la propiedad Moseëco del objeto o utilizando la sentencia
c
GoadPicre desde el  cc  .
c
c
oFocs
c Ñstec eventoc ocurre cuando un objeto recibe el  o  . Un objeto tiene el
c enfoque cuando el usuario a realizado un evento sobre el y no lo ha hecho sobre
c otro objeto hasta ese momento. Cuando usted hace clic sobre un cc P 
c
u otro objeto de la aplicación, en ese momento el objeto recibe el enfoque o la
c
c atención del usuario.
c
c Ñl termino oFocs significa ³obtener el enfoque´, ocurre exactamente cuando el
c
usuario realiza una acción o evento sobre el objeto, causado de esta manera que el
c
c objeto anterior pierda el enfoque o la atención del usuario.
c
c Ñstec  es muy poco utilizado en los c c P , pero de todos
c
modos mostraré un ejemplo de su uso.
c
c
c Ñjercicio:
c
Ñstec ejemplo muestra una aplicación que posee dos c c P , cuando se hace clic
c uno de ellos entonces se muestra un mensaje diciendo cual de los dos botones ha recibido el
sobre
c
enfoque.
c
c
ó Abra
c un nuevo proyecto e inserte dos cc P , tal y como se muestra en la siguiente
c
figura:
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Haga
c doble clic sobre el primer cc P  para que aparezca el  cc  .
c
ó Seleccione el evento oFocs de la  cc.
ó Dentro de este procedimiento escriba las siguientes líneas de código:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
c
µDuestra un mensaje diciendo que el primer botón recibió el enfoque.
c
cDsgBox ("Ñl primer botón recibió el enfoque")
c
c
ó Ñlc   P  codificado quedaría de la siguiente manera:
c
Private
c Sub Command1 GotFocus()
c
µDuestra un mensaje diciendo que el primer botón recibió el enfoque.
c
c
DsgBox ("Ñl primer botón ha recibido el enfoque")
c
c
Ñnd Sub
c
c
c
ó Haga clic en Form1 desde el
  cc   para salir del  cc   y visualizar el
c
formulario de la aplicación.
c
ó Haga doble clic en el segundo cc P .
c
ó Seleccione
c el evento oFocs de la  cc.
c
c
µDuestra un mensaje diciendo que el primer botón recibió el enfoque.
c
cDsgBox ("Ñl segundo botón recibió el enfoque")
c
ó Ñlc   P  codificado quedaría de la siguiente manera:
c
c
Private Sub Command2 GotFocus()
c
µDuestra un mensaje diciendo que el segundo botón recibió el enfoque.
c
c
DsgBox ("Ñl segundo botón ha recibido el enfoque")
c
c
c Sub
Ñnd
c
c
ó Pulse la tecla ÈF5] para correr la aplicación.
c
ó Aparecerá un mensaje diciendo ³Ñl primer botón ha recibido el enfoque´, esto es, porque el primer
c
cc P  tiene establecido el valor 1 en la    Tabë dex, es decir, tiene establecido
c el primer objeto que recibe el enfoque cuando inicia la aplicación.
como
c
ó Con
c la aplicación ejecutándose, haga clic en el segundo c c P . Aparecerá otro
mensaje diciendo ³Ñl segundo botón ha recibido el enfoque".
c
c vez que haga clic sobre uno de los cc P  aparecerá un mensaje, la razón es,
Cada
quec el mensaje se ha codificado en el evento oFocs, es decir, cuando se obtiene el enfoque.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Haga
c clic en el botón Cerrar de la ventana para detener la aplicación.
c
ó Guarde la aplicación con los nombres FormÑjercicio7-3 para el P  cy, Ñjercicio7-3 para el
c
proyecto.
c
c
TA: Un objeto puede recibir el enfoque sólo si sus    Ñ abled y Visible están establecidas a Tre. Para
c
personalizar la interfaz de teclado en Visual Basic para mover el enfoque, establezca el orden de tabulaciónc c
c
especifique teclas de acceso para controles de un formulario.
c
c
c
CMÑTARë: Utilice este evento para especificar las acciones que ocurren cuando un control o un formulario recibe

c
primero el enfoque. c Por ejemplo, si adjunta un procedimiento de evento oFocs a cada control de un formulario
c
puede guiar al usuario mostrándole instrucciones breves o mensajes en la barra de estado. También puede

c
proporcionar avisos visuales activando, desactivando o mostrando otros controles que dependan del control que tiene el

c
enfoque.

c
c
GosFocs Ñl evento GosFocs es el opuesto del evento oFocs. Ñste evento ocurre
c cuando un objeto pierde el enfoque o focus.
c Ñl termino GosFocs significa ³perdida del enfoque´, ocurre exactamente
c cuando el usuario realiza una acción o evento sobre otro objeto, causado de
c esta manera que el objeto anterior pierda el enfoque. Ñste evento es muy
c utilizado por los programadores, para verificar si un usuario realizo o no alguna
c operación requerida por el programa, por ejemplo, un programa que requiere
que se introduzca el nombre y el apellido de una persona para registrarlo. Ñs
c obvio que para esto se necesitan dos  cc
 

 y, por ende, no
c pueden dejarse vacías porque son datos importantes. Puede verificar con este
c evento si el usuario dejo o no las cajas vacías.
c
c Al igual que el  oFocs, este  es muy poco utilizado en los
c c P . Puede utilizar el ejercicio anterior para practicar este
c . Codifique el  GosFocs en vez del   P  oFocs y,
c cambie los mensajes ³Ñl primer botón ha recibido el enfoque´, ³Ñl segundo
c botón ha recibido el enfoque´, por: ³Ñl primer botón ha perdido el enfoque´, ³Ñl
c segundo botón ha perdido el enfoque´.
c CMÑTARë: Un procedimiento de evento GosFocs resulta especialmente útil para
c comprobar y validar actualizaciones. Usar GosFocs puede hacer que la validación tenga lugar
c conforme el usuario mueve el enfoque del control. Otro uso para este tipo de procedimiento de
c evento es activar, desactivar, ocultar y mostrar otros objetos, como en un procedimiento de
c evento oFocs. También puede invertir o cambiar condiciones que estableció en el
c procedimiento de evento oFocs del objeto.
c
c
Key3ow , Ocurre cuando el usuario presiona (Key3ow ) y suelta (KeyUp) una tecla
c mientras un  tiene el . Aunque son dos  que suelen usarse
KeyUp
c combinados, son eventos distintos y, por consiguiente, serán definidos de
c manera independiente.
c CMÑTARë: Utilice los eventos Key3ow y KeyUp siempre y cuando quiera realizar una
c operación distinta para cuando el usuario presiona una tecla y otra operación para cuando la
suelta. También utilice estos eventos cuando quiera leer teclas especiales como las teclas de
c función, el teclado numérico, etc. Ñn caso contrario utilice el evento KeyPress.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
Ñlc Key3ow (Tecla Abajo) ocurre cuando el usuario presiona una tecla. Ñs un evento que
secgestiona rápidamente y en un plazo de corto tiempo. La razón es, porque ocurre inmediatamente
el cusuario presiona una tecla antes que esta vuelva a levantarse. Si el usuario mantiene presionada
c
cualquier tecla, entonces, este evento se efectuará constantemente.
c
c
Ñl c  P  para el  Key3ow viene representado de la siguiente manera:
c
Private
c Sub Objeto KeyDown(KeyCode As Integer, Shift As Integer)
c
c Sub
Ñnd
c
c se puede apreciar el   P  para este  esta compuesto por dos Pc
Como
c
que son: KeyCode y hif. Ñl P KeyCode devuelve un código de tecla que representa la
c
tecla
c pulsada por el usuario mientras el objeto tiene el enfoque. Los valores aceptados para este
c
P se muestran en las siguientes tablas:
c
c
Co sa e Valor 3escripció
c
vbKeyBack
c 8 Tecla RÑTROCÑSO
c
vbKeyTab 9 Tecla TAB
c
vbKeyClear 12 Tecla SUPR
c
vbKeyRer
c 13 Tecla ÑNTRAR
c
vbKeyhif 16 Tecla DAYÚS
c
vbKeyCo rol 17 Tecla CTRL
c
vbKeyMe  18 Tecla DÑNU
c
vbKeyPase
c 19 Tecla PAUSA
c
vbKeyCapial 20 Tecla BLOQ DAYUS
c
vbKeyÑscape 27 Tecla ÑSC
c
vbKeypace
c 32 Tecla BARRA ÑSPACIADORA
c
vbKeyPaeUp 33 Tecla RÑ PÁG
c
vbKeyPae3ow 34 Tecla AV PÁG
c
vbKeyÑ d 35 Tecla FIN
c
vbKeyHome
c 36 Tecla INICIO
c
vbKeyGef 37 Tecla FLÑCHA IZQUIÑRDA
c
vbKeyUp 38 Tecla FLÑCHA ARRIBA
c
vbKeyRih
c 39 Tecla FLÑCHA DÑRÑCHA
c
vbKey3ow 40 Tecla FLÑCHA ABAJO
c
vbKeyelec 41 Tecla SÑLÑCT

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
cCo sa e Valor 3escripció
c
vbKeyPri  42 Tecla IDPRIDIR PANTALLA
c
vbKeyÑxece 43 Tecla ÑXÑCUTÑ
c
vbKey
c apsho 44 Tecla SNAPSHOT
c
vbKeyë ser 45 Tecla INS
c
vbKey3elee 46 Tecla SUPR
c
vbKeyHelp 47 Tecla AYUDA
c
vbKeymlock
c 144 Tecla BLOQ NUD
c
c
Teclado alfa m
rico y Teclado m
rico
c
Coc sa e Valor 3escripció Co sa e Valor 3escripció
c
vbKeyA 65 Tecla A vbKey0 48 Tecla 0
c
vbKeyBc 66 Tecla B vbKey1 49 Tecla 1
c
vbKeyCc 67 Tecla C vbKey2 50 Tecla 2
c
vbKey3
c c 68 Tecla D vbKey3 51 Tecla 3
c
vbKeyÑ c 69 Tecla Ñ vbKey4 52 Tecla 4
c
vbKeyFc 70 Tecla F vbKey5 53 Tecla 5
c
vbKey
c c 71 Tecla G vbKey6 54 Tecla 6
c
vbKeyH c 72 Tecla H vbKey7 55 Tecla 7
c
vbKeyëc 73 Tecla I vbKey8 56 Tecla 8
c
vbKeyJc 74 Tecla J vbKey9 57 Tecla 9
c
vbKeyK
c c 75 Tecla K vbKeympad0 96 Tecla 0
c
vbKeyG c 76 Tecla L vbKeympad1c 97 Tecla 1
c
vbKeyMc 77 Tecla D vbKeympad2c 98 Tecla 2
c
vbKey
c c 78 Tecla N vbKeympad3c 99 Tecla 3
c
vbKey c 79 Tecla O vbKeympad4c 100 Tecla 4
c
vbKeyPc 80 Tecla P vbKeympad5c 101 Tecla 5
c
vbKeyQc 81 Tecla Q vbKeympad6c 102 Tecla 6
c
vbKeyR
c c 82 Tecla R vbKeympad7c 103 Tecla 7
c
vbKey c 83 Tecla S vbKeympad8c 104 Tecla 8
c
vbKeyTc 84 Tecla T vbKeympad9 105 Tecla 9
c
vbKeyU
c c 85 Tecla U vbKeyMliply 106 Tecla DULTIPLICACION (*)
c
vbKeyV c 86 Tecla V vbKeyAdd 107 Tecla SIGNO SUDA (+)
c
vbKeyW c 87 Tecla W vbKeyeparaor 108 Tecla INTRO
c
vbKey c 88 Tecla X vbKeybrac 109 Tecla SIGNO DÑNOS (m)
c
vbKeyYc 89 Tecla Y vbKey3ecimal 110 Tecla PUNTO DÑCIDAL (.)
vbKeyZc 90 Tecla Z vbKey3ivide 111 Tecla SIGNO DIVISION (/)
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Teclas
c de f ció
Coc sa e Valor 3escripció
c
vbKeyF1 112 Tecla F1
c
vbKeyF2c 113 Tecla F2c
c
c
vbKeyF3 c 114 Tecla F3c
c
vbKeyF4c 115 Tecla F4c
c
vbKeyF5c 116 Tecla F5c
c
vbKeyF6
c c 117 Tecla F6c
c
vbKeyF7 c 118 Tecla F7c
c
vbKeyF8 c 119 Tecla F8c
c
vbKeyF9
c c 120 Tecla F9c
c
vbKeyF10 c 121 Tecla F10c
c
vbKeyF11c 122 Tecla F11c
c
vbKeyF12c 123 Tecla F12c
c
c
Lasc tablas anteriores muestran cada uno de los valores proporcionados por el  Key3ow en
suc P KeyCode. Ñstos valores pueden ser manejados y comprobados utilizando la
c
sentencia ëf o Case. Ñs posible verificar cual tecla el usuario ha presionado sobre el objeto cuando
c
c tiene el enfoque, por ejemplo, dentro del   P  Key3ow es posible escribir una línea
este
dec código parecida a la siguiente: If KeyCode = vbKeyF9 Then. Ñsta línea de código proporcionará
unc valor verdadero cuando el usuario presione la Tecla F9. Ñsto hace posible realizar operaciones
c
distintas para cada tecla pulsada por el usuario.
c
c
Porc otro lado, el argumento hif devuelve un valor entero que representa el estado de las teclas
c
DAYUS, CTRL y ALT en el momento del evento. Ñstos valores corresponden a los enteros 1, 2 y 4,
c
respectivamente. La siguiente tabla muestra las constantes y valores que identifican cada uno de
c
estos
c estados:
c
Coc sa e Valor 3escripció
c
vbhifMask 1 Tecla DAYÚS
c
c
vbCrlMask 2 Tecla CTRL
c
vbAlMask 4 Tecla ALT
c
c
Noc es recomendable tratar los valores proporcionados por el P hif por sus valores
c
correspondientes en la tabla anterior, debido a que sería imposible detectar cualquier combinación
c
de estas tres teclas. Ñs recomendable almacenar los valores proporcionados por el P
hif en una variable de  c (As Integer), y luego verificar si su valor es mayor que cero (0).

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Para
c realizar lo dicho anteriormente, asigne primero cada resultado a una variable temporal entera
c
y después compare Mays (hif) con una P  c c  . Utilice el operador A d (Y) con el
c
argumento Mays (hif) para comprobar si la condición es mayor que 0, lo que indica que el
c
modificador se presionó, como en este ejemplo:
c
c
cDim TeclaShiftPresionada As Integer
cDim TeclaAltPresionada As Integer
c
Dim TeclaCtrlPresionada As Integer
c
c
cTeclaShiftPresionada = (Shift And vbShiftDask)
cTeclaAltPresionada = (Shift And vbAltDask)
c
TeclaCtrlPresionada = (Shift And vbCtrlDask)
c
c
cIf TeclaShiftPresionada > 0 Then
cDsgBox ("Usted presiono la tecla DAYUS o SHIFT")
c
c
cÑlseIf TeclaAltPresionada > 0 Then
cDsgBox ("Usted presiono la tecla ALT")
c
c
ÑlseIf TeclaCtrlPresionada > 0 Then
c
cDsgBox ("Usted presiono la tecla CTRL")
c
cÑnd If
c
c
Si cagrega este bloque de código dentro del evento Key3ow de cualquier objeto, se mostrará un
c
mensaje cada vez que se pulse una de las teclas DAYUS, ALT o CTRL mientras el objeto tiene el
c
.
c
c
Sec puede observar en el ejemplo anterior que se han utilizado tres variables de tipo ë eer  c
c almacenar cada uno de los valores de las teclas DAYUS, ALT y CTRL, respectivamente.
para
c
Cuando el usuario pulsa una de estas tres teclas, la variable correspondiente a esa tecla toma un
c
valor mayor que cero. Por ejemplo, si el usuario pulsa la tecla ALT la variable  .    
c
toma
c el valor 4, si se pulsa la tecla SHIFT o DAYUS la variable  '     toma el valor
c si se pulsa la tecla CTRL la variablec (    ctoma el valor 2. Después de esto, se
1 y,
hanc establecido tres condiciones con una sentencia ëf (i)     cë)cccë),
c
para verificar cuáles de las tres variables tiene un valor mayor que cero. Cuando se comprueba la
c
condición y resulta verdadera, es decir, que la variable tiene un valor mayor que cero, entonces, se
muestra un mensaje diciendo cual fue la tecla pulsada.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c detectar cualquier combinación de tecla, utilice el operador lógico A d (Y) para verificar si los
Para
c
valores de las demás variables son iguales o mayores que cero.
c
c
Ñjemplo:
c
c
cDim TeclaShiftPresionada As Integer
cDim TeclaAltPresionada As Integer
c
Dim TeclaCtrlPresionada As Integer
c
c
cTeclaShiftPresionada = (Shift And vbShiftDask)
cTeclaAltPresionada = (Shift And vbAltDask)
c
TeclaCtrlPresionada = (Shift And vbCtrlDask)
c
c
cIf TeclaShiftPresionada > 0 And TeclaAltPresionada > 0 Then
cDsgBox ("Usted presiono la tecla DAYUS y la tecla ALT")
c
c
cÑlseIf TeclaAltPresionada > 0 And TeclaCtrlPresionada > 0 Then
cDsgBox ("Usted presiono la tecla ALT y la tecla CTRL")
c
c
ÑlseIf TeclaCtrlPresionada > 0 And TeclaShiftPresionada > 0 Then
c
cDsgBox ("Usted presiono la tecla CTRL y la tecla DAYUS")
c
cÑnd If
c
c
Si cse comprueba que dos o más variables son mayores que cero usando la sentencia ëf (i) y el
c
operador lógico A d (Y), entonces, el usuario ha presionado una combinación de tecla. Puede
c
verificar las combinaciones de tres o más teclas utilizando como parámetro el ejemplo anterior.
c
c
Porc otro lado, elc KeyUp (Tecla Arriba) ocurre cuando el usuario suelta la tecla presionada.
c evento ocurre exactamente cuando finaliza el evento Key3ow (Tecla Abajo). Ñstos dos
Ñste
c
eventos mayormente se utilizan combinados para realizar una operación cuando el usuario pulsa
c
una tecla y otra cuando la suelta.
c
c
A ccontinuación, se muestra un ejercicio donde se combinan ambos eventos. Ñste ejercicio esta
c
compuesto por un c c P  que cambia su color cada vez que se pulsa una tecla y
c
vuelve a su color original cuando se suelta la tecla. Se ha codificado para que cambie entre cinco
c
colores distintos si se pulsa una de las letras que representan el color R, , B, A o V (rojo, negro,
blanco, azul o verde).
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Abra
c un nuevo proyecto e inserte un c c P , tal y como se muestra en la siguiente
c
figura:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Busque lac    Capio y escriba: Presio e la ecla R, , B, A o V. Ñl texto aparecerá
c
dentro del cc P , tal y como se muestra en la figura anterior.
c
ó Busque
c la    yle y establezca el valor 1- raphical. Recuerde que esto es necesario
parac que un cc P  pueda cambiar de color. Usted puede retroceder algunas páginas si
c saber más acerca de la propiedad yle.
desea
c
ó Haga doble clic sobre el cc P  para invocar el  cc  .
c
c
ó Ñstando dentro del procedimiento Click del cc P  seleccione el  Key3ow de
la c  cc y, a continuación, escriba el siguiente bloque de código:
c
c se pulsa la tecla R
'Si
c
If KeyCode = vbKeyR Then
c
Command1.BackColor = vbRed ' Pone el color rojo al botón
c If
Ñnd
c
'Si
c se pulsa la tecla N
c
If KeyCode = vbKeyN Then
c
Command1.BackColor = vbBlack ' Pone el color negro al botón
c If
Ñnd
c
c se pulsa la tecla B
'Si
c
If KeyCode = vbKeyB Then
c
Command1.BackColor = vbWhite ' Pone el color blanco al botón
c If
Ñnd
c
'Si
c se pulsa la tecla A
Ifc KeyCode = vbKeyA Then
Command1.BackColor = vbYellow ' Pone el color amarillo al botón
Ñnd If

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
'Si
c se pulsa la tecla V
c
If KeyCode = vbKeyV Then
c
Command1.BackColor = vbGreen ' Pone el color verde al botón
c If
Ñnd
c
c
ó Ñlc procedimiento codificado quedaría de la siguiente manera:
c
Private
c Sub Command1 KeyDown(KeyCode As Integer, Shift As Integer)
c se pulsa la tecla R
'Si
c
Ifc KeyCode = vbKeyR Then
Command1.BackColor
c = vbRed ' Pone el color rojo al botón
Ñnd
c If
c se pulsa la tecla N
'Si
c
Ifc KeyCode = vbKeyN Then
Command1.BackColor
c = vbBlack ' Pone el color negro al botón
Ñnd
c If
c se pulsa la tecla B
'Si
c
Ifc KeyCode = vbKeyB Then
Command1.BackColor
c = vbWhite ' Pone el color blanco al botón
Ñnd
c If
c se pulsa la tecla A
'Si
Ifc KeyCode = vbKeyA Then
c
Command1.BackColor = vbYellow ' Pone el color amarillo al botón
c
Ñnd If
c
If KeyCode = vbKeyV Then
c
Command1.BackColor = vbGreen ' Pone el color verde al botón
c If
Ñnd
c
c Sub
Ñnd
c
c
ó Tenga
c en cuenta no haber codificado dentro del  Click, sino dentro del   P c
Key3ow .
c
c
c este momento solo hemos codificado dentro del procedimiento Key3ow , esto nos va a
Hasta
permitir probar la aplicación antes de codificar el   P cKeyUp.
c
c
ó Pulsa la tecla ÈF5] para correr la aplicación.
c
ó Pulse
c cada una de las teclas que muestra el cc P .
c
Usted puede observar que el cc P  permanece con el color seleccionado hasta que se
c
pulsa otra tecla. Ñsto es, porque no se ha codificado aun el procedimiento KeyUp del c c
P  que nos va ha permitir restablecer el color inicial o el color por defecto que tenia el botón
antes de ser cambiado.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c la aplicación haciendo clic en el botón Cerrar de la ventana.
ó Pare
c
ó Ahora estando en Pc c  ! vamos a codificar el procedimiento KeyUp del c c
Pc .
c
ó Haga doble clic sobre el cc P  y, a continuación, seleccione el evento KeyUp.
c
ó Aparecerá
c el procedimiento KeyUp como se muestra a continuación:
c
Private Sub Command1 KeyUp(KeyCode As Integer, Shift As Integer)
c
c
c
c Sub
Ñnd
c
c
ó Dentro del procedimiento escriba la siguiente línea de código:
c
c 'Pone el color por defecto del botón de comando
c
c Command1.BackColor = vbButtonFace
c
c
ó Ñl procedimiento codificado quedaría de la siguiente manera:
c
c
Private Sub Command1 KeyUp(KeyCode As Integer, Shift As Integer)
c
c 'Pone el color por defecto del botón de comando
c Command1.BackColor = vbButtonFace
c
c Sub
Ñnd
c
c
ó Pulse la tecla ÈF5] para correr la aplicación.
c
ó Pulse cada una de las teclas que muestra el cc P 
c
ó Puede
c observar que el botón de comando toma su color inicial cuando se suelta la tecla que ha
sido pulsada.
c
c
ó Haga clic en el botón Cerrar de la ventana para detener la aplicación.
c
ó Guarde la aplicación con los nombres FormÑjercicio8-3 para el P  cy, Ñjercicio8-3 para el
c
proyecto.
c
c
Ñxplicació :
c
c se mencionó anteriormente, en esta aplicación hemos combinados los  Key3ow
Como
(Tecla Abajo) y KeyUp (Tecla Arriba). Dentro del procedimiento Key3ow utilizamos el
c
argumento KeyCode combinado con la sentencia ëf para verificar cada una de las teclas pulsada
porc el usuario. Ñstas teclas están representadas por constantes que ya hemos visto en las páginas
c
anteriores. Después de verificar cual fue la tecla presionada, entonces, hemos cambiado el  c
 c
c utilizando la propiedad BackColor y el nombre del color que representa la letra pulsada.
c
Por otro lado, se ha codificado el procedimiento del  KeyUp para restablecer el color inicial
c
del c c P  cuando el usuario suelta la tecla. Para esto también se ha cambiado el
 c  c  utilizando la propiedad BackColor y la constante vbBo Face (color por
defecto del cc P ).
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
KeyPress
c Ñste evento ocurre cuando el usuario presiona y suelta una tecla. Ñs un evento
c prácticamente similar al evento KeyUp con la única diferencia de sus argumentos.
c Ñl procedimiento KeyPress esta representado de la siguiente manera:
c
c Private Sub Objeto KeyPress(KeyAscii As Integer)
c
c
c Ñnd Sub
c
c Ñste evento solo posee un únicoc P llamado KeyAscii. Ñste Pto
c devuelve un entero que representa un código Aë de la tecla pulsada por el
c usuario. Ñs posible detectar cual es la tecla pulsada por el usuario combinado este
argumento con la sentencia ëf o Case. Por ejemplo:
c
c If KeyAscii = 65 Then DsgBox ("Se pulso la tecla A en mayúscula")
c
c Cuando se pulse la tecla A en mayúscula desde el teclado cuando el objeto tenga el
c enfoque, entonces, aparecerá un mensaje diciendo ³e plso la ecla A e
mayscla´. Ñsto es porque el valor 65 es un código Aë que representa la letra
c A en mayúscula.
c
c Ñste evento difícilmente usted tendrá que utilizarlo en los cc P , por
c tal razón me limitaré a dar ejemplo de este evento en este tipo de control. Dás
c adelante veremos una gama de ejemplos con este evento en otros tipos de
controles.
c
c
Mose3ow Ñstos dos eventos son similares a los eventos Key3ow y KeyUp, la única
c
y MoseUp diferencia es que Mose3ow y MoseUp se gestionan con el Douse y no con el
c teclado.
c
Ñlc eventoc Mose3ow ocurre cuando el usuario presiona un botón de Douse y
c cuando lo suelta ocurre el evento MoseUp. Ñstos dos eventos suelen utilizarse
c combinados para realizar operaciones distintas cuando el usuario presiona y suelta
c un botón del Douse.
c
c Ñstos dos procedimiento para vienen representado de la siguiente manera:
c 1) Private Sub Objeto DouseDown(Button As Integer, Shift As Integer, X As
c Single, Y As Single)
c
c
c Ñnd Sub
c
c Private Sub Objeto DouseUp(Button As Integer, Shift As Integer, X As
c 2) Single, Y As Single)
c
c
c Ñnd Sub
c
c Donde:

Bo : Ñste argumento almacena o devuelve un valor que representa el botón del
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
Douse que ha sido pulsado o soltado por el usuario. Ñl argumento Bo (Boó ) es un campo de
bitsc que puede tomar los valores 1, 2 y 4. Donde 1 representa el botón izquierdo del Douse, 2 el
botón derecho y 4 el botón central. Ñstos valores permiten identificar cual de los botones del Douse
fuec pulsado por el usuario sobre un objeto en una aplicación y, para realizar operaciones distintas
parac cada botón.
c
hif:
c Devuelve un entero que corresponde al estado de las teclas DAYÚS, CTRL y ALT cuando el
botón
c especificado en el argumento botón se presionó o se soltó. Ñstos valores corresponden a los
enteros 1, 2 y 4, respectivamente. Ñl valor 1 representa la tecla DAYÚS, el 2 la tecla CTRL y el 4 la
c ALT. Puede retroceder algunas páginas y repasar este argumento en los eventos Key3ow y
tecla
c
KeyUp estudiados anteriormente.
c
: cÑs un número que representa la coordenada horizontal actual del puntero del mouse dentro del
P
c   o .

Y: c Ñs un número que representa la coordenada vertical actual del puntero del mouse dentro del
c
P   o .
c
CMÑTARë: Utilice un procedimiento de evento Mose3ow o MoseUp para especificar acciones que ocurrirán
c
cuando se presione o se suelte un determinado botón del mouse. A diferencia de los eventos Click y 3blClick, los
c
eventos Mose3ow y MoseUp le permiten distinguir entre los botones primario, secundario y central. También
puede escribir código para combinaciones de teclado y mouse que utilicen los modificadores de teclado DAYÚS, CTRL
cy ALT.
c
c
TA 1: No utilice los eventos Mose3ow y MoseUp para dar efectos de pulsación a cc P . Utilice
c
controles de imágenes para realizar dichos efectos. Puede utilizar un control ëmae o PicreBox que responden de la
misma manera que los cc P .
c
c
c
TA 2: No utilice los eventos Mose3ow para realizar las operaciones que se deben realizar con el evento Click de
c determinado tipo de objeto. Si utiliza el evento Mose3ow y el evento Click en un mismo objeto, entonces, no
un
puede utilizar el evento Mose3ow para mostrar mensajes en otras ventanas o mostrar algún formulario, debido a
c el código que esta dentro del evento Click no se ejecutará. Ñsto es porque el evento Mose3ow intercepta el
que
c
evento Click, y como resultado el código de este último evento no se producirá.

c
c Ñjercicio:
c
Para este ejemplo utilizaremos un tipo de control que aun no hemos definido ni utilizado en las
c
aplicaciones anteriores realizadas en este libro. Ñste es el control ëmae que permite
c
seleccionar una imagen del disco duro y establecerla en el formulario como un objeto que responde
c mismos eventos de un cc P .
a los
c
Lac ventaja de utilizar un control ëmae es que podemos utilizar nuestros propios c c
P  que hayamos creado en cualquier editor grafico, ya sea PhotoShop, Paint, FreeHand, etc.
Porc ejemplo, podemos dibujar dos imágenes que representen un c c P , uno para su
c
estado inicial y otro para cuando se pulse, y luego cambiar estas imágenes con los eventos
c
Mose3ow y MoseUp.
c
c
Ñl siguiente ejemplo muestra una aplicación con cinco imágenes que representan los botones de
c
comando de la aplicación, Ñstas imágenes serán establecidas con cinco controles ëmae.
c
c
ó Abra un nuevo proyecto.
c
ó Dibuje
c en el formulario cinco controles ëmae del mismo tamaño (si hacer Copy ± Pase), tal y
como se muestra en la siguiente página:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Observe bien en la imagen anterior el tamaño del formulario y establézcale el mismo tamaño al
c
formulario de su aplicación. Si desea puede escribir en la propiedad Heih el valor 7065 y en la
c
propiedad Widh el valor 6000 que es el tamaño exacto del formulario de este ejercicio. Puede
c lo mismo con los cinco controles ëmae. Sus tamaños exactos son Heih = 1035 y Widh =
hacer
2025.
c Ñstablezca el mismo valor en cada una de las propiedades Heih y Widh de cada control
ëmae para que queden del mismo tamaño.
c
c
ó Ahora insertemos otros dos controles ëmae en cualquier parte del formulario (preferiblemente en
unac esquina). No importa el tamaño de estos últimos dos controles.
c
TA:
c Debemos de tener un total de siete controles ëmae agregado al formulario cuyos Pc
c   son Image1, Image2, Image3, Image4, Image5, Image6, Image7. Ñstos nombres lo
c
utilizaremos con mucha frecuencia en la codificación de esta aplicación.
c
c
ó Haga un solo clic en el sexto control ëmae (ëmae6). Seleccione la propiedad Visible y
establezca
c el valor False. Haga lo mismo con el séptimo control ëmae (ëmae7).
c
ó Seleccione nuevamente el sexto control ëmae (ëmae6). Busque y seleccione la propiedad
c
Picre y haga clic en el botón con los tres puntos suspensivos.
c
c
ó Busque la imagen llamada ëm03Cap3Àjp que se encuentra la carpeta ëmae es del disco de
este libro.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Seleccione
c nuevamente el séptimo control ëmae (ëmae7). Busque y seleccione la propiedad
Picre y haga clic en el botón con los tres puntos suspensivos.
c
c
ó Busque la imagen llamada ëm04Cap3Àjp que se encuentra la carpeta ëmae es del disco de
c libro.
este
c
ó Ñlc formulario tendrá un aspecto como el que se muestra a continuación:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c dos imágenes serán las imágenes que se establecerán cuando el usuario presione un botón
Ñstas
del Douse (Mose3ow ) y otra para cuando lo suelte (MoseUp). La imagen asignada en el
c
séptimo control ëmae (ëmae7) será la imagen que tendrá todos los botones de la aplicación
c
cuando esta se inicie, y también cuando el usuario suelte un botón del mouse. Ñsta será la imagen
c
principal, debido a que tiene el aspecto grafico de que esta arriba, es decir, sin haberse pulsado.
Porc otro lado, la imagen que posee el sexto control ëmae (ëmae6) será la imagen que se
establecerá
c en cada evento Mose3ow de los demás controles ëmae. Ñsta será la imagen que
indicará que el usuario ha pulsado uno de los botones de la aplicación.
c
c establecer la imagen que aparecerá en los controles Image1, Image2, Image3, Image4,
Para
c
Image5 cuando la aplicación se ejecute se tendrá que codificar el procedimiento del evento Goad
c
(cara) del formulario. Recuerde que estudiamos anteriormente que el evento Goad (cara) ocurre
antes
c que la aplicación sea ejecute completamente, esto permite realizar un sin número de
operaciones antes que el formulario principal de la aplicación se muestre en la pantalla.
c
ó Haga doble clic en cualquier parte del formulario. Aparecerá la ventana del  cc(  y el
cursor parpadeando dentro del procedimiento Goad del formulario.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Dentro
c del procedimiento Goad escriba las siguientes líneas de código:
'c Pone el título que aparece en la barra de título de la ventana
c
Form1.Caption = "Ñjercicio 9 m Botones grafico"
c
'c Cambia el color de fondo del formulario y le pone el color de los botones
c
Form1.BackColor = RGB(162, 162, 162)
c
'c Asigna la imagen del séptimo control Image (Image7) a los botones principales
c
Image1.Picture = Image7.Picture ' Ñn el primer botón se pone la séptima imagen
c
Image2.Picture = Image7.Picture ' Ñn el segundo botón se pone la séptima imagen
c
Image3.Picture = Image7.Picture ' Ñn el tercer botón se pone la séptima imagen
c
Image4.Picture = Image7.Picture ' Ñn el cuarto botón se pone la séptima imagen
c
Image5.Picture = Image7.Picture ' Ñn el quinto botón se pone la séptima imagen
c
c
ó Pulse la tecla ÈF5] para correr la aplicación.
c
ó La aplicación se verá como se muestra a continuación:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Si chace clic en cada uno de los botones del formulario no verá ningún cambio, debido a que no se
hac codificado su respectivo procedimiento de evento Mose3ow . Simplemente hemos puesto la
c
imagen del séptimo control ëmae (ëmae7) en los botones principales. Ahora vamos a codificar
para que cuando se haga clic en cada uno de los botones se cambie la imagen contenida en dicho
botón y se asigne la imagen del sexto control ëmae (ëmae6).

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Haga
c clic en el botón Cerrar de la ventana para detener la aplicación.
c
ó Haga clic en Form1 del 
  cc  para ver el formulario y sus controles.
c
ó Haga doble clic en el primer control ëmae (ëmae1). Aparecerá el procedimiento del evento Click
dec este control. Ñste evento no nos interesa, sino, el evento Mose3ow . Seleccione el evento
c
Mose3ow de la  ccc y escriba la siguiente línea de código:
c
Image1.Picture = Image6.Picture ' Ñn el primer botón se pone la sexta imagen
c c
c
c
ó Haga
c clic en Form1 del 
  cc .
c
ó Haga doble clic en el segundo control ëmae (ëmae2) y seleccione el evento Mose3ow .
c
Dentro del procedimiento escriba lo siguiente:
c
Image2.Picture = Image6.Picture ' Ñn el segundo botón se pone la sexta imagen
c
c
c
ó Haga clic en Form1 del 
  cc .
c
ó Haga
c doble clic en el tercer control ëmae (ëmae3) y seleccione el evento Mose3ow . Dentro
del procedimiento escriba lo siguiente:
c
c
Image3.Picture = Image6.Picture ' Ñn el tercer botón se pone la sexta imagen
c
c
c
ó Haga clic en Form1 del 
  cc .
c
ó Haga doble clic en el cuarto control ëmae (ëmae4) y seleccione el evento Mose3ow . Dentro
delc procedimiento escriba lo siguiente:
c
c
Image4.Picture = Image6.Picture ' Ñn el cuarto botón se pone la sexta imagen
c
c
ó Haga
c clic en Form1 del 
  cc .
c
ó Haga doble clic en el quinto control ëmae (ëmae5) y seleccione el evento Mose3ow . Dentro
delc procedimiento escriba lo siguiente:
c
Image5.Picture = Image6.Picture ' Ñn el quinto botón se pone la sexta imagen
c
c
c
ó Pulse la tecla ÈF5] para correr la aplicación.
c
ó Haga
c clic sobre cada uno de los botones de la aplicación.
c
Podrá observa que los botones cambian su imagen por la imagen que posee el sexto control ëmae
c
(ëmae6). Ñsto es porque se ha codificado cada uno de los procedimientos del evento Mose3ow
dec cada control ëmae. También puede observar que cuando hace clic en cada uno de los botones
dec la aplicación, la imagen que se asigna al botón permanece aún si el usuario ha soltado el botón
delc mouse. Ñs necesario que el botón vuelva a su estado inicial cuando el usuario suelte el botón
del mouse para que el efecto de pulsación se realice correctamente. Para esto debemos codificar
c
cada uno de los procedimientos del evento MoseUp de cada control ëmae y asignar dentro de
c la imagen que posee el séptimo control ëmae (ëmae7).
estos

ó Haga clic en el botón Cerrar de la ventana para detener la aplicación.


ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Haga
c clic en Form1 del 
  cc .
c
ó Haga doble clic en el primer objeto ëmae (ëmae1) y busque el evento MoseUp. Dentro de este
c
procedimiento escriba:
c
Image1.Picture
c = Image7.Picture ' Ñn el primer botón se pone la séptima imagen
c
c
ó Haga clic en Form1 del 
  cc .
c
ó Haga
c doble clic en el segundo objeto ëmae (ëmae2) y busque el evento MoseUp. Dentro de
este procedimiento escriba:
c
c
Image2.Picture = Image7.Picture ' Ñn el segundo botón se pone la séptima imagen
c
c
c
ó Haga clic en Form1 del 
  cc .
c
ó Haga doble clic en el tercer objeto ëmae (ëmae3) y busque el evento MoseUp. Dentro de este
c
procedimiento escriba:
c
Image3.Picture
c = Image7.Picture ' Ñn el tercer botón se pone la séptima imagen
c
c
ó Haga
c clic en Form1 del 
  cc .
c
ó Haga doble clic en el cuarto objeto ëmae (ëmae4) y busque el evento MoseUp. Dentro de este
c
procedimiento escriba:
c
Image4.Picture = Image7.Picture ' Ñn el cuarto botón se pone la séptima imagen
c
c
c
ó Haga clic en Form1 del 
  cc .
c
ó Haga
c doble clic en el quinto objeto ëmae (ëmae5) y busque el evento MoseUp. Dentro de este
procedimiento escriba:
c
Image5.Picture
c = Image7.Picture ' Ñn el quinto botón se pone la séptima imagen
c
c
ó Pulse
c la tecla ÈF5] para correr la aplicación.
c
ó Haga clic sobre cada uno de los botones de la aplicación.
c
Podrá
c observar que los botones vuelven a su estado normal después que el usuario suelta el botón
del mouse.
c
c
ó Haga clic en el botón Cerrar de la ventana para detener la aplicación.
c
ó Guarde
c la aplicación con los nombres FormÑjercicio9-3 para el P  cy, Ñjercicio9-3 para el
proyecto.
c
c
Ñxplicació :
c
Ñnc esta aplicación hemos codificado solo tres eventos: el evento Goad del formulario y los eventos
Mose3ow y MoseUp de los controles ëmae. Dentro del procedimiento Goad hemos escrito
una codificación muy fácil de entender, además de los comentarios agregados dentro de estos.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Lac primera línea de código Form1ÀCapio = "Ñjercicio 9 - Boo es ráfico" pone el titulo que
aparece
c en la barra de titulo de la ventana de la aplicación. Ñl texto escrito dentro de las comillas es
el texto que se muestra en la barra. La propiedad Capio la habíamos estudiado con anterioridad y
c
explicábamos que se utiliza para poner el texto que aparece dentro o sobre un control o formulario.
c
Lac segunda línea de código Form1ÀBackColor = R B(162, 162, 162) pone el color de fondo al
formulario.
c Ñn esta línea de código hemos utilizado una función que le puede parecer muy extraña.
Ñsta
c es la función R B (Red ree Ble) que permite hacer combinaciones de colores utilizando
los colores primarios (Rojo, Verde y Azul). Ñsta función es muy utilizada para obtener colores que
c c   no proporciona mediante constantes o valores en hexadecimal. Ñstos tipos de
 
c
combinaciones puede obtenerlos mediante opciones de los programas de edición de gráficos e
c
incluso, en Dicrosoft Word desde el menú Formato ± Fondo ± Dás colores« m Personalizado.
c
Ñl cpróximo bloque de código permite establecer la imagen que aparece en cada uno de los botones
de la aplicación:
c
c
ëmae1ÀPicre = ëmae7ÀPicre
c
ëmae2ÀPicre
c = ëmae7ÀPicre
c
ëmae3ÀPicre = ëmae7ÀPicre
c
ëmae4ÀPicre = ëmae7ÀPicre
c
ëmae5ÀPicre = ëmae7ÀPicre
c
c
Cada
c una de estas líneas de código tiene algo similar y es que todas tienen asignada la imagen del
séptimo control ëmae (ëmae7). Ñsta imagen se almacena en la propiedad Picre de los
c
controles ëmae. Si traducimos literalmente la primera línea de este bloque de código estaríamos
c
diciendo lo siguiente: Ga imae de ëmae1 Ñs ial a Ga imae de ëmae7.
c
Porc otro lado, se ha codificado el evento Mose3ow de cada objeto ëmae para establecer la
imagen
c que debe de tener dicho botón cuando el usuario presiona un botón del Douse. También
hemos codificado el evento MoseUp de cada objeto ëmae para establecer la imagen que deben
c los botones de la aplicación cuando el usuario suelte el botón del Douse. Para estos
tener
c
procedimientos utilizamos el mismo método del bloque de código anterior.
c
MoseMove
c Ñste evento ocurre mientras el usuario mueve el puntero del Douse sobre un
c objeto. Ñste evento es muy utilizado para dar efectos a imágenes y botones
gráficos. Ñl procedimiento para este evento posee los mismos P que
c conforman los procedimientos de los eventos Mose3ow y MoseUp. Puede
c utilizar estos argumentos de la misma manera que lo hemos estudiado
c anteriormente.
c
c Ñste evento es muy utilizado para dar efectos a imágenes y botones gráficos.
Por ejemplo, se puede crear una aplicación con un menú compuesto de c
c c P  y que estos cambien de color cada vez que el usuario coloque el
c puntero del mouse sobre cada uno de ellos.
c
c Ñjercicio:
c
Ñl siguiente ejercicio muestra una aplicación con cuatro botones de comando que cambian de color
c
cada vez que el usuario mueve el puntero del Douse sobre cada uno de ellos.
c
c
ó Abra un nuevo proyecto e inserte cuatro c c P . Los botones de comando deben
estar uno de bajo de otro y del mismo tamaño, tal y como se muestra en la figura de la página
siguiente:
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Seleccione uno por uno los botones de la aplicación y establezca el valor 1 ± raphical en la
c
propiedad yle. Ñsto es necesario para que los cc P  puedan cambiar de color.
c
c
ó Haga doble clic en cualquier parte del formulario. Aparecerá el cursor parpadeando dentro del
c
procedimiento Goad del formulario. Dentro de este procedimiento escriba el siguiente bloque de
código:
c
c
' Pone el título de la ventana
c
Form1.Caption = "Ñjercicio 10 m Botones gráfico"
c
'c Cambia el color de fondo del formulario y lo pone de color blanco
c
Form1.BackColor = vbWhite
c
c
' Ñl siguiente bloque de código cambia el color de los botones
c
c
Command1.BackColor = vbCyan ' Pone el color Cyan al primer botón
c
Command2.BackColor = vbCyan ' Pone el color Cyan al segundo botón
Command3.BackColor
c = vbCyan ' Pone el color Cyan al tercer botón
Command4.BackColor = vbCyan ' Pone el color Cyan al cuarto botón
c
c
c
c
TA: Si quiere puede cambiar el texto que aparece dentro de cada cc P  usando la propiedad Capio .
cc
c
ó Pulse la tecla ÈF5] para ejecutar la aplicación.
c
Usted puede observar que el color del formulario ha cambiado y también el color de los cc
c
P , esto es porque hemos modificado el   de cada uno de estos controles utilizando la
c
propiedad BackColor (Color de Fo do). Ahora necesitamos que los cc P  cambien
dec color cuando se coloque el puntero del mouse sobre cada uno de ellos. Para esto debemos
c
codificar el procedimiento del evento MoseMove de cada cc P .

ó Haga clic en el botón Cerrar de la ventana para detener la aplicación.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Haga
c clic en Form1 del 
  cc  para ver el formulario y sus controles.
c
ó Haga doble clic sobre el primer cc P  y seleccione el evento MoseMove. Dentro de
estec evento escriba la siguiente línea de código.
c
'c Verifica si el color es Cyan y le pone el color Amarillo
If Command1.BackColor = vbCyan Then Command1.BackColor = vbYellow
c
c
ó Haga doble clic sobre el segundo cc P  y seleccione el evento MoseMove. Dentro
delc evento escriba la siguiente línea de código.
c
'c Verifica si el color es Cyan y le pone el color Amarillo
Ifc Command2.BackColor = vbCyan Then Command2.BackColor = vbYellow
c
ó Haga
c doble clic sobre el tercer cc P  y seleccione el evento MoseMove. Dentro del
evento
c escriba la siguiente línea de código.

'c Verifica si el color es Cyan y le pone el color Amarillo


Ifc Command3.BackColor = vbCyan Then Command3.BackColor = vbYellow
c
c
ó Haga doble clic sobre el cuarto cc P  y seleccione el evento MoseMove. Dentro del
c
evento escriba la siguiente línea de código.
c
'c Verifica si el color es Cyan y le pone el color Amarillo
Ifc Command4.BackColor = vbCyan Then Command4.BackColor = vbYellow
c
ó Pulse
c la tecla ÈF5] para correr la aplicación.
c
ó Desplace el puntero del Douse sobre cada uno de los cc P . Puede observar que
a medida
c que coloca el Douse sobre cada uno de ellos estos cambian del color Cyan al color
Amarillo. Ñsto es porque hemos codificado dentro del evento MoseMove (Movimie o del
c
Mose) una línea de código que permite evaluar cual es el color actual del c c P  y
c establecer otro si se cumple la condición. Por ejemplo, la línea de código contenida en el
luego
c cc P :
primer
c
ëf Comma
c d1ÀBackColor = vbCya The Comma d1ÀBackColor = vbYellow
c
Si traducimos esta línea queremos decir:
c
i cBoo 1ÀColorFo do = Cya Ñ o ces Boo 2ÀColorFo do = Amarillo
c
Ñsc necesario utilizar una condición que nos permita verificar el color actual del cc P ,
debido a que si escribimos solamente Comma d1ÀBackColor = vbYellow cada vez que pasemos
c
el puntero del Douse sobre el c c P , entonces, el programa le asignará el color
c
Amarillo sin importar que este lo tenga. Ñntonces, se preguntará usted ¿Cuál es el problema?; el
c
problema es el siguiente: Aunque el programa se lo asigne correctamente y usted no note ningún
c si se detiene un poco y mueve constantemente el puntero del Douse sobre cualquier botón
error,
dec la aplicación notará un pequeño parpadeo que indica que se ha vuelto a asignar el color. Ñste
pequeño problema es poco visible con colores, pero si estamos cambiando alguna imagen gráfica
c
constantemente el problema será mucho más notorio. Ñn resumen, es recomendable utilizar
c
siempre una condición para evaluar el   actual del objeto, ya sea un color, un texto, un archivo
dec imagen u otro elemento.
c
Ñn esta aplicación es necesario que el color de los cc P  vuelva a Cyan cada vez
que el usuario desplace el puntero del Douse fuera de la superficie de cualquier botón. Para esto,

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
debemos
c codificar el evento MoseMove del formulario.
c
ó Haga clic en el botón Cerrar de la ventana para detener la aplicación.
c
ó Haga doble clic en cualquier parte del formulario y seleccione el evento MoseMove.
c
ó Dentro del procedimiento MoseMove del formulario escriba:
c
'c Verifica si el color de los botones es Amarillo y lo pone a Cyan
c
Ifc Command1.BackColor = vbYellow Then Command1.BackColor = vbCyan
c
If Command2.BackColor = vbYellow Then Command2.BackColor = vbCyan
c
Ifc Command3.BackColor = vbYellow Then Command3.BackColor = vbCyan
c
Ifc Command4.BackColor = vbYellow Then Command4.BackColor = vbCyan
cc
cc
ó Pulse
c la tecla ÈF5] para correr la aplicación.
c
ó Dueva el puntero del Douse sobre cada uno de los botones de la aplicación.
c
c
Puede observar que los c c P  toman su color inicial cada vez que el usuario
c
desplaza el puntero del Douse fuera de la superficie de cualquier botón. Ñsto es porque se ha
codificado
c dentro del evento MoseMove del formulario un bloque de código que verifica si los
cc P  tienen el color amarillo, en caso de ser así le asigna el color Cyan que es su
c
color inicial. Cada vez que el usuario mueve el puntero del Douse sobre el formulario, esta
c
codificación se ejecuta y verifica si alguno de los c c P  tiene el color Amarillo, si
c
encuentra que alguno tiene el color Amarillo, entonces, modifica su  c BackColor (Color de
Foc do)ccon el color Cyan.
c
ó Haga clic en el botón Cerrar de la ventana para detener la aplicación.
c
ó Guarde
c la aplicación con los nombres FormÑjercicio10-3 para el P  cy, Ñjercicio10-3 para
el cproyecto.
c
- 3À1À1À4 M
odos de los boo es de coma doÀ
c
Ñnc el Capilo 1 de este libro, definíamos los P  como funciones que viene programadas por
el ccreador del objeto o control. Ñstos son utilizado para realizar una tarea en es especifico, sin la
necesidad
c de ser programadas por el usuario. Todos los métodos son llamados desde código en
tiempo de ejecución a diferencia de algunas propiedades de los objetos. Al igual que existen
c
muchas propiedades compartidas por la mayoría de los objetos, también existen muchos métodos
c
comunes. A continuación, examinaremos algunos de ellos:
c
cM
odo 3escripció
Movec Permite modificar las propiedades Gef, Top, Widh y Heih en una única
c operación. Puede modificar todas al mismo tiempo o algunas de ellas. Ñl siguiente
c ejemplo modifica las propiedades Gef, Top y Widh de un cc P .
c
µ Sitúa el botón de comando en la esquina superior del formulario y modifica su
c anchura a 2000 twips.
c Command1.Dove 1, 1, 2000
c
Ñl primer valor es asignado a la propiedad Gef, el segundo a la propiedad Top y el
tercero a la propiedad Widh del cc P . Ñsta sentencia lo que hace es
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
resumir
c el uso de estas cuatro propiedades. Por ejemplo, el siguiente código es similar al ejemplo
anterior:
c
c
Command1.Top =1 µ Dodifica la posición superior del objeto.
c
Command1.Left =1 µ Dodifica la posición lateral del objeto.
c
Command1.Width = 2000 µ Dodifica la anchura del objeto a 2000 twips.
c
Ñsc preferible utilizar el método Move que realizar asignaciones individuales de propiedades por, al
menos dos razones: Ñsta operación es más rápida que realizar cuatro o tres asignaciones distintas
c desea modificar las propiedades Widh y Heih de un formulario, cada asignación individual
y si
dec la propiedad pondrá en marcha un evento Resize distinto, con lo que se sobrecargará mucho su
c
código.
c
c
CMÑTARë: Ñl método Move Sólo se requiere el argumento Gefc   . Sin embargo, para especificar otros
argumentos debe especificar todos los argumentos que le anteceden a dichos argumentos. Por ejemplo, no puede
c
especificar Widh   c c sin especificar Gef    c y Top  . Los argumentos siguientes que no se
c
especifiquen permanecen sin cambios.

c Ñjercicio:
c
Ñl csiguiente ejercicio muestra una aplicación con cinco cc P , donde uno de ellos
ubicará
c los otros cuatro en cada esquina de la ventana.
c
ó Abra un nuevo proyecto e inserte cinco c c P , tal y como se ve en la siguiente
c
figura:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Haga doble clic sobre el tercer cc P .
c
ó Dentro del procedimiento Click del tercer c c P , escriba el siguiente bloque de
c
código:
c
Command1.Dove
c 1, 1, 1000 ' Posiciona el primer botón en la esquina superior izquierda
Command2.Dove
c 4600, 1, 1000 ' Posiciona el segundo botón en la esquina superior derecha
Command4.Dove 1, 4100, 1000 ' Posiciona el cuarto botón en la esquina inferior izquierda
Command5.Dove 4600, 4100, 1000 ' Posiciona el quinto botón en la esquina inferior derecha

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Pulse
c la tecla ÈF5] para ejecutar la aplicación.
c
ó Haga clic en el tercer cc P  (Command3).
c
Puede observar como los demás c c P  se posicionan en cada esquina del
c
formulario. También hemos codificado para cambiar el tamaño de cada cc P .
c
ó Haga
c clic en el botón Cerrar de la ventana para detener la aplicación.
c
ó Guarde la aplicación con los nombres FormÑjercicio11-3 para el P  cy, Ñjercicio11-3 para
el cproyecto.
c
Ñxplicació :
c
Ñnc el bloque de código anterior no hemos escrito nada complejo o difícil de entender. Simplemente,
secha utilizado el método Move para modificar las propiedades Gef, Top y Widh de cada cc
Pc . Pero bien, se preguntará ¿Como he obtenido los valores que posicionan cada cc
Pc  en cada esquina del formulario?, esto es algo muy sencillo; usted puede obtener los
valores de cualquier propiedad de un objeto en c c  !. Por ejemplo, para realizar el
c
ejercicio anterior, he colocado en c c  ! cada uno de los c c P  en las
c
esquinas del formulario y he copiado en hoja de papel los valores de las propiedades Gef y Top.
c
Luego situé los c c P  donde estaban anteriormente. Después de obtener estos
c
valores, se ha codificado dentro del procedimiento Click del tercer c c P  que es el
botón
c que modifica los estados de los demás cc P .
c
Ñn cada línea de código del bloque anterior, podrá observar que el último valor de cada sintaxis no
c Ñsto es, porque es el valor de la propiedad Widh (A chra) debe de ser el mismo para que
varía.
c cc P  tenga el mismo tamaño. Ñste valor lo he tomado por conveniencia, no es
cada
unc valor constante. Usted puede modificar este valor y asignar el tamaño deseado a cada cc
Pc .
c
Refresh Ñste P  dibuja nuevamente un control o formulario, es decir, actualiza el
c aspecto grafico del control. Ñn muy pocas ocasiones es necesario utilizar este
P  debido a que   c  refresca automáticamente el aspecto gráfico del
c
control siempre que tiene la oportunidad.
c
c Utilice este método cuando desee hacer lo siguiente:
c
c à Dostrar información de una variable u otro objeto mientras se este
c ejecutando un proceso o un procedimiento.
c à Actualizar rápidamente el texto de un Gabelc o un TexBox para mostrar
c los valores obtenidos en un  c    .
c
c à Presentar completamente un formulario mientras se carga otro.
c
c
à Actualizar el contenido de un cuadro de lista del sistema de archivos,
c como un control FileGisBox.
c
c à Actualizar las estructuras de datos de un control 3aa.
c
eFocs
c Dueve el   de entrada al control especificado, es decir, hace que el programa
coloque su atención en dicho control. Un objeto tiene elc  cuando el programa
c muestra de una u otra forma que el objeto esta esperando alguna acción por el
c usuario. Por ejemplo, una  c c 
 tiene el enfoque cuando el cursor esta
parpadeando sobre ella. Ñste es un P  muy utilizado en la mayoría de los
controles, pero muy pocas veces en los cc P .
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Zrder
c Permite colocar un control o un formulario por debajo o por encima de otros objetos
c dentro de su nivel grafico. Ñl orden de colocación de los objetos sobre un
contenedor recibe el nombre de .
c
c  formao es:
c
c ObjetoÀZrder  c
c
3o de:
c
c bjeo: Ñspecífica el nombre del objeto al cual se quiere cambiar el .
c Posició : Un numero entero que indica si el objeto estará sobre otros objetos o por
c debajo de otros objetos. Si   es 0 o se omite, entonces, el objeto o control se
c coloca por encima de todos los objetos. Si   es 1, el objeto se coloca por
c debajo de todos los objetos.
c
c TA: No podrá colocar un control lihweih sobre un control esá dar, debido a que los controles
lihweih se colocan en una dimensión menor a los controles esá dar. Ñntre los principales
c controles lihweih tenemos: Gabel, hape, ëmae y Gi e.
c
c Ñjercicio:
Ñl c siguiente ejercicio muestra una aplicación que permite cambiar el ordenmz de un c c
Pc  que se encuentra en conjunto con otros cc P .
c
c
ó Abra un nuevo proyecto e inserte dos cc P , uno encima del otro, tal y como se ve
enc la primera selección de la siguiente figura:
c
c
c
c 
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Coloque ahora otros dos cc P  la parte inferior del formulario (selección 2).
c
ó Seleccione el tercer cc P  y en la propiedad Capio escriba Arriba.
c
ó Seleccione el cuarto cc P  y en la propiedad Capio escriba Abajo.
c
ó Haga doble clic sobre el tercer cc P  y en el procedimiento Click escriba la siguiente
línea de comando:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
Command1.ZOrder 0 ' Coloca el botón 1 por encima del botón 2
c
c
ó Haga
c doble clic sobre el cuarto cc P  y en el procedimiento Click escriba:
c
Command1.ZOrder 1 ' Coloca el botón 1 por debajo del botón 2
c
c
ó Pulse la tecla ÈF5] para correr la aplicación.
c
ó Haga
c clic en los botones Abajo y Arriba.
c observar como el primer cc P  se coloca por encima o por debajo del segundo
Podrá
cc P
c . Ñsto es porque se ha modificado el  del primer cc P . Ñn
caso
c de haber modificado el ordenmz del segundo cc P  en vez del primero el resultado
hubiese sido lo mismo.
c
c
ó Haga clic en el botón Cerrar de la ventana para detener la aplicación.
c
ó Guarde la aplicación con los nombres FormÑjercicio12-3 para el P  cy, Ñjercicio12-3 para
el cproyecto.
c
c
CMÑTARë: Ñn modo de diseño puede utilizar la combinación Crl+J para situar delante el control seleccionado y la
c
combinación Crl+K para situar detrás el control.
c
c
- 3À1À1À5 Ñjercicios prácicos
c
c } Ñl siguiente ejercicio muestra una aplicación con cuatro controles ëmae que cambian la
c imagen cada vez que el usuario desplaza el puntero del Douse sobre cada uno de ellos.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Para
c realizar esa aplicació realice los siie es pasos:
c
ó Abra un nuevo proyecto.
c
ó Dodifique
c el tamaño del formulario y dibuje cuatro controles ëmae del mismo tamaño, cada uno
debajo del otro (no muy junto), tal y como se ve en la primera selección de la siguiente figura:
c
c
c
c
c 
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Dibuje otros dos controles ëmae (Image5, Image6), tal y como se ve en la segunda selección de
c
la figura anterior.
c
ó Seleccione
c el quinto control ëmae (Image5) y en la propiedad Visible establezca el valor False.
Ñn la propiedad Picre especifique la imagen llamada ëm05Cap3Àjp que se encuentra la
c
carpeta ëmae es del disco de este libro.
c
c
ó Seleccione el sexto control ëmae (Image6) y en la propiedad Visible establezca el valor False.
Ñnc la propiedad Picre especifique la imagen llamada ëm06Cap3Àjp de la carpeta ëmae es.
c
ó Haga doble clic sobre cualquier parte del formulario y dentro del procedimiento Goad escriba el
c
siguiente bloque de código:
c
c
µAsigna el color de fondo al formulario utilizando la función RGB.
c
Form1.BackColor = RGB(162, 162, 162)
c
µÑstablece
c la imagen inicial a los primeros cuatros controles Image.
µLa imagen inicial se encuentra asignada en el quinto control Image (Image5).
c
µÑstas imágenes aparecerán cuando inicie o cargue (Load) la aplicación.
c
Image1.Picture = Image5.Picture ' Pone en el control Image1 la imagen inicial.
c
Image2.Picture = Image5.Picture ' Pone en el control Image2 la imagen inicial.
Image3.Picture = Image5.Picture ' Pone en el control Image3 la imagen inicial.
Image4.Picture = Image5.Picture ' Pone en el control Image4 la imagen inicial.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Seleccione
c el evento MoseMove del formulario y escriba el siguiente bloque de código:
'c Asigna la imagen inicial a los primeros cuatros controles Image.
'c La imagen es asignada cuando el puntero del Douse pasa por el formulario.
c
If Image1.Picture = Image6.Picture Then Image1.Picture = Image5.Picture
c
If Image2.Picture = Image6.Picture Then Image2.Picture = Image5.Picture
Ifc Image3.Picture = Image6.Picture Then Image3.Picture = Image5.Picture
Ifc Image4.Picture = Image6.Picture Then Image4.Picture = Image5.Picture
c
c
ó Haga doble clic sobre el primer control ëmae (Image1) y seleccione el evento MoseMove.
c
Dentro de este evento escriba la siguiente línea de código:
c
'c Cambia y verifica la imagen contenida en Image1 y asigna la imagen del
'c sexto control Image (Image6).
c
If Image1.Picture = Image5.Picture Then Image1.Picture = Image6.Picture
c
c
ó Haga doble clic sobre el segundo control ëmae (Image2) y seleccione el evento MoseMove.
c
Dentro de este evento escriba la siguiente línea de código:
c
' Cambia y verifica la imagen contenida en Image2 y asigna la imagen del
'c sexto control Image (Image6).
c
Ifc Image2.Picture = Image5.Picture Then Image2.Picture = Image6.Picture
c
ó Haga
c doble clic sobre el tercer control ëmae (Image3) y seleccione el evento MoseMove.
Dentro
c de este evento escriba la siguiente línea de código:
'c Cambia y verifica la imagen contenida en Image3 y asigna la imagen del
'c sexto control Image (Image6).
c
If Image3.Picture = Image5.Picture Then Image3.Picture = Image6.Picture
c
c
ó Haga doble clic sobre el cuarto control ëmae (Image4) y seleccione el evento MoseMove.
c
Dentro de este evento escriba la siguiente línea de código:
c
'c Cambia y verifica la imagen contenida en Image4 y asigna la imagen del
'c sexto control Image (Image6).
c
If Image4.Picture = Image5.Picture Then Image4.Picture = Image6.Picture
c
c
ó Pulse la tecla ÈF5] para correr la aplicación.
c
ó Desplace el puntero del Douse sobre cada uno de los botones de la aplicación. Podrá observar
c cada cc P  cambian de apariencia a medida que el usuario desplaza el puntero
como
c cada uno de ellos.
sobre
c
ó Haga
c clic en el botón Cerrar de la ventana para detener la aplicación.
c
ó Guarde la aplicación con los nombres FormÑjercicio13-3 para el P  cy, Ñjercicio13-3 para
el cproyecto.
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
A calice cada  o de los procedimie os codificados e el prorama a erior y co ese las
siie es pre as:
c
c
c 1. ¿Cuáles eventos fueron codificados en la aplicación?
c
c 2. ¿Cuándo ocurre el evento Goad de los formularios y establezca la importancia de este?
c
c
c 3. Ñnumere la función de cada una de las líneas de código escrita dentro del procedimiento
del evento Goad.
c
c
c 4. ¿Cuánto controles ëmae fueron utilizados en la aplicación?
c
c
5. Diga la función de los primeros cuatros controles ëmae.
c
c
c 6. Diga la función de los dos últimos controles ëmae (Image5, Image6).
c
c
7. ¿Por qué hemos puesto invisible los dos últimos controles ëmae?
c
c
c 8. ¿Cuál es la utilidad que hacemos de la propiedad Picre en la aplicación?
c
c
9. ¿Por qué hemos codificado el evento MoseMove del formulario?
c
c
c 10. Ñxplique cada una de las líneas de código escrita dentro del procedimiento MoseMove del
c formulario.
c
c 11. ¿Cuál evento fue codificado en los primeros cuatro controles ëmae?
c
c
c 12. Ñxplique cada una de las líneas escritas dentro de estos procedimientos.
c
c 13. ¿Cuál es la utilidad de la sentencia If m Then?
c
c
c 14. ¿Para que utilizamos la sentencia RGB?
c
c 15. ¿Cuál es la importancia de la sentencia RGB?
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
} c Ñn la siguiente aplicación hemos creado un teclado virtual similar al que vemos en los
c programas de mecanografía.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c realizar esa aplicació ejece los siie es pasos:
Para
c
c à Abra un nuevo proyecto.
c
à Ahora modifiquemos el tamaño del formulario. Ñscriba en la propiedad Heih el valor 3780
c y en la propiedad Widh el valor 6540. TA: Ñstos valores no son constantes ni
c obligatorio, les estoy especificando el valor para que la aplicación quede tal y como la he
c realizado en mi computador. Cuando usted tenga como proyecto realizar algún programa
c de mecanografía, estos valores serán el que usted considere para su teclado virtual.
c
c à Inserte un control PicreBox y dibujelo casi del mismo tamaño del formulario. O bien,
c escriba en Heih: 3015 y en Widh: 6255.
c à Dibuje 33 Comma dBo dentro del control PicreBox. Todos del mismo tamaño,
c menos el de la barra espaciadora. Ñste debe ser mucho más grande, tal y como se ve en la
c imagen. TA: Si usted opta por hacer Copy ± Pase, entonces, cuando haga Pase
c aparecerá una ventana preguntándole si desea crear un Arrays (arreglo) de controles,
c respondale que , para que no se creen índices en los botones.
c
à Ñstablezca los siguientes valores en cada una de las propiedades de los botones de
c comando.
c
c u  
c  c  c
c u c
c  c !c"c
  c c#   c
c
c c
c u $ c %c
c  c %c
c c c !c"c

c c c#   c
c
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
cu   u  
c
 &c  c  &c   c
c u c u c
 c !c"c  c !c"c
c   c c#   c   c c#   c
c c c
c
 "c  'c  "c  c
c u 'c u c
c  c !c"c  c !c"c
c   c c#   c   c c#   c
c c c c
c
 (c c  (c #c
 
c u c u #c
c  c !c"c  c !c"c
c   c c#   c   c c#   c
c c c c c
 )c
c  *c  )c  c
u *c u c
c  c !c"c  c !c"c
c   c c#   c   c c#   c
c c c c c
c
 +c  ,c  +c  0c
c u ,c u 0c
c  c !c"c  c !c"c
  c c#   c   c c#   c
c
c c c c
c
 -c  c  -c  1c
c u c u 1c
c  c !c"c  c !c"c
c   c c#   c   c c#   c
c c c c c
 .c  c  .c  c
c u c u c
c  c !c"c  c !c"c
c   c c#   c   c c#   c
c c c
c c c c c
 /c
c  c  2/c  * c
u c u c
c  c !c"c  c !c"c
c   c c#   c   c c#   c
c c c
c c c c c
c
 c   c  2c  3c
u c u 3c
c  c !c"c  c !c"c
c   c c#   c   c c#   c
c c c
c
u $ c c u $ c 4c
c  c c  c 4c
c c c !c"c c c !c"c

c c c#   c 
c c c#   c
c c c c c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
cu   u  
c
 2&c  c u $ c  c
c u c  c c
 c !c"c c c !c"c
c   c c#   c 
c c c#   c
c c c
c
 2"c  c
c u c
c  c !c"c
c   c c#   c
c c
c
 2(c c

c u c
c  c !c"c
c   c c#   c
c c c
 2)c
c  $c
u $c
c  c !c"c
c   c c#   c
c c c
c
 2+c  c
c u c
c  c !c"c
  c c#   c
c
c c
c
 2-c   c
c u c
c  c !c"c
c   c c#   c
c c c
 2.c  c
c u
c
c  c !c"c
c   c c#   c
c c
c c c
 &/c
c  c
u c
c  c !c"c
c   c c#   c
c c
c c c
c
 &c   c
u  c
c  c !c"c
c   c c#   c
c c
c
u $ c  c
c  c c
c c c !c"c

c c c#   c
c c c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Después
c de haber colocado todos los controles necesitamos codificar el evento Key3ow del
PicreBox para leer las teclas que son pulsadas por el usuario. A partir de las teclas leídas el
c
programa irá cambiando el color de cada cc P .
c
c
ó Haga doble clic sobre el PicreBox (Picture1), y seleccione el evento Key3ow .
c
ó Ñscriba el siguiente bloque de código:
c
c este procedimiento esta codificado todo lo relacionado
'Ñn
c
'para cuando se pulse una tecla como lo dice su evento
c
'KeyDown (Tecla Abajo).
c
µÑl
c siguiente bloque de código pone el color del botón en verde
µsegún la tecla pulsada.
c
c
If KeyCode = vbKeyQ Then cmdQ.BackColor = vbGreen
c
If KeyCode = vbKeyW Then cmdW.BackColor = vbGreen
c
If KeyCode = vbKeyÑ Then cmdÑ.BackColor = vbGreen
c
If KeyCode = vbKeyR Then cmdR.BackColor = vbGreen
c
If KeyCode = vbKeyT Then cmdT.BackColor = vbGreen
c
If KeyCode = vbKeyY Then cmdY.BackColor = vbGreen
c
If KeyCode = vbKeyU Then cmdU.BackColor = vbGreen
c
If KeyCode = vbKeyI Then cmdI.BackColor = vbGreen
c
If KeyCode = vbKeyO Then cmdO.BackColor = vbGreen
c
If KeyCode = vbKeyP Then cmdP.BackColor = vbGreen
c
If KeyCode = vbKeyA Then cmdA.BackColor = vbGreen
c
If KeyCode = vbKeyS Then cmdS.BackColor = vbGreen
c
If KeyCode = vbKeyD Then cmdD.BackColor = vbGreen
c
If KeyCode = vbKeyF Then cmdF.BackColor = vbGreen
c
If KeyCode = vbKeyG Then cmdG.BackColor = vbGreen
c
If KeyCode = vbKeyH Then cmdH.BackColor = vbGreen
c
If KeyCode = vbKeyJ Then cmdJ.BackColor = vbGreen
c
If KeyCode = vbKeyK Then cmdK.BackColor = vbGreen
c
Ifc KeyCode = vbKeyL Then cmdL.BackColor = vbGreen
Ifc KeyCode = 192 Then cmdPuntoYComa.BackColor = vbGreen
Ifc KeyCode = vbKeyZ Then cmdZ.BackColor = vbGreen
Ifc KeyCode = vbKeyX Then cmdX.BackColor = vbGreen
Ifc KeyCode = vbKeyC Then cmdC.BackColor = vbGreen
Ifc KeyCode = vbKeyV Then cmdV.BackColor = vbGreen
Ifc KeyCode = vbKeyB Then cmdB.BackColor = vbGreen
Ifc KeyCode = vbKeyN Then cmdN.BackColor = vbGreen
Ifc KeyCode = vbKeyD Then cmdD.BackColor = vbGreen
Ifc KeyCode = 188 Then cmdComa.BackColor = vbGreen
Ifc KeyCode = 190 Then cmdPunto.BackColor = vbGreen
Ifc KeyCode = 111 Then cmdSlash.BackColor = vbGreen
Ifc KeyCode = vbKeyControl Then cmdCtrl.BackColor = vbGreen
Ifc KeyCode = vbKeySpace Then cmdBarra.BackColor = vbGreen
If Shift = vbAltDask Then cmdAlt.BackColor = vbGreen

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Pulse
c la tecla ÈF5] para correr la aplicación. Podrá observar que en la pantalla aparece una
especie de teclado virtual que espera a que el usuario pulse alguna tecla. Si usted pulsa cualquier
c
tecla desde su teclado verá como las teclas se tornan de color verde. También notará que cuando
la ctecla es pulsada al menos una sola vez esta permanece con el color verde. Lo ideal sería que el
c del botón vuelva a su color original cuando la tecla pulsada sea soltada desde su teclado.
color
c
ó Para
c que las teclas tornen a su color normal, detenga la aplicación y codifique el evento KeyUp
(Tecla arriba) del PicreBox con el siguiente bloque de código:
c
c
'Ñl
c siguiente bloque de código pone el color normal de las teclas pulsadas.
Ifc KeyCode = vbKeyQ Then cmdQ.BackColor = vbButtonFace
Ifc KeyCode = vbKeyW Then cmdW.BackColor = vbButtonFace
Ifc KeyCode = vbKeyÑ Then cmdÑ.BackColor = vbButtonFace
Ifc KeyCode = vbKeyR Then cmdR.BackColor = vbButtonFace
Ifc KeyCode = vbKeyT Then cmdT.BackColor = vbButtonFace
Ifc KeyCode = vbKeyY Then cmdY.BackColor = vbButtonFace
c
If KeyCode = vbKeyU Then cmdU.BackColor = vbButtonFace
c
If KeyCode = vbKeyI Then cmdI.BackColor = vbButtonFace
c
If KeyCode = vbKeyO Then cmdO.BackColor = vbButtonFace
c
Ifc KeyCode = vbKeyP Then cmdP.BackColor = vbButtonFace
Ifc KeyCode = vbKeyA Then cmdA.BackColor = vbButtonFace
Ifc KeyCode = vbKeyS Then cmdS.BackColor = vbButtonFace
Ifc KeyCode = vbKeyD Then cmdD.BackColor = vbButtonFace
Ifc KeyCode = vbKeyF Then cmdF.BackColor = vbButtonFace
Ifc KeyCode = vbKeyG Then cmdG.BackColor = vbButtonFace
Ifc KeyCode = vbKeyH Then cmdH.BackColor = vbButtonFace
Ifc KeyCode = vbKeyJ Then cmdJ.BackColor = vbButtonFace
c
If KeyCode = vbKeyK Then cmdK.BackColor = vbButtonFace
c
If KeyCode = vbKeyL Then cmdL.BackColor = vbButtonFace
c
If KeyCode = 192 Then cmdPuntoYComa.BackColor = vbButtonFace
c
Ifc KeyCode = vbKeyZ Then cmdZ.BackColor = vbButtonFace
Ifc KeyCode = vbKeyX Then cmdX.BackColor = vbButtonFace
Ifc KeyCode = vbKeyC Then cmdC.BackColor = vbButtonFace
Ifc KeyCode = vbKeyV Then cmdV.BackColor = vbButtonFace
Ifc KeyCode = vbKeyB Then cmdB.BackColor = vbButtonFace
Ifc KeyCode = vbKeyN Then cmdN.BackColor = vbButtonFace
Ifc KeyCode = vbKeyD Then cmdD.BackColor = vbButtonFace
Ifc KeyCode = 188 Then cmdComa.BackColor = vbButtonFace
c
If KeyCode = 190 Then cmdPunto.BackColor = vbButtonFace
c
If KeyCode = 111 Then cmdSlash.BackColor = vbButtonFace
c
If KeyCode = vbKeyControl Then cmdCtrl.BackColor = vbButtonFace
c
If KeyCode = vbKeySpace Then cmdBarra.BackColor = vbButtonFace
c
Ifc Shift = vbAltDask Then cmdAlt.BackColor = vbButtonFace

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
ó Ñjecute nuevamente la aplicación.
c algunas teclas desde su teclado y observará que los botones que representan las teclas
Pulse
c
pulsadas vuelven a su color original cuando esta es soltada desde su teclado.
c
ó Detenga la aplicación y guárdela con los nombres FormÑjercicio14-3 para el P  c y,
c
Ñjercicio14-3 para el proyecto.
c
c
A alice cada  o de los procedimie os codificados e el prorama a erior y co ese cada
 ca de las pre as de la pái a siie e:
c
c 1. ¿Cuáles eventos fueron codificados en el programa anterior?
c
c
c 2. ¿Por qué se codificó el evento KeyUp y no solo el evento Key3ow ?
c
c 3. ¿Cuál es la función del bloque de código del evento Key3ow ?
c
c
4. ¿Qué cambio de código usted ve en los procedimientos de los eventos KeyUp y
c Key3ow ?
c
c 5. Ñxplique porque las teclas vuelven a su color original.
c
c
c 6. ¿Por qué hubo la necesidad de utilizar algunos números delante del argumento KeyCode?
c
c 7. ¿Por qué utilizamos el argumento hif para leer la tecla ALTÑRNA en vez de utilizar el
c evento KeyCode?
c
c 8. ¿Cuál es la función de las constantes vb ree y vbBo Face?
c
c
c 9. Ñxplique la necesidad de utilizar un objeto PicreBox para agregar los c c
P .
c
c
c
c 10. ¿Por qué no codificamos el evento KeyPress en vez de los eventos KeyUp y Key3ow ?
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
- 3À2À1
c Gas eiqeas (Gabels)
c
Una   o ,  es un objeto gráfico que se coloca en una parte determinada de un
c
contenedor para mostrar un texto que no puede ser modificado directamente por el usuario. Las
 c  son utilizadas principalmente para mostrar textos en la pantalla. Pero no están limitadas
c a esto, pueden ser utilizadas para múltiples operaciones como: opciones de menús, botones
solo
dec comando, barras de progreso, marquesinas, banners, etc. Ñn este libro no limitaremos el uso de
las etiquetas, les daremos múltiples uso tal y como se mencionó anteriormente.
c
Lasc   , al igual que los c c P  poseen una gran cantidad de propiedades,
c
métodos y eventos. La mayoría de las propiedades, métodos y eventosc de las    son las
c
mismas que las de los c c P  y su comportamiento es también el mismo. Nos
limitaremos
c a definir las propiedades, métodos y eventos más importantes de las   , debido
a que las demás han sido definidas en los cc P .
c
c
- 3À2À1À1 Propiedades de las eiqeas
c
c
Lasc    oc,  poseen un gran número de propiedades como cualquier otro objeto de   c
 c , pero solo algunas de estas son utilizadas frecuentemente por el programador. Ñntre las
propiedades más importantes de las    tenemos: Capio , Aoize, BackColor,
c
Backyle, Fo , ForeColor y WordWrap. Usted puede notar que algunas de las propiedades
c
mencionadas anteriormente se encuentran también en los c c P c (  c
 c *( crcr( , pero otras son propias de las   c.' cÎÎ .
c
A continuación,
c definiremos las propiedades más utilizadas e importantes de las   :
c
Propiedad 3escripció
c
Capio
c Al igual que en los cc P , esta propiedadcse utiliza para mostrar un
texto sobre un objeto o control colocado sobre un  (Formulario, Frame,
c
Picture, etc). Ñl texto que se escribe en esta propiedad puede ser un campo de
c una base de datos, un mensaje, algún estado de progreso, una combinación de
c teclas, un enlace a una página Web, una opción de menú, etc.
c
c CMÑTARë: Utilice la propiedad Ali me  para justifica el texto escrito en la propiedad
Capio . 0 ± Justifica a la izquierda, 1 ± Justifica a la derecha y 2 ± Justifica en el centro. c
c
c Ñjercicio:
c
ó Abra un nuevo proyecto e inserte cinco Ñtiquetas (Label1, Label2, Label3, Label4, Label5) en el
c
formulario. Tal y como se ve en la siguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Seleccione
c la primera Ñtiqueta (Label1) y en la propiedad Capio escriba: HORA Y FÑCHA DÑL
SISTÑDA.
c
ó Seleccione la segunda Ñtiqueta (Label2) y en la propiedad Capio escribe: HORA:
c
ó Seleccione
c la tercera Ñtiqueta (Label3) y borre el texto que tiene en la propiedad Capio : ,  4
c
ó Seleccione la cuarta Ñtiqueta (Label4) y en la propiedad Capio escriba: FÑCHA:
c
ó Seleccione la quinta Ñtiqueta (Label5) y borre el texto que tiene en la propiedad Capio : Label5.
c
Los c controles sobre el formulario deben tener una apariencia similar a esta:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Ahora utilizaremos las dos Ñtiquetas (Label3 y Label4) que no contienen ningún texto para mostrar
la chora y la fecha del sistema. Para esto utilizaremos las sentencias Time y 3ae. La primera
c
obtiene la hora del sistema y la segunda la fecha. Los valores obtenidos por estas dos sentencias
serán
c asignados en la propiedad Capio de la etiqueta correspondiente a la fecha y a la hora.
c
Necesitamos que la fecha y la hora aparezcan en los Label3 y Label4 respectivamente cuando se
c
ejecute la aplicación. Como usted recordará el único evento que ocurre cuando el formulario es
c
totalmente mostrado en la pantalla es el evento Goad (Cara) del formulario. Nuestro código debe
serc escrito dentro de este evento.
c
ó Haga
c doble clic sobre cualquier parte del formulario teniendo en cuenta que no puede hacer doble
clic sobre ninguna de las Ñtiquetas.
c
c
ó Dentro del procedimiento Goad del formulario escriba las siguientes líneas de código:
cLabel3.Caption = Time ' Fija la hora en el Label3
c
Label5.Caption = Date ' Fija la fecha en el Label5
c
c
ó Pulse la tecla ÈF5] para correr la aplicación.
c
Podrá notar como aparece la hora y la fecha del sistema en las etiquetas Label3 y Label5. Ñsto es
c
porque hemos especificado que el valor obtenido por las sentencias Time y 3ae se asignen en la
c
propiedad Capio de cada una de estas etiquetas.
c
c
CMÑTARë: Comúnmente utilizará las etiquetas para mostrar textos o valores obtenidos de algún proceso o alguna
función,
c tal y como se pudo apreciar en el ejercicio anterior.
cc
ó Guarde la aplicación con los nombres FormÑjercicio15-3 para el P  cy, Ñjercicio15-3 para
el proyecto.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Pc ropiedad 3escripció
c
Aoize Ñn ocasiones el texto escrito en la propiedad Capio de unac   excede al
c tamaño de la misma esto dificulta en gran manera la escritura de textos muy
c largos. Para que una etiqueta se ajuste al tamaño del texto escrito en la propiedad
Capio debe establecer el valor Tre en la propiedad Aoize de lac   .
c Por ejemplo, si en la propiedad Capio de una   c usted escribe el texto
c ³DICROSOFT VISUAL BASIC 6.0´ y el tamaño de la   no es
c suficientemente grande para mostrar el texto, entonces, pasaría algo similar a lo
c mostrado en la siguiente figura:
c
c
c
c
c
c
c Ñsto ocurriría si el valor de la propiedad Aoize esta establecido a False. Por
c otro lado, si establece el valor Tre en la propiedad Aoize el control se
c ajustaría al tamaño del texto. Véalo en la siguiente figura:
c
c
c
c
c
c
c
c CMÑTARë: A medida que va escribiendo en la propiedad Capio de una   el valor
de la propiedad Widh aumenta o disminuye si el valor de la propiedad Aoize esta
c establecido a Tre.c
c
c
BackColor Ñstablece el color de fondo de la Ñiqea cuando el valor de la propiedad
c Backyle esta establecido a 1 ± paqe. Siempre que inserte una nueva
c Ñtiqueta a un formulario podrá cambiar el color de fondo en la propiedad
BackColor sin tener que modificar el valor de la propiedad Backyle, debido a
c que el valor por defecto de esta propiedad es 1 ± paqe.
c Ñjercicio:
c un nuevo proyecto e Inserte 5 Ñtiquetas tal y como se ve en la siguiente figura:
ó Abra
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Seleccione
c una por una lasc    y busque la propiedad Aoize y establezca su valor a
Tre.
c
ó Ñn la propiedad Capio de la primera   escriba: ÑSTOY DÑ COLOR ROJO.
c
c la propiedad Capio de la segunda   escriba: ÑSTOY DÑ COLOR AZUL.
ó Ñn
c la propiedad Capio de la tercera   escriba: ÑSTOY DÑ COLOR BLANCO.
ó Ñn
c la propiedad Capio de la cuarta   escriba: ÑSTOY DÑ COLOR VÑRDÑ.
ó Ñn
c
ó Ñn la propiedad Capio de la quinta   escriba: ÑSTOY DÑ COLOR ADARILLO.
c
ó Seleccione
c la primera   y busque la propiedad BackColor y desde la ficha 
seleccione cualquier color rojo.
c
ó Seleccione la segunda   y busque la propiedad BackColor y desde la ficha 
c
seleccione cualquier color azul.
c
ó Seleccione la tercera   y busque la propiedad BackColor y desde la ficha 
c
seleccione el color blanco.
ó Seleccione
c la cuarta   y busque la propiedad BackColor y desde la ficha 
seleccione cualquier color verde.
c
ó Seleccione la segunda   y busque la propiedad BackColor y desde la ficha 
c
seleccione cualquier color amarillo.
c
Lasc etiquetas sobre el formulario deben tener una apariencia similar a la siguiente:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Guarde la aplicación con los nombres FormÑjercicio16-3 para el P  cy, Ñjercicio16-3 para
el cproyecto.
c
c
Backyle Ñsta propiedad especifica si la   tendrá color de fondo o si totalmente
c transparente. Puede tomar los valores 1 ± paqe y 0 ± Tra spare . Ñl valor 1 -
c paqe es el valor por defecto de esta propiedad y especifica que el color que se
c especifique en la propiedad BackColor se asignará y se mostrará en la   .
Ñl segundo valor de esta propiedad indica que la   no tendrá ningún color
c
de fondo. Ñste valor es bastante usado por los programadores debido a que
c permite asignar textos sobre imágenes sin afectar ni opacar la parte de la imagen
c donde la Ñiqea es colocada.
c
c TA: La propiedad BackColor de la etiqueta se pasa por alto cuando el valor 0 ± Tra spare 
c esta establecido en la propiedad Backyle.
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c Ñjercicio:
c
La siguiente aplicación muestra un entorno gráfico compuesto de un menú con varias opciones.
c
Donde cada opción esta representado por una imagen gráfica en forma de botón y sobre cada
c
imagen una Ñtiqueta que describe cada una de las opciones del menú.
c
Al cconcluir el ejercicio tendremos una aplicación similar a la que se presenta en la siguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Para
c realizar la aplicación anterior siga los siguientes pasos:
c
ó Abra un nuevo proyecto.
c
c la propiedad Heih del formulario escriba 3600 y en la propiedad Widh escriba 4800.
ó Ñn
c la propiedad Picre del formulario establezca la imagen ëm07Cap3Àjp de la carpeta
ó Ñn
ëmae
c es que se distribuye en el disco de este libro.
c
ó Inserte una Ñiqea (Gabel1) en cualquier parte del formulario. Ñstablezca los siguientes valores
enc las propiedades de la Ñtiqueta:
c
     
c c  c  c $,c'$ c c cc 
c
 c &2/c c &)/c   c c //-///// c cc

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
 

c 
c /c c   c
c
ó Inserte un control ëmae en cualquier parte del formulario y en la propiedad Picre establezca la
c
imagen ëm08Cap3À if de la carpeta ëmae es.
c
c
ó Busque la propiedad Gef de la imagen y establezca el valor 480. Ñn la propiedad Top establezca
el valor
c 1800.
c
ó Ahora hagamos una copia de la misma imagen para tener un segundo botón. Haga un clic
c
derecho sobre la imagen (ëmae1) y seleccione la opción Copy del menú contextual.
c
c
ó Haga clic derecho en cualquier parte del formulario y seleccione la opción Pase y en la pregunta
³Doc you want to create a control array?´, ³¿Quiere crear un arreglo control?´ conteste que o.
c
ó Ñn la nueva imagen (ëmae2) establezca en la propiedad Gef el valor 480. Ñn la propiedad Top
c
establezca el valor 2520.
c
c
ó Agreguemos el tercer botón del menú. Haga clic derecho en cualquier parte del formulario y
seleccione
c la opción Pase, y a continuación, conteste o a la pregunta.
c
ó Ñn la tercera imagen (Image3) establezca en la propiedad Gef el valor 480. Ñn la propiedad Top
c
establezca el valor 2340.
c
c
ó Agreguemos el cuarto botón del menú. Haga clic derecho en cualquier parte del formulario y
seleccione
c la opción Pase, y a continuación, conteste o a la pregunta.
c
ó Ñn la cuarta imagen (Image4) establezca en la propiedad Gef el valor 480. Ñn la propiedad Top
c
establezca el valor 3960.
c
c
ó Agreguemos el quinto botón del menú como lo ha hecho anteriormente. Ñn la propiedad Gef
establezca
c el valor 480 y en la propiedad Top el valor 4680.
c
ó Agregue el sexto botón del menú. Ñn la propiedad Gef establezca el valor 480 y en la propiedad
Topc el valor 5400.
c
c
ó Agregue el séptimo botón del menú. Ñn la propiedad Gef establezca el valor 480 y en la
propiedad
c Top el valor 6120.
c
ó Agregue el octavo y último botón del menú. Ñn la propiedad Gef establezca el valor 480 y en la
c
propiedad Top el valor 6840.
c
c
Después de haber agregado los botones del menú principal es necesario escribir un texto sobre
cada
c uno de ellos para diferenciarlos de las demás opciones del menú. Para esto utilizaremos ocho
Ñtiquetas y en cada Ñtiqueta se especificará el texto correspondiente a cada opción del menú.
c
c
ó Inserte una Ñtiqueta en cualquier parte del formulario y establezca los siguientes valores en las
c
propiedades especificadas:
c
c
     
c
!  c u  cc c c/c 
c
c  -(/c " -"/c u c // c
c
 c
#$%  /c c   c c c
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Haga
c una copia de la Ñtiqueta y péguela en cualquier parte del formulario. Ñn la propiedad
Capio escriba pció 2, en la propiedad Gef especifique el valor 840 y en la propiedad Top
c
escriba 2560.
c
c
ó Haga una tercera copia y péguela en cualquier parte del formulario. Ñn la propiedad Capio
c
escriba pció 3, en la propiedad Gef especifique el valor 840 y en la propiedad Top 3285.
c
ó Repita los mismos pasos hasta completar las ocho Ñtiquetas. Los valores para las propiedades
c
Gef y Top de las demás Ñtiquetas se muestran en siguiente tabla:
c
c
u  
c
(c " -"/c
c  "//(c
c
)c " -"/c
c  "+2(c
+c " -"/c
c  (""(c
c
-c " -"/c
c  )-/c
c

c -"/c
c  c )--(c
c
Ahora diseñemos el eslogan que aparece en la esquina inferior derecha del formulario de la
c
aplicación. Para esto utilizaremos tres Ñtiquetas, la primera para escribir ³Dicrosoft´, la segunda
c escribir ³Visual Basic´ y la tercera para escribir ³6.0´.
para
c
ó cInserte una Ñtiqueta en cualquier parte del formulario y establezca en las propiedades
especificadas
c los valores que se muestran en la siguiente tabla:
c
 
c c  c
c c  c
c 
c
 /c c   c
c c )2/c
c  c )"-/c
c c$ c
c  !c)
c
c
c
ó Inserte otra Ñtiqueta sobre el formulario y establezca los siguientes valores en las propiedades
c
especificadas:
c

c 
 c c c
c c  c
c 
c
 /c c   c
c c )2/c
c  c )+2/c
c c c$ c
c  !c2)
c
c
ó Inserte la una ultima etiqueta sobre el formulario y establezca los siguientes valores en las
c
propiedades especificadas:
c
 
 c )
/c
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
 
c c  c
 
c /c c   c
c c .2/c
c  c )+/(c
c c c$ c
c  !c)
c
c
  c c ////"// c
c  
cc
c
ó Pulse la tecla F5 para correr la aplicación.
c
Al ccorrer la aplicación notará que si hacemos clic sobre cada una de las opciones del menú principal
c no realizan ninguna operación, esto es, porque no se han programado los eventos necesarios
estas
para
c cada una de las opciones del menú. Dás adelante programaremos estos eventos para que
cada opción del menú principal tenga alguna función de utilidad en la aplicación.
c
c
ó Guarde la aplicación con los nombres FormÑjercicio17-3 para el P  cy, Ñjercicio17-3 para
c
el proyecto.
c
Foc  Como pudimos notar en la aplicación anterior, esta propiedad es utilizada para
cambiar el  c c  del texto especificado en la propiedad Capio de la
c
Ñtiqueta. Ñl  c c  corresponde al tipo de letra, estilo de fuente, efectos y
c tamaño de la letra contenida en un control que soporte esta propiedad.
c
c CMÑTARë 1: La propiedad Fo  desde el  c c   representa un objeto cuyas
c propiedades puede usar de forma independiente. Por ejemplo, si desea poner en negrita el texto
contenido en una etiqueta llamada Label1:
c
c Label1.Font.Bold = True

c c
c Las propiedades más utilizadas del objeto Font son: Bold (Negrita), Italic (Cursiva),
c Name (Nombre del tipo de letra), Size (Tamaño), StrikeThrough (Tachado) y
c Underline (Subrayado).
c CMÑTARë 2: Utilice la propiedad Fo  en c c  ! cuando quiera darle formato al texto
contenido en los objetos de la aplicación y no espera cambiarlo muy a menudo. Por otro lado, cuando
c utilice el objeto Fo  desde el  cc   hágalo cuando desee cambiar el formato del texto con
c mucha frecuencia o cuando el formato del texto tenga que cambiar por algún evento realizado por el
usuario. Por ejemplo, cambiar el color de una opción de un menú cuando el usuario coloca el puntero
c del Douse sobre dicha opción.
c c
c Ñjercicio:
c
c
A continuación, se muestra una aplicación compuesta por ocho cc P . Cada c
c P
c  modificará una de las propiedades del objeto Fo  de una Ñtiqueta (Label) que estará
colocada
c en la parte más arriba de los cc P .
c
c un nuevo proyecto.
ó Abra
c
ó Inserte una Ñtiqueta en la parte más arriba del formulario y en el centro.
c
c la propiedad Capio escriba TÑXTO DÑ DUÑSTRA. Ñn la propiedad Aoize establezca el
ó Ñn
valor Tre.
c
ó Inserte ocho cc P  del mismo tamaño uno al lado del otro y debajo de la Ñtiqueta,
tal y como se ve en la siguiente figura:
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Seleccione el primer cc P cy en la propiedad Capio escriba Negrita.
c
ó Seleccione el segundo cc P  y en la propiedad Capio escriba Cursiva.
c
ó Seleccione el tercer cc P  y en la propiedad Capio escriba Subrayado.
c
ó Seleccione el cuarto cc P  y en la propiedad Capio escriba Tachado.
c
ó Seleccione el quinto cc P  y en la propiedad Capio escriba Tamaño.
c
ó Seleccione el sexto cc P  y en la propiedad Capio escriba Fuente.
c
ó Seleccione el séptimo cc P  y en la propiedad Capio escriba Normal.
c
ó Seleccione el octavo cc P  y en la propiedad Capio escriba Ne/Cu/Su.
c
Lac aplicación debe tener un aspecto similar a la que se muestra en la siguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c codifiquemos el  Click de cada uno de los boo es de coma do para que cuado
Ahora
c
hagamos clic sobre cada uno de ellos este realice la operación indicada en su propiedad Capio .
c
ó Haga
c doble clic sobre el primer c c P c (el que tiene por texto Negrita) y en el
procedimiento del  Click la siguiente línea de código:
c
c
Label1.Font.Bold = True ' Hace que la Ñtiqueta se ponga en negrita.
c
c
ó Haga doble clic sobre el segundo c c P  (el que tiene por texto Cursiva) y escriba
dentro del procedimiento del  Click la siguiente línea de código:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Label1.Font.Italic
c = True ' Hace que la Ñtiqueta se ponga en cursiva.
c
ó Dentro
c del  Click del botón Subrayado:
c
Label1.Font.Underline = True ' Hace subrayar la Ñtiqueta.
c
c
ó Dentro
c del  Click del botón Tachado:
c
Label1.Font.Strikethrough = True ' Hace tachar la Ñtiqueta.
c
c
ó Dentro del  Click del botón Tamaño:
c
Dim
c valor As Integer ' Declara la variable numérica para almacenar el tamaño.
On Ñrror Resume Next ' Si el usuario introduce un valor incorrecto no se detiene la aplicación
c
'c Duestra una caja que permite que el usuario escriba el tamaño de la letra y lo almacena en la
µc variable valor.
c
valor = InputBox("Introduzca el tamaño de la letra:", "Tamaño de letra")
c
Label1.Font.Size = valor ' Ñstablece el tamaño introducido a la Ñtiqueta.
c
c
c
ó Dentro del  Click del botón Fuente:
c
c Tipo As String
Dim ' Declara la variable de texto para almacenar el tipo de letra.
c Ñrror Resume Next ' Si el usuario introduce un valor incorrecto no se detiene la aplicación
On
c
'c Duestra una caja que permite introducir el nombre del tipo de letra y lo almacena en la
µc variable Tipo.
Tipo = InputBox("Introduzca nombre del tipo de letra", "Tipo de letra")
c
c
Label1.Font.Name = Tipo ' Ñstablece el tipo de letra a la Ñtiqueta.
c
c
ó Dentro del  Click del botón Normal:
c
Label1.Font.Bold = False 'Le quita la negrita a la Ñtiqueta
c
Label1.Font.Italic = False 'Le quita la cursiva a la Ñtiqueta
c
Label1.Font.Underline = False 'Le quita el subrayado a la Ñtiqueta
c
Label1.Font.Strikethrough = False 'Le quita el tachado a la Ñtiqueta
Label1.Font.Name
c = "DS Sans Serif" 'Pone el tipo de fuente predeterminado
Label1.Font.Size
c = 8 'Pone el tamaño predeterminado
c
ó Dentro del  Click del botón Ne/Cu/Su (Negrita/Cursiva/Subrayado):
c
Label1.Font.Bold
c = True ' Pone Negrita a la Ñtiqueta.
Label1.Font.Italic = True ' Pone cursiva a la Ñtiqueta.
c
Label1.Font.Underline = True ' Hace subrayar la Ñtiqueta.
c
c
ó Pulse la tecla F5 para correr la aplicación.
c
ó Pruebe cada uno de losccc P  de la aplicación y observe como la Ñtiqueta cambia
dec apariencia cada vez que pulsamos uno de los botones. Ñn el caso del botón Tamaño introduzca
unc valor numérico, por ejemplo, 14. Ñn el botón Fe e un tipo de fuente, por ejemplo, Arial.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Guarde
c la aplicación con los nombres FormÑjercicio18-3 para el P  cy, Ñjercicio18-3 para
el proyecto.
c
c
ForeColor La propiedad ForeColor devuelve o establece el color del texto contenido en un
c control. Ñn una Ñtiqueta esta propiedad afecta el color del texto escrito en la
c propiedad Capio . Al igual que la propiedad BackColor esta propiedad puede
c tomar valores hexadecimales, constantes de colores del sistema y constantes de
c colores básicos.
c
CMÑTARë: Ñn las Ñtiquetas esta propiedad es muy utilizada por los programadores para crear
c efectos gráficos en menús y en botones gráficos. Cuando coloca una Ñtiqueta sobre un botón gráfico
c puede hacer que esta cambie de color al usuario colocar el puntero Douse sobre el, o bien, puede
hacer que cambie de color cuando el usuario haga clic sobre el botón. Ñsto es posible codificando los
c eventos MoseMove y Click del botón grafico o de la Ñtiqueta.
c c
c
- 3À2À1À2 Ñve os sobre las eiqeas
c
Lac mayoría de los controles estándar de   c   se ven afectados por los mismos eventos,
aunque
c algunos eventos son usados en otros controles más que en otros. Ñste es el caso de las
Ñtiquetas
c que poseen las mismas propiedades de los c c P  pero solo algunas de
ellas son realmente útiles al momento de programarlas.
c
Ñnc las Ñtiquetas los eventos más utilizados son: Click, 3blClick, MoseMove, Mose3ow y
c
MoseUp. Ñstos eventos tiene el mismo comportamiento en los demás controles de Visual Basic y
sucuso dependerá de la necesidad del programador. Por tal razón, daremos una mínima definición
dec estos, ya que lo hemos definidos con anterioridad en los cc P .
c
c
Click Ocurre cuando el usuario presiona uno de los botones del Douse. Ñn las Ñtiquetas
c el procedimiento para este evento es programado cuando la Ñtiqueta es utilizada
c como un botón de comando, o bien, para ejecutar una acción especifica cuando el
c usuario pulse un botón del Douse. Por ejemplo, mostrar una ventana, mostrar un
mensaje, ejecutar un programa, abrir una pagina Web, etc.
c
c Ñjercicio:
c
A continuación, se muestra una aplicación que muestra la hora y la fecha cuando se hace clic sobre
c
una de las Ñtiquetas.
c
c un nuevo proyecto.
ó Abra
c
ó Inserte dos Ñtiquetas una debajo de otra.
c
ó Ñstablezca el valor Tre en la propiedad Aoize de ambas Ñtiquetas.
c
ó Ñn la propiedad Capio de la primera Ñtiqueta escriba ³Haga clic aquí para ver la hora´, y en la
c
propiedad Capio de la segunda Ñtiqueta escriba ³Haga clic aquí para ver la fecha´. La aplicación
c
tendría un aspecto similar al de la siguiente imagen:
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Haga
c doble clic sobre la primera Ñtiqueta y escriba:
c
DsgBox(³La hora del sistema es:´ & Time) ' Duestra una ventana con la hora del sistema.
c
c
ó Haga doble clic sobre la segunda Ñtiqueta y escriba:
c
c
DsgBox(³La fecha del sistema es:´ & Date) µ Duestra una ventana con la fecha del sistema.
c
c
ó Pulse la tecla F5 para correr la aplicación.
c
c clic sobre cada uno de las Ñtiquetas y podrá observar que cuando ocurre el c Click
Haga
sobre
c una de las Ñtiquetas esta muestra la hora o la fecha del sistema.
c
Ñxplicació :
c
c esta aplicación hemos utilizado tres sentencias que ya la habíamos visto en aplicaciones
Para
c
anteriores que son las sentencias MsBox, Time y 3ae. La primera es utilizada para mostrar
rápidamente
c una caja de mensaje, la segunda para mostrar la hora del sistema y la tercera para
mostrar la fecha del sistema. Ñn esta aplicación hemos combinado la sentencia Time y 3ae con la
c
sentencia MsBox para mostrar un mensaje de texto adjunto a la hora o a la fecha del sistema.
c
Ñnc la primera línea de código vemos lo siguiente:
c
c
DsgBox(³La hora del sistema es:´ & Time)
c
La sentencia MsBox muestra la cadena de texto ³Ga hora del sisema es:´. Después de esto
c
vemos un carácter llamado Ampersa d (&) que se utiliza para unir dos o más cadenas de texto.
c carácter servirá para unir la hora del sistema proporcionada por la sentencia Time con la
Ñste
c
primera cadena de caracteres. Ñsto mismo lo hacemos en el evento Click de la segunda Ñtiqueta
conc la sentencia 3ae que devuelve la fecha del sistema.
c
ó Detenga la aplicación y guárdela con los nombres FormÑjercicio19-3 para el P  c y,
c
Ñjercicio19-3 para el proyecto.
c
c
3blClick Al igual que en los cc P  este evento ocurre cuando el usuario pulsa
c dos veces un botón del Douse. Ñste evento no es muy utilizado en las Ñtiquetas,
c pero en algunas ocasiones encontrará alguna función de utilidad el programar este
evento.
c
c
MoseMove Ocurre cuando el usuario mueve el puntero del Douse sobre la zona donde esta
c dibujada la Ñtiqueta. Ñs uno de los eventos de las Ñtiquetas más utilizados por los
c programadores ya que permite crear y mostrar inmensidades de efectos gráficos
c cuando el usuario coloca el puntero del Douse sobre la Ñtiqueta.
c CMÑTARë: Utilice siempre este evento cuando quiera realizar efectos gráficos sobre menús
c personalizados, o bien, cuando quiera crear efectos animados mientras el usuario mueva el puntero
del Douse en la zona donde este dibujada la Ñtiqueta.
c
c c
Ñjercicio:
c
1.mc Ñl siguiente ejercicio muestra una aplicación compuesta por un menú principal compuesto de
cinco
c opciones, donde cada opción del menú cambia de apariencia cada vez que el usuario coloca
el puntero del Douse sobre una de ellas.
c
La aplicación tendrá una apariencia como la que se muestra en la figura de la siguiente página:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


V
c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Abra
c un nuevo proyecto.
c
ó Ñn la propiedad Heih establezca el valor 6765 y en la propiedad Widh el valor 8310.
c
c
ó Busque la propiedad arUpPosiio del formulario y seleccione el valor 2 ± Ce ercree .
c permite que el formulario aparezca en el centro de la pantalla cuando se ejecute la aplicación.
Ñsto
c
ó Ñn la propiedad Picre establezca la imagen ëm09Cap3Àjp de la carpeta ëmae es.
c
c
ó Inserte una Ñtiqueta en cualquier parte del formulario y establezca los siguientes valores en las
c
propiedades especificadas:
c
c
 
c c   cc2//+c
c c  c
 
c /c c   c
c c )-/c
c  c 2/c
c c c c$ c
c  !c2)
c
c
  c c c // c
c  c
c
ó Inserte otra Ñtiqueta en cualquier parte del formulario y establezca los siguientes valores en las
propiedades especificadas:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
 
c c $,c'$ c
c  c
c
 
c /c c   c
c c 2((/c
c  c 2//c
c c c$ c
c  !c-
c
c
  c c c //-/ c
c  c  c
c
ó Ahora dibujemos las cincos opciones del menú principal insertando cinco Ñtiquetas una debajo de
la cotra.
c
c
ó Seleccione cada una de las opciones del menú y establezca los valores mostrados en las
siguientes
c tablas para la opción correspondiente:
c pció 1 pció 2
c
c
   
c c c$ccc  c c  ccc
c c  c c  c

c 
c /c c   c  
c /c c   c
c &2/c c &2/c
c  c 2/"/c  c 2)"/c
c c c$ c c c$ c
c  !c2
c  !c2
c
c
  c c c //// c   c c c //// c
c  c 5 c  c 5 c
c c
pció 3 pció 4
c
c
   
c c c cc  c c 6cc
c c  c c  c
c 
c
 /c c   c  
c /c c   c
c c &2"/c c &2-(c
 c &2"/c  c &-"/c
c c c$ c c c$ c
c  !c2
c  !c2
c
c
  c c c //// c   c c c //// c
c  c 5 c  c 5 c
c c pció 5
c
c
c
 
c c c cc
c c  c
c 
c
 /c c   c
c c &"-/c
c  c """/c
c c$ c
c  !c2
c
  c c c //// c
 c 5 c
c ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Haga
c doble clic sobre la primera opción y seleccione el evento MoseMove y, a continuación,
escriba
c el siguiente bloque de código:
c
µVerifica si la Ñtiqueta NO tiene el color de fondo activado
c
Ifc Label3.BackStyle = 0 Then
c
Label3.BackStyle =1 ' Permite que se establezca el color de fondo
Label3.BackColor
c = &H8000& ' Pone el color verde
c
'Desactiva el color de fondo de las demás opciones
c
Label4.BackStyle =0
c
Label5.BackStyle =0
c
Label6.BackStyle =0
Label7.BackStyle
c =0
c
Ñnd If
c
c
ó Haga
c doble clic sobre la segunda opción y seleccione el evento MoseMove y, a continuación,
escriba:
c
c
µVerifica si la Ñtiqueta NO tiene el color de fondo activado
c
Ifc Label4.BackStyle = 0 Then
c
Label4.BackStyle =1 ' Permite que se establezca el color de fondo
Label4.BackColor
c = &H8000& ' Pone el color verde
c
'Desactiva el color de fondo de las demás opciones
c
Label3.BackStyle =0
c
Label5.BackStyle =0
c
Label6.BackStyle =0
Label7.BackStyle
c =0
c
Ñnd If
c
c
ó Haga
c doble clic sobre la tercera opción y seleccione el evento MoseMove y, a continuación,
escriba:
c
c
µVerifica si la Ñtiqueta NO tiene el color de fondo activado
c
Ifc Label5.BackStyle = 0 Then
c
Label5.BackStyle =1 ' Permite que se establezca el color de fondo
Label5.BackColor
c = &H8000& ' Pone el color verde
c
'Desactiva el color de fondo de las demás opciones
c
Label3.BackStyle =0
c
Label4.BackStyle =0
c
Label6.BackStyle =0
Label7.BackStyle
c =0
c
Ñnd If
c
c
ó Haga doble clic sobre la cuarta opción y seleccione el evento MoseMove y, a continuación,
escriba:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
µVerifica si la Ñtiqueta NO tiene el color de fondo activado
Ifc Label6.BackStyle = 0 Then
c
Label6.BackStyle =1 ' Permite que se establezca el color de fondo
c
Label6.BackColor = &H8000& ' Pone el color verde
c
'Desactiva
c el color de fondo de las demás opciones
Label3.BackStyle = 0
c
Label4.BackStyle =0
c
Label5.BackStyle =0
c
Label7.BackStyle =0
c
Ñnd If
c
ó Haga doble clic sobre la cuarta opción y seleccione el evento MoseMove y, a continuación,
c
escriba:
c
µVerifica
c si la Ñtiqueta NO tiene el color de fondo activado
Ifc Label7.BackStyle = 0 Then
Label7.BackStyle = 1 ' Permite que se establezca el color de fondo
c
Label7.BackColor = &H8000& ' Pone el color verde
c
c
'Desactiva el color de fondo de las demás opciones
c
Label3.BackStyle =0
Label4.BackStyle
c =0
Label5.BackStyle = 0
c
Label6.BackStyle =0
c If
Ñnd
c
c
ó Haga doble clic en cualquier parte del formulario. Seleccione el evento MoseMove del formulario
c
y escriba:
'c Desactiva el color de fondo de las opciones
Ifc Label3.BackStyle = 1 Then Label3.BackStyle = 0
Ifc Label4.BackStyle = 1 Then Label4.BackStyle = 0
Ifc Label5.BackStyle = 1 Then Label5.BackStyle = 0
If Label6.BackStyle = 1 Then Label6.BackStyle = 0
c
If Label7.BackStyle = 1 Then Label7.BackStyle = 0
c
c
ó Pulse la tecla ÈF5] para correr la aplicación.
c
c
ó Dueva el puntero del Douse sobre cada una de las opciones y verá como estas se tornan en
c
verde.
c
Ñxplicació :
c
c pudimos notar en la aplicación anterior hemos codificado el evento MoseMove de cada
Como
c
opción del menú principal para que este cambie de apariencia cada vez que el usuario coloque el
c
puntero del Douse sobre cada una de ellas. Ñmpezaremos explicando el código escrito en el
evento
c MoseMove de la primera opción del menú principal.
c
G#   $+ If Label3.BackStyle = 0 Then. Ñn esta línea verificamos si la Ñtiqueta
c tomar color de fondo. Cuando la propiedad Backyle esta establecida a 0 cero indica que
puede
la cÑtiqueta no puede tomar el color establecido en la propiedad BackColor y en consecuencia este
c un aspecto transparente.
tendrá

Si traducimos lógicamente esta línea de código quedaría expresada de la siguiente manera:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c If Label3.BackStyle = 0 Then
c
c Si Ñtiqueta 3 es transparente Ñntonces
c
Si cse comprueba que la Ñtiqueta 3, es decir, la primera opción del menú principal esta transparente
o no
c tiene color de fondo, entonces, se ejecutan las próximas líneas de código:
c
    $+ Label3.BackStyle = 1. Ñsta línea le quita la transparencia a la Ñtiqueta 3
c
permitiéndole tener color de fondo, es decir, el color que se asigna en la propiedad BackColor.
c
Cuando la propiedad Backyle se establece a uno, entonces, la Ñtiqueta puede tener color de
c
fondo.
c
       $+ Label3.BackColor = &H8000&. Ñsta línea pone el color de fondo en la
c
Ñtiqueta. Recuerde que la propiedad BackColor (Color de fondo) permite asignar los colores
c
mediante constantes y valores hexadecimales. Ñn este caso hemos establecido el valor
c
hexadecimal &H8000& que es el color verde. Ñsta línea de código es la que hace que cuando el
c
usuario coloca el puntero del Douse sobre la opción esta se ponga en verde.
c
G ,    $+
c
c
Label4.BackStyle =0
c
Label5.BackStyle =0
c
Label6.BackStyle =0
Label7.BackStyle
c =0
c
Ñstas líneas desactivan el color de fondo de las demás opciones, ya que la única que lo debe de
c activado es la primera opción del menú. Ñs necesario deshabilitar el color de fondo de las
tener
c
demás opciones del menú para que cuando el usuario coloque el puntero del Douse sobre cada
unac de ellas se pueda comprobar que estas están transparentes.
c
Las demás opciones están compuestas prácticamente con un bloque de código similar, con la única
c
diferencia de la comparación en la sentencia If y las últimas cuartas líneas de código. Ñn estas se
c
excluye la Ñtiqueta que se compara con la sentencia If. Analizaremos esto explicando el código
c
escrito en la segunda opción del menú principal.
c
c
      $+ If Label4.BackStyle = 0 Then. Al igual que con la primera opción del
menú, verificamos si la segunda opción esta transparente, o bien, no puede tomar color de fondo.
c
c   $+ Label4.BackStyle = 1. Hace que la segunda opción que es la Ñtiqueta 4
 
c tomar el color de fondo.
pueda
c
c
       $+ Label4.BackColor = &H8000&. Ñsta línea le asigna el color de fondo
verde a la Ñtiqueta 4.
c
c
G ,    $+
c
c
Label3.BackStyle =0
Label5.BackStyle
c =0
Label6.BackStyle = 0
c
Label7.BackStyle = 0
c
c bloque de código es similar a la de la primera opción del menú con la única diferencia de que
Ñste
noc asigna transparencia a la Ñtiqueta que se compara en la sentencia If. Ñn este caso no incluimos
la Ñtiqueta 4 debido a que el objetivo es quitarle la transparencia cuando el usuario coloque el
puntero del Douse sobre esta. Tenga en cuenta que no puede poner transparente la Ñtiqueta que
se esta codificando.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Aunque
c no hemos contando la línea de código Ñnd If en las explicaciones anteriores por no
considerarlo necesario, tenga en cuenta que cuando utiliza la sentencia If acompañado con más de
c
una línea de código, entonces, debe de finalizar con un Ñnd If.
c
Las c demás opciones están codificadas de la misma manera que las dos primeras opciones
c
teniendo en cuenta lo siguiente: 1) La Ñtiqueta comparada en la sentencia If es la misma que se
estac codificando, 2) Se debe quitar la transparencia a la Ñtiqueta que se compara con la sentencia
If, 3) Asignar el color de fondo con la propiedad BackColor a la Ñtiqueta que se esta comparando
c
con la sentencia If, y 4) No debe de incluir la Ñtiqueta que se compara con la sentencia If en las
c
últimas cuatro línea de código.
c
Ñnc la aplicación anterior también hemos codificado el evento MoseMove del formulario para
desactivar
c o poner transparente cualquiera de las opciones del menú principal cada vez que el
usuario mueva el puntero del Douse sobre el formulario y no sobre las opciones. Si el usuario ha
c
colocado el puntero del Douse sobre una de las opciones del menú esta se activa, pero es
c
necesario desactivarla cuando el usuario desplaza el puntero del Douse sobre otra opción. Note
que c el puntero del Douse debe primero de pasar sobre el formulario antes de colocarse sobre otra
c
opción, aprovechando esto, hemos codificado el evento MoseMove del formulario para poner
transparente
c todas las opciones del menú.
c
Primera lí ea de códio:
c
c
If Label3.BackStyle = 1 Then Label3.BackStyle = 0. Ñn esta línea se verifica si la primera opción no
estac transparente, es decir, si esta activada. Ñn caso de estar activada se desactiva.
c
e da lí ea de códio:
c
c
If Label4.BackStyle = 1 Then Label4.BackStyle = 0. Ñn esta línea se verifica si la segunda opción
noc esta transparente, es decir, si esta activada. Ñn caso de estar activada se desactiva.
c
Tercera
c lí ea de códio:
c
If Label5.BackStyle = 1 Then Label5.BackStyle = 0. Ñn esta línea se verifica si la tercera opción no
estac transparente, es decir, si esta activada. Ñn caso de estar activada se desactiva.
c
c
Cara lí ea de códio:
c
If Label6.BackStyle = 1 Then Label6.BackStyle = 0. Ñn esta línea se verifica si la cuarta opción no
c
esta transparente, es decir, si esta activada. Ñn caso de estar activada se desactiva.
c
Qi c a lí ea de códio:
c
If Label7.BackStyle
c = 1 Then Label7.BackStyle = 0. Ñn esta línea se verifica si la quinta opción no
es transparente, es decir, si esta activada. Ñn caso de estar activada se desactiva.
c
c
ó Detenga la aplicación y guárdela con los nombres FormÑjercicio20-3 para el P  c y,
c
Ñjercicio20-3 para el proyecto.
c
2.mc Ñn este segundo ejercicio crearemos un menú típico que vemos en la mayoría de las
aplicaciones de Windows. Aunque Visal Basic proporciona una herramienta para crear menús de
c
forma sencilla, crear menús personalizados crea efectos visuales más atractivos a la vista del
c
usuario. Para este ejercicio hemos tomado como ejemplo el menú .   de Dicrosoft Word.
c
Crearemos este menú con todas las opciones que lo componen.
c
La aplicación tendrá un aspecto gráfico como el que se muestra en la figura de la siguiente página:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Inicie un nuevo proyecto.
c
ó Ñstablezca los siguientes valores en cada una de las propiedades indicada del formulario:
c  
c   c c c ///// c
c # c  c
c c -(/(c
 , c
c 2cc  c
c %c /"/c
c
ó Inserte una Ñtiqueta en cualquier parte del formulario y establezca los siguientes valores:
c  
c $ c  c
c c  c
c  
c /cc   c
c  c c
c c c$ c/
c
c 2/c
c  c )/c
c
c
ó Busque en la  cc P   el control Gi e , y dibuje una línea desde una equina del
c
formulario hasta la otra esquina, o bien, establezca los siguientes valores en las propiedades del
c Gi e para tener mejores resultados:
objeto
c  
   c c //-/-/-/ c
c # c  c
c 4c /c
42c /&2/c
*c*2c &)/c
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Inserte
c otro objeto Gi e y dibujelo debajo del primero desde un extremo del formulario hasta el
otro extremo. Para mejores resultados establezca los siguientes valores:
c
c  
c   c c c // c
c  c
c 4c /c
c 42c /&2/c
c *c*2c &+/c
c
Podrá notar que al unir estas dos líneas una de color gris y otra de color blanco crea un efecto
c
visual de profundidad. Ñstos efectos son utilizados muy a menudo por la mayoría de los
c
programadores para separar opciones de menús y barras de herramientas en las aplicaciones.
c
c
ó Inserte un control PicreBox en cualquier parte del formulario y establezca los siguientes
c
valores en las propiedades indicadas:
c
c  
  c /c cc
c   c c c ///// c
c # c  c
c c "2(c
c %c &2((c
c c 2/c
c  c 2-/c
c
ó Dibujemos la primera opción del menú Archivo. Para esto inserte una Ñtiqueta dentro del
c
PicreBox. Ñstablezca los siguientes valores en las propiedades indicadas:
c
c    
c $ c  $c c c$ c/
c
c  
c /cc   c c c
c 2"/c c c
c %c &///c c c
c c 2/c c c
c  c 2"/c c c
c  c $7c 2.c  c ,cc c c
c
TA:
c Después de los tres puntos suspensivos presione 29 veces la barra espaciadora en la
propiedad Capio para separar el nombre de la opción del acceso directo y, a continuación,
c
escriba el texto Ctrl+U. Ñstos espacios no son reglamentos de Visal Basic, sino, que lo he
c
utilizado para ubicar al final de la opción el acceso directo. Usted puede optar por dar los espacios
quec usted considere a la hora de crear menús personalizados.
c
ó Dibujemos
c las demás opciones del menú principal haciendo copia de la primera. De esta manera
ahorraremos tiempo evitando tener que modificar tantas propiedades. Los valores para la demás
c
opciones son las mismas menos los valores de la propiedad ame, Capio , Gef y Top. Para
c copias de la primera opción del menú haga clic derecho sobre la opción evo« y
hacer
c
seleccione la opción Copy (Copiar) y, a continuación, péguela dentro del PicreBox. Dodifique
c
ahora las siguientes propiedades:
c  
c $ c     cc
 c   7c &c  c  c
c 2/c
 c )//c
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Haga
c clic derecho sobre el PicreBox y seleccione la opción Paste (Pegar) para crear la tercera
opción. Dodifique las siguientes propiedades de la Ñtiqueta pegada:
c
c  
c $ c    cc
c  c   c
c c 2/c
c  c .)/c
c
Separemos las tres primeras opciones con objetos Gi e, tal y como lo vemos en el menú Archivo de
c
Dicrosoft Word.
c
c
ó Haga clic en el objeto Gi e de la caja de herramientas y dibujela debajo de la opción Cerrar de un
extremo
c del PicreBox hacia el otro. Puede optar por asignar los siguientes valores al objeto Gi e
para
c que el resultado sea similar al de este ejercicio:
c  
c   c c c ///// c
c # c  c
c 4c 2/c
c 42c &2"/c
c *c*2c &2/c
c
ó Inserte otro objeto Gi e justamente debajo de este para crear un efecto visual de profundidad.
c
Dodifique las propiedades de este objeto Gi e con los siguientes valores:
c
c  
c   c c c // c
c  c
c 4c 2/c
42c &2"/c
c *c*2c &&/c
c
c
ó Haga clic derecho sobre el PicreBox y seleccione la opción Paste (Pegar) para crear la cuarta
c
opción. Dodifique las siguientes propiedades de la Ñtiqueta pegada:
c
c  
$ c  #  c
c  c #  c 2)c  c #c
c c 2/c
c  c ""/c
c
ó Haga
c clic derecho sobre el PicreBox y seleccione la opción Paste (Pegar) para crear la quinta
opción.
c Dodifique las siguientes propiedades de la Ñtiqueta pegada:
c  
c $ c  #   c
c  c #   c  7c
c c 2/c
c  c -//c
c
ó Haga clic derecho sobre el PicreBox y seleccione la opción Paste (Pegar) para crear la sexta
c
opción. Dodifique las siguientes propiedades de la Ñtiqueta pegada:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c  
c $ c    c
 c   7c
c c 2/c
c  c 2)/c
c
c
Separemos estas opciones de las siguientes con objetos Gi e como lo hicimos anteriormente.
c
ó Inserte
c un objeto Gi e debajo de la opción Bscar« y dibujela de un extremo al otro del
PicreBox. Dodifique las propiedades de este objeto con los siguientes valores:
c
c  
c   c c c ///// c
c # c  c
c 4c 2/c
c 42c &2"/c
c *c*2c 2(2/c
c
ó Inserte otro objeto Gi e justamente debajo de este para crear un efecto visual de profundidad.
c
Dodifique las propiedades de este objeto Gi e con los siguientes valores:
c
c  
c   c c c // c
 c
c
4c 2/c
c 42c &2"/c
c *c*2c 2(&/c
c
c
ó Haga clic derecho sobre el PicreBox y seleccione la opción Paste (Pegar) para crear la séptima
opción.
c Dodifique las siguientes propiedades de la Ñtiqueta pegada:
c
 
c $ c    c
c  c    c 87c
c c 2/c
c  c 2)"/c
c
ó Haga
c clic derecho sobre el PicreBox y seleccione la opción Paste (Pegar) para crear la octava
opción. Dodifique las siguientes propiedades de la Ñtiqueta pegada:
c
c  
c $ c  c
c  c c   c
c c 2/c
c  c &///c
c
ó Haga clic derecho sobre el PicreBox y seleccione la opción Paste (Pegar) para crear la novena
c
opción. Dodifique las siguientes propiedades de la Ñtiqueta pegada:
c
c  
c $ c     c
   7c
c  c
c 2/c
 c &&)/c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Separemos
c estas opciones de las siguientes con objetos Gi e como lo hicimos anteriormente.
c
ó Inserte un objeto Gi e debajo de la opción ëmprimir« y dibujela de un extremo al otro del
c
PicreBox. Dodifique las propiedades de este objeto con los siguientes valores:
c
c  
c   c c c ///// c
c # c  c
c 4c 2/c
42c &2"/c
c *c*2c &+2/c
c
c
ó Inserte otro objeto Gi e justamente debajo de este para crear un efecto visual de profundidad.
c
Dodifique las propiedades de este objeto Gi e con los siguientes valores:
c
c  
   c c c // c
c  c
c 4c 2/c
c 42c &2"/c
c *c*2c &+&/c
c
ó Haga
c clic derecho sobre el PicreBox y seleccione la opción Paste (Pegar) para crear la décima
y última opción del menú principal. Dodifique las siguientes propiedades de la Ñtiqueta pegada:
c
c  
c $ c   c
c  c  c
c c 2/c
c  c &-"/c
c
Hemos indicado minuciosamente los valores para cada propiedad de los controles colocados en los
c
ejercicios de este capítulo, con el objetivo de que usted se familiarice con las propiedades y para
c
obtener mejores resultados en los ejercicios. Pero todo esto es un principio, a medida que avance
c
tendrá que dibujar los objetos por su propia cuenta y observar como hemos colocado los objetos
sobre
c los ejercicios para que ahorre tiempo y no tenga que modificar tantas propiedades.
c
Después de haber diseñado el menú Archivo con todas sus opciones, es ahora el momento de
c
programar las opciones para crear el efecto visual que vemos en los menús típicos de Windows
c
cuando desplazamos el puntero del Douse sobre cada una de las opciones de un menú.
c
c
ó Haga doble clic en cualquier parte del formulario.
c
ó Seleccione el evento Goad del formulario y escriba la siguiente línea de código.
c
Picture1.Visible
c = False ' Oculta las opciones del menú Archivo
c
c línea hace que al iniciar la aplicación el menú Archivo y sus opciones no aparezcan hasta que
Ñsta
sechaga clic sobre el.
c
ó Haga
c doble clic sobre la etiqueta del menú Archivo y dentro del evento Click escriba el bloque de
código
c que se muestra en la siguiente página:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
If Picture1.Visible = False Then µ Si las opciones no se ven Ñntonces
c
Picture1.Visible = True µ Visualiza las opciones
Ñlsec µ Sino (si las opciones se ven)
c
Picture1.Visible = False µ Oculta las opciones
Ñnd c If
c
c
Ñste bloque de código hace que cuando se haga clic sobre el menú Archivo las opciones del menú
c
aparezcan o se desaparezcan. Si las opciones se ven cuando usted hace clic sobre el menú
c
Archivo, entonces, se ocultaran. Pero si las opciones no se ven cuando usted hace clic sobre el
menúc Archivo, entonces, aparecerán. Por eso hemos utilizado la sentencia If para verificar el estado
dec la propiedad Visible del PicreBox cuando se hace clic sobre el menú Archivo.
c
ó Haga doble clic sobre el formulario y seleccione el evento Click. Dentro del procedimiento de este
c
evento escriba:
c
Ifc Picture1.Visible = True Then µ Si las opciones se ven Ñntonces
c
Picture1.Visible = False µ las oculta
c
Ñnd If
c
Ñstec bloque de código hace que cuando se haga clic en cualquier parte del formulario se
c
desaparezcan las opciones del menú, es decir, hace que se oculte el menú Archivo. Ñste bloque de
código
c es muy importante, debido a que es necesario ocultar los menús cuando se hace clic sobre
otro objeto dentro de una misma aplicación. Si existieran otros objetos dentro de esta aplicación
c
como una caja de texto, una imagen, un botón de comando, etc., entonces, habría que escribir el
c
código anterior en el evento Click de estos otros objetos para ocultar el menú cuando se haga clic
c estos. Si usted esta visualizando este documento desde Word pruebe abriendo el menú
sobre
c
Archivo de Word y verá que cuando hace clic en cualquier parte fuera del menú este
automáticamente
c se oculta.
c
Lo último para terminar nuestro menú es hacer que las opciones cambien de color cada vez que el
c
usuario coloque el puntero del Douse sobre una de ellas. Para esto tendremos que codificar el
c
evento MoseMove de cada una de las opciones del menú, haciendo que cuando el puntero del
c
Douse pase sobre una de ella, entonces, estas cambien automáticamente el color de fondo.
También
c es necesario codificar el evento MoseMove de PicreBox que contiene todas las
opciones, para que cuando el usuario retire el puntero del Douse de cualquiera de ellas, entonces,
c
estas vuelvan a tener su color inicial.
c
c
ó Haga doble clic sobre la primera opción del menú y, a continuación, seleccione el evento
c
MoseMove. Dentro de este evento escriba el siguiente bloque de código:
c
Ifc OpcionNuevo.BackStyle = 0 Then
OpcionNuevo.BackStyle = 1 ' Permite que se le ponga color de fondo
c
OpcionNuevo.BackColor = &HDÑ552Ñ ' Pone el color azul celeste al fondo de la opción
c
OpcionNuevo.ForeColor = vbWhite ' Pone el color blanco al texto de la opción
c If
Ñnd
c
c
ó Corra la aplicación y haga clic sobre el menú Archivo. Ahora mueva el puntero del Douse sobre la
c
opción Nuevo. Podrá observar que la opción automáticamente cambia su color inicial al color Azul,
estoc se hizo posible con la línea: OpcionNuevo.BackColor = &HDÑ552Ñ. También puede notar que
c
cuando se cambia el color del fondo, también se cambia el color del texto a blanco con el código:
OpcionNuevo.ForeColor = vbWhite. Puede establecer colores distintos cambiando los valores
especificados en este ejercicio.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Podrác notar que al mover el puntero del Douse sobre otra opción, esta se mantiene con su color
inicial. Ñsto es, porque no hemos codificado el evento MoseMove de dicha opción. Para hacer
c
que las demás opciones se comporten como la primera debemos de codificar una por una cada
c
opción del menú, utilizando el mismo código de la primera y cambiando el nombre de la opción.
c
c
ó Detenga la aplicación y haga doble clic sobre la segunda opción. Seleccione el evento
MoseMove
c y escriba:

Ifc OpcionAbrir.BackStyle = 0 Then


c
OpcionAbrir.BackStyle =1 ' Permite que se le ponga color de fondo
c
OpcionAbrir.BackColor = &HDÑ552Ñ ' Pone el color azul celeste al fondo de la opción
OpcionAbrir.ForeColor
c = vbWhite ' Pone el color blanco al texto de la opción
Ñnd
c If
c
c
ó Dentro del evento MoseMove de la tercera opción:
c
If OpcionCerrar.BackStyle = 0 Then
c
OpcionCerrar.BackStyle =1 ' Permite que se le ponga color de fondo
c
OpcionCerrar.BackColor = &HDÑ552Ñ ' Pone el color azul celeste al fondo de la opción
c
OpcionCerrar.ForeColor = vbWhite ' Pone el color blanco al texto de la opción
c If
Ñnd
c
c
ó Dentro del evento MoseMove de la cuarta opción:
Ifc OpcionGuardar.BackStyle = 0 Then
c
OpcionGuardar.BackStyle =1 ' Permite que se le ponga color de fondo
OpcionGuardar.BackColor
c = &HDÑ552Ñ ' Pone el color azul celeste al fondo de la opción
OpcionGuardar.ForeColor = vbWhite ' Pone el color blanco al texto de la opción
c
Ñnd If
c
c
ó Dentro del evento MoseMove de la quinta opción:
c
Ifc OpcionGuardarComo.BackStyle = 0 Then
c
OpcionGuardarComo.BackStyle =1 ' Permite que se le ponga color de fondo
c
OpcionGuardarComo.BackColor = &HDÑ552Ñ ' Pone el color azul celeste al fondo de la opción
OpcionGuardarComo.ForeColor
c = vbWhite ' Pone el color blanco al texto de la opción
Ñnd If
c
c
c
ó Dentro del evento MoseMove de la sexta opción:
cIf OpcionBuscar.BackStyle = 0 Then
c
OpcionBuscar.BackStyle =1 ' Permite que se le ponga color de fondo
c
OpcionBuscar.BackColor = &HDÑ552Ñ ' Pone el color azul celeste al fondo de la opción
c
OpcionBuscar.ForeColor = vbWhite ' Pone el color blanco al texto de la opción
Ñnd
c If
c
ó Dentro
c del evento MoseMove de la séptima opción:
c
If OpcionConfigurar.BackStyle = 0 Then
c
OpcionConfigurar.BackStyle = 1 ' Permite que se le ponga color de fondo
c
OpcionConfigurar.BackColor = &HDÑ552Ñ ' Pone el color azul celeste al fondo de la opción
c
OpcionConfigurar.ForeColor = vbWhite ' Pone el color blanco al texto de la opción
Ñnd If

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Dentro
c del evento MoseMove de la octava opción:
Ifc OpcionVista.BackStyle = 0 Then
c
OpcionVista.BackStyle =1 ' Permite que se le ponga color de fondo
OpcionVista.BackColor
c = &HDÑ552Ñ ' Pone el color azul celeste al fondo de la opción
OpcionVista.ForeColor = vbWhite ' Pone el color blanco al texto de la opción
c
Ñnd If
c
c
ó Dentro del evento MoseMove de la novena opción:
c
Ifc OpcionImprimir.BackStyle = 0 Then
OpcionImprimir.BackStyle = 1 ' Permite que se le ponga color de fondo
c
OpcionImprimir.BackColor = &HDÑ552Ñ ' Pone el color azul celeste al fondo de la opción
c
OpcionImprimir.ForeColor = vbWhite ' Pone el color blanco al texto de la opción
c If
Ñnd
c
c
ó Dentro del evento MoseMove de la décima opción:
cIf OpcionSalir.BackStyle = 0 Then
c
OpcionSalir.BackStyle =1 ' Permite que se le ponga color de fondo
OpcionSalir.BackColor
c = &HDÑ552Ñ ' Pone el color azul celeste al fondo de la opción
OpcionSalir.ForeColor
c = vbWhite ' Pone el color blanco al texto de la opción
Ñnd If
c
c
Ahora
c que hemos codificado cada uno de los eventos de las opciones del menú, vamos a probar el
código que escribimos corriendo la aplicación. Corra la aplicación y desplace el puntero del Douse
c
sobre cada una de las opciones. Puede notar que las opciones se ponen de color azul y el texto de
cadac opción de color blanco, pero es necesario hacer que cada opción vuelva a su color inicial
c
cuando se mueva el puntero del Douse sobre otra opción, o cuando el puntero del Douse se
c
desplace fuera de la opción. Para hacer lo dicho anteriormente, debemos codificar el evento
MoseMove
c del PicreBox que contiene las opciones.
c
ó Detenga la aplicación.
c
ó Haga
c doble clic en el PicreBox que contiene las opciones del menú. Tenga cuidado de no hacer
doble clic sobre una de las opciones.
c
c
ó Seleccione el evento MoseMove del control PicreBox y dentro de este escriba:
c
'c Para la primera opción
If OpcionNuevo.BackStyle = 1 Then
c
OpcionNuevo.BackStyle = 0 ' Hace que se le quite el color de fondo.
c
OpcionNuevo.ForeColor = vbBlack 'Hace que el texto de la opción se ponga de color negro.
c If
Ñnd
c
'c Para la segunda opción
If OpcionAbrir.BackStyle = 1 Then
c
OpcionAbrir.BackStyle = 0 ' Hace que se le quite el color de fondo.
c
OpcionAbrir.ForeColor = vbBlack 'Hace que el texto de la opción se ponga de color negro.
c If
Ñnd
c
'c Para la tercera opción
If OpcionCerrar.BackStyle = 1 Then
c
OpcionCerrar.BackStyle = 0 ' Hace que se le quite el color de fondo.
c
OpcionCerrar.ForeColor = vbBlack 'Hace que el texto de la opción se ponga de color negro.
Ñnd If

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
' Para la cuarta opción
Ifc OpcionGuardar.BackStyle = 1 Then
c
OpcionGuardar.BackStyle =0 ' Hace que se le quite el color de fondo.
c
OpcionGuardar.ForeColor = vbBlack 'Hace que el texto de la opción se ponga de color negro.
c If
Ñnd
c
' Para la quinta opción
Ifc OpcionGuardarComo.BackStyle = 1 Then
c
OpcionGuardarComo.BackStyle =0 ' Hace que se le quite el color de fondo.
c
OpcionGuardarComo.ForeColor = vbBlack 'Hace que el texto de la opción se ponga de color
negro.
c
c If
Ñnd

'c Para la sexta opción


Ifc OpcionBuscar.BackStyle = 1 Then
c
OpcionBuscar.BackStyle =0 ' Hace que se le quite el color de fondo.
OpcionBuscar.ForeColor
c = vbBlack 'Hace que el texto de la opción se ponga de color negro.
Ñnd If
c
'c Para la séptima opción
Ifc OpcionConfigurar.BackStyle = 1 Then
c
OpcionConfigurar.BackStyle =0 ' Hace que se le quite el color de fondo.
OpcionConfigurar.ForeColor
c = vbBlack 'Hace que el texto de la opción se ponga de color
negro.
c
Ñnd If
c
'c Para la octava opción
Ifc OpcionVista.BackStyle = 1 Then
OpcionVista.BackStyle
c =0 ' Hace que se le quite el color de fondo.
OpcionVista.ForeColor
c = vbBlack 'Hace que el texto de la opción se ponga de color negro.
Ñnd If
c
'c Para la novena opción
Ifc OpcionImprimir.BackStyle = 1 Then
OpcionImprimir.BackStyle
c =0 ' Hace que se le quite el color de fondo.
OpcionImprimir.ForeColor
c = vbBlack 'Hace que el texto de la opción se ponga de color negro.
Ñnd If
c
'c Para la décima opción
Ifc OpcionSalir.BackStyle = 1 Then
OpcionSalir.BackStyle
c =0 ' Hace que se le quite el color de fondo.
OpcionSalir.ForeColor
c = vbBlack 'Hace que el texto de la opción se ponga de color negro.
Ñnd If
c
c
ó Corra la aplicación.
c
ó Desplace el puntero del Douse sobre cada una de las opciones del menú y podrá ver que estas
c
vuelven a su color original cuando se pasa de una opción a otra.
c
ó Detenga la aplicación y guárdela con los nombres FormÑjercicio21-3 para el P  c y,
c
Ñjercicio21-3 para el proyecto.
c
c notar, que crear una aplicación con menús personalizados requiere de mucho código por
Pudo
c del programador, pero esto tiene una ventaja, y es que permite crear menús a nuestro estilo y
parte
con los efectos gráficos que se nos ocurran que vayan acorde al estilo de nuestra aplicación.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Mose3ow
c y Se ha dicho anteriormente que los eventos Mose3ow y MoseUp ocurren
MoseUp
c respectivamente cuando el usuario pulsa y suelta un botón del Douse, ya sea
el izquierdo, el derecho o el del centro.
c
c Usted puede programar ambos eventos para realizar operaciones distintas en
c cada uno de ellos en una misma acción llamada Click. Por ejemplo, si
c queremos que una Ñtiqueta cambie de color cuando el usuario pulse el botón
c izquierdo del Douse y vuelva a su color original cuando el usuario suelte el
botón, entonces, debemos programar el evento Mose3ow para asignar el
c color de la pulsación, y luego programar el evento MoseUp para volver a
c poner el color original o color inicial de la Ñtiqueta.
c
c
TA: Utilice el argumento Bo (Boó ) para identificar cual es el botón del Douse
c presionado por el usuario. Ñste argumento devuelve un campo de bits que puede tomar los
c valores 1, 2 y 4. Donde 1 representa el botón izquierdo del Douse, 2 el botón derecho y 4 el
botón central.
c
c Ñjercicio:
c
Lac siguiente aplicación muestra el entorno de una calculadora típica donde cada botón de la
calculadora
c cambia de color cuando el usuario pulsa el botón izquierdo del Douse sobre el y toma
su color inicial cuando lo suelta.
c
c
TA: , c   cc  c c cc   cc cc  cc P Pc
 cc c c c   c  c Pc Pc  c   c    Pc c

c  c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c realizar la aplicación anterior y ver el comportamiento de los eventos Mose3ow y
Para
MoseUp
c ejecute los siguientes pasos:
c un nuevo proyecto.
ó Abra
c
ó Ñstablezca los siguientes valores en las propiedades indicadas del formulario:
c
u  
c
   c c //"/"/"/ c # c  c
c  c   c
c   
c "ccc%9c
c &(+/c
c %c &2"/c
 , c 2c c  c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Inserte
c 21 etiquetas sobre el formulario, tal y como se muestra en la siguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Dantenga
c la tecla CTRL (control) presionada y mientras esta pulsada haga clic sobre cada una de
las Ñtiquetas del formulario. Cuando todas las Ñtiquetas estén seleccionadas modificaremos
c
algunos valores en algunas propiedades de las Ñtiquetas. TA: ( c   Pc  c
c P Pc  c Pc c  Pc  Pc Pc  c c P Pc  c c  c  c
 c
cc c   c c c   c     c c  c  c  c   c c c c c

c c P c  Pc c   c c   c c c c  c c P Pc   P c   c
 c c   cc
c
c
c
ó Ahora que están todas las Ñtiquetas seleccionadas vamos a modificar los valores de las
c
siguientes propiedades con el valor indicado en la siguiente tabla:
c
c  
c   c c //////// c $ c
c c c$ c2
c
c
  c c // c  c
c
ó Haga clic en cualquier parte del formulario para deseleccionar las Ñtiquetas.
c
c
ó Aplique los siguientes valores en cada una de las propiedades de los controles indicados en la
siguiente
c tabla:
c
u  
c
c  'c
c & cc'c0
c
c u /
c
c '&( &+(c
c )( 2-.(c
c
 $ c c
c  c 2cc c
 c c
c c 2(2/c
c  c )//c
c c 2((c
c %c ".(c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
u   u  
c
&c  +c /c  )c
c & 2cc c & 2cc c
u +c u )c
c " 2/c " &2/c
c  .)/c  .)/c
c '&( 2((c '&( 2((c
c )( ".(c )( ".(c
"c
c  -c c  c
c & 2cc c & 2cc c
u -c u c
c " +2/c " .2/c
c  .)/c  .)/c
c '&( 2((c '&( 2((c
c )( ".(c )( ".(c
(c
c  .c 2c   c
& 2cc c & 2cc c
c
u .c u c
c " &2/c " 2(2/c
c  .)/c  .)/c
c '&( 2((c '&( 2((c
c )( ".(c )( ".(c
)c
c  'c &c  c
& 2cc c & 2cc c
c u 5c u c
c " .2/c " 2/c
c  .)/c  .2/c
c '&( 2((c '&( 2((c
c )( ".(c )( ".(c
+c
c  c "c  2c
& 2cc c & 2cc c
c u  c u 2c
c " 2(2/c " +2/c
c  .)/c  .2/c
c '&( 2((c '&( 2((c
c )( ".(c )( ".(c
-c  "c (c  &c
c 2cc c 2cc c
& &
c u "c u &c
c " 2/c " &2/c
c  ""/c  .2/c
c '&( 2((c '&( 2((c
)( ".(c )( ".(c
c
 $ c (c  $ c  c
c  c 2cc c  c 2cc c
c  c (c  c c
c c +2/c c .2/c
c  c ""/c  c .2/c
c c 2((c c 2((c
%c ".(c %c ".(c
c
c c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
u  
c
+c   c
c & 2cc c
u c
c " 2(2/c
c  .2/c
c '&( 2((c
c )( ".(c
-c
c  /c
c & 2cc c
u /c
c " 2/c
c  2"//c
c '&( 2((c
c )( ".(c
.c
c  c
& 2cc c
c
u
c
c " +2/c
c  2"//c
c '&( 2((c
c )( ".(c
2/c
c  c
& 2cc c
c u c
c " &2/c
c  2"//c
c '&( 2((c
c )( ".(c
 
c $ c    c
 c 2cc c
c  c 4c
c c .2/c
c  c 2"//c
c c 2((c
c %c ".(c
c
ó Ñl siguiente paso es hacer que las Ñtiquetas cambien de color cuando el usuario haga clic con el
c derecho del Douse sobre una de ellas. Para esto vamos a codificar el evento Mose3ow y
botón
c
MoseUp de cada Ñtiqueta.
c
ó Haga
c doble clic sobre la segunda Ñtiqueta del formulario, o más bien, sobre el botónc C. A
continuación, seleccione el evento Mose3ow y escriba el siguiente bloque de código:
c
c
Ifc Button = 1 Then ' Verifica se pulsa el botón izquierdo.
lbBotonC.BackColor = vbBlue ' Pone el color verde cuando se pulsa el botón izquierdo.
c If
Ñnd
c
c
Ñn el evento MoseUp de la misma etiqueta escriba:
c
Ifc Button = 1 Then ' Verifica si se pulso el botón izquierdo.
lbBotonC.BackColor
c = vbBlack ' Pone el color negro cuando se suelta el botón izquierdo.
Ñnd If

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Haga
c doble clic sobre la tercera Ñtiqueta del formulario (botónc 7). Seleccione el evento
Mose3ow y escriba:
c
c
If Button = 1 Then ' Verifica se pulsa el botón izquierdo.
c
lbBoton7.BackColor = vbBlue ' Pone el color verde cuando se pulsa el botón izquierdo.
c If
Ñnd
c
cÑn el evento MoseUp:
c
Ifc Button = 1 Then ' Verifica si se pulso el botón izquierdo.
lbBoton7.BackColor
c = vbBlack ' Pone el color negro cuando se suelta el botón izquierdo.
c If
Ñnd
c
c
ó Haga doble clic sobre la cuarta Ñtiqueta del formulario (botónc 8). Seleccione el evento
c
Mose3ow y escriba:
c
Ifc Button = 1 Then ' Verifica se pulsa el botón izquierdo.
c
lbBoton8.BackColor = vbBlue ' Pone el color verde cuando se pulsa el botón izquierdo.
c If
Ñnd
Ñnc el evento MoseUp:
c
Ifc Button = 1 Then ' Verifica si se pulso el botón izquierdo.
lbBoton8.BackColor = vbBlack ' Pone el color negro cuando se suelta el botón izquierdo.
c
Ñnd If
c
ó cHaga doble clic sobre la quinta Ñtiqueta del formulario (botónc 9). Seleccione el evento
c
Mose3ow y escriba:
c
If Button = 1 Then ' Verifica se pulsa el botón izquierdo.
c
lbBoton9.BackColor = vbBlue ' Pone el color verde cuando se pulsa el botón izquierdo.
c If
Ñnd
c
Ñnc el evento MoseUp:
c
Ifc Button = 1 Then ' Verifica si se pulso el botón izquierdo.
lbBoton9.BackColor
c = vbBlack ' Pone el color negro cuando se suelta el botón izquierdo.
Ñnd If
c
c
c
ó Haga doble clic sobre la sexta Ñtiqueta del formulario (botónc raíz). Seleccione el evento
Mose3ow
c y escriba:

Ifc Button = 1 Then ' Verifica se pulsa el botón izquierdo.


c
lbBotonRaiz.BackColor = vbBlue ' Pone el color verde cuando se pulsa el botón izquierdo.
c If
Ñnd
c
Ñnc el evento MoseUp:
c
If Button = 1 Then ' Verifica si se pulso el botón izquierdo.
c
lbBotonRaiz.BackColor = vbBlack ' Pone el color negro cuando se suelta el botón izquierdo.
c If
Ñnd
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Haga
c doble clic sobre la séptima Ñtiqueta del formulario (botón +/m). Seleccione el evento
Mose3ow y escriba:
c
c
If Button = 1 Then ' Verifica se pulsa el botón izquierdo.
c
lbBotonDD.BackColor = vbBlue ' Pone el color verde cuando se pulsa el botón izquierdo.
c If
Ñnd
c
Ñn el evento MoseUp:
c
Ifc Button = 1 Then ' Verifica si se pulso el botón izquierdo.
lbBotonDD.BackColor
c = vbBlack ' Pone el color negro cuando se suelta el botón izquierdo.
c If
Ñnd
c
ó Haga doble clic sobre la octava Ñtiqueta del formulario (botón 4). Seleccione el evento
c
Mose3ow y escriba:
c
c
If Button = 1 Then ' Verifica se pulsa el botón izquierdo.
c
lbBoton4.BackColor = vbBlue ' Pone el color verde cuando se pulsa el botón izquierdo.
c If
Ñnd
c
Ñnc el evento MoseUp:
c
Ifc Button = 1 Then ' Verifica si se pulso el botón izquierdo.
lbBoton4.BackColor = vbBlack ' Pone el color negro cuando se suelta el botón izquierdo.
c
Ñnd If
c
c
ó Haga doble clic sobre la novena Ñtiqueta del formulario (botón 5). Seleccione el evento
c
Mose3ow y escriba:
c
If Button = 1 Then ' Verifica se pulsa el botón izquierdo.
c
lbBoton5.BackColor = vbBlue ' Pone el color verde cuando se pulsa el botón izquierdo.
c If
Ñnd
c
Ñnc el evento MoseUp:
c
Ifc Button = 1 Then ' Verifica si se pulso el botón izquierdo.
lbBoton5.BackColor
c = vbBlack ' Pone el color negro cuando se suelta el botón izquierdo.
Ñnd If
c
c
ó Haga doble clic sobre la décima Ñtiqueta del formulario (botón 6). Seleccione el evento
c
Mose3ow y escriba:
c
Ifc Button = 1 Then ' Verifica se pulsa el botón izquierdo.
lbBoton6.BackColor = vbBlue ' Pone el color verde cuando se pulsa el botón izquierdo.
c If
Ñnd
c
Ñnc el evento MoseUp:
Ifc Button = 1 Then ' Verifica si se pulso el botón izquierdo.
c
lbBoton6.BackColor = vbBlack ' Pone el color negro cuando se suelta el botón izquierdo.
c If
Ñnd
c
c
ó Haga doble clic sobre la décima primera Ñtiqueta del formulario (botón m). Seleccione el evento
Mose3ow y escriba:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Ifc Button = 1 Then ' Verifica se pulsa el botón izquierdo.
lbBotonDenos.BackColor
c = vbBlue ' Pone el color verde cuando se pulsa el botón izquierdo.
Ñnd If
c
Ñnc el evento MoseUp:
c
If Button = 1 Then ' Verifica si se pulso el botón izquierdo.
c
lbBotonDenos.BackColor = vbBlack ' Pone el color negro cuando se suelta el botón izquierdo.
c If
Ñnd
c
c
ó Haga doble clic sobre la décima segunda Ñtiqueta del formulario (botón %). Seleccione el evento
c
Mose3ow y escriba:
cIf Button = 1 Then ' Verifica se pulsa el botón izquierdo.
c
lbBotonPorciento.BackColor = vbBlue ' Pone el color verde cuando se pulsa el botón izquierdo.
c If
Ñnd
c
Ñnc el evento MoseUp:
c
If Button = 1 Then ' Verifica si se pulso el botón izquierdo.
c
lbBotonPorciento.BackColor = vbBlack' Pone el color negro cuando se suelta el botón izquierdo.
c If
Ñnd
c
c
ó Haga doble clic sobre la décima tercera Ñtiqueta del formulario (botón 1). Seleccione el evento
Mose3ow
c y escriba:

Ifc Button = 1 Then ' Verifica se pulsa el botón izquierdo.


c
lbBoton1.BackColor = vbBlue ' Pone el color verde cuando se pulsa el botón izquierdo.
c If
Ñnd
c
Ñnc el evento MoseUp:
Ifc Button = 1 Then ' Verifica si se pulso el botón izquierdo.
lbBoton1.BackColor
c = vbBlack ' Pone el color negro cuando se suelta el botón izquierdo.
Ñnd If
c
c
ó Haga
c doble clic sobre la décima cuarta Ñtiqueta del formulario (botón 2). Seleccione el evento
Mose3ow y escriba:
c
c
If Button = 1 Then ' Verifica se pulsa el botón izquierdo.
c
lbBoton2.BackColor = vbBlue ' Pone el color verde cuando se pulsa el botón izquierdo.
c If
Ñnd
c
Ñn el evento MoseUp:
c
Ifc Button = 1 Then ' Verifica si se pulso el botón izquierdo.
lbBoton2.BackColor
c = vbBlack ' Pone el color negro cuando se suelta el botón izquierdo.
Ñnd
c If
c
ó Haga doble clic sobre la décima quinta Ñtiqueta del formulario (botón 3). Seleccione el evento
c
Mose3ow y escriba:
c
Ifc Button = 1 Then ' Verifica se pulsa el botón izquierdo.
lbBoton3.BackColor
c = vbBlue ' Pone el color verde cuando se pulsa el botón izquierdo.
Ñnd If

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Ñnc el evento MoseUp:
Ifc Button = 1 Then ' Verifica si se pulso el botón izquierdo.
c
lbBoton3.BackColor = vbBlack ' Pone el color negro cuando se suelta el botón izquierdo.
c If
Ñnd
c
ó Haga
c doble clic sobre la décima sexta Ñtiqueta del formulario (botón +). Seleccione el evento
Mose3ow y escriba:
c
Ifc Button = 1 Then ' Verifica se pulsa el botón izquierdo.
lbBotonSuma.BackColor
c = vbBlue ' Pone el color verde cuando se pulsa el botón izquierdo.
Ñnd
c If
c
Ñn el evento MoseUp:
c
Ifc Button = 1 Then ' Verifica si se pulso el botón izquierdo.
c
lbBotonSuma.BackColor = vbBlack ' Pone el color negro cuando se suelta el botón izquierdo.
c If
Ñnd
c
ó Haga
c doble clic sobre la décima séptima Ñtiqueta del formulario (botón /). Seleccione el evento
Mose3ow y escriba:
c
Ifc Button = 1 Then ' Verifica se pulsa el botón izquierdo.
c
lbBotonDivision.BackColor = vbBlue ' Pone el color verde cuando se pulsa el botón izquierdo.
c If
Ñnd
c
Ñn el evento MoseUp:
c
Ifc Button = 1 Then ' Verifica si se pulso el botón izquierdo.
lbBotonDivision.BackColor = vbBlack ' Pone el color negro cuando se suelta el botón izquierdo.
c If
Ñnd
c
c
ó Haga doble clic sobre la décima octava Ñtiqueta del formulario (botón 0). Seleccione el evento
c
Mose3ow y escriba:
c
Ifc Button = 1 Then ' Verifica se pulsa el botón izquierdo.
c
lbBoton0.BackColor = vbBlue ' Pone el color verde cuando se pulsa el botón izquierdo.
c If
Ñnd
Ñnc el evento MoseUp:
c
Ifc Button = 1 Then ' Verifica si se pulso el botón izquierdo.
lbBoton0.BackColor = vbBlack ' Pone el color negro cuando se suelta el botón izquierdo.
c
Ñnd If
c
c
ó Haga doble clic sobre la décima novena Ñtiqueta del formulario (botón punto). Seleccione el
c
evento Mose3ow y escriba:
c
If Button = 1 Then ' Verifica se pulsa el botón izquierdo.
c
lbBotonPunto.BackColor = vbBlue ' Pone el color verde cuando se pulsa el botón izquierdo.
c If
Ñnd
c
Ñnc el evento MoseUp:
Ifc Button = 1 Then ' Verifica si se pulso el botón izquierdo.
lbBotonPunto.BackColor = vbBlack ' Pone el color negro cuando se suelta el botón izquierdo.
Ñnd If
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Haga
c doble clic sobre la vigésima Ñtiqueta del formulario (botón =). Seleccione el evento
Mose3ow y escriba:
c
c
If Button = 1 Then ' Verifica se pulsa el botón izquierdo.
c
lbBotonIgual.BackColor = vbBlue ' Pone el color verde cuando se pulsa el botón izquierdo.
c If
Ñnd
c
Ñn el evento MoseUp:
c
Ifc Button = 1 Then ' Verifica si se pulso el botón izquierdo.
lbBotonIgual.BackColor
c = vbBlack ' Pone el color negro cuando se suelta el botón izquierdo.
c If
Ñnd
c
ó Haga doble clic sobre la vigésima primera Ñtiqueta del formulario (botón X). Seleccione el evento
c
Mose3ow y escriba:
c
Ifc Button = 1 Then ' Verifica se pulsa el botón izquierdo.
lbBotonDultiplicacion.BackColor
c = vbBlue ' Pone el color verde si pulsa el botón izquierdo.
Ñnd If
c
c
Ñn el evento MoseUp:
c
Ifc Button = 1 Then ' Verifica si se pulso el botón izquierdo.
c
lbBotonDultiplicacion.BackColor = vbBlack ' Pone el color negro si suelta el botón izquierdo.
c If
Ñnd
c
ó Corra la aplicación.
c
ó Haga clic sobre cada uno de los botones de la calculadora y verá como estos cambian de color y
c
vuelven a su color original.
c
ó Detenga
c la aplicación y guárdela con los nombres FormÑjercicio22-3 para el P  c y,
Ñjercicio22-3 para el proyecto.
c
c
- 3À2À1À3 Ñjercicios propesos
c
1. cDiseñar una aplicación que contenga un menú principal en el centro del formulario. Ñl menú debe
contener
c siete opciones cualesquiera. Cuando el usuario coloque el puntero del Douse sobre cada
una de las opciones, estas deben cambiar de color, y cuando el usuario retire el puntero del Douse
c
de las opciones estas deben tonar a su color original. Utilice el evento MoseMove.
c
2. cColoque varias Ñtiquetas en un formulario y haga que estas cambien de color cuando el usuario
hagac clic con el botón izquierdo del Douse sobre una de estas, y que luego tomen su color original
cuando
c el usuario suelte el botón del Douse. Utilice los eventos Mose3ow y MoseUp.
c
3. Diseñar utilizando Ñtiquetas una aplicación que contenga los siguientes menús:
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
- 3À3À1
c Gas cajas de exo (TexBox)
c
c Un control TexBox, llamado también caja de edición, es aquella que permite
al cusuario introducir datos en tiempo de ejecución. También son muy utilizadas para mostrar datos
c
contenidas en una base de datos o en archivos de texto. Siempre que necesite solicitar datos del
usuario
c utilice las cajas de texto, por ejemplo, el registro de un empleado, registro de un cliente,
registrar un producto en un almacén, ingresos de calificaciones de estudiantes, registro de un
c
formulario, etc.
c
c
- 3À3À1À1 Propiedades de las cajas de exo
c
Lasc cajas de texto poseen las propiedades comunes (Name, BackColor, Ñnabled, Font, Height,
Width, Left, Top, TabIndex, Visible y ToolTipText) ya vistas anteriormente en el control
c
Comma dBo . Aparte de estas propiedades las cajas de texto poseen características
c
especiales, es decir, muy propias de ellas. Ñstas propiedades se detallan a continuación:
c
c ropiedad
P 3escripció
c
Ali me  Ñsta propiedad permite justificar el texto que el usuario ingresara por el teclado o
c por medio de otra fuente de información. Puede tomar los valores 0 ± Gef Jsify
c (justificación a la izquierda), 1 ± Rih Jsify (justificación a la derecha) y
c 2 ± Ce er (justificación en el centro). Ñl valor por defecto es 0 ± Gef Jsify, ya
que la caja de texto coloca automáticamente el texto a la izquierda.
c
c
CMÑTARë: No se modifica muy a menudo esta propiedad, debido a que se tiene por
c costumbre escribir en una caja de texto a partir de su extremo izquierdo. Ñn algunas ocasiones se
c justifica a la izquierda o a la derecha como es el caso de una calculadora.
c c
Ñjercicio:
c
ó Abra un nuevo proyecto.
c
ó Inserte
c tres cajas de texto una debajo de la otra.
c
ó Seleccione la primera caja y establezca el valor 0 ± Gef Jsify en la propiedad Ali me .
c
ó Seleccione la segunda caja y establezca el valor 1 ± Rih Jsify en la propiedad Ali me .
c
ó Seleccione la tercera caja y establezca el valor 2 ± Ce er en la propiedad Ali me .
c
ó Seleccione
c nuevamente la primera caja de texto y borre el valor que contiene la propiedad Tex.
c
ó Haga lo mismo con las otras dos cajas.
c
ó Corra la aplicación y escriba en cada una de las cajas de texto. Podrá entonces ver el
c
comportamiento de cada uno de los valores especificados en la propiedad Ali me .
c
ó Detenga
c la aplicación y guárdela con los nombres FormÑjercicio23-3 para el P  c y,
Ñjercicio23-3 para el proyecto.
c
c
Appeara ce Ñstablece si la caja de texto tendrá o no apariencia 3D. Cuando la caja tiene
c apariencia 3D se nota un efecto de profundidad en el interior de la caja. Ñsta es la
c apariencia que distingue una caja de texto de otros controles como, por ejemplo,
c las Ñtiquetas. Ñsta propiedad puede tomar los valores 0 ± Fla (sin bordes 3D) y
1 ± 33 (con bordes 3D), este último es el valor por defecto.
c
c CMÑTARë: Ñn muchas ocasiones usted verá la necesidad de quitar la apariencia 3D de una
c caja de texto, debido a que es posible que no se adapte a la apariencia gráfica que usted haya
seleccionado para su aplicación.
c
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c Ñjercicio:
c
Ñl siguiente ejercicio muestra dos formularios de ingreso de datos para una agenda telefónica.
c
Ambos formulario contienen los mismos campos de edición pero uno de ellos contiene apariencia
3Dc en la cajas de texto y el otro de apariencia simple (sin 3D). De esta manera usted podrá notar
la cdiferencia.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Abra
c un nuevo proyecto.
c
ó Dodifique manualmente el tamaño del formulario para que pueda diseñar los dos formularios de
c
ingreso de datos. Observe detenidamente la imagen y trate de poner el formulario del mismo
c
tamaño.
c
c la propiedad Capio del formulario escriba Formularios.
ó Ñn
c
ó Identifique cuales son los controles que están en la imagen y trate de colocarlos de la misma
c
manera que usted lo puede ver. Ñn la imagen puede notar que hemos modificado la propiedad
Foc  de las dos Ñtiquetas que están como encabezados en cada formulario. También
modificamos
c la propiedad Fo  de las demás Ñtiquetas para hacer resaltar el texto contenido en
ellas.
c
c
ó Recuerde que debe establecer el valor 0 ± Fla en la propiedad Appeara ce de las cajas de
c del segundo formulario.
texto
c
ó Cuando
c haya concluido con el ejercicio guárdelo con los nombres FormÑjercicio23-3 para el
P
c  cy, Ñjercicio23-3 para el proyecto.
c
Borderyle Ñsta propiedad devuelve o establece el estilo de borde de la caja de texto, es
c decir, indica si la caja de texto tendrá o no bordes en sus extremos. Puede
c tomar los valores 0 ± o e (sin bordes) y 1 ± Fixed i le (con borde simple
c fijo).
c
c CMÑTARë 1: Ñsta propiedad tiene el mismo efecto en algunos controles, como por
c ejemplo en las Ñtiquetas, pero en otros controles como es el caso de los Formularios
determinan características claves que lo identifican visualmente como una ventana de
c propósito general o como un cuadro de dialogo.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Lasc siguientes imágenes muestran dos cajas de texto, una con borde simple fijo y otra sin bordes:
c
c
c
c
c
c
c
c
c
c
c
CMÑTARë 2: Utilice el valor 0-o e en la propiedad Borderyle de las cajas de texto cuando quiera dar una
apariencia más profesional a las cajas. Ñn ocasiones los programadores diseñan imágenes gráficas con apariencia de
c de texto y con bordes espectaculares, pero son simple imágenes y no se puede escribir sobre estas. Ñl método
cajas
c
utilizado para resolver este problema es colocar una caja de texto sin bordes sobre la imagen.

c
c
3aaField, Ñstas propiedades están relacionadas a la manipulación de bases de datos
3aaForma,
c y se tratan en el Capilo 5 de este libro.
3aaMember y
c
3aaorce
c
c
Gocked Devuelve o establece un valor que indica si la caja de texto se puede
c modificar. Puede tomar los valores Tre o False. Si es Tre el usuario no
c podrá escribir en la caja de texto y si es False (valor por defecto) el usuario
podrá escribir en la caja de texto.
c
c CMÑTARë: Utilice el valor Tre en la propiedad Gocked si desea mostrar datos que el
c usuario no podrá modificar en la caja de texto. Por ejemplo, puede utilizar una Caja de texto
para mostrar la hora o la fecha del sistema y establecer el valor Tre en la propiedad
c Gocked de la Caja de texto para que el usuario no la pueda modificar. Otro caso podría ser,
c que al leer los datos de una base de datos usted solamente desee mostrarlo al usuario y no
permitirle modificarlos.
c
c
Tex Sin dunda alguna esta es la propiedad más importante de las cajas de texto,
c debido a que es la encargada de manipular el texto que se escribe en la
c caja de texto. Todo lo que sea escrito en la caja de texto se almacena en la
c propiedad Tex en tiempo de ejecución. También puede escribir en la caja
de texto mediante el editor de código como se muestra en el siguiente
c ejercicio para mostrar la fecha del sistema.
c Ñjercicio:
c
ó Abra un nuevo proyecto.
c
ó Inserte una caja de texto.
c
ó Seleccione la propiedad Gocked de la caja de texto y establezca el valor Tre.
c
ó Haga doble clic en cualquier parte del formulario y en el evento Goad escriba la siguiente línea de
c
código:
c
Text1.Text = Date ' Duestra la fecha del sistema.
c
c
ó Corra la aplicación.
c
Se mostrará la fecha del sistema en la caja de texto. Intente modificarla. Podrá observar que la caja
c
de texto no le permite modificar su contenido debido a que la hemos bloqueado (Gocked).
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio24-3 para el P  c
y Ñjercicio24-3 para el proyecto.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
MaxGe
c h Devuelve o establece un valor numérico que indica la cantidad máxima de
c caracteres que puede aceptar una caja de texto en el área de edición. Ñl valor
máximo para una caja de texto es de aproximadamente 65,535 caracteres o
c 32 KB. Ñl valor por defecto de la propiedad MaxGe h es 0, que indica que
c la caja de texto podrá aceptar el límite máximo de caracteres. Un valor mayor
c de 0 especificado, indicará la cantidad de caracteres que el usuario podrá
c escribir en la caja de texto. Por ejemplo, si especifica el valor 15 en la
c propiedad MaxGe h el usuario no podrá escribir más de 15 caracteres en la
caja de texto.
c
c CMÑTARë: Utilice esta propiedad cuando la aplicación este vinculada o relacionada con
c archivo de bases de datos para limitar las cajas de texto a los valores máximos admitidos por
los campos de la base de datos que están relacionados con las cajas de texto.
c
c
MliGi e Devuelve o establece un valor que indica si la caja de texto admitirá más de
c una línea de texto en el área de edición. Puede tomar los valores Tre o
c False. Si es Tre la caja de texto permitirá más de una línea de texto en el
c área de edición, es decir, podrá pasar a la otra línea de texto con el simple
c hecho de pulsar la tecla ÑNTÑR. Si es False solo admitirá una línea de texto y
c no saltará a la siguiente línea aunque pulse la tecla ÑNTÑR. Ñl valor por
defecto de esta propiedad es False.
c
c
CMÑTARë: Utilice múltiples líneas cuando requiera mostrar o solicitar gran cantidad de
c datos en la caja de texto. Por ejemplo, mostrar el contenido de un archivo o para solicitar gran
c cantidad datos del usuario como: comentario, nota, explicación, detalles, etc. Los
procesadores de texto (Word, WordPad, NotePad, etc.) son ejemplos de aplicaciones que
c manejan cajas de texto con múltiples líneas.
c
c
crollBars Devuelve o establece un valor que indica si la caja de texto tendrá barra de
c desplazamiento horizontal o vertical. Puede tomar los valores 0m None (si
c barra), 1m Horizontal (barra horizontal), 2m Vertical (barra vertical) y 3m Both
c (ambas barras).
c
c CMÑTARë: Utilice esta propiedad si la caja de texto admite más de una línea de texto en
el área de edición. Ñsto permite que el usuario pueda explorar fácilmente el contenido de la
c caja haciendo uso de las barras de desplazamiento.
c
c Ñjercicio:
c
ó Abra un nuevo proyecto. Coloque una caja de texto que cubra casi todo el formulario:
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Seleccione
c la caja de texto y modifique las siguientes propiedades:
c
 
c
c  c
c  c /c c   c
c c c
c
ó Corra
c la aplicación.
c
Ñscriba varias líneas en las cajas de texto hasta que las barras de desplazamiento se activen.
c notar que las barras de desplazamiento son únicamente útiles cuando las cajas de texto
Podrá
c
pueden admitir más de una línea de texto.
c
ó Detenga
c la aplicación y guarde el ejercicio con los nombres FormÑjercicio25-3 para el P  c
y Ñjercicio25-3 para el proyecto.
c
c
PasswordChar Devuelve o establece un valor que se muestra cada vez que se escribe en la
c caja de texto. Ñsta propiedad solo admite un carácter. Ñs utilizada para
c ocultar los datos que se escriban en la caja de texto. Los caracteres escritos
c se sustituyen por el carácter especificado en la propiedad PasswordChar.
c Por ejemplo, si usted tiene designada en su aplicación una caja de texto para
escribir una contraseña de acceso, puede escribir un aserisco * en la
c propiedad PasswordChar para que en vez de mostrarse la contraseña se
c muestren asteriscos.
c TA: Las cajas de textos protegidas mediante contraseñas desactivan las combinaciones de
c tecla Ctrl+X y Ctrl+C para evitar que se copie su contenido.
c
Ñjercicio:
c
c
ó Diseñe una pantalla de acceso o de identificación de usuario. Solicite el nombre y la clave o
c
contraseña de acceso mediante dos cajas de texto. Utilice dos etiquetas para especificar los
c requeridos en cada caja de texto. Recuerde proteger los datos que se escriban en la caja
datos
dec texto correspondiente a la contraseña.
c
c
- 3À3À1À2 Ñve os sobre las cajas de exo
c
Lasc cajas de texto poseen los eventos estándares de los controles (Click, 3blClick, 3ra3rop,
c
3raver, oFocs, Key3ow , KeyUp, KeyPress, GosFocs, Mose3ow , MoseMove) ya
estudiados anteriormente. Aparte de estos eventos las cajas de texto incluyen un evento muy
c
propio de ellas, este es el evento Cha e, que ocurre cuando se modifica el texto contenido en el
c de edición.
área
c
c
Todos los eventos ya mencionados anteriormente y algunas propiedades especiales la
estudiaremos
c en los siguientes tópicos. Los tópicos son una colección de aplicaciones y trucos que
comúnmente utilizaremos en las cajas de texto. Duchos de estos tópicos lo utilizarán al momento
c
en que este diseñando una aplicación.
c
c
‡ Cómo leer las eclas plsadas desde el eclado a rav
s de  a caja de exo
c
Lasc cajas de texto cuentan con los eventos estándares KeyPress, Key3ow y KeyUp. Cada uno
de estos eventos es utilizado para atrapar las actividades del usuario sobre una caja de texto. Se ha
c
dicho anteriormente que el evento KeyPress ocurre cuando el usuario presiona y suelta una tecla.
c un argumento llamado KeyAscii que devuelve el valor ACëë correspondiente a la tecla
Tiene
pulsada por el usuario. Ñste argumento permite realizar una serie de operaciones sobre las cajas
de texto. Algunos casos se tratan en la siguiente página.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
- Hacer
c qe  a caja de exo solo acepe meros:
c
Dentro del evento KeyPress de la caja de texto escriba el siguiente bloque de código:
c
Ifc Not (KeyAscii >= 48 And KeyAscii ®= 57 Or KeyAscii = 8) Then
c
KeyAscii =0
c
Ñnd If
c
Ñl cbloque de código hace que una caja de texto solo acepte números. Ñxisten otros métodos para
c esto y lo trataremos más adelante.
hacer
c
c
Ñxplicación del código anterior:
c
If Not (KeyAscii >= 48 And KeyAscii ®= 57 Or KeyAscii = 8) Then
c
Ñnc esta línea se verifica si el valor ASCII de la tecla pulsada se encuentran en el intervalo de los
c
valores ASCII correspondiente a los números naturales del 0 al 9. Los números naturales del 0 al 9
secencuentran entre los valores 48 hasta el 57 de la tabla ASCII. Ñl valor ASCII 48 corresponde al
número 0, el valor 49 al número 1, el valor 50 al número 2 y así sucesivamente. Ñl valor 8 de la
c
tabla ASCII corresponde a la tecla de borrar (BackSpace).
c
Si ctraducimos literalmente el bloque de código anterior obtendríamos más o menos lo siguiente:
c
Si cNo (se pulsa una tecla con valor ASCII mayor o igual que 48 Y menor o igual que 57 O la tecla
BackSpace) Ñntonces
c
c ASCII es igual a 0, es decir, asume que no se pulso ninguna tecla.
Valor
c
Finc Si
c
Cuando igualamos a cero el argumento KeyAscii la aplicación asume que no se ha pulsado
c
ninguna tecla y como consecuencia no se muestra la tecla pulsada en la caja de texto.
c
c ejemplo para hacer que una caja de texto admita solamente números:
Otro
c
Ifc (KeyAscii ® 48) Or (KeyAscii > 57) Then
c If KeyAscii ®> 8 Then
KeyAscii = 0
c Ñnd If
c If
Ñnd
c
c
Ñste es otro ejemplo pero mucho más profesional:
c
Ifc InStr("0123456789" & Chr(8) & Chr(13), Chr(KeyAscii)) = 0 Then
c KeyAscii = 0
Ñnd
c If
c
c
Ñste último ejemplo es mucho más recomendable cuando se va a permitir introducir otros
c
caracteres a parte de los números. Los caracteres que la caja de texto admitirá lo pueden incluir
c
dentro de las comillas donde se encuentran los números. Por ejemplo, si la caja de texto admitirá
c
puntos, entonces, incluya el punto dentro de las comillas: "0123456789À". Dás adelante
estudiaremos la función ë r.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
- Hacer
c qe odo lo qe se escriba e  a caja de exo se co viera a mayscla
c
Ñn muchas ocasiones necesitamos que todo lo que escriba el usuario en una caja de texto sea
c
convertido a mayúscula. Para esto utilizamos la función UCase dentro del evento KeyPress. La
c
función UCase se encarga de convertir una cadena de caracteres en mayúscula. Utilizaremos
c
también la función Chr para convertir el valor ACëë de la tecla pulsada en el carácter
correspondiente
c a dicho valor. También utilizaremos la función Asc para obtener el valor ACëë del
carácter convertido a mayúscula. Ñsta última función es la inversa a la función Chr.
c
c
Ñscriba la siguiente línea de código dentro del evento KeyPress de la caja de texto:
c
c
KeyAscii = Asc(UCase(Chr(KeyAscii))) µConvierte todo a mayúscula.
c
c
Ñxisten muchos métodos para hacer que todo lo que se escriba en una caja de texto sea convertido
a cmayúscula, pero este es un código muy profesional que he creado y probablemente no lo
c
encuentre en otros libros o en Internet.
c
c
Ñxplicación del código anterior:
c
c
Para entender esta línea de código explicaremos por parte cada una de las funciones que se
c
emplean en ella. Como en todos los lenguajes de programación los últimos paréntesis son los
c
primeros que se ejecutan. Para esta línea de código podríamos decir, que las últimas funciones son
lasc primeras que se ejecutan. Por consiguiente, en esta línea de código la primera función que se
ejecuta
c es Chr. Lo primero que hacemos es convertir en una letra o carácter el valor que tiene el
argumento KeyAscii con la función Chr. Por ejemplo, si el usuario pulsa la tecla ³a´ el argumento
c
KeyAscii del evento KeyPress toma el valor 97, esto es, porque 97 es el valor ACëë para la letra
³a´.c Luego que se obtiene el valor 97, la función Chr lo convierte en una ³a´. Después de esto,
c
utilizamos la función UCase para convertir esa ³a´ en mayúscula. Cuando convertimos el carácter
enc mayúscula, obtenemos el valor ACëë de ese carácter convertido a mayúscula, utilizando la
función
c Asc. Recuerde que todos los caracteres tienen un valor distinto aunque sea el mismo, por
ejemplo, el valor para la ³a´ en minúscula es 97 y, para la ³A´ en mayúscula es 65. Luego que
c
obtenemos el valor ACëë de la letra convertida a mayúscula, asignamos ese valor al argumento
c
KeyAscii para que asuma que se pulso esa letra sobre la caja de texto.
c
c
- Hacer qe odo lo qe se escriba e  a caja de exo se co viera a mi scla
c
Para esto, hacemos lo mismo que explicamos anteriormente pero cambiamos la función UCase por
c
GCase.
c
c
KeyAscii = Asc(LCase(Chr(KeyAscii))) µConvierte todo a minúscula.
c
c
- Pasar de  a caja de exo a ora ca do se plse la ecla ÑTÑR
c
Conc frecuencia las aplicaciones posicionan el cursor en la siguiente caja de texto cuando el usuario
c la tecla ÑNTÑR. Para esto verificamos si el usuario pulso la tecla ÑNTÑR mediante el evento
pulsa
c
KeyPress de la caja de texto. Cuando el usuario pulsa la tecla ÑNTÑR el argumento KeyAscii del
evento
c KeyPress toma el valor 13 que corresponde a la tecla ÑNTÑR en la tabla ACëë. Luego
enviamos al teclado la pulsación de la tecla TAB o tabulación mediante la sentencia e dKeys.
c
c
Ifc KeyAscii = 13 Then µVerifica que se pulsa la tecla ÑNTÑR.
c SendKeys ³{tab}´ µSe pulsa la tecla TAB.
Ñnd If

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
TA:
c Tiene que tener en cuenta si el orden de tabulación de cada control esta correctamente
enumerado. Utilice la propiedad Tabë dex de cada control para controlar el orden de tabulación.
c
Gosc Key3ow y KeyUp e las cajas de exo
c
Losc eventos Key3ow y KeyUp son utilizando también para capturar las actividades realizadas por
el cusuario en las cajas de texto. A diferencia del evento KeyPress, los eventos Key3ow y KeyUp
pueden capturar teclas especiales que no son posibles capturar por el evento KeyPress. Por
c
ejemplo, las teclas ALT, CTRL, SHIFT, tecla de funciones (F1 hasta F12), Delete (Supr), Home
c
(Inicio), PageUp (Re Pág), PageDown (Av Pág), Ñnd (Fin), Teclas de desplazamiento (Arriba,
c Izquierda, Derecha), entre otras.
Abajo,
c
Losc eventos Key3ow y KeyUp son mucho más complejos que el evento KeyPress, esto puede
notarlo en lista de argumentos de dichos eventos.
c
c
‡ Al as propiedades de las cajas de exo ma ejadas e iempo de ejecció
c
c
Además, de la propiedad Tex, existen tres propiedades que son muy utilizadas en las cajas de
c que son: elar, elGe h y elex.
texto
c
» La propiedad elar devuelve o establece un valor numérico de la posición del signo de
c
intercalación parpadeante (punto de inserción que indica donde aparecerá el texto que teclee el
c
usuario). Por ejemplo, si desea posicionar el punto de inserción al principio de la caja de texto,
c
entonces, utilizaríamos un código similar a este: nombre caja texto.SelStart = 0. Cuando el punto
dec inserción se encuentra al principio de la caja de texto su valor es 0. Si desea posicionarlo al final
de la caja de texto escriba: nombre caja texto.SelStart = Len(nombre caja texto.Text). La longitud
c
del texto indicará el valor máximo que puede alcanzar el punto de inserción en una caja de texto.
c
Dediante la sentencia Ge puede obtener la longitud de una cadena de texto, como lo pudimos en
el cejemplo anterior.
c
c propiedad elGe h devuelve o establece la cantidad de caracteres seleccionados en la caja
» La
de texto. También puede seleccionar una cantidad de caracteres utilizando código de programa.
c
Por ejemplo, si desea seleccionar mediante código todo el contenido de una caja de texto, utilice un
c
código similar a este: nombre caja texto.SelLength = Len(nombre caja texto.Text).
c
c propiedad elTex devuelve o establece el texto seleccionado en la caja de texto, ya sea por
» La
el cusuario o mediante código. Ñsta propiedad es muy utilizada para realizar búsquedas y remplazar
textos.
c
c
A continuación, se muestra una aplicación donde usted podrá notar el comportamiento de cada una
dec estas tres propiedades. La aplicación consiste en un sistema de búsqueda y reemplazo de
c
palabras. La aplicación tendrá cuatro cajas de texto: la primera para el contenido principal, la
segunda
c para que el usuario especifique la palabra a buscar, la tercera para que el usuario
especifique la palabra con la cual desea remplazar la palabra buscada, y en la cuarta la aplicación
c
mostrará la posición donde se encuentra la palabra buscada.
c
c la realización de esta aplicación haga lo siguiente:
Para
c
ó Abra
c un nuevo proyecto.
c
ó Dodifique el tamaño del formulario en ambos extremos para poder colocar adecuadamente los
controles.
c Si desea, puede especificar el valor 6735 en la propiedad Heih y el valor 8460 en la
propiedad
c Widh, así tendrá el tamaño exacto con la cual he diseñado la aplicación.
c
ó Inserte una caja de texto que cubra casi todo el formulario, dejando un espacio de tres pulgadas
en la parte inferior, tal y como se ve en la figura de la siguiente página.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Coloque
c tres etiquetas, tres cajas de texto y dos botones de comando, tal y como se muestra en la
imagen anterior. Recuerde modificar la propiedad Capio de cada etiqueta y de cada botón de
c
comando. También elimine el contenido de la propiedad Tex de cada caja de texto.
c
c
ó Cambie los nombres a las cajas de texto y a los botones de comando para tener mejor control de
c en la aplicación. A la caja principal asigne el nombre: txtContenido, a la caja de búsqueda:
estos
txtBuscar,
c a la caja para remplazar: txtRemplazar, a la caja posición de la palabra: txtPosicion, al
botón para iniciar la búsqueda: cmdBuscar, y al botón de remplazar: cmdRemplazar.
c
c
ó Ahora vamos hacer que la caja de texto principal tenga algo de contenido para poder buscar
c
alguna palabra dentro de ella. Para esto, haga doble clic en cualquier parte del formulario y dentro
delc evento Goad del formulario escriba la siguiente línea de código:
c
txtContenido.Text
c = ³La computadora es una máquina electrónica que acepta y procesa datos.´
c
c línea de código hará que al iniciar la aplicación la caja de texto principal tenga como contenido
Ñsta
el ctexto especificado en la propiedad Tex. Recuerde que el evento Goad ocurre cuando la
aplicación
c es totalmente cargada, por tal razón, hemos puesto esta línea de código en dicho evento.
c
ó Seleccione la caja de texto principal (txtContenido) y en la propiedad Hideelecio especifique el
c False. Ñsto hace que la palabra buscada desde código se vea resaltada o seleccionada.
valor
c
c
ó Haga doble clic en el botón / c c  . Dentro del evento Click escriba el siguiente
bloque de código:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Dim c i As Integer ' Variable que controla el bucle.
c
µIniciamos un bucle para buscar por toda la caja.
Forc i = 0 To Len(txtContenido.Text)
c
cµÑstablecemos el comienzo de la busqueda.
ctxtContenido.SelStart = i
c
'Ñspecificamos la longitud del texto a buscar.
ctxtContenido.SelLength = Len(txtBuscar.Text)
c
c'Verificamos si el texto seleccionado es igual al especificado en la caja Buscar y paramos la bus.
cIf txtContenido.SelText = txtBuscar.Text Then Ñxit For
c
Next i
c
txtPosicion.Text = txtContenido.SelStart µPone la posición donde se encontró la palabra.
c
c
ó Antes de seguir agregando código corra la aplicación. Ñn la caja de texto de búsqueda escriba
una c palabra que se encuentre en la caja del contenido, por ejemplo, computadora. Después haga
clicc en el botón / c c . Podrá observar como el código anterior busca la palabra y la
c
selecciona.
c
Ñxplicació del códio:
c
Gí c ea 1: Dim i As Integer
c
Ñnc esta línea hemos declarado una variable de tipo entera llamada i. Ñsta variable es necesaria
parac controlar el bucle. Si tiene conocimientos en otros lenguajes de programación sabrá que todo
bucle tiene una variable de control de tipo entera.
c
Gí c ea 2: For i = 0 To Len(txtContenido.Text)
c
Ñnc esta línea hemos iniciado el bucle para que se repita hasta que lea carácter por carácter el
contenido
c de la caja principal. Hemos iniciado el bucle que comience desde el valor 0, para que
comience a leer desde el primer carácter de la caja principal. Ñl bucle se repetirá hasta que se lean
c
todos los caracteres de la caja y esto esta dado por: To Len(txtContenido.Text). Si traducimos
c
literalmente esta porción de código obtendríamos algo como: Hasta la Longitud(de la caja
c
contenido).
c
Gí c ea 3: txtContenido.SelStart = i
c
Ñsta línea hace que el punto de inserción se coloque en cada uno de los caracteres de la caja
c
principal. Ñsto es necesario para comenzar la selección desde un punto diferente, si no se ha
c
encontrado la palabra en una posición anterior.
c
Gí c ea 4: txtContenido.SelLength = Len(txtBuscar.Text)
c
Ñsta línea se encarga de seleccionar los caracteres a la derecha a partir de la posición actual
c
establecida por elar. Ñl total de caracteres a seleccionar va a depender de la cantidad de
c
caracteres que posee la palabra a buscar.
c
Gí c ea 5: If txtContenido.SelText = txtBuscar.Text Then Ñxit For
c
Ñsta línea verifica si el texto seleccionado es igual al texto que se esta buscando. Si el texto
almacenado en la propiedad elTex es idéntico al buscado, entonces, se finaliza el bucle. Ñn caso
contrario se comienza la búsqueda desde otra posición (SelStart).
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Gi c ea 6: Next i
c
Ñsta línea es requerida por Visual Basic al final de la utilización de un bucle. Traducida literalmente
c
significa: Próxima repetición o siguiente repetición.
c
Gí c ea 7: txtPosicion.Text = txtContenido.SelStart
c
Ñsta última línea se ejecuta después de haberse concluido con la búsqueda. Se encarga de poner
c
en la caja de textoc  , la posición donde elar pudo conseguir la palabra, o más bien, a
c de donde se comenzó a seleccionar la palabra encontrada.
partir
c
c
ó Detenga la aplicación y codifiquemos el botón de remplazar. Dentro del evento Click del botón
remplazar
c escriba:
c
If Len(txtContenido.SelText) > 0 Then ' Verifica que halla texto seleccionado.
c
c µRemplaza el texto seleccionado por el texto escrito en la caja remplazar.
c txtContenido.SelText = txtRemplazar.Text
c
c If
Ñnd
c
c
ó Corra la aplicación.
c
ó Busque nuevamente la palabra computadora. Después que la palabra se encuentre seleccionada,
c
escriba en la caja de texto P   la palabra ³ordenador´, y a continuación, haga clic en el botón
c
remplazar. Podrá notar como es remplazada la palabra.
c
Ñxplicació
c del códio
c
Primero verificamos que exista algún texto seleccionado con la línea de código: If
c
Len(txtContenido.SelText) > 0 Then. Si no se hace esta evaluación, entonces, aunque no exista
c
selección alguna el programa insertará el texto escrito en la caja remplazar a partir de la posición
quec se encuentra el punto de inserción.
c
Ñn la segunda línea remplazamos el texto el texto seleccionado por el texto escrito en la caja de
c remplazar. Si traducimos literalmente esta línea de código obtendríamos algo como: Ñl texto
texto
c
seleccionado en la caja contenido es igual al texto contenido en la caja remplazar.
c
ó Detenga
c la aplicación y guarde el ejercicio con los nombres FormÑjercicio26-3 para el P  c
y Ñjercicio26-3
c para el proyecto.
c
Realicemos otra aplicación para familiarizarnos más con las propiedades elar, elGe h y
c
elTex.
c
Lac siguiente aplicación muestra un programa típico de mecanografía. Ñn este no hemos agregado
unc teclado virtual, solo calculamos los errores y las pulsaciones correctas. La aplicación consta de
cinco cajas de texto, la primera para el texto que se tiene que digitar, la segunda para el texto
c
digitado, la tercera para mostrar las pulsaciones erróneas, la cuarta para mostrar las correctas y la
c para mostrar el total de pulsaciones.
quinta
c
c un nuevo proyecto.
ó Abra
c
ó Dodifique el tamaño del formulario para colocar adecuadamente los controles en la aplicación.
c
Puede utilizar los siguientes valores para el formulario: Heih = 7245 y Widh = 8115.

ó Diseñe la aplicación, tal y como se muestra en la figura de la página siguiente.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Seleccione
c la primera caja de texto y modifique las siguientes propiedades:
c
 
c $ c c
c
c  c
c  c 2c c  c
c c2
c
c
 c c
c c  c
c c c
c
c
ó Seleccione la segunda caja de texto y modifique las siguientes propiedades:
c
 
c $ c  c
c
c  c
c  c 2c c  c
c c c2
c
c c
c
c
ó Seleccione una por una las últimas tres cajas de texto y borre el contenido de la propiedad Tex. A
la c tercera caja asigne el nombre txtÑrrores, a la segunda txtCorrectas y a la tercera
txtTotalPulsaciones.
c Ñstos nombres permitirán trabajar mucho mejor en la aplicación.
c
Ahora, hagamos que la primera caja de texto contenga alguna información para que el usuario la
digite. Para esto haga doble clic en cualquier parte del formulario y dentro del evento Goad escriba:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
txtcontenido.Text
c = "Visual Basic es un lenguaje de programación orientado a objetos."
c
' Selecciona el primera carácter a digitar.
c
txtContenido.SelStart =0
c
txtContenido.SelLength =1
c
'c Hace que el punto de inserción se coloque en la caja de digitación.
txtDigitado.TabIndex
c =0
c
c
ó Haga doble clic sobre la caja de contenido y dentro del evento Click escriba:
c
µÑstas dos líneas, impide que el usuario coloque manualmente el punto de inserción
c
µen otra posición de la caja de contenido al hacer clic sobre esta.
c
c
txtContenido.SelStart = Len(txtDigitado.Text)
c
txtContenido.SelLength =1
c
c
ó Haga doble clic sobre la caja de digitación y dentro del evento Click escriba:
c
c
µVerifica si el ejercicio ha concluido.
Ifc Len(txtContenido.Text) = Len(txtDigitado.Text) Then
c
c DsgBox ("Usted ha finalizado el ejercicio.") µDuestra al usuario un mensaje de finalización.
c KeyAscii = 0 ' Cancela cualquier tecla pulsada si el ejercicio termino.
c
c
µSi
c el ejercicio no ha concluido entonces:
c
ÑlseIf KeyAscii = 8 Then ' Verifica si se pulsa la tecla BackSpace (tecla de borrar).
c KeyAscii = 0 ' Si se pulsa la tecla BackSpace la cancela.
c
c
Ñlse µSino se pulsa la tecla BackSpace.
c
µVerificamos las pulsaciones correctas.
c If txtContenido.SelText = Chr(KeyAscii) Then
c
'Calculamos el total de pulsaciones correctas.
c
c txtCorrectas.Text = Val(txtCorrectas.Text) + 1
c Ñlse
c µCalculamos las pulsaciones incorrectas.
c txtÑrrores.Text = Val(txtÑrrores.Text) + 1
c
c Ñnd If
c
µSelecciona la letra que corresponde pulsar.
c txtContenido.SelStart = Len(txtDigitado.Text) + 1
c txtContenido.SelLength = 1
c
c µCalcula el total de pulsaciones.
c txtTotalPulsaciones.Text = Val(txtCorrectas.Text) + Val(txtÑrrores.Text)

Ñnd If

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c el evento Click del botón '  escriba:
ó Ñn
c
Ñnd µFinaliza el programa.
c
c
ó Corra la aplicación.
c
Ahora
c en la caja de digitación trate de escribir lo que se muestra en la caja de contenido. Observe,
quec a medida que va escribiendo se van colocando las pulsaciones correctas, las pulsaciones
erróneas y el total de pulsaciones. Otra nota muy importante es, que cada vez que usted escribe un
c
carácter, en la caja contenido se selecciona el próximo carácter a pulsar.
c
c
Ñxplicació del códio:
c
Ñmpezamos explicando el bloque de código del evento Goad del formulario. Ñn este evento, hemos
c
codificado lo que la aplicación debe de realizar al momento de ejecutarse. Definiremos línea por
c el bloque de código:
línea
c
Gí c ea 1: txtContenido.Text = "Visual Basic es un lenguaje de programación orientado a objetos."
c
c línea hace que la caja de contenido tenga algo cuando inicia la aplicación. Ñl texto que esta
Ñsta
entre las comillas es lo que aparece en el área de edición de la caja de texto.
c
Gí c ea 2 y 3:
c
txtContenido.SelStart
c =0
txtContenido.SelLength = 1
c
c dos líneas trabajan de forma combinada, para seleccionar el primer carácter de la caja
Ñstas
c
contenido al momento de ejecutarse la aplicación. La primera de estas dos líneas hace que el punto
dec inserción se coloque al inicio de la caja de texto. La segunda hace que el primer carácter
aparezca
c seleccionado.
c
Gí ea 4:
c
c
txtDigitado.TabIndex =0
c
c línea hace que al iniciar la aplicación el punto de inserción se coloque en la caja de digitación.
Ñsta
No hemos utilizado el método eFocs, porque no es posible utilizarlo en el momento que se esta
c
cargando la aplicación.
c
c
Continuamos nuestra explicación con el bloque de código escrito en el evento Click de la caja
c
contenido. Ñste evento lo hemos codificado con dos líneas de código muy importantes. Ñstas dos
líneas,
c hacen que al usuario hacer clic sobre la caja contenido no afecte el carácter que está
seleccionado para su pulsación, es decir, hace que se mantenga el punto de inserción en el
c
carácter que tiene que ser pulsado por el usuario. Si estas dos líneas no se hubiesen agregado en
la caplicación, entonces, cada vez que el usuario haga clic en la caja contenido, la tecla a pulsar se
c
deselecciona. Ñn consecuencia, al pulsar la tecla que corresponde digitar se tomaría como un error
c como correcta.
y no
c
Gí ea 1: txtContenido.SelStart = Len(txtDigitado.Text)
c
c línea hace que el punto de inserción se coloque en el carácter que corresponde digitar. Ñsto
Ñsta
sec hace asignando en la propiedad elar de la caja de contenido la longitud o el número de
c
caracteres de la caja de digitación. Por ejemplo, si usted ha efectuado seis pulsaciones, la longitud
de la caja será seis. Asignando esta longitud en la propiedad elar de la caja contenido, el punto
inserción se colocará en el carácter que corresponde pulsar. Ñste será igual al número de
pulsaciones realizadas por el usuario.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Gí c ea 2: txtContenido.SelLength = 1
c
Selecciona con una sombra el carácter que tiene que pulsarse en la caja de contenido. Ñl número 1
c que solo se debe seleccionar un carácter.
indica
c
c explicaremos el código más complejo de esta aplicación. Ñste es el bloque de código escrito
Ahora
enc el evento KeyPress de la caja de digitación. Ñn este verificamos la tecla que corresponde
pulsar,
c el número de pulsaciones correctas, el número de pulsaciones incorrectas y el total de
pulsaciones realizadas. También hemos codificado para cancelar la pulsación de la tecla
c
BackSpace (tecla de borrar).
c
Gí c ea 1, Gí ea 2 y Gí ea 3:
c
If Len(txtContenido.Text) = Len(txtDigitado.Text) Then
c
cDsgBox ("Usted ha finalizado el ejercicio.")
c
KeyAscii = 0
c
c
Ñstas tres líneas están codificadas exclusivamente para verificar y notificar cuando el usuario haya
c
finalizado el ejercicio. Ñn la primera línea verificamos si la longitud de la caja contenido es igual a la
c
longitud de la caja de digitación. Si ambas cajas tienen la misma cantidad de caracteres, quiere
c que el usuario ha finalizado el ejercicio. Luego con la segunda línea notificamos al usuario
decir,
conc un cuadro de mensaje que ha finalizado el ejercicio. La tercera línea hace que se cancele
cualquier
c pulsación que haya realizado el estudiante al finalizar el ejercicio.
c
Gí ea 4 y Gí ea 5:
c
c KeyAscii = 8 Then
ÑlseIf
cKeyAscii = 0
c
Con estas dos líneas verificamos si el usuario ha pulsado la tecla BackSpace (tecla de borrar) y la
c
cancelamos. Ñn consecuencia, el usuario no podrá borrar de la caja de digitación los caracteres
quec ha pulsado. Cuando el usuario pulsa la tecla BackSpace, el argumento KeyAscii del evento
c
KeyPress toma el valor 8 ocho que representa dicha tecla en la tabla de valores ACëë. Al asignar
c el valor 0 cero al argumento KeyAscii cancelamos cualquier tecla pulsada por el usuario, en
luego
este
c caso la tecla BackSpace.
c
Si el ejercicio no ha finalizado y el usuario no ha pulsado la tecla BackSpace, entonces, se ejecuta
el cbloque de código siguiente:
c
c If txtContenido.SelText = Chr(KeyAscii) Then
c txtCorrectas.Text = Val(txtCorrectas.Text) + 1
c
Ñlse
c
c txtÑrrores.Text = Val(txtÑrrores.Text) + 1
c Ñnd If
c
c txtContenido.SelStart = Len(txtDigitado.Text) + 1
c txtContenido.SelLength = 1
c
txtTotalPulsaciones.Text = Val(txtCorrectas.Text) + Val(txtÑrrores.Text)
c
Ñnd If

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Conc la primera línea verificamos si la tecla que se tiene que pulsar es igual a la tecla que fue
pulsada por el usuario. Ñl texto almacenado en la propiedad elTex de la caja contenido
c
corresponde a la tecla que se tiene que pulsar. Luego con la sentencia Chr convertimos el valor
quec tiene el argumento KeyAscii de la tecla pulsada por el usuario al carácter correspondiente a
c valor.
dicho
c
Lac segunda línea txtCorrectas.Text = Val(txtCorrectas.Text) + 1, la utilizamos para almacenar e
incrementar las pulsaciones correctas. Si sumamos 1 al valor actual de la caja de texto, entonces,
c
incrementaremos el valor. La sentencia Val se utiliza para convertir el valor actual de la caja a un
c
numero entero o real para luego poderla incrementar. Si la tecla pulsada por el usuario no coincide
conc la tecla que se tiene que pulsar, entonces, se calculan los errores: txtÑrrores.Text =
c
Val(txtÑrrores.Text) + 1.
c
Las últimas tres líneas que se ejecutan sin importar que la pulsaciones sean correctas e
c
incorrectas, se utilizan para seleccionar el carácter que se tiene que pulsar y para calcular el total
dec pulsaciones.
c
c txtContenido.SelStart = Len(txtDigitado.Text) + 1
c txtContenido.SelLength = 1
c
txtTotalPulsaciones.Text = Val(txtCorrectas.Text) + Val(txtÑrrores.Text)
c
Lac primera línea coloca el punto de inserción en el carácter que se tiene que pulsar. Ñsto se hace
c
asignando en la propiedad elar de la caja contenido, la longitud de la caja de texto
incrementada
c en uno. Con la segunda línea seleccionamos con una sombra el carácter que se tiene
que pulsar. Y por ultimo, sumando el total de pulsaciones correctas y el total de pulsaciones
c
incorrectas, obtenemos el total de pulsaciones realizadas por el usuario.
c
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio27-3 para el P  c
c
y Ñjercicio27-3 para el proyecto.
c
‡ 3efi ició de  a máscara de e rada e  a caja de exo
c
Ñnc muchas ocasiones el programador verá la necesidad de obligar al usuario a introducir los datos
c
según un formato preestablecido. Ñsto podría evitar muchos problemas futuros en el
c
almacenamiento de los datos. Además, una máscara de entrada facilita la entrada de los datos al
usuario.
c Por ejemplo, si al diseñar la aplicación usted considera que el usuario debe introducir el
número telefónico de un individuo mediante el formato (Código de área)mNNNmNNNN, usted
c
puede optar por facilitar esta entrada y obligar a que la entrada sea de esa manera. Por ejemplo:
c
(809)m699m5853, (829)m698m5236, (416)m612m3210.
c
c hacer esto se requiere de códigos de programación complejos y de muchísima experiencia en
Para
operaciones
c de entrada y salida de datos. Para evitar que usted tenga que escribir tantos códigos
para definir una máscara de entrada he creado una función especial y única que le permitirá definir
c
la mayoría de formatos de entrada. Ñsta función contiene todos los códigos necesarios para definir
c
cualquier mascara de entrada con solo especificar algunos argumentos. Podrá copiar el código de
c
la función en su proyecto y llamarla cada vez que sea necesario.
c
Para
c crear una máscara de entrada utilizando la función que he creado, siga los siguientes pasos:
c
ó Abra un nuevo proyecto.
c
ó Haga
c clic en el menú View (Ver) y, a continuación, ejecute la opción Code (Códio).
c
ó Ñscriba cidadosame e el código de la función si esta leyendo este libro en un material impreso.
Ñn caso de tener el libro en formato digital, copie la función que se muestra en la página siguiente y
péguela en el Ñditor de código de Visual Basic.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
µFunción para definir mascara de entrada creada por: Ing. Carlos D. Rodríguez Bucarelly.
Function DascaraBucarelly(TextBoxName As String, DascFormat As String, KeyAscii As Integer, DataType As String)
Dim c Formato As String
Dim c Tecla As Integer
Dim Posiciones(100) As Integer
Dim c Ñ As Integer
Dim c ÑS As Boolean
Dim  As Integer
Dim c C As String
DimccObjectNumber
c As Integer
Dim dd As Boolean
Forc I = 0 To 255: On Ñrror GoTo x: If UCase(De.Controls(I).Name) = UCase(TextBoxName) Then ObjectNumber =c
Next
x:
c I
c
If UCase(DataType) = "NUDBÑR" Then
c If InStr("0123456789" & Chr(8) & Chr(13), Chr(KeyAscii)) = 0 Then
KeyAscii = 0
c Ñnd If
Ñnd c If
On Ñrror GoTo ControlNoÑncontrado
Dim c Control As Object
Setc Control = De.Controls(ObjectNumber)
ÑS = False
c
Formato = DascFormat
c
Tecla = KeyAscii
KeyAscii = 0
c
c
If Len(Control.Text) = 0 Then
Control.Text = DascFormat
Ñnd c If
Forc  = 1 To 100
C = Did(Formato, , 1)
c If C = " " Or C = ³#´ Then
c Ñ=Ñ+1
Posiciones(Ñ) =c
c Ñnd If
Nextc 
dd = False
c
Control.SelLength =1
c ®>For
If Tecla 8 Then
c= 1 To 100
c For  = 1 To 100
c Next 
If Control.SelStart + 1 = Posiciones() Then dd = True

c If dd = True Then
c Ñlse
Ñxit For

c dd = False
c Ñnd If
Control.SelStart = Control.SelStart + 1

c Control.SelLength = 1
c
Ñnd If
Next 

c = 8 Then
If Tecla
c If Control.SelStart > 0 Then
Control.SelStart = Control.SelStart m 1
c Ñnd If
Ñnd c If
For  = 1 To 100
c If Control.SelStart + 1 = Posiciones(I) Then
c If Tecla = 8 Then
Control.SelLength = 1
c Ñlse
c Ñnd If
KeyAscii = Tecla

c Ñnd If
c
Nextc
Ñxit Function
ControlNoÑncontrado:
Ñnd Function

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Agregue
c cinco cajas de texto. Cada caja de texto tendrá una mascara de entrada diferente, tal y
como se muestra en la siguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Haga doble clic sobre la primera caja de texto. Seleccione el evento KeyPress de la lista de
c
eventos. Dentro de este evento escriba:
c
c que cuando se pulse la tecla ÑNTÑR pase a la siguiente caja.
µHace
If KeyAscii
c = 13 Then SendKeys "{tab}"
c
µDefine una máscara de entrada para Teléfonos.
c
DascaraBucarelly "text1", "( ) ", KeyAscii, "NUDBÑR"
c
c
ó Dentro
c del evento Key3ow de esta misma caja escriba:
c
µBloquea la utilización de la tecla DÑLÑTÑ o SUPR.
c
If KeyCode = 46 Then KeyCode = 0
c
c
ó Haga doble clic sobre la segunda caja de texto. Seleccione el evento KeyPress de la lista de
eventos.
c Dentro de este evento escriba:
c que cuando se pulse la tecla ÑNTÑR pase a la siguiente caja.
µHace
c
If KeyAscii = 13 Then SendKeys "{tab}"
c
µDefine
c una máscara de entrada para Fechas.
c
DascaraBucarelly "text2", " / / ", KeyAscii, "NUDBÑR"
c
ó Dentro
c del evento Key3ow de esta misma caja escriba:
c
µBloquea la utilización de la tecla DÑLÑTÑ o SUPR.
c
If KeyCode = 46 Then KeyCode = 0

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Haga
c doble clic sobre la tercera caja de texto. Seleccione el evento KeyPress de la lista de
eventos. Dentro de este evento escriba:
c
c
µHace que cuando se pulse la tecla ÑNTÑR pase a la siguiente caja.
c
If KeyAscii = 13 Then SendKeys "{tab}"
c
c
µDefine una máscara de entrada para Cedulas.
c
DascaraBucarelly "text3", " m m ", KeyAscii, "NUDBÑR"
c
c
ó Dentro del evento Key3ow de esta misma caja escriba:
c
µBloquea la utilización de la tecla DÑLÑTÑ o SUPR.
c
If KeyCode = 46 Then KeyCode = 0
c
c
ó Haga doble clic sobre la cuarta caja de texto. Seleccione el evento KeyPress de la lista de
c
eventos. Dentro de este evento escriba:
c
µHace
c que cuando se pulse la tecla ÑNTÑR pase a la siguiente caja.
If KeyAscii
c = 13 Then SendKeys "{tab}"
c
µDefine una máscara de entrada para Tarjetas de crédito.
c
DascaraBucarelly "text4", " ", KeyAscii, "NUDBÑR"
c
c
ó Dentro del evento Key3ow de esta misma caja escriba:
c
c
µBloquea la utilización de la tecla DÑLÑTÑ o SUPR.
If KeyCode
c = 46 Then KeyCode = 0
c
ó Haga
c doble clic sobre la quinta caja de texto. Seleccione el evento KeyPress de la lista de
eventos.
c Dentro de este evento escriba:
c que cuando se pulse la tecla ÑNTÑR pase a la siguiente caja.
µHace
c
If KeyAscii = 13 Then SendKeys "{tab}"
c
µDefine
c una máscara de entrada personaliza.
DascaraBucarelly
c "text5", "SSN m m ", KeyAscii, "NUDBÑR"
c
ó Dentro del evento Key3ow de esta misma caja escriba:
c
µBloquea
c la utilización de la tecla DÑLÑTÑ o SUPR.
If KeyCode = 46 Then KeyCode = 0
c
c
ó Haga
c doble clic sobre la sexta caja de texto. Seleccione el evento KeyPress de la lista de
eventos.
c Dentro de este evento escriba:
c que cuando se pulse la tecla ÑNTÑR pase a la siguiente caja.
µHace
If KeyAscii
c = 13 Then SendKeys "{tab}"
c
µDefine una máscara de entrada personaliza.
c
DascaraBucarelly "text6", "RNCm ", KeyAscii, "NUDBÑR"
c
c
ó Dentro del evento Key3ow de esta misma caja escriba:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
µBloquea
c la utilización de la tecla DÑLÑTÑ o SUPR.
If KeyCode
c = 46 Then KeyCode = 0
c
c
ó Haga doble clic sobre la séptima caja de texto. Seleccione el evento KeyPress de la lista de
c
eventos. Dentro de este evento escriba:
c
µHace
c que cuando se pulse la tecla ÑNTÑR pase a la siguiente caja.
If KeyAscii = 13 Then SendKeys "{tab}"
c
c
µDefine una máscara de entrada personaliza.
c
DascaraBucarelly "text7", "NCF: ", KeyAscii, "NUDBÑR"
c
c
ó Dentro del evento Key3ow de esta misma caja escriba:
c
µBloquea
c la utilización de la tecla DÑLÑTÑ o SUPR.
If KeyCode
c = 46 Then KeyCode = 0
c
ó Haga doble clic sobre el formulario y dentro del evento Goad escriba:
c
µHace
c que todas las máscaras de entrada se muestren al iniciar la aplicación.
Text1 KeyPress (0)
c
Text2 KeyPress (0)
c KeyPress (0)
Text3
c KeyPress (0)
Text4
c KeyPress (0)
Text5
Text6
c KeyPress (0)
Text7 KeyPress (0)
c
c
c
ó Corra
c la aplicación. Podrá observar que cada caja de texto contiene una máscara de entrada
distinta, tal y como se ve en la siguiente figura:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
ó Ñscriba en cada una de las cajas de texto. Podrá notar, que las cajas de texto facilitan la entrada
de los datos y obliga a que sean introducidos de una determinada manera. También hemos
c
codificado para que la pulsación de la tecla ÑNTÑR desplace el punto de inserción a la próxima caja
dec texto.
c
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio28-3 para el P  c
y Ñjercicio28-3
c para el proyecto.
c
Ñxplicació de la f ció MascaraBcarelly
c
c pudo haber notado, la función DascaraBucarelly es llamada desde el evento KeyPress de
Como
c caja de texto. Ñsta función es utilizada de acuerdo al siguiente formato:
cada
c
MascaraBcarelly È

× Pß, È  rP ß, È-. ß, È0  ß
c
3oc de:
c
c


× Pa Una cadena de caracteres que representa el nombre de la caja de texto dentro del
formulario.
c Ñste nombre debe ser especificado entre comillas, por ejemplo, ³Text1´, ³txtTelefono´,
³txtCedula´, etc.
c
 c  rP a Una cadena de caracteres que representa el formato de máscara de entrada en la
c de texto. Debe ser especificada entre comillas.
caja
c
-.
c a Ñs una constante que representa el valor en la tabla ACëë de la tecla pulsada. Ñste es
necesario para el funcionamiento correcto de la función. No requiere que se especifique entre
c
comillas.c
c c
0 c a Una cadena de caracteres que representa el tipo de datos que admitirá la caja de texto.
c puede tomar los valores NUDBÑR O STRING. Cuando es NUDBÑR la caja de texto solo
Ñste
podrá
c admitir números. Si es STRING, la caja de texto podrá admitir texto y números a la vez.
Requiere que sea especificado entre comillas.
c
c
TA: Podrá hacer que la máscara de entrada aparezca cuando la caja de texto reciba el enfoque
c cuando inicie la aplicación. Ñsto puede hacerlo llamando el evento KeyPress de la caja
y no
c
correspondiente mediante el evento oFocs de dicha caja. Si opta por hacer esto tendrá que
omitir
c el código escrito en el evento Goad del formulario.
c
‡ Filrar el co e ido de  a caja de exo o  a cade a de caraceres
c
Ñnc muchas ocasiones nos veremos en la necesidad de depurar el contenido de una caja de texto o
unac cadena de caracteres, eliminando símbolos, caracteres, formatos o mascara de entrada
establecidos
c en la misma. Por ejemplo, usted puede definir una mascara de entrada para solicitar
un número telefónico como (809)m569m5445, pero al momento de almacenarlo no le interesa los
c
paréntesis, o bien, solo desea almacenar los números sin los paréntesis ni los guiones. Para filtrar
c
estos tipos de cadenas personalizadas Visual Basic no posee rutinas predefinidas, en
c
consecuencia, usted se verá en la obligación de construir una función especial para realizar dicha
c
operación. Pero de la misma manera que dije anteriormente, estas operaciones requieren de
mucha
c experiencia de parte del programador. Por tal razón, he creado una función especial llamada
FilrarCade aBcarelly. Ñsta le permitirá filtrar todo tipo de cadena de caracteres, e incluso,
c
sustituir caracteres por otros caracteres dentro de la misma cadena. Vamos a crear un proyecto
c
donde mostraremos varios ejemplos de algunos filtros de cadenas utilizando la función que he
c
creado.
c
ó Abra un nuevo proyecto.
ó Haga clic en el menú View (Ver) y, a continuación, ejecute la opción Code (Códio).
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
ó Ñscriba cidadosame e el código de la función si esta leyendo este libro en un material impreso.
Ñn caso de tener el libro en formato digital, copie la función que se muestra más abajo y péguela en
c
el Ñditor de código de Visual Basic.
c
c
µFunción para filtrar cadenas de caracteres creada por: Ing. Carlos D. Rodríguez Bucarelly.
c
Function FiltrarCadenaBucarelly(Texto As String, Caracteres As String, RemplazarCaracteres As
c
String) As String
c
cDim i As Integer
cDim C As String
cDim StringResult As String
c
For i = 1 To Len(Texto)
c
c C = Did(Texto, i, 1)
c
c If InStr(1, Caracteres, C, vbTextCompare) Then
StringResult = StringResult & RemplazarCaracteres
c Ñlse
c StringResult = StringResult & C
c Ñnd If
c
cNext i
c
FiltrarCadenaBucarelly = StringResult
c
Ñndc Function
c
c
ó Inserte
c ocho etiquetas, ocho cajas de texto y ocho botones de comando, tal y como se muestra en
la siguiente figura:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
ó Dodifique la propiedad Capio de cada etiqueta. Ñn la propiedad Capio de la primera etiqueta
escriba Texto 1, en la segunda Texto 2, en la tercera Texto 3, así hasta la etiqueta ocho.
c
c la propiedad Tex de cada texto escriba los siguientes valores:
ó Ñn
c
c
u  
c
c * -/. )(. ("+-c
c
2c * -/. ++- ("2)c
c
c
&c * c c)
/c
c
"c * (")(c""((c"()"c-.-"c
c
(c * -/.c(.+c)..+c
c
c
)c * 2((
&)(
2(
.-()c
c
+c * 43("&#0-"c
c
c
* c 4 (" (.&,001c
c
c la propiedad Capio de cada botón de comando escriba los siguientes valores:
ó Ñn
c
c
u  
c
 c u '  c#c c  c  c
c
 2c u  c#c c
c 6c c
c
 &c u  c  c
c
c
 "c u '  cc  c  c c
c
 (c u '  cc  c  c#c
c
c
 )c u  ccc
c
c
 +c u  c  c:  c
c
u  c   c  c c
c
c
ó Haga
c doble clic sobre el primer botón de comando y dentro del evento Click escriba:
c
µReemplaza los guiones por espacios.
c
Text1.Text = FiltrarCadenaBucarelly(Text1.Text, "m", " ")
c
c
ó Haga doble clic sobre el segundo botón de comando y dentro del evento Click escriba:
c
µQuita
c los guiones y los paréntesis.
Text2.Text = FiltrarCadenaBucarelly(Text2.Text, "m()", "")
c
c
c
ó Haga doble clic sobre el tercer botón de comando y dentro del evento Click escriba:
c los espacios.
'Quita
c
Text3.Text = FiltrarCadenaBucarelly(Text3.Text, " ", "")
c
ó Haga doble clic sobre el cuarto botón de comando y dentro del evento Click escriba:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
µReemplazar
c los espacios por ceros.
Text4.Text
c = FiltrarCadenaBucarelly(Text4.Text, " ", "0")
c
ó Haga doble clic sobre el quinto botón de comando y dentro del evento Click escriba:
c
µReemplaza
c los espacios por guiones.
Text5.Text = FiltrarCadenaBucarelly(Text5.Text, " ", "m")
c
c
ó Haga doble clic sobre el sexto botón de comando y dentro del evento Click escriba:
c
µQuita
c los puntos.
Text6.Text = FiltrarCadenaBucarelly(Text6.Text, ".", "")
c
c
ó Haga doble clic sobre el séptimo botón de comando y dentro del evento Click escriba:
c
c cualquier número.
µQuita
c
Text7.Text = FiltrarCadenaBucarelly(Text7.Text, "0123456789", "")
c
ó Haga
c doble clic sobre el octavo botón de comando y dentro del evento Click escriba:
c
'Ñlimina cualquier letra.
c
Text8.Text = FiltrarCadenaBucarelly(Text8.Text, "qwertyuiopasdfghjklñzxcvbnm", "")
c
c
ó Corra la aplicación.
c
ó Haga clic en cada uno de los botones de comando. Podrá observar que las cadenas escritas son
c
filtradas según el mandato especificado en el botón de comando.
c
ó Detenga
c la aplicación y guarde el ejercicio con los nombres FormÑjercicio29-3 para el P  c
y Ñjercicio29-3 para el proyecto.
c
c
c
Ñxplicació de la f ció FilrarCade aBcarelly
c
Lac función FilrarCade aBcarelly devuelve una cadena filtrada según un filtro especificado. Ñsta
función es utilizada de acuerdo al siguiente formato:
c
c
FilrarCade aBcarelly (È
ß, È(  ß, È-P  (  ß)
c
3oc de:
c

a Representa la cadena de caracteres a la cual se le va a aplicar el filtro. Ñsta puede ser una
c
variable o una referencia a alguna propiedad de un objeto que devuelva una cadena de caracteres.
c c
( c a Ñs una cadena de caracteres que contiene todos los caracteres que será eliminados o
c
filtrados de la cadena principal. Ñsta puede ser una variable o un conjunto de caracteres
especificados
c entre comillas.
c
-P  (  a Representa un carácter o un conjunto de caracteres que serán utilizados
parac remplazar los caracteres filtrados. Ñsta puede ser una variable, un carácter o una cadena de
c
caracteres especificada entre comillas.
c
TA:
c Puede almacenar la cadena filtrada en una variable o en un objeto que soporte
propiedades texto. Utilizar una variable es una muy buena opción a la hora que desee utilizar la
c
cadena filtrada para operaciones de cálculo o almacenamiento en archivos de base de datos.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
‡ Formao
c del exo
c
Duchas aplicaciones empresariales les permiten introducir datos mediante un formato y luego lo
c
muestran con otro. Por ejemplo, usted introduce un valor numérico y automáticamente la aplicación
le casigna separadores de millares y un número fijo de cifras decimales. Otras aplicaciones que
c
trabajan con valores monetarios agregan automáticamente el símbolo de moneda ($, US$, RD$,
pta,
c etc.) correspondiente a un país determinado. También podrá establecer formatos a las fechas,
expresándola en formato largo o corto.
c
c hacer todo lo mencionado anteriormente disponemos de la función Forma. Ñs una de las
Para
c
mejores opciones cuando queremos aplicar formatos a los valores numéricos o de texto. Para
c
aplicar estos formatos a una caja de texto se recomienda codificar el evento GosFocs de dicha
caja.
c Por ejemplo, si queremos agregar separadores de millares a una caja de texto llamada Text1,
codifique el evento GosFocs con el siguiente código:
c
c Ñrror Resume Next
On
c
Text1.Text = Format(CDbl(Text1.Text), "#,###,###,##0.######")c
c
c
O cbien, puede utilizar el siguiente código:
c
On Ñrror Resume Next
c
Text1.Text = Format(CDbl(Text1.Text), "##,##0.00")
c
c
Ñstos dos bloques de código agregan separadores de millares a los valores numéricos. La
c
diferencia entre ambos códigos es que el segundo agrega la parte decimal ³.00´ al final de cada
c numérico. Por ejemplo, usted introduce el valor 52 este se convierte a 52.00 cuando la caja
valor
c
pierde el enfoque, si introduce 1524 se convierte a 1,524.00, si introduce 3425633 se convierte a
c
3,425,633.00. Ñl primer código hace lo mismo pero no agrega la parte decimal ³.00´, sino solamente
losc separadores de millares (las comas).
c
Ñn los dos bloques de código anterior y en los siguientes hemos agregado la línea de código On
c Resume Next para que Visual Basic no produzca un error al intentar dar formato a una caja de
Ñrror
c que este vacía o a un valor numérico nulo. La función C3bl convierte el valor escrito en la caja
texto
dec texto en un tipo de datos numérico 3oble  c  , permitiendo de esta manera que
losc valores numéricos muy grandes escritos en la caja de texto sean entendidos y tratados como tal
dentro de un intervalo numérico valido en Visual Basic.
c
Si cha aplicado un formato numérico como el que explicamos anteriormente, usted puede hacer que
el cnúmero vuelva a tener su formato original, es decir, quitar los separadores de millares. Si quiere
quec el número vuelva a su estado original cuando la caja reciba nuevamente el enfoque, entonces,
c del evento oFocs de la caja de texto escriba:
dentro
c
On Ñrror Resume Next
c
Text1.Text = CDbl(Text1.Text)
c
c
Si cha agregado otro tipo de símbolo al valor numérico, por ejemplo, un símbolo monetario ($, RD$,
US$, pta), entonces, la mejor opción es utilizar la función FilrarCade aBcarelly antes de ejecutar
c
el código anterior. De esta manera podrá primero quitar los caracteres no deseados.
c
c
Vamos a crear un programa donde se mostrarán algunos tipos de conversiones utilizando la función
c
Forma.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Abra
c un nuevo proyecto.
c
ó Diseñe la siguiente pantalla:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Ñstablezca los siguientes nombres a las cajas de texto:
c
c
u  
c
c  $  # c
c
2c    c
c
&c    2c
c
c
"c    &c
c
(c    "c
c
)c    c
c
c
+c    c
c
-c   c

c
* $ c   c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 VV


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Dentro
c del evento Goad del formulario escriba:
c
µÑste bloque de código agrega valores a cada caja de texto para luego aplicar los formatos.
c
txtNumeroGeneral.Text
c = CDbl(321545)
txtFormatoDonetario1.Text = CDbl(15860)
c
txtFormatoDonetario2.Text = CDbl(14500)
c
txtFormatoDonetario3.Text = CDbl(16850)
c
txtFormatoDonetario4.Text = CDbl(25000)
c
c
ó Copie la función FilrarCade aBcarelly en la sección general del editor de código:
c
µFunción para filtrar cadenas de caracteres creada por: Ing. Carlos D. Rodríguez Bucarelly.
c
c
Function FiltrarCadenaBucarelly(Texto As String, Caracteres As String, RemplazarCaracteres As
c
String) As String
c
c Dim i As Integer
Dim C As String
c Dim StringResult As String
c
c For i = 1 To Len(Texto)
c
C = Did(Texto, i, 1)
c
c If InStr(1, Caracteres, C, vbTextCompare) Then
c StringResult = StringResult & RemplazarCaracteres
c Ñlse
c StringResult = StringResult & C
Ñnd If
c
c Next i
c
c
FiltrarCadenaBucarelly = StringResult
c
Ñnd Function
c
c
c
ó Dentro del primer botón Aplicar escriba:
c
'Aplica
c el formato de número general.
On Ñrror Resume Next
c
txtNumeroGeneral.Text = Format(CDbl(txtNumeroGeneral.Text), "#,###,###,##0.######")
c
c
ó Dentro
c del primer botón Quitar escriba:
c
µQuita el formato de número general.
On
c Ñrror Resume Next
txtNumeroGeneral.Text
c = CDbl(txtNumeroGeneral.Text)
c
ó Dentro del segundo botón Aplicar escriba:
c
c
µAplica el formato monetario simple.
c Ñrror Resume Next
On
c
txtFormatoDonetario1.Text = Format(CDbl(txtFormatoDonetario1.Text), "##,##0.00")

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Dentro
c del segundo botón Quitar escriba:
c
µQuita el formato monetario simple.
c Ñrror Resume Next
On
txtFormatoDonetario1.Text
c = CDbl(txtFormatoDonetario1.Text)
c
ó Dentro del tercer botón Aplicar escriba:
c
µAplica
c el formato monetario de República Dominicana.
On Ñrror Resume Next
c
txtFormatoDonetario2.Text = "RD$" & Format(CDbl(txtFormatoDonetario2.Text), "##,##0.00")
c
c
ó Dentro del tercer botón Quitar escriba:
c
c
µQuita el formato monetario de República Dominicana.
On
c Ñrror Resume Next
txtFormatoDonetario2.Text = CDbl(FiltrarCadenaBucarelly(txtFormatoDonetario2.Text, "RD$", ""))
c
c
ó Dentro
c del cuarto botón Aplicar escriba:
c
µAplica el formato monetario de los Ñstados Unidos.
c Ñrror Resume Next
On
txtFormatoDonetario3.Text
c = "US$" & Format(CDbl(txtFormatoDonetario3.Text), "##,##0.00")
c
ó Dentro
c del cuarto botón Quitar escriba:
c
µQuita el formato monetario de los Ñstados Unidos.
c Ñrror Resume Next
On
c
txtFormatoDonetario3.Text = CDbl(FiltrarCadenaBucarelly(txtFormatoDonetario3.Text, "US$", ""))
c
c
ó Dentro del quinto botón Aplicar escriba:
c
µAplica el formato monetario del país actual.
c
On Ñrror Resume Next
c
txtFormatoDonetario4.Text = FormatCurrency(CDbl(txtFormatoDonetario4.Text))
c
c
ó Dentro del quinto botón Quitar escriba:
c
µQuita
c el formato monetario del país actual.
On Ñrror Resume Next
c
txtFormatoDonetario4.Text = CDbl(txtFormatoDonetario4.Text)
c
c
ó Dentro del primer botón Dostrar:
c
c
µPone la fecha en formato corto.
txtFechaCorta.Text
c = Format(Date, "Short Date")
c
c
c
ó Dentro del segundo botón Dostrar:
c
µPone la fecha en formato largo.
c
txtFechaLarga.Text = Format(Date, "Long Date")
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Dentro
c del tercer botón Dostrar:
c
'Dostrar la hora en formato militar.
c
txtHoraDilitar.Text = Format(Time, "h:m:s")
c
c
ó Dentro del cuarto botón Dostrar:
c
'Dostrar la hora en formato meridiano.
c
txtHoraDeridiana.Text = Format(Time, "hh:mm:ss ADPD")
c
ó Corra la aplicación. Utilice los botones Aplicar y Quitar para que vea el funcionamiento del código
c
escrito anteriormente.
c
ó Detenga
c la aplicación y guarde el ejercicio con los nombres FormÑjercicio30-3 para el P  c
y Ñjercicio30-3 para el proyecto.
c
c
‡ Validació del co e ido de  a caja de exo
c
Lac validación de una caja de texto es un proceso que consiste en verificar que el contenido de una
caja
c de texto cumpla con una determinada condición o criterio. Por ejemplo, se puede verificar que
noc se deje vacía una determinada caja de texto, o verificar que el valor de una caja de texto sea
positivo, etc.
c
c validar el contenido de una caja de texto el programador podrá elegir el momento en que
Para
c hacerlo. Podrá hacerlo inmediatamente la caja de texto intenta perder el enfoque utilizando el
desee
evento
c Validae, o podrá validar el contenido de la(s) caja(s) de texto y otros controles antes de
cerrar o descargar la ventana donde se encuentran los datos. Ñvaluar en ambos momentos podría
c
resultar el método más adecuado pero esto dependerá de su criterio como programador.
c
c
Vamos a realizar una aplicación donde veremos los momentos en el que podemos validar el
c
contenido de las cajas de textos. La aplicación que vamos a crear simula un simple formulario
donde
c se solicitan algunos datos para el registro de una persona en una determinada empresa.
Pero antes de registrar a la persona hay que tener en cuente un criterio:  c  c c
c
Pcc)3c !ccc cPc  c c  cc c  ccc   c
 c   Pc cc  c c 
c
Ñ c esa aplicació validamos ca do las cajas pierde el e foqe y ca do hacemos clic e
el cboó ReisrarÀ
ó Abra un nuevo proyecto y diseñe la siguiente pantalla:
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Cambie
c los nombres por defectos de las cajas de texto por los que se muestran a continuación:
c
u  
c
c  $  c
c
c
2c   c
c
&c  c
c
c
"c  c
c
(c     c
c
* $ c c
c
c
c
Recuerde borrar el contenido que tienen las cajas de texto en la propiedad Tex.c
c
c
ó Seleccione el botón Registrar y establezca el valor False en la propiedad CaseValidaio . Ñsto
escpara que no se validen las cajas de texto cuando el botón de comando reciba el enfoque. Haga
c
lo mismo con el botón Cancelar.
c
ó Haga doble clic sobre la primera caja de texto y, a continuación, seleccione el evento
c
CaseValidaio . Dentro de este evento escriba:
c
c
µVerifica si la caja de texto esta vacía.
Ifc Len(Trim(txtNombre.Text)) = 0 Then
DsgBox
c ("Debe introducir el Nombre.")
Cancel = True ' Hace que el enfoque NO pase a otro control.
c
Ñnd If
c
c
ó Haga doble clic sobre la segunda caja de texto y, a continuación, seleccione el evento
c
CaseValidaio . Dentro de este evento escriba:
c
µVerifica si la caja de texto esta vacía.
Ifc Len(Trim(txtApellido.Text)) = 0 Then
c
DsgBox ("Debe introducir el Apellido.")
Cancel
c = True ' Hace que el enfoque NO pase a otro control.
Ñnd If
c
c
ó Haga doble clic sobre la tercera caja de texto y, a continuación, seleccione el evento
c
CaseValidaio . Dentro de este evento escriba:
c
c
µVerifica si la caja de texto esta vacía.
Ifc Len(Trim(txtCedula.Text)) = 0 Then
DsgBox
c ("Debe introducir la Cédula.")
Cancel = True ' Hace que el enfoque NO pase a otro control.
c
Ñnd If
c
ó cHaga doble clic sobre la cuarta caja de texto y, a continuación, seleccione el evento
c
CaseValidaio . Dentro de este evento escriba:
c
c
µVerifica si la caja de texto esta vacía.
Ifc Len(Trim(txtÑdad.Text)) = 0 Then
DsgBox ("Debe introducir la Ñdad.")
Cancel = True ' Hace que el enfoque NO pase a otro control.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
µVerifica
c que la edad cumpla con el criterio establecido.
c Val(txtÑdad.Text) ® 18 Then
ÑlseIf
DsgBox ("No se registran menores de edad.")
c
Cancel = True ' Hace que el enfoque NO pase a otro control.
Ñndc If
c
ó cHaga doble clic sobre la quinta caja de texto y, a continuación, seleccione el evento
CaseValidaio . Dentro de este evento escriba:
c
c
µVerifica si la caja de texto esta vacía.
If Len(Trim(txtDireccion.Text))
c = 0 Then
DsgBox
c ("Debe introducir la Dirección.")
Cancel = True ' Hace que el enfoque NO pase a otro control.
Ñndc If
c
TA: No hemos validado el teléfono porque no esta establecido en uno de los criterios de la
c
aplicación.
c
c el evento Click del botón Registrar escriba:
ó Ñn
c
µVerifica si la caja de texto Nombre esta vacía.
c
If Len(Trim(txtNombre.Text)) = 0 Then
c
DsgBox ("Debe introducir el Nombre.")
c
txtNombre.SetFocus ' Hace que la caja reciba el enfoque.
µVerifica
c si la caja de texto Apellido esta vacía.
c Len(Trim(txtApellido.Text)) = 0 Then
ÑlseIf
DsgBox ("Debe introducir el Apellido.")
c
txtApellido.SetFocus ' Hace que la caja reciba el enfoque.
c
µVerifica si la caja de texto Cédula esta vacía.
c Len(Trim(txtCedula.Text)) = 0 Then
ÑlseIf
c
DsgBox ("Debe introducir la Cedula.")
txtCedula.SetFocus
c ' Hace que la caja reciba el enfoque.
µVerifica si la caja de texto Ñdad esta vacía.
c Len(Trim(txtÑdad.Text)) = 0 Then
ÑlseIf
c
DsgBox ("Debe introducir la Ñdad.")
c
txtÑdad.SetFocus
µVerifica
c si la persona es menor de Ñdad.
ÑlseIf
c val(txtÑdad.text) ® 18 Then
DsgBox(³No se registran personas menores de edad.´)
c
txtÑdad.SetFocus
c
µVerifica si la caja de texto Dirección esta vacía.
c Len(Trim(txtDireccion.Text)) = 0 Then
ÑlseIf
c
DsgBox ("Debe introducir la Dirección.")
txtDireccion.SetFocus
c ' Hace que la caja reciba el enfoque.
c
Ñlse
c se escribe la codificación para almacenar los datos en la Base de datos.
µAquí
µÑnc nuestro caso mostraremos un mensaje para hacer un simulacro.
c
DsgBox ("Ñl registro ha sido almacenado satisfactoriamente.")
µLimpiamos
c las cajas.
txtNombre.Text = ""
c
txtApellido.Text = ""
c
txtCedula.Text = ""
c
txtÑdad.Text = ""
txtTelefono.Text
c = ""
txtDireccion.Text = ""
Ñnd If

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Ñnc el evento Click del botón Cancelar escriba:
c
µSale del programa.
c
Ñnd
c
c
ó Corra la aplicación. Deje la caja de texto Nombre vacía y haga clic en la caja de texto Apellido.
Podrá
c observar que no podrá pasar a la siguiente caja sin antes haber escrito algo en la caja
Nombre.
c Por igual, si hace clic en el botón Registrar y deja uno de los campos requeridos vació, se
le notificará que debe introducir algún dato en la caja.
c
c
TA:  todas las cajas de texto en una aplicación son validadas. Decidir cuales cajas de texto validar dependerá de
c
análisis y estudios realizados por el programador, y en la mayoría de los casos por requerimientos internos del sistema.

c
c
CMÑTARë: Ñn muchas ocasiones el programador coloca un texto descriptivo, un símbolo o una pequeña imagen en
los campos que son requeridos en un formulario. Ñsto notifica al usuario los campos que tiene que completar
c
obligatoriamente.
c
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio31-3 para el P  c
y Ñjercicio31-3
c para el proyecto.
c
- 3À3À1À3 M
odos de las cajas de exo
c
c
Incluye los métodos más usuales de los controles (3ra, Refresh, eFocs). También posee
c métodos que no son usados con tanta frecuencia en una aplicación de Visual Basic.
otros
c
c
- 3À3À1À4 Ñjercicios prácicos
c
Ü Ñlc siguiente ejercicio muestra como realizar operaciones matemáticas utilizando cajas de texto. Ñl
c
ejercicio esta compuesto por tres cajas de texto y cuatro botones de comando que permitirán
c
realizar las operaciones básicas de matemática.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Cambie los nombres por defecto de las cajas de texto: txtPrimerValor para la primera caja,
txtSegundoValor para la segunda caja y txtResultado para la tercera caja.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Dentro
c del evento KeyPress de la primera caja de texto escriba:
c
µHace que la caja de texto solo acepte números.
Ifc Not (KeyAscii >= 48 And KeyAscii ®= 57 Or KeyAscii = 8) Then
KeyAscii
c =0
Ñnd
c If
c
ó Dentro del evento KeyPress de la segunda caja de texto escriba:
c
c
µHace que la caja de texto solo acepte números.
Ifc Not (KeyAscii >= 48 And KeyAscii ®= 57 Or KeyAscii = 8) Then
KeyAscii
c =0
Ñnd If
c
c
ó Haga doble clic sobre el botón Sumar y dentro del evento Click escriba:
c
µValidación
c de las cajas de texto verificando que no estén vacías.
µVerificamos
c la primera caja.
If Len(Trim(txtPrimerValor.Text)) = 0 Then
c DsgBox ("Debe introducir un valor en la primera caja.")
c txtPrimerValor.SetFocus ' Hace que la caja reciba el enfoque.
c µVerificamos la segunda caja.
c ÑlseIf Len(Trim(txtSegundoValor.Text)) = 0 Then
c DsgBox ("Debe introducir un valor en la segunda caja.")
txtSegundoValor.SetFocus ' Hace que la caja reciba el enfoque.
c
c
Ñlse
c µSuma el valor de las dos cajas de texto y lo muestra en la caja resultado.
c µUtilizamos la sentencia Val para indicar que es con números que estamos trabajando.
c txtResultado.Text = Val(txtPrimerValor.Text) + Val(txtSegundoValor.Text)
c If
Ñnd
c
c
c
ó Haga doble clic sobre el botón Restar y dentro del evento Click escriba:
c
µValidación
c de las cajas de texto verificando que no estén vacías.
µVerificamos
c la primera caja.
If Len(Trim(txtPrimerValor.Text)) = 0 Then
c DsgBox ("Debe introducir un valor en la primera caja.")
c txtPrimerValor.SetFocus ' Hace que la caja reciba el enfoque.
c µVerificamos la segunda caja.
c ÑlseIf Len(Trim(txtSegundoValor.Text)) = 0 Then
c DsgBox ("Debe introducir un valor en la segunda caja.")
txtSegundoValor.SetFocus ' Hace que la caja reciba el enfoque.
c
c
Ñlse
c µResta el valor de las dos cajas de texto y lo muestra en la caja resultado.
c µUtilizamos la sentencia Val para indicar que es con números que estamos trabajando.
c txtResultado.Text = Val(txtPrimerValor.Text) m Val(txtSegundoValor.Text)
c If
Ñnd
c
c
ó Haga doble clic sobre el botón Dultiplicar y dentro del evento Click escriba:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
µValidación
c de las cajas de texto verificando que no estén vacías.
µVerificamos
c la primera caja.
If Len(Trim(txtPrimerValor.Text)) = 0 Then
c DsgBox ("Debe introducir un valor en la primera caja.")
c txtPrimerValor.SetFocus ' Hace que la caja reciba el enfoque.
c µVerificamos la segunda caja.
c ÑlseIf Len(Trim(txtSegundoValor.Text)) = 0 Then
c DsgBox ("Debe introducir un valor en la segunda caja.")
txtSegundoValor.SetFocus ' Hace que la caja reciba el enfoque.
c
c
Ñlse
c µDultiplica el valor de las dos cajas de texto y lo muestra en la caja resultado.
c µUtilizamos la sentencia Val para indicar que es con números que estamos trabajando.
c txtResultado.Text = Val(txtPrimerValor.Text) * Val(txtSegundoValor.Text)

Ñndc If
c
c
ó Haga
c doble clic sobre el botón Dividir y dentro del evento Click escriba:
c
µValidación
c de las cajas de texto verificando que no estén vacías.
µVerificamos la primera caja.
c
If Len(Trim(txtPrimerValor.Text)) = 0 Then
c DsgBox ("Debe introducir un valor en la primera caja.")
c txtPrimerValor.SetFocus ' Hace que la caja reciba el enfoque.
c µVerificamos la segunda caja.
c ÑlseIf Len(Trim(txtSegundoValor.Text)) = 0 Then
DsgBox ("Debe introducir un valor en la segunda caja.")
c
txtSegundoValor.SetFocus ' Hace que la caja reciba el enfoque.
c
c
Ñlse
c µDivide el valor de las dos cajas de texto y lo muestra en la caja resultado.
c µUtilizamos la sentencia Val para indicar que es con números que estamos trabajando.
txtResultado.Text = Val(txtPrimerValor.Text) / Val(txtSegundoValor.Text)
c
Ñndc If
c
c
ó Corra la aplicación.
c
ó Agrega
c algún valor numérico en la primera y en la segunda caja de texto. Haga clic sobre los
botones de comando para efectuar una operación matemática y ver los resultados.
c
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio32-3 para el P  c
c
y Ñjercicio32-3 para el proyecto.
c
c
c siguiente ejercicio muestra como cambiar el tipo de fuente de una caja de texto mediante
Ü Ñl
c
botones de comando. Ñl ejercicio consiste en un pequeño editor compuesto por una caja de texto
conc barras de desplazamiento y ocho botones de comando, que permitirán realizar las siguientes
operaciones: asignar y quitar negrita, asignar y quitar subrayado, asignar y quitar cursiva, asignar y
c
quitar tachado y alinear el texto.
c
c
ó Diseñe la pantalla que se muestra en la siguiente página:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Cambie el nombre por defecto de la caja de texto y asígnele: txtContenido.
c
ó Ñstablezca en valor Tre en la propiedad MliGi e de la caja de texto y seleccione 2 ± Verical
enc la propiedad crollBars.
c
c
ó Borre el contenido de la propiedad Tex de la caja de texto.
c
ó Dentro del botón Negrita escriba:
c
c
µVerifica si la caja no tiene negrita. Si no la tiene se la pone.
If txtContenido.FontBold
c = False Then
txtContenido.FontBold = True
Ñlsec
c µSi tiene negrita se la quita.
c txtContenido.FontBold = False
Ñnd c If
µÑsto
c que hicimos anteriormente es necesario para que el botón sirva para poner y quitar la negrita.
c
ó Dentro del botón Cursiva escriba:
c
c
µVerifica si la caja no tiene cursiva. Si no la tiene se la pone.
If txtContenido.FontItalic
c = False Then
c txtContenido.FontItalic = True
Ñlse
c µSi tiene cursiva se la quita.
c txtContenido.FontItalic = False
Ñnd c If
µÑsto
c que hicimos anteriormente es necesario para que el botón sirva para poner y quitar la cursiva.
c
ó Dentro del botón Subrayado escriba:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
µVerifica
c si la caja no tiene subrayado. Si no lo tiene se lo pone.
If txtContenido.FontUnderline
c = False Then
txtContenido.FontUnderline = True
Ñlsec
c µSi tiene subrayado se lo quita.
c txtContenido.FontUnderline = False
Ñnd c If
µÑsto
c que hicimos anteriormente es necesario para que el botón sirva para poner y quitar el
µsubrayado.
c
c
c
ó Dentro del botón Tachado escriba:
c
µVerifica si la caja no tiene tachado. Si no lo tiene se lo pone.
c
If txtContenido.FontStrikethru = False Then
c txtContenido.FontStrikethru = True
Ñlsec
µSi tiene tachado se lo quita.
c txtContenido.FontStrikethru = False
Ñnd c If
c que hicimos anteriormente es necesario para que el botón sirva para poner y quitar el
µÑsto
c
µtachado.
c
c
ó Dentro del botón Alineación Izquierda escriba:
c
µAlinea el texto a la izquierda. Ñl valor 0 alinea a la izquierda.
c
txtContenido.Alignment =0
c
c
ó Dentro del botón Alineación Centrada escriba:
c
µAlinea el texto en el centro. Ñl valor 2 alinea el texto en el centro.
c
txtContenido.Alignment = 2
c
c
ó Dentro del botón Alineación Derecha escriba:
c
µAlinea el texto a la derecha. Ñl valor 1 alinea el texto a la derecha.
c
txtContenido.Alignment =1
c
c
ó Corra la aplicación.
c
ó Ñscriba
c algo en la caja de texto y utilice los botones para aplicar y quitar el tipo de fuente.
c
TAc 1: Los efectos se aplican a todo el contenido de la caja de texto, debido a que las cajas de texto estándar no aplican
fuente a porciones de texto seleccionado. Si desea crear aplicaciones potentes como un procesador de palabra utilice el
c RichTexBox. Ñste permite aplicar fuente a porciones de texto seleccionado. También permite insertar imágenes,
control
c márgenes, realizar búsquedas, etc.
definir
c
TAc 2: Para cambiar el tipo de letra utilice la propiedad Fo ame y para el tamaño de la letra Fo ize.
c
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio33-3 para el P  c
c
y Ñjercicio33-3 para el proyecto.
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
- 3À4À1
c Gos boo es de opció (pio Bo )
c
c Un botón de opción muestra una opción que se puede activar o desactivar.
c
Generalmente, los   pio Bo se utilizan en un grupo de opciones para mostrar
c
opciones entre las cuales el usuario solo puede seleccionar una sola. Los   pio Bo
secagrupan si los dibuja dentro de un contenedor como un  Frame, un control PicreBox o
unc Formlario. Al seleccionar una de las opciones dentro de un contenedor se activa con un punto
c
negro, indicando que la opción ha sido seleccionada. Si hace clic sobre otra opción del mismo
contenedor
c se desactiva la opción que anteriormente estaba activada y se marca con el punto
negro la opción que actualmente selecciono. Para agrupar controles pio Bo en un Frame o
c
PicreBox, dibuje en primer lugar el Frame o el PicreBox y, a continuación, dibuje dentro los
c
controles pio Bo .
c
- 3À4À1À1
c Propiedades de las boo es de opció
c
Los botones de opción poseen prácticamente las mismas propiedades de los botones de comando.
Ñnc los botones de opción al igual que en los botones de comando se destaca la propiedad Capio
quec especifica un texto descriptivo de la función de ese botón en la aplicación. Posee también la
c
propiedad Vale que indica si el botón de opción esta activado o no, puede tomar los valores Tre
(activado)
c o False (desactivado). Cuando selecciona una opción dentro de un contenedor la
propiedad
c Vale de la opción seleccionada almacena el valor Tre y cuando selecciona otra opción
dentro del mismo contenedor la opción seleccionada anteriormente almacena False en la propiedad
c
Vale. Para verificar la opción seleccionada se utiliza la sentencia ëf como veremos en los próximos
c
ejercicios.
c
- 3À4À1À2
c Ñve os sobre los boo es de opció
c
Los botones de opción poseen los mismos eventos estudiados anteriormente en los botones de
c
comando. Al igual que en los botones de comando el evento más importante de los controles
c
pio Bo es el evento Click. Ñste ocurre cuando el usuario hace clic sobre la opción y es
c
prácticamente el único evento que se programa en los botones de opción.
c
- 3À4À1À3
c M
odos de los boo es de opció

Losc botones de opción también se complementan con los métodos estándar ya estudiados
c
anteriormente (3ra, Refresh, eFocs, Move, Zorder). Los métodos son muy poco usados en
losc controles que usamos frecuentemente, por tal razón, nos limitaremos en hacer énfasis en cada
unoc de ellos.
c
c
- 3À4À1À4 Ñjercicios prácicos
c
c siguiente aplicación posee un conjunto de botones de opción dentro de varios contenedores
Ü La
quec indicarán los colores que se le va aplicar al fondo y a la letra de una caja de texto. Cada
conjunto
c de colores estará por separado en controles Frame. Ñstos tendrán por encabezado la
función
c que realizará ese conjunto de botones dentro del control Frame.
c
ó Abra un nuevo proyecto.
c
ó Ñn la propiedad Capio del formulario escriba Botones de opción. Ñn la propiedad Heih
c
escriba el valor 5685 y en la propiedad Widh escriba 9060 para fijar el tamaño adecuado al
c
formulario.
c c
ó Inserte dos Frame en el formulario y dentro de cada Frame cinco botones de opción, tal y
como se ve en la imagen de la página siguiente:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Inserte
c una caja de texto a la derecha de los   Frame y un botón de comando en la
esquina
c inferior izquierda del formulario tal y como se puede apreciar en la imagen anterior. Ñn la
propiedad Capio del botón de comando escriba &alir.
c
c
ó Aplique los siguientes valores en las propiedades indicada de los controles que se muestran en la
c
siguiente tabla:
c
c
u  
c
  c u  ccc
c
  2c u  ccc c
c
 c u 'c
c
 2c
c u  c
c
 &c u c
c
 "c u  c
c
 (c u  c
c
 )c 
c
u
c
 +c u c
c
c
 -c u  c
c
 .c u $ c
c
 /c u c
c
* $ c c
c c
  c  c
c
c 2cc  c
c
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Haga
c doble clic sobre la primera opción y dentro del evento Click escriba:
c
'Pone el color rojo al fondo de la caja de texto.
c
txtContenido.BackColor = vbRed
c
c
ó Haga doble clic sobre la segunda opción y dentro del evento Click escriba:
c
'Pone el color verde al fondo de la caja de texto.
c
txtContenido.BackColor = vbGreen
c
c
ó Haga doble clic sobre la tercera opción y dentro del evento Click escriba:
c
'Pone el color azul al fondo de la caja de texto.
c
txtContenido.BackColor = vbBlue
c
c
ó Haga doble clic sobre la cuarta opción y dentro del evento Click escriba:
c
'Pone el color amarillo al fondo de la caja de texto.
c
txtContenido.BackColor = vbYellow
c
c
ó Haga doble clic sobre la quinta opción y dentro del evento Click escriba:
c
c
'Pone el color blanco al fondo de la caja de texto.
c
txtContenido.BackColor = vbWhite
c
c
ó Haga doble clic sobre la sexta opción y dentro del evento Click escriba:
c
'Pone
c el color cyan al texto de la caja de texto.
txtContenido.ForeColor = vbCyan
c
c
ó Haga doble clic sobre la séptima opción y dentro del evento Click escriba:
c
c
'Pone el color magenta al texto de la caja de texto.
c
txtContenido.ForeColor = vbDagenta
c
ó Haga
c doble clic sobre la octava opción y dentro del evento Click escriba:
c
'Pone el color blanco al texto de la caja de texto.
c
txtContenido.ForeColor = vbWhite
c
c
ó Haga doble clic sobre la novena opción y dentro del evento Click escriba:
c'Pone el color negro al texto de la caja de texto.
c
txtContenido.ForeColor = vbBlack
c
c
ó Haga doble clic sobre la décima opción y dentro del evento Click escriba:
c
'Pone el color azul al texto de la caja de texto.
c
txtContenido.ForeColor = vbBlue
c
c
ó Corra
c la aplicación.
c
ó Utilice los primeros cinco botones de comando para poner el color de fondo a la caja de texto.
ó Ñscriba algún texto en la caja de texto y utilice los últimos cinco botones de comando para
cambiar el color del texto.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Detenga
c la aplicación y guarde el ejercicio con los nombres FormÑjercicio34-3 para el P  c
y Ñjercicio34-3 para el proyecto.
c
c
Ñxplicació del prorama
c
Ñnc el programa anterior hemos vemos dos controles Frame compuestos cada uno por cinco
opciones.
c Las primeras cinco opciones para cambiar el color de fondo de la caja de texto y las
últimas cinco opciones para cambiar el color del texto de la caja. Dentro de las primeras cinco
c
opciones hemos utilizado la propiedad BackColor de las cajas de texto. Ñsta propiedad como usted
hac podido estudiar, se utiliza para cambiar el color de fondo de un control. Para cada opción hemos
c
especificado un color distinto mediante las constantes de color de Visual Basic, pero usted puede
c valores hexadecimales para representar los colores como lo hemos visto anteriormente.
usar
c
Ñn las últimas cinco opciones hemos utilizado la propiedad ForeColor de las cajas de texto. Dicha
c
propiedad nos permite cambiar el color del texto de la caja. Al igual que las primeras cinco opciones
c opción tiene un color establecido que es indicado en la propiedad Capio de dicha opción.
cada
c
c siguiente aplicación realiza las cuatro operaciones básicas de matemática mediante cuatro
Ü La
c
botones de opción.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Inserte primero dos etiquetas y dos cajas de texto, luego inserte un controlcFrame y dentro de ese
Frame
c inserte cuatro botones de opción. Luego inserte una tercera etiqueta y una tercera caja de
texto, tal y como se ve en la imagen.
c
c
ó Aplique los siguientes valores en las propiedades indicada de los controles que se muestran en la
c
siguiente tabla:
c
c
u  
c
c !  c
c u    c ;c

c c  c
 c c ;c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
u  
c
c      c
c * c
c
c
2c   c
c * c
c c
c
  c u  cc   c
c c
 c c u  c
c c
 c 2c u 'c
c
c
 &c    c
u
c c
 c "c u c
c c
c
&c !  c
c u ';c
c c
&c  'c
c $%  c
c * c
c
  c    c 8 c
c c
c
Lac apariencia de los controles sobre el formulario debe ser la siguiente:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c codifiquemos las dos primeras cajas de texto para que solo admitan números.
Ahora
c
ó Dentro del evento KeyPress de ambas cajas de texto escriba el siguiente código:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
µHace
c que la caja de texto solo acepte números.
If Not
c (KeyAscii >= 48 And KeyAscii ®= 57 Or KeyAscii = 8) Then
KeyAscii = 0
Ñndc If
c
c
ó Haga doble clic sobre el primer botón de opción y dentro del evento Click escriba:
c
µVerificamos
c que las cajas tengan valores.
If Len(Trim(txtPrimerValor.Text)) = 0 Then
cDsgBox ("Debe introducir un valor en la primera caja.")
ctxtPrimerValor.SetFocus 'Hace que la primera caja reciba el enfoque si esta vacía.
cOption1.Value = False 'Desactiva la opción suma.
c
c Len(Trim(txtSegundoValor.Text)) = 0 Then
ÑlseIf
DsgBox ("Debe introducir un valor en la segunda caja.")
ctxtSegundoValor.SetFocus 'Hace que la segunda caja reciba el enfoque si esta vacía.
cOption1.Value = False 'Desactiva la opción suma.
c
c
Ñlse
c
'Suma las dos cajas de texto y muestra el resultado en la tercera caja.
ctxtResultado.Text = Val(txtPrimerValor.Text) + Val(txtSegundoValor.Text)
c
Ñndc If
c
c
ó Haga doble clic sobre el segundo botón de opción y dentro del evento Click escriba:
c
c
µVerificamos que las cajas tengan valores.
c
If Len(Trim(txtPrimerValor.Text)) = 0 Then
cDsgBox ("Debe introducir un valor en la primera caja.")
ctxtPrimerValor.SetFocus 'Hace que la primera caja reciba el enfoque si esta vacía.
cOption2.Value = False 'Desactiva la opción resta.
c Len(Trim(txtSegundoValor.Text)) = 0 Then
ÑlseIf
cDsgBox ("Debe introducir un valor en la segunda caja.")
ctxtSegundoValor.SetFocus 'Hace que la segunda caja reciba el enfoque si esta vacía.
cOption2.Value = False 'Desactiva la opción resta.
c
Ñlse
c
c'Resta las dos cajas de texto y muestra el resultado en la tercera caja.
ctxtResultado.Text = Val(txtPrimerValor.Text) m Val(txtSegundoValor.Text)
c
Ñndc If
c
ó Haga doble clic sobre el tercer botón de opción y dentro del evento Click escriba:
c
c
µVerificamos que las cajas tengan valores.
c
If Len(Trim(txtPrimerValor.Text)) = 0 Then
cDsgBox ("Debe introducir un valor en la primera caja.")
ctxtPrimerValor.SetFocus 'Hace que la primera caja reciba el enfoque si esta vacía.
Option3.Value = False 'Desactiva la opción multiplicar.
c
ÑlseIf Len(Trim(txtSegundoValor.Text)) = 0 Then

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
cDsgBox ("Debe introducir un valor en la segunda caja.")
ctxtSegundoValor.SetFocus 'Hace que la segunda caja reciba el enfoque si esta vacía.
Option3.Value = False 'Desactiva la opción multiplicar.
c
c
Ñlse
c
c'Dultiplica las dos cajas de texto y muestra el resultado en la tercera caja.
ctxtResultado.Text = Val(txtPrimerValor.Text) * Val(txtSegundoValor.Text)
Ñndc If
c
c
ó Haga doble clic sobre el cuarto botón de opción y dentro del evento Click escriba:
c
µVerificamos primero si el divisor es distinto de cero. Recuerde no se puede dividir por cero.
c
If Val(txtSegundoValor.Text) > 0 Then
c
c µVerificamos que las cajas tengan valores.
If Len(Trim(txtPrimerValor.Text)) = 0 Then
c DsgBox ("Debe introducir un valor en la primera caja.")
c txtPrimerValor.SetFocus 'Hace que la primera caja reciba el enfoque si esta vacía.
c Option4.Value = False 'Desactiva la opción dividir.
c
c ÑlseIf Len(Trim(txtSegundoValor.Text)) = 0 Then
DsgBox ("Debe introducir un valor en la segunda caja.")
c txtSegundoValor.SetFocus 'Hace que la segunda caja reciba el enfoque si esta vacía.
c Option4.Value = False 'Desactiva la opción dividir.
c
c Ñlse
c
'Divide las dos cajas de texto y muestra el resultado en la tercera caja.
c txtResultado.Text = Val(txtPrimerValor.Text) / Val(txtSegundoValor.Text)
c
c Ñnd If
c
c
Ñlse
DsgBox (³No se puede dividir por cero.´)
c txtSegundoValor.Text = ³´ µBorra el cero para que el usuario escriba otro número.
c txtSegundoValor.SetFocus 'Hace que la segunda caja reciba el enfoque.
c
Ñndc if
c
c
ó Corra
c la aplicación y escriba un valor en las dos primeras cajas de texto.
c
ó Utilice uno por uno los cuatro botones de opción para ver los resultados de cada operación
c
matemática aplicada en ambos números.
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio35-3 para el P  c
c
y Ñjercicio35-3 para el proyecto.
c
Ñl ccódigo anterior no requiere de mucha explicación, debido a que hemos visto anteriormente como
c
realizar operaciones de cálculo matemáticos con las cajas de texto. La única diferencia, es que
estamos
c utilizando botones de opción y no botones de comando para realizar los cálculos
matemáticos. Recomiendo que analice detenidamente el código anterior para que tome en cuenta
c
algunas reglas de validación y modificaciones aplicadas antes de efectuar operaciones de cálculo,
principalmente en la división.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
- 3À5À1
c Ga cajas de verificació (CheckBox)
c
c La única diferencia entre los botones de opción (OptionButton) y
las cajas de verificación (CheckBox) es que dentro de un mismo
c contenedor se pueden seleccionar más de una opción. Otra
c diferencia entre los botones de opción y las cajas de verificación
c es que en estas no se programa muy a menudo el evento Click,
c sino, que mediante la sentencia ëf se verifica si la propiedad
c Vale esta establecida a 1 ± Checked. Cuando una caja de
verificación esta activada la propiedad Vale toma el valor 1
c (uno) y cuando esta desactivada toma el valor 0 (cero).
c
c
c
- 3À5À1À1 Propiedades de las cajas de verificació
c
Al cigual que en los botones de opción, las propiedades más importantes de las cajas de verificación
c Capio (Título) y la propiedad Vale (Valor) que indica si el elemento esta activado o
son:
c
desactivado.
c
- 3À5À1À2 Ñve os sobre las cajas de verificació
c
Lasc cajas de verificación no se diferencian en nada de los demás controles con respecto a los
c
eventos estándar de los controles. Puede utilizar los eventos ya vistos anteriormente. Como se dijo
c
anteriormente, en las cajas de verificación no se programa muy a menudo el evento Click, sino,
quec se verifica si la caja de verificación esta activada o desactivada mediante la propiedad Vale.
Si mediante la sentencia ëf usted verifica que esta activada, entonces, usted programa después de
c
la cláusula The y si no esta activada y desea realizar otra acción después de haber echo la
c
comprobación, entonces, programe después de la cláusula Ñlse.
c
c
- 3À5À1À3 M
odos de las cajas de verificació
c
Las cajas de verificación poseen todos los métodos estándar ya estudiados anteriormente (3ra,
c
Refresh, eFocs, Move, Zorder).
c
c
- 3À5À1À4 Ñjercicios prácicos
c
c siguiente aplicación permite seleccionar entre varios efectos que se le aplicarán a una caja de
Ü La
texto
c mediante botones de verificación después haberse hecho clic sobre un botón de comando.
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Abra
c un nuevo proyecto e inserte un control Frame y dentro de este seis cajas de verificación.
Debajo de estas un botón de comando y a la derecha una caja de texto, tal y como se ve en la
c
imagen de la página anterior.
c
c
ó Aplique los siguientes valores en las propiedades indicada de los controles que se muestran en la
c
siguiente tabla:
c
c
u  
  c
c u  c
c
c
 c u cc c c
c c
c 2c
 u  c c
c
c &c
 u  c
c
c "c
 u $ c
c
 (c u  
c
c
c )c
 u   c
c
c
 c u   c
c
c* $ c c
c c  c
  c 2cc  c
c c c
c
c apariencia de los controles sobre el formulario debe ser la siguiente:
ó La
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Ahora codifiquemos para que cada opción seleccionada aplique el efecto seleccionado a la caja
c
de texto. Cada vez que el usuario haga seleccione un efecto deberá hacer clic sobre el botón
c
Aplicar, por consiguiente, debemos codificar el evento Click del botón Aplicar.

ó Haga doble Clic sobre el botón Aplicar y dentro del evento Click escriba:
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
µVerificamos
c si la primera caja de verificación esta activada.
If Check1.Value
c = 1 Then
µAplicamos el efecto.
ctxtContenido.BackColor = vbBlue ' Fondo azul.
ctxtContenido.ForeColor = vbWhite ' Texto blanco.
c
Ñlse
cµSi no esta activada pone la caja en su estado normal:
cµFondo blanco y texto negro.
txtContenido.BackColor = vbWhite 'Fondo blanco.
ctxtContenido.ForeColor = vbBlack 'Texto negro.
Ñndc If
c
µVerificamos si la segunda caja de verificación esta activada.
c
If Check2.Value = 1 Then
cµAplicamos el efecto.
ctxtContenido.FontSize = 18 'Letras grandes.
c
Ñlse
cµSi esta desactivada pone el tamaño inicial de la caja.
txtContenido.FontSize = 8 'Letras normal.
Ñndc If
c
µVerificamos si la tercera caja de verificación esta activada.
c
If Check3.Value = 1 Then
c'Aplicamos el efecto.
ctxtContenido.FontItalic = True 'Pone cursiva.
c
Ñlse
c'Si no esta activada desactiva la cursiva.
txtContenido.FontItalic = False 'Quita cursiva.
Ñndc If
c
µVerificamos si la cuarta caja de verificación esta activada.
c
If Check4.Value = 1 Then
c'Aplicamos el efecto.
ctxtContenido.FontBold = True 'Pone negrita.
c
Ñlse
c'Si no esta activada desactiva la negrita.
ctxtContenido.FontBold = False 'Quita negrita.
Ñnd If
c
µVerificamos
c si la quinta caja de verificación esta activada.
If Check5.Value = 1 Then
c'Aplicamos el efecto.
ctxtContenido.FontUnderline = True 'Pone subrayado.
c
Ñlse
c'Si no esta activada desactiva la negrita.
ctxtContenido.FontUnderline = False 'Quita subrayado.
Ñnd If
c
c
µVerificamos si la sexta caja de verificación esta activada.
c
If Check6.Value = 1 Then
c'Aplicamos el efecto.
ctxtContenido.FontStrikethru = True 'Pone tachado.
Ñlse
c'Si no esta activada desactiva la negrita.
ctxtContenido.FontStrikethru = False 'Quita tachado.
Ñndc If

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Corra
c la aplicación.
c
ó Ñscriba algo en la caja de texto.
c
ó Active el efecto que quiera aplicar a la caja de texto y haga clic en el botón Aplicar. Podrá observar
quec la caja de texto toma el efecto seleccionado. Si desea quitar el efecto seleccionado, entonces,
c
desactive la caja de verificación y, a continuación, haga clic en el botón Aplicar.
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio36-3 para el P  c
c
y Ñjercicio36-3 para el proyecto.
c
c
Ñxplicació del códio a erior
c
Hec agregado suficientes comentarios en el código anterior para que no requiera de mucha
explicación. Usted puede ir interpretando paso a paso la función de cada línea de código escrita en
c
el programa anterior. No obstante quiero resaltar algunos puntos importantes. Usted pudo haber
c
notado que cuando aplicamos un efecto cualquiera también programamos para quitarlo. Ñsto es
c
necesario para permitirle al usuario quitar un efecto que ya había aplicado a la caja de texto. Cada
vezc que utilice cajas de verificación tenga en cuenta que el usuario querrá en algún momento
deshacer
c algún cambio realizado en la aplicación. Ñsto es valido para cualquier situación. Permítale
siempre al usuario rehacer y deshacer una operación realizada por él, que implique algún cambio
c
en la aplicación.
c
c Ga barras de desplazamie o (crollBars)
- 3À6À1
c
Visual
c Basic posee 2 tipos de barras de desplazamiento o Scrollbar, una barra de tipo Vertical
llamada VcrollBar y otro de tipo Horizontal llamada HcrollBar:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Ambas barras son exactamente iguales en lo que se refiere a las propiedades, métodos y eventos
c su distinta orientación. La función principal de estos controles es la de devolver un valor para
salvo
c utilizarlo ya sea para una función o rutina que tengamos en nuestro programa.
luego
c
c
- 3À6À1À1 Propiedades de las barras de desplazamie o
c
Lasc barras de desplazamiento poseen la mayoría de propiedades, métodos y eventos comunes de
los controles. Pero al igual que en todos los controles solo algunas de estas son consideradas
c
realmente importantes.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Lasc barras de desplazamiento poseen seis propiedades que son realmente importantes. Ñstas se
describen a continuación:
c
c
Vale Ñs la propiedad más importante de las barras de desplazamiento. Ñsta
c Ñstablece o devuelve el valor actual del control cuando movemos el cuadro
c deslizable de la barra de desplazamiento. Ñsta propiedad también cambia su
c valor cuando hacemos clic en las flechas arriba y abajo de la barra de
c desplazamiento.

Maxc Devuelve o establece el valor máximo de la propiedad Vale de la barra de


c desplazamiento cuando el cuadro deslizable se encuentra en el extremo inferior
c o derecho. Ñl valor máximo para esta propiedad es 32767.
c
Mic Devuelve o establece el valor mínimo de la propiedad Vale de la barra de
desplazamiento cuando el cuadro deslizable se encuentra en el extremo
c superior o izquierdo.
c
c
GareCha e Devuelve o establece el cambio que se producirá en el valor de la propiedad
c Vale de la barra de desplazamiento cuando el usuario haga clic en el área
c situada entre el cuadro deslizable y la flecha de desplazamiento. Ñl mínimo
valor de esta propiedad es 1.
c
c
c
mallCha e Devuelve o establece el cambio que se producirá en el valor de la propiedad
c Vale de un control de barra de desplazamiento cuando el usuario haga clic en
c la flecha de desplazamiento. Ñl mínimo valor de esta propiedad es 1.
c
c
c
- 3À6À1À2 Ñve os sobre las barras de desplazamie o
c
Lasc barras de desplazamiento posee todos los eventos estándar de los controles pero solo dos de
c son los más importantes. Ñstos son los eventos Cha e y croll. Ñl evento Cha e ocurre
estos
cuando el usuario mueve el cuadro deslizable o hace clic sobre las flechas de la barra de
c
desplazamiento. Cuando este evento ocurre se modifica el valor de la propiedad Vale.
c
Ñl c evento croll ocurre cuando el usuario mueve el cuadro deslizable de la barra de
desplazamiento.
c Al igual que el evento Cha e el evento croll modifica el valor de la propiedad
Vale.
c
c
- 3À6À1À3 Ñjercicios prácicos
c
Ñnc esta sección mostraremos un ejercicio práctico donde usted podrá apreciar el uso correcto de
lasc propiedades y eventos de las barras de desplazamiento. Para este ejercicio hemos creado una
aplicación
c que permite crear colores utilizando la función R B de Visual Basic. Ñsta función permite
crear colores haciendo combinaciones con los colores básicos c c c  . Para crear un
c con esta función solo se debe especificar como entrada un valor comprendido entre 0 y 255
color
c cada color de la función. Ñl valor 0 indica la menor intensidad y 255 la máxima.
para
c
Ñnc este ejercicio hemos utilizado tres barras de desplazamiento para establecer en cada color un
valor
c comprendido entre 0 y 255.
c crear el ejercicio siga detalladamente los pasos que se le indican a continuación:
Para
c
ó Abra un nuevo proyecto.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Inserte
c tres Frame y dentro de cada uno una barra de desplazamiento horizontal (HScrollBar).
1c c  .
c
c
ó Inserte tres etiquetas y al lado de cada etiqueta una caja de texto.
c
ó Inserte otro control Frame y dentro de este un PicreBox.
c
ó Inserte
c un botón de comando en la esquina inferior izquierda del formulario.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Ñstablezca los siguientes valores en las propiedades indicadas en cada control:
c
c
u   u  
c
 c u  c c * c
c #  cccc
+ 2c c  c 2c * c
c
c &c * c
  c u '0c
c   "c u 'c
  2c
c u ' c
  c #  /cc$c
c
  &c u 3,c
c
 c ,* 2((c
u  c  c
c c
c 2c ,* 2((c
c &c ,* 2((c
c
c u  ';c
c
c
2c u  ';c
  c  ';c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó La
c apariencia de los controles sobre el formulario debe ser la siguiente:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Haga doble clic sobre la primera barra de desplazamiento y dentro del evento Cha e escriba:
c
Dim Rojo, Verde, Azul
c
c
'Almacena el valor actual de cada barra en la variable correspondiente a cada color.
c
Rojo = HScroll1.Value
c
Verde = HScroll2.Value
Azul
c = HScroll3.Value
c
'Asigna el color al cuadro de imagen utilizando la función RGB y los valores de las barras.
c
Picture1.BackColor = RGB(Rojo, Verde, Azul)
c
c
'Ñstablece el valor actual de cada barra en las cajas de texto.
Text1.Text
c = Rojo
Text2.Text = Verde
c
Text3.Text = Azul
c
c
ó Haga
c doble clic sobre la segunda barra de desplazamiento y dentro del evento Cha e escriba:
c
Dim Rojo, Verde, Azul
c
c
'Almacena el valor actual de cada barra en la variable correspondiente a cada color.
c
Rojo = HScroll1.Value
c
Verde = HScroll2.Value
Azul
c = HScroll3.Value

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
'Asigna
c el color al cuadro de imagen utilizando la función RGB y los valores de las barras.
Picture1.BackColor
c = RGB(Rojo, Verde, Azul)
c
'Ñstablece el valor actual de cada barra en las cajas de texto.
c
Text1.Text = Rojo
c
Text2.Text = Verde
Text3.Text
c = Azul
c
c
ó Haga doble clic sobre la tercera barra de desplazamiento y dentro del evento Cha e escriba:
c
c
'Almacena el valor actual de cada barra en la variable correspondiente a cada color.
Dim
c Rojo, Verde, Azul
c
Rojo = HScroll1.Value
c
Verde = HScroll2.Value
c = HScroll3.Value
Azul
c
'Asigna
c el color al cuadro de imagen utilizando la función RGB y los valores de las barras.
Picture1.BackColor = RGB(Rojo, Verde, Azul)
c
c
'Ñstablece el valor actual de cada barra en las cajas de texto.
c
Text1.Text = Rojo
c
Text2.Text = Verde
Text3.Text
c = Azul
c
ó Haga doble clic sobre la primera barra de desplazamiento y, a continuación, seleccione el evento
c
croll. Dentro de este evento escriba:
c
c
'Llama el evento Change de la primera barra de desplazamiento.
HScroll1
c Change
c
c
ó Haga doble clic sobre la segunda barra de desplazamiento y, a continuación, seleccione el evento
c
croll. Dentro de este evento escriba:
c
'Llama
c el evento Change de la segunda barra de desplazamiento.
HScroll2
c Change
c
c
ó Haga doble clic sobre la tercera barra de desplazamiento y, a continuación, seleccione el evento
c
croll. Dentro de este evento escriba:
c
'Llama
c el evento Change de la tercera barra de desplazamiento.
HScroll3 Change
c
c
c el evento Click del botón Salir escriba:
ó Ñn
c
µSale de la aplicación.
c
Ñnd
c
c
ó Corra la aplicación y mueva el cuadro deslizable de cada una de las barras de desplazamiento
c la derecha. Cada vez que mueve uno de estos cuadros deslizable se crea un nuevo color y el
hacia
valor actual de la barra de desplazamiento se asigna en las cajas de texto de la derecha.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Detenga
c la aplicación y guarde el ejercicio con los nombres FormÑjercicio37-3 para el P  c
y Ñjercicio37-3 para el proyecto.
c
c
Ñxplicació :
c
Lac primera operación a explicar en la aplicación anterior es el valor 255 aplicado en la propiedad
Maxc de cada barra de desplazamiento. Hemos asignado este valor, debido a que el valor máximo
que puede aceptar la función R B para cada color es 255. Recuerde que el valor máximo que
c
alcanza una barra de desplazamiento cuando se mueve su cuadro deslizable hacia su límite es el
quec especificamos en la propiedad Max.
c
Loc segundo en explicar es el mismo bloque de código escrito dentro del evento Cha e de cada
barra
c de desplazamiento.
c
 P c  a Dim Rojo, Verde, Azul
c
Ñnc esta línea de código se declaran tres variables. Cada variable es utilizada para almacenar el
c actual de cada barra de desplazamiento cada vez que movamos el cuadro deslizable de cada
valor
unac de ellas.
c
' c  a Rojo = HScroll1.Value
c
c línea de código permite almacenar el valor actual de la primera barra de desplazamiento en la
Ñsta
c
variable Rojo. Ñste valor servirá para especificarlo en la función R B. Ñl valor máximo que podrá
almacenar
c esta variable es 255 porque es el límite para cada barra de desplazamiento.
c
  c  acVerde = HScroll2.Valuec
c
c línea de código almacena el valor actual de la segunda barra de desplazamiento en la variable
Ñsta
c
Verde.
c
(  c  acAzul = HScroll3.Valuec
c
c línea de código almacena el valor actual de la tercera barra de desplazamiento en la variable
Ñsta
c
Azul.
c
5c  c  acPicture1.BackColor = RGB(Rojo, Verde, Azul)c
c
Asigna el color creado mediante la función R B en el cuadro de imagen. Cada una de las variables
sec especifica dentro de los paréntesis de la función R B. Ñsas variables poseen el valor de la
c
propiedad Vale de cada barra. Ñsos valores se le pasan a la función R B para crear un color
c
combinando los tres colores básicos.
c
'
 c  acText1.Text = Rojoc
c
c
c línea de código almacena en la primera caja de texto el valor actual de la variable Rojo, es
Ñsta
c el valor actual de la primera barra de desplazamiento.
decir,
c
' c P c  ac
c
Ñsta línea de código almacena en la segunda caja de texto el valor actual de la variable Verde, es
c el valor actual de la segunda barra de desplazamiento.
decir,
c
1 c  c  ac
Ñsta línea de código almacena en la tercera caja de texto el valor actual de la variable Azul.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Ñl c bloque de código anterior lo hemos escrito en el evento Cha e de cada barra de
desplazamiento para que cada vez que se mueva el cuadro deslizable de una de las barras se
c
ejecute la función R B y modifique el valor de las variables. De esta manera todas las barras de
c
desplazamiento estarán conectadas.
c
Lac tercera operación a explicar es el código escrito dentro del evento croll de cada barra de
desplazamiento.
c Se explico anteriormente, que el evento croll ocurre cuando el usuario esta
moviendo el cuadro deslizable de una barra de desplazamiento. A diferencia del evento Cha e
c
que ocurre cuando el usuario mueve y suelta el cuadro deslizable o cuando hace clic sobre las
c
flechas. Dentro del evento croll de cada barra de desplazamiento hemos llamado el evento
Chac e de la barra correspondiente para que a medida que se muevan los cuadros deslizables se
c
combine y se muestre los colores.
c
- 3À7À1 Gas cajas de lisa (GisBox)
c
c
c Una GisBox es un control en el que se pueden tomar varios
c registros de líneas, teniendo uno o varios de ellos
seleccionado. Si en la lista hay más registros de los que se
c pueden mostrar al mismo tiempo, se añade automáticamente
c una barra de desplazamiento.
c
c Para añadir o eliminar registros de la lista en modo de
c Ñjecución se utilizan los métodos Addëem y Removeëem.
Ñl contenido de una GisBox suele inicializarse desde el
c evento Goad de los formularios, de tal manera, las listas
c obtienen sus elementos antes de que la aplicación cargue
c totalmente. También, puede especificar los elementos de la
c GisBox en modo de diseño mediante la propiedad Gis
c desde la ventana de propiedades.
c
- 3À7À1À1 Propiedades de las cajas de lisa
c
Lasc cajas de listas poseen la mayoría de las propiedades comunes de los controles, pero además
dec estas poseen propiedades muy propias de ellas. A continuación, se detallan las propiedades
másc importantes de las cajas de lista.
c
Propiedad 3escripció
c
c
Gis Ñsta propiedad es utilizada para agregar elementos o registros al GisBox en
modo de diseño. Ñn modo de ejecución esta propiedad es utilizada para leer cada
c
uno de los elementos del GisBox.
c
c Ñjercicio:
c
ó Abra
c un nuevo proyecto.
c
ó Inserte un GisBox cdesde la caja de herramientas.
c
c
ó Dibuje el GisBox casi del mismo alto del formulario.
c
ó Seleccione la propiedad Gis y haga clic en la flecha abajo. Aparecerá un pequeño recuadro
c
donde usted tendrá que escribir uno por uno los elementos de la caja de lista. Cada vez que usted
c
escriba un elemento deberá presionar la tecla ÑTÑR. Al presionar la tecla ÑTÑR el recuadro se
c
esconde y, como consecuencia, tendrá que hacer clic nuevamente en el botón flecha abajo para
agregar otro elemento.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Agregue
c los siguientes elementos:
c
Computadora
c Disco Duro
c Demoria Ram
c Donitor
c Impresora
Ñscáner
c
Procesador
c
c aplicación deberá tener una apariencia similar a la mostrada en la siguiente imagen:
ó Su
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Mlielec Devuelve o establece un valor que indica si el usuario podrá seleccionar
c más de un elemento en el GisBox. Puede tomar los siguientes valores:
c
0 ± o e: Valor predeterminado. No permite seleccionar más de un
c elemento.
c
c 1 ± imple: Selección múltiple simple. Al hacer clic con el Douse o
c presionar la BARRA ÑSPACIADORA se selecciona o se desactiva un
c elemento de la lista. (Las teclas de dirección desplazan el enfoque.)
c 2 ± Ñxe ded: Selección múltiple extendida. Al presionar DAYÚS y hacer
c clic, o al presionar DAYÚS y una de las teclas de dirección (FLÑCHA
c ARRIBA, FLÑCHA ABAJO, FLÑCHA IZQUIÑRDA o FLÑCHA DÑRÑCHA) se
c extiende la selección desde el elemento seleccionado anteriormente hasta
c el elemento actual. Al presionar CTRL y hacer clic con el Douse se
selecciona o desactiva un elemento de la lista.
c
c
ored Ñstablece un valor que indica si los elementos de un GisBox aparecen
c ordenados alfabéticamente. Puede tomar los valores Tre o False  c
c c  . Cuando es Tre los elementos aparecerán ordenados
c alfabéticamente, y solo lo podrá apreciar los resultados en modo de
ejecución. Cuando es False los elementos se muestran tal y como se
c introducen en el GisBox.
c
c TA: Al establecer el valor Tre en la propiedad ored posiblemente se cambie el
orden en que introduce los elementos.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
yle
c Devuelve o establece un valor que indica si los elementos de la GisBox poseen
c casillas de verificación. Los valores admitidos por esta propiedad son:
c 0 ± a dard: Valor predeterminado. Los elementos de la GisBox se muestran
c de forma de lista de texto.
c
c 1 ± CheckBox: Casilla de verificación. Ñl control GisBox se muestra con una
c marca de verificación junto a cada elemento de texto. Ñs posible seleccionar
múltiples elementos del GisBox si activa la casilla de verificación que hay junto
c a ellos. Observe el gráfico:
c
c
c
c
c
c
c
c
c
c
c
c
- 3À7À1À2
c Ñve os sobre las cajas de lisa
c
Las cajas de lista poseen los eventos comunes de los controles pero solo uno de ellos es el más
c
utilizado. Ñl evento Click es el que comúnmente programaremos en una GisBox para determinar
c
algún elemento que halla sido seleccionado. También, podrá determinar los elementos
c
seleccionados en una GisBox desde cualquier otro control de la aplicación.
c
- 3À7À1À3 M
odos de las cajas de lisa
c
c
A continuación, se muestra una tabla donde se listan los métodos más importantes de una GisBox:
c
c
Addëem Uno de los métodos más importante de una GisBox. Ñste es utilizado para
c agregar registros o elementos a una GisBox en Pcc  .
c
 formao es:
c
c ObjetoÀAddëem P, 6  
c
c
3o de:
c
c
c 1a Requerido. Indica el nombre de la GisBox, es decir, el valor
indicado en la propiedad ame.
c
c Pa Requerido. Una expresión de cadena que especifica el elemento
c que se va a agregar al objeto.
c
c  a Opcional. Un entero que especifica la posición dentro del objeto
donde se insertan el elemento o la fila nuevos.
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c Ñjercicio:
c
ó Agregue una etiqueta y debajo una caja de texto en el formulario de nuestro primer ejercicio.
c
Debajo de esta coloque un botón de comando, tal y como se muestra en la imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Dentro
c del botón .  escriba:
c
µVerificamos que la caja de texto tenga información. Si no tiene, no se agrega el elemento.
Ifc Len(Trim(Text1.Text)) > 0 Then
c List1.AddItem Text1.Text µAgrega el contenido de la caja de texto a la ListBox.
c Text1.Text = ³´ µLimpiamos la caja.
Ñnd
c If
c
Text1.SetFocus µHace que la caja reciba el enfoque.
c
c
ó Corra la aplicación.
c
ó Ñscriba algo en la caja de texto y, a continuación, haga clic en el botónc. . Podrá Observar
quec el texto escrito en la caja de texto se agrega a la GisBox mediante el método Addëem.
c
c
Removeëem Ñste método es utilizado para eliminar un elemento o registro del GisBox.
c  formao es:
c
c ObjetoÀRemoveëem   c
c
c 3o de:
c
c 1ac Requerido. Una cadena de caracteres que indica el nombre
c del control GisBox.
c
c  ac Requerido. Un valor numérico que indica la posición del
c elemento que se desea borrar. La posición del primer
elemento de un control GisBox esta representada por el
c valor 0. Podrá utilizar el método Gisë dex para determinar la
posición del elemento seleccionado.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c Ñjercicio:
c
ó Agregue un botón de comando en la esquina inferior derecha del control GisBox, tal y como se
c
muestra en la imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c la propiedad Capio del botón escriba &Ñlimi ar.
ó Ñn
c
ó Haga doble clic sobre el botón de comando y en el evento Click escriba:
c
c Ñrror Resume Next
On 'Ñn caso de no haber ningún elemento seleccionado.
c
'Ñlimina el elemento seleccionado.
c
List1.RemoveItem List1.ListIndex
c
c
c
ó Corra la aplicación.
c
ó Seleccione un elemento de la GisBox y, a continuación, haga clic en el botón P  . Podrá
c que el elemento seleccionado se elimina al hacer clic en el botón eliminar. Ñsto es posible,
notar
c
debido a que el método Gisë dex devuelve un valor numérico que indica la posición del elemento
seleccionado.
c Luego, ese valor se le pasa al método Removeëem para que elimine dicho
elemento.
c
c
ó Detenga la aplicación.
c
c
Clear Ñste método borra todos los elementos del control GisBox. Su formato es
c bastante sencillo, solo se debe especificar el nombre del control GisBox
c seguido del método Clear.
c Ñjemplo:
c
c List1.Clear µÑlimina todo el contenido del GisBox.
c
c
GisCo  Devuelve un valor numérico que indica la cantidad de elemento que contiene
la GisBox. Ñste método es muy utilizado para leer todo el contenido de un
c
control GisBox. Para esto se debe combinar con un bucle for o while. Su
formato es similar al del método anterior: List1.ListCount.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
Ñjemplo 1:
c
µDuestra en un cuadro de mensaje la cantidad de elementos de una ListBox.
c
DsgBox(List1.ListCount)
c
c
Ñjemplo 2:
c
µPasa
c todos los elementos de una ListBox a otra ListBox.
Dim i As Long
c
c un bucle que se repite según la cantidad de elementos del la ListBox.
µInicia
c
For i = 0 To List1.ListCount ± 1 µRestamos 1 porque una ListBox comienza desde 0.
c
List2.AddItem
c List1.List(i) µAgregamos cada elemento de la primera Lista a la segunda Lista.
c i
Next
c
Gisë dex Devuelve un valor numérico que indica la posición del elemento seleccionado
c dentro del control GisBox.
c
c Ñjemplo 1:
c
c µDuestra en un cuadro de mensaje la posición del elemento seleccionado.
DsgBox(List1.ListIndex)
c
c Ñjemplo 2:
c
c µDuestra en un cuadro de mensaje el texto del elemento seleccionado.
c DsgBox(List1.List(List1.ListIndex))
c
elCo  Devuelve un valor numérico que indica la cantidad de elementos seleccionados
c en una GisBox. Ñsta propiedad es muy útil cuando un control GisBox permite
c seleccionar varios elementos a la vez. Ñl valor devuelto por esta función se
c puede utilizar conjuntamente con un bucle para leer únicamente la cantidad de
c elementos seleccionados en una GisBox. Su formato es similar al del método
c GisCo .
c
c
eleced Devuelve o establece un valor lógico (Tre o False) que indica si un elemento
c esta o estará seleccionado.
c
c  formao es:
c ObjetoÀeleced/  = ÈTrue/Falseß
c
c 3o de:
c
c 1ac Ñs el nombre de la GisBox.
c / ac Indica la posición del elemento en la GisBox.
c
c 7r ac Valores que devuelve el método. Tre indica que elemento
c está seleccionado. False indica que elemento no está
c seleccionado.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Guarde
c nuestro primer ejercicio con los nombres FormÑjercicio38-3 para el P  c y
Ñjercicio38-3 para el proyecto.
c
c
c
- 3À7À1À4 Ñjercicios prácicos
c
1.mc Nuestra primera aplicación muestra como agregar nombre de países a una GisBox. También
permite eliminar un país seleccionado.
c
c un nuevo proyecto.
ó Abra
c
ó Inserte los controles que se muestran en la siguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Aplique
c los siguientes valores a las propiedades de los controles indicado en la siguiente tabla:
c
u  
c c u  c c ccc
c + 2cc  c
c
c !  c
c u   cc 5;c
c  c$ c/
c
cc  c
c *
c
 c     c
c u   c
c
2c !  c
c u cc 5;c
cc c

c
&c
c !  c
u ;c
c
* $ c c
c c
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
u  
c
 2c    c
c u   c
c
u $ c   c
c  c   cc
c
c
ó Dentro del evento Click del botónc.  escriba:
c
'Verifica
c si la caja de texto se deja vacía.
If Len(Trim(txtPais.Text)) = 0 Then
c
DsgBox ("Introduzca el nombre de un país en la caja.")
ctxtPais.SetFocus
c
Ñlse
c
c'Si la caja tiene algún país.
clstPaises.AddItem txtPais.Text 'Agregue el país.
ctxtPais.Text = "" 'Limpia la caja de texto.
ctxtPais.SetFocus 'Hace que la caja reciba el enfoque.
c'Pone el número de países agregados en la caja de lista.
ctxtTotalPaises.Text = lstPaises.ListCount
c
Ñndc If
c
ó Dentro del evento Click del botón P  cescriba:
c
'Ñnc caso de que ocurra un error al eliminar un elemento de la lista.
On Ñrror Resume Next
c
c
lstPaises.RemoveItem (lstPaises.ListIndex) 'Borra el elemento seleccionado.
c
txtTotalPaises.Text
c = lstPaises.ListCount 'Actualiza el total de países.
c
c
ó Dentro del evento Clic del botón  c,  escriba:
c
'Ñlimina todo el contenido del ListBox.
c
lstPaises.Clear
c
c
txtTotalPaises.Text = lstPaises.ListCount 'Actualiza el total de países.
c c
c
ó Corra
c la aplicación.
c la caja de texto de la aplicación introduzca algún país, y a continuación, haga clic en el botón
ó Ñn
.
c . Agregue todos los países que desee y podrá observar que todos los países se agregan al
control GisBox.
c
c
ó Seleccione algunos de los países ya agregados y luego haga clic en el botónc P  .
c
c
ó Detenga la aplicación y guárdela con los nombres FormÑjercicio39-3 para el P  c y
c
Ñjercicio39-3 para el proyecto.
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
2.m)c Nuestra segunda aplicación muestra en un cuadro de dialogo la capital de un país seleccionado
en un controlcGisBox.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c un nuevo proyecto.
ó Abra
c
ó Inserte una etiqueta en la parte superior del formulario. 1c c P .
c
ó Debajo de la etiqueta coloque un control GisBox.
c
ó Coloque
c un botón de comando debajo del control GisBox.
c
ó Aplique los siguientes valores a las propiedades de los controles indicado en la siguiente tabla:
c
u  
c
 c u  c c ccc
c + 2c c  c
c
cc !  c
u  cc 5c
c  c$ c/
c
c c  c
c
c
u $ c  c
c  c  c
c
c
ó Dentro del evento Click del botón ' cescriba:
c
µCierra la aplicación.
c
Ñnd
c
c
ó Dentro del evento Goad del formulario escriba:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
'Agrega
c los países al control
clstPaises.AddItem "República Dominicana"
clstPaises.AddItem "Perú"
c
clstPaises.AddItem "Salvador"
clstPaises.AddItem "Déxico"
clstPaises.AddItem "Puerto Rico"
clstPaises.AddItem "Ñcuador"
c
c
ó Dentro del evento Click del control GisBox escriba:
c
µVerifica el país seleccionado y muestra la capital en un cuadro de mensaje.
c
If UCase(lstPaises.List(lstPaises.ListIndex)) = UCase("República Dominicana") Then
c
c DsgBox ("Santo Domingo")
c UCase(lstPaises.List(lstPaises.ListIndex)) = UCase("Perú") Then
ÑlseIf
c DsgBox ("Lima")
c
ÑlseIf UCase(lstPaises.List(lstPaises.ListIndex)) = UCase("Salvador") Then
c
c DsgBox ("San Salvador")
c UCase(lstPaises.List(lstPaises.ListIndex)) = UCase("Déxico") Then
ÑlseIf
c DsgBox ("Déxico")
c
ÑlseIf UCase(lstPaises.List(lstPaises.ListIndex)) = UCase("Puerto Rico") Then
c
c DsgBox ("San Juan")
c UCase(lstPaises.List(lstPaises.ListIndex)) = UCase("Ñcuador") Then
ÑlseIf
c DsgBox ("Quito")
c
Ñnd If
c
c
ó Corra la aplicación.
c
ó Seleccione cualquier país de la lista para que el programa muestre su capital en una ventana de
c
diálogo.
c
ó Detenga
c la aplicación y guárdela con los nombres FormÑjercicio40-3 para el P  c y
Ñjercicio40-3
c para el proyecto.
c
- 3À7À1À5
c Ñjercicios propesos
c
1.m Crear una aplicación que permita agregar y eliminar libros en un control GisBox mediante una
c de texto. Ñl programa debe tener una   donde muestre la cantidad de libros que
caja
c
contiene el GisBox.
c
2.mc Crear una aplicación que contenga dos  c GisBox que permitan cambiar el color de
fondo y el color de letra de una caja de texto que se encuentre sobre un formulario. Uno de los
c
GisBox debe tener la lista de los colores de fondo que se le aplicará a la  c c 
 y el otro
c
controlcGisBox los colores para la letra de la  cc
.
c
3.mc Crear una aplicación que en un control GisBox contenga veinte números cuales quiera. Cuando
un número de lo de la lista sea seleccionado debe mostrarse ese número en una ventana dec

c
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 19


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
4.mc Crear una aplicación que permita agregar y eliminar nombres de personas en un controlcGisBox
y que permita organizarlos alfabéticamente.
c
5.mc Crear una aplicación que mediante una lista de colores en un control GisBox permita cambiar el
c de la ventana de la aplicación.
color
c
- 3À8À1
c Gas cajas combi adas (ComboBox)
c
c Un ComboBox no tiene muchas diferencias en relación con un control
c GisBox. La diferencia que existe entre ambos   es que un
ComboBox oculta la lista de elementos y solo se muestra cuando se
c
hace clic en el     c   È ] que contiene el  , mientras
c que el  GisBox muestra la lista de elementos sin ocultarla.
c
c de la diferencia principal es que un ComboBox tiene una propiedad llamada yle, que puede
Otra
c
adoptar tres valores (1, 2 ó 3) que corresponden con tres distintas formas de presentar una lista:
c
1.)c 0- 3rop3ow Combo: Éste es el valor más habitual y corresponde con el caso en el que sólo se
muestra el registro seleccionado, que es editable por el usuario, permaneciendo el resto de los
c
elementos oculto hasta que el usuario despliega la lista completa haciendo clic sobre  c c
c c   È ].
  
c
2.)c 1- imple Combo: Ñn este caso el registro seleccionado también es editable, y se muestra una
c no desplegable dotada si es necesario de una crollBar.
lista
c
3.) 2- 3rop3ow Gis: Ñn este último caso el registro seleccionado no es editable y la lista es
c
desplegable.
c
c
A pesar de estas dos grandes diferencias, existen muchas relaciones con respecto a los métodos y
lasc propiedades entre ambos   Por ejemplo los P  Addëem, Removeëem o Clear y
las   cGis, Gisë dex o GisCo .
c
Lac propiedadc Tex corresponde con lo que aparece en el  c c   del ComboBox que es
porc lo general el primer elemento de la lista desplegable.
c
c
- 3À8À1À1 Ñjercicios prácicos
c
ó Ac continuación se muestra una Aplicación que muestra los número del 1 a 30 en un 
ComboBox.
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Abra
c un nuevo proyecto.
c
ó Inserte una etiqueta y debajo de la etiqueta una caja combinada , tal y como se muestra en la
c
siguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Dentro del evento Goad del formulario escriba:
c'Duestra los números 1 al 30 en la caja combinada.
c i As Integer
Dim
c
c i = 1 To 30 'Inicia un bucle del 1 al 30.
For
c
c Combo1.AddItem i 'Agrega el número actual al ComboBox.
c
Next i
c
c
c
ó Corra la aplicación.
c
ó Haga clic en el botón con la fecha abajo. Podrá observa que los números del 1 al 30 se han
c
agregado en la caja combinada.
c
Al cseleccionar uno de los números este se coloca en el área de edición de la caja combinada. Usted
podrác verificar o leer el valor escrito en el área de edición mediante la propiedad Tex de la caja
combinada.
c
c
ó Detenga la aplicación y guárdela con los nombres FormÑjercicio41-3 para el P  c y
c
Ñjercicio41-3 para el proyecto.
c
c
- 3À9À1 Ñl co rol iempo (Timer)
c
Unc control Timer puede ejecutar código a intervalos periódicos produciendo un  Timer, que
c
ocurre cuando ha transcurrido un / cpreestablecido para un controlcTimer. La frecuencia del
intervalo
c se almacena en la propiedad ë erval del control que especifica el tiempo en milisegundos.
c
- 3À9À1À1 Propiedades del co rol iempo
c
Dec todas las propiedades de un  c  P las mas importantes son Ñ abled para habilitar o
c
deshabilitar el  y la propiedad ë erval para especificar el intervalo de tiempo en que el
controlcrealizará el evento.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Para
c representar los segundos en P c solo debe multiplicar la cantidad de segundos por
mil. Por ejemplo, 2 segundos sería 2 x 1000 = 2000 P , un minuto sería 60 * 1000 =
c
60000 P , así sucesivamente.
c
c
- 3À9À1À2 Ñjercicios prácicos
c
)c c
c  c c  cc c  ccP cc c   cc c  c
c
c
c
c
c
c
c
c un nuevo proyecto.
ó Abra
c
ó Reduzca el tamaño del formulario similar al tamaño mostrado en la imagen anterior.
c
ó Inserte una etiqueta y dibújela casi del tamaño del formulario. 1c c P .
c
c
ó Inserte un control Timer en cualquier parte del formulario.
c
ó Aplique
c los siguientes valores a las propiedades de los controles indicado en la siguiente tabla:
c
u  
c
 c u 'cc
c + 2   c
c #  cccc
c
c u //;//;//c
c #$%u c
c #  cccc
c  c$ c22
c
c
u c 
c
c
  c ///c
c
c
ó Haga doble clic sobre el control Timer y escriba:
c
c
µPonemos la hora en la etiqueta.
c
Label1.Caption = Format(Time, "HH:DD:SS ADPD")
c
c
ó Corra la aplicación. Podrá ver que la hora del sistema puesta en la etiqueta se actualiza cada
segundo.
c Ñsto es, porque el control se ejecuta cada 1000 milisegundos, es decir, cada segundo.
c
ó Detenga la aplicación y guárdela con los nombres FormÑjercicio42-3 para el P  c y
c
Ñjercicio42-3 para el proyecto.
c
c
"c c
c c c  c P Pc c  ccc  cc  c c
c
ó Abra un nuevo proyecto.
c
ó Inserte un control Picre sobre el formulario, tal y como se muestra en la imagen de la
siguiente página«
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Dentro del control Picre dibuje otro control Picre. Tenga en cuenta que debe de dibujarlo
dentro
c del primer control Picre. No se preocupe por el tamaño ni la posición del segundo control
Picre la disposición de este control la especificamos en la siguiente tabla:
c
c
u  
c
 c u  cc  c
c #  cccc
c + 2cc  c
c
  c $ /ccc
c '&( )(c
c )( "/.(c
c   c /c cc
$
c   
c /cc$c
c c )(c
c %c (c
c
c
ó Inserte un control Timer en el formulario. Ñn la propiedad ë erval escriba 300.
c
ó Haga doble clic sobre el control Timer y escriba:
c
µVerifica
c si la anchura del primer Picture es menor que la anchura de su contenedor. Si es menor se
µincrementa.
c
If Picture2.Width ® Picture1.Width Then
c Picture2.Width = Picture2.Width + 100 µIncrementa el segundo Picture.
c
Ñlse
c µDesactiva el tiempo cuando el primer Picture alcanza la anchura de su contenedor.
c Timer1.Ñnabled = False
Ñnd If
c
c
ó Corra la aplicación. Podrá observar que la barra se incrementa hasta cubrir todo el espacio de su
c
contenedor (Picture1).
c
c
ó Detenga la aplicación y guárdela con los nombres FormÑjercicio43-3 para el P  c y
c
Ñjercicio43-3 para el proyecto.
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
- 3À10À1
c Co roles relacio ados co ficheros (FileGis, 3irGis y 3riveGis)
c
Visal Basic proporciona una serie de controles especializados en el acceso al sistema de
c
archivos de Windows. Ñstos controles son el Cadro de lisa de  idades, el Cadro de lisa de
c
direcorios y el Cadro de lisa de archivos. Cada uno de estos controles permite acceder a los
c
correspondientes elementos del sistema de archivos.
c
c
Al  c c  c c   c (3riveGis) muestra cualquier unidad que tengas en tu
c
ordenador. Ñn tiempo de diseño se muestra la etiqueta de la unidad del disco duro de forma que
c
puedas ajustar el control al tamaño de la misma. Ñste control incluye las unidades de disco duro,
c flexible, CdmRom, etc.
disco
c
c  tiene la propiedad llamada 3rive que recoge la unidad seleccionada por el usuario
Ñste
(puede ser una unidad física como el disco c:\ o una unidad lógica asignada por el usuario a otro
c o directorio en un servidor o en otro ordenador de la red.)
disco
c
c
c Ñl  c c  c c     (3irGis) nos permite mostrar los directorios del sistema de
archivos del ordenador. Ñs conveniente que este control muestre tres o cuatro carpetas o
c
directorios. Ñn tiempo de diseño muestra la carpeta en la que se inicia la aplicación y en la que por
c
defecto se guarda el proyecto. Ñste  c posee la propiedad Pah que determina y asigna la
c
unidad que se mostrarán en dicha caja.
c
c Ñl  cc  cc   c(FileGis) nos muestra los archivos de un determinado directorio
o ccarpeta. Su propiedad más interesante es Paer que nos permite especificar qué tipo de
c
archivos son mostrados en dicho control. Para utilizar esta propiedad se pueden utilizar los
c
comodines * y ? al establecer la propiedad. Ñstos caracteres tienen el mismo significado que en
c
DSmDOS o Windows para especificar los nombres de los archivos. Si estableces la propiedad
Paer con la cadena *.txt, estás indicando que se muestren sólo los archivos que tengan esta
c
extensión. Se pueden mostrar más de un tipo de archivos separándolos con punto y coma ( ).
c
c
- 3À10À1À1 Co ecar los co roles de ficheros
c
Ñnc tiempo de diseño, al dibujar los distintos controles del sistema de archivos, estos muestran la
unidad y el directorio en la que se crea el proyecto como he comentado anteriormente. Ñn tiempo
c
de ejecución el usuario puede cambiar la unidad y el directorio o carpeta y esta situación no se verá
c
reflejada si no se escribe código. Para que los controles estén sincronizados es necesario
c
conectarlos.
c
Ñl cevento predeterminado del control cuadro de lista de unidades es Cha e. Ñste evento sucede
cuando el usuario despliega la lista de unidades y selecciona una unidad distinta a la actual, por lo
c
que es el evento adecuado para actualizar la lista de directorios de la siguiente forma:
c
c
Private Sub Dir1 Change ( )
c Dir1ÀParh = Drive1À3rive
c
Ñnd Sub
c
c
Para
c el control cuadro de lista de directorios deberemos hacer algo parecido, el código será el
siguiente:
c
c
Private Sub Dir1 Change ( )
File1ÀPah = Dir1ÀPah
Ñnd Sub
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Dec esta forma tenemos conectados los tres controles de acceso al sistema de archivos. A
continuación, se muestra una imagen con los tres controlescrelacionados:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
- 3À10À1À2 Ñjercicios prácicos
c
Ñn el siguiente ejemplo utilizamos los tres controles vistos anteriormente para navegar por las
c
unidades del sistema y visualizar los archivos de imágenes en un control ëmae.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Abra
c un nuevo proyecto.
c
ó Dodifique el tamaño del formulario con los siguientes valores en las propiedades Heih = 6915 y
Widh
c = 9135.
c
ó Inserte un control Frame y dentro de este coloque un control 3riveGisBox, un 3irGisBox y un
c
FileGisBox. Coloque debajo de estos tres controles dos botones de comando. 1c c
Pc .
c
ó Inserte
c a la derecha otro control Frame y dentro un control ëmae. 1c c P .
c la esquina inferior derecha coloque un botón de comando. 1c c P .
ó Ñn
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Ñstablezca los siguientes valores en las propiedades indicadas de cada control:
c
u  
c
 c u    cc 8c
c #  ccc
c + 2c c  c
c
  c u c
c
c
  2c u c
c
 c u c   c
c
 2c u cc
c
c
 &c u  c
&   c /c cc
  
c c cc
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Haga
c doble clic sobre el control 3riveGisBox y dentro del evento Cha e escriba:
Onc Ñrror Resume Next 'Ñn caso de que cualquier unidad tenga algún error.
c
'Hace que la lista de directorios mostrada sea la de la unidad seleccionada.
c
Dir1.Path = Drive1.Drive
c
c
ó Haga doble clic sobre el control 3irGisBox y dentro del evento Cha e escriba:
c
c que la lista de archivo muestre los archivos de la carpeta seleccionada
'Hace
'enc la lista de directorios.
File1.Path
c = Dir1.Path
c
ó Haga doble clic sobre el control FileGisBox y dentro del evento Click escriba:
c
c
'Coloca la imagen seleccionada en el control Image.
c
Image1.Picture = LoadPicture(File1.Path & "\" & File1.FileName)
c
'Pone
c información de la imagen.
Frame2.Caption = "Imagen mostrada: " & File1.FileName
c
c
c
ó Dentro del botón de comando ®®c. cescriba:
c
On Ñrror Resume Next 'Ñn caso de que la lista este vacía o se llegue al final de la lista.
c
File1.Selected(File1.ListIndex m 1) = True 'Regresa a la imagen anterior.
c c
c
ó Dentro del botón de comando '  c88 escriba:
c
Onc Ñrror Resume Next 'Ñn caso de que la lista este vacía o se llegue al final de la lista.
File1.Selected(File1.ListIndex
c + 1) = True 'Pasa a la siguiente imagen.
c c
ó Dentro
c del botón '  escriba:
c
'Sale del programa.
Ñndc
c
c
ó Haga
c doble clic en cualquier parte del formulario y dentro del evento Goad escriba:
c
'Hace que la lista de archivos solo muestre archivos de imágenes bmp, gif y jpg.
c
File1.Pattern = "*.bmp;*.gif;*.jpg"
c
'Hace que la imagen mostrada se ajuste al tamaño del control Image.
c
Image1.Stretch = True
c
c
ó Corra la aplicación.
c
c
ó Utilice el control 3riveGisBox y seleccione una unidad de su sistema donde tenga carpetas con
c
imágenes. Ñn el control 3irGisBox aparecerán las carpetas de la unidad seleccionada.
c
ó Seleccione
c la carpeta que contenga las imágenes en sus disco. Ñn el control FileGisBox
aparecerá las imágenes de la carpeta seleccionada. Haga clic sobre una de las imágenes y observe
c
como aparece en el control ëmae.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Haga
c clic sobre los botones '  c c .  para mostrar cada una de las imágenes de la
carpeta seleccionada.
c
c
ó Detenga la aplicación y guárdela con los nombres FormÑjercicio44-3 para el P  c y
c
Ñjercicio44-3 para el proyecto.
c
c
3À2c Ñl co rol de cadros de diáloo (Commo d3ialo)
c c
c Ñl  Commo 3ialo proporciona un conjunto de cuadros de diálogo estándar para
realizar operaciones como abrir y guardar archivos, establecer las opciones de impresión y
c
seleccionar colores y fuentes. Ñl control también tiene la posibilidad de presentar Ayuda ejecutando
c
el motor de Ayuda de Windows.
c
Formao:
c
c
CommondDialogÀMeodo
c
Ñl ccontrol Commo 3ialo proporciona una interfaz entre Visual Basic y las rutinas de la biblioteca
dec vínculos dinámicos CommdlÀdll de Dicrosoft Windows. Para crear un cuadro de diálogo
utilizando
c este control, CommdlÀdll debe encontrarse en el directorio YTÑM de Dicrosoft
Windows.
c
c usar el control Commo 3ialo en una aplicación, agréguelo a un formulario y establezca sus
Para
c
propiedades. Ñl cuadro de diálogo presentado por el control está determinado por los métodos del
c
control.
c
Ñnc  Pcc   se presenta un cuadro de diálogo o se ejecuta el motor de Ayuda, cuando
secinvoca el método apropiado; en  Pcc !, el control Commo 3ialo se presenta como
un icono dentro de un formulario. No se puede cambiar el tamaño de dicho icono.
c
Ñl ccontrol Commo 3ialo puede presentar los cuadros de diálogo siguientes utilizando el método
c
especificado.
c
c M
odo Cadro de diáloo prese ado
c
howpe Cuadro de diálogo Abrir.
c
howave Cuadro de diálogo ardar como.
c
howColor Cuadro de diálogo Color.
c
howFo
c  Cuadro de diálogo Fe e.
c
howPri er Cuadro de diálogo ëmprimir  pcio es de impresió .
c
howHelp Cuadro de diálogo Invoca el motor de Ayda de Wi dows.
c
c
Para mostrar cada uno de los cuadros de diálogos deberá especificar el nombre del control de
c
dialogo seguido del m
odo correspondiente al cuadro de dialogo que desea abrir, por ejemplo:
c
c
CommonDialog1Àhowpe µDuestra el cuadro de diálogo Abrir.
c
CommonDialog1Àhowave
c µDuestra el cuadro de diálogo Guardar como.
c
CommonDialog1ÀhowColor µDuestra el cuadro de diálogo Color.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
A continuación
c se muestran las ventanas que puede abrir el controlcCommo d3ialo:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c Figura 3.5. Cuadro de diálogo Abrir.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c Figura 3.6. Cuadro de diálogo ardar como.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0



c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Figura 3.7. Cuadro de diálogo Color.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Figura 3.8. Cuadro de diálogo ëmprimir.
c
Ñl ccontrol Commo 3ialo no aparece por defecto en la barra de herramientas no estándar. Para
c
agregar este control a la  cc P  , haga clic en el menú Projec y luego seleccione la
opción Compo e s« o simplemente presione Crl + T. Aparecerá el siguiente cuadro de dialogo:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0



c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c Figura 3.9. Cuadro de diálogo de Compo e es.
c
Ñn la ventana Compo e s seleccione el elemento  ) 3 -. tal y
c
c se puede apreciar en la imagen y luego, haga clic en elc  Acepar. Ñl control
como
Commo
c 3ialo se agregará a la  cc P  .
c Gos cadros de dialoo Abrir y ardar (pe /ave)
- 3À2À1
c
Losc cuadros de diálogos Abrir y ardar son aquellos que vemos típicamente cuando abrimos o
guardamos
c un archivo desde un programa. A continuación se muestra una tabla con las
propiedades
c más importantes para los métodos howpe y howave.
c
Propiedad 3escripció
c
3efalÑx
c Ñs la extensión por defecto a utilizar para abrir/salvar archivos. Con ave, si el
nombre del fichero se teclea sin extensión, se añade esta extensión por defecto.
c
3ialoTile Devuelve o da valor al título de la caja de diálogo.
c
Fileame
c Nombre completo del archivo a abrir o ardar, incluyendo el pah.
c
FileTile Nombre del archivo a abrir/salvar sin la ruta de acceso correspondiente.
c
Filer Contiene los filtros de selección que aparecerán indicados en la parte inferior de la
c pantalla en la lista de tipos de archivo. Pueden indicarse múltiples tipos de archivo,
c separándolos mediante una barra vertical ³|´ que se puede obtener pulsando las
c teclas Crl + Al + 1 o pulsando la combinación de teclas AGT + 0166.
c  si axis es la siie e:
c
c ObjetoÀFiler = ³(descripción a aparecer en la caja de lista) | filtro´
c Ñjemplo:
c CommonDialog1.Filter = ³Texto (*.txt) | *.txt | Imágenes (*.bmp; *.ico) | *.bmp; *.ico´
CommonDialog1.ShowOpen

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0



c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Aparecerá
c la siguiente ventana con la lista Tipo de la siguiente manera:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Filerë dex Indica el índice de los elementos del filtro. Por defecto empieza a enumerar por ³1´.
c
ë i3ir Contiene el nombre del directorio por defecto. Si no se especifica, se utiliza el
c directorio actual. Los archivos del directorio especificado en esta propiedad serán los
c que se muestres al cargar el cuadro de dialogo Abrir.
c
Ñjemplo:
c
c CommonDialog1Àë i3ir = ³C:\Windows´ µDuestra los archivos de la carpeta Windows.
c
c
Flas Devuelve o establece las opciones de los cuadros de dialogo que muestra el control
c Commo 3ialo.
c Los valores admitidos para la propiedad Flas para el cuadro de dialogo Abrir se
c muestran en la siguiente tabla:
c
c Co sa e Valor 3escripció
c cdlFAllowMliselec &H200 Ñspecifica que el  c c  Nombre de
c archivo permite varias selecciones. Ñl usuario
puede seleccionar varios archivos en tiempo
c de ejecución presionando la tecla Dayús y
c utilizando las teclas Flecha arriba y Flecha
abajo para seleccionar los archivos deseados.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0



c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c Co sa e Valor 3escripció
cdlFCreaePromp
c &H2000 Ñspecifica que el cuadro de diálogo solicita al usuario
la creación de un archivo que no existe actualmente.
c Ñste indicador establece automáticamente los
c indicadores cdlFPahMsÑxis y
c cdlFFileMsÑxis.
c
cdlFÑxplorer
c &H80000 Usa la plantilla del cuadro de diálogo Abrir archivo de
tipo Ñxplorador. Funciona en Windows 95 y en
c Windows NT 4.0.
c
c
cdlFÑxe sio 3iffere  &H400 Indica que la extensión del nombre de archivo
c devuelto es distinta de la extensión especificada por la
c propiedad 3efalÑx. Ñste indicador no está definido
si la propiedad 3efalÑx es ll, si las extensiones
c
coinciden o si el archivo no tiene extensión. Ñl valor de
c este indicador se puede comprobar después de cerrar
c el cuadro de diálogo.
c
cdlFFileMsÑxis
c &H1000 Ñspecifica que el usuario sólo puede introducir
nombres de archivos existentes en el cuadro de texto
c
Nombre de archivo. Si este indicador está activado y
c el usuario escribe un nombre de archivo no válido, se
c mostrará una advertencia. Ñste indicador establece
c automáticamente el indicador cdlFPahMsÑxis.
c
cdlFHelpBo
c &H10 Hace que el cuadro de diálogo presente el botón
Ayuda.
c
c
cdlFHideRead ly &H4 Oculta la  cc   Sólo lectura.
c
c
cdlFGo ames &H200000 Usa nombres de archivo largos.
c
cdlFoCha e3ir &H8 Hace que el cuadro de diálogo restablezca como
c
directorio actual el que lo era en el momento de
c abrirse el cuadro de diálogo.
c
c
cdlFo3erefere ceGi ks &H100000 No resuelve la referencia en vínculos del sistema
c (también conocidos como accesos directos). De forma
c predeterminada, la elección de un vínculo hace que el
sistema resuelva la referencia que contiene.
c
c
cdlFoGo ames &H40000 No utiliza nombres de archivo largos.
c
c
cdlFoRead lyRer &H8000 Ñspecifica que el archivo devuelto no tendrá
c establecido el atributo de Sólo lectura y no estará en
un directorio protegido contra escritura.
c
c
cdlFoValidae &H100 Ñspecifica que el cuadro de diálogo común permite
c caracteres no válidos en el nombre de archivo
c devuelto.
c
cdlFverwriePromp &H2 Hace que el cuadro de diálogo ardar como genere
c
un cuadro de mensajes si el archivo seleccionado ya
existe. Ñl usuario tiene que confirmar si desea
sobrescribir el archivo.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0


V
c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c Co sa e Valor 3escripció
cdlFPahMsÑxis
c &H800 Ñspecifica que el usuario sólo puede escribir rutas de acceso
válidas. Si este indicador está activado y el usuario escribe una
c ruta no válida, se mostrará un mensaje de advertencia.
c
c
cdlFRead ly &H1 Hace que la casilla de verificación ólo lecra esté activada
c inicialmente cuando se crea el cuadro de diálogo. Ñste
c indicador también indica el estado de dicha casilla de
verificación cuando se cierra el cuadro de diálogo.
c
c
cdlFhareAware &H4000 Ñspecifica que se pasarán por alto los errores de violación al
c compartir.
c
c
- 3À2À1À1 Ñjercicios prácicos
c
1.mc Ñl siguiente ejercicio muestra una aplicación que permite cargar una imagen en un control
c
ëmae mediante el cuadro de dialogo Abrir.
c
c un nuevo proyecto e inserte un control Commo 3ialo.
ó Abra
c
ó Inserte un control ëmae y dos botones de comando, tal y como se muestra en la siguiente figura:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Ñstablezca los siguientes valores en las propiedades indicadas de cada control:
c
u  
c c u    cc 8c
c #  ccc
c + 2c c  c
c c $ /ccc
c #  cccc
u  c   c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0



c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
u  
c
u  c  c
c
c
ó Dentro del evento Click del botón . cescriba:
c
On Ñrror Resume Next 'Ñn caso de que el usuario no seleccione ningún archivo.
c
c
'Ñspecifica el tipo de archivo que se podrán abrir.
c
CommonDialog1.Filter = "Archivos de imagen (*.BDP)|*.BDP|Archivos de imagen (*.JPG)|*.JPG"
CommonDialog1.ShowOpen
c 'Abre el cuadro de diálogo Abrir.
c
'Duestra la imagen seleccionada en el control Image.
c
Image1.Picture = LoadPicture(CommonDialog1.FileName)
c
c
ó Dentro del evento Click del botón ' cescriba:
c
'Sale del programa.
Ñnd
c
c
c
ó Dentro del evento Goad del formulario escriba:
c
c
Image1.Stretch = True 'Hace que la imagen se adapte al tamaño del control Image.
ccccc
c
ó Corra la aplicación.
c
ó Haga
c clic sobre el botón . . Aparecerá la   cc  c. .
c
ó Busque una carpeta que contenga imágenes y seleccione una de ellas. Podrá observar como la
c
imagen se coloca sobre el control ëmae.
c
ó Detenga la aplicación y guárdela con los nombres FormÑjercicio45-3 para el P  c y
c
Ñjercicio45-3 para el proyecto.
c
c Ñl cadro de diáloo ëmprimir (Pri )
- 3À2À2
c
Ñl ccadro de dialoo imprimir es el que comúnmente vemos antes de imprimir un documento. Ñn
este aparecen las impresoras instaladas en su sistema, un botón de propiedades que permite
c
configurar la impresora seleccionada y un conjunto de opciones disponibles antes de imprimir un
c
documento. Observe la Fira 3À8 de este capítulo.
c
Parac mostrar el cuadro de diálogo imprimir utilizamos el método howPri  del control
Commo
c 3ialo. A continuación, se muestra una tabla con las propiedades más importantes para
el método de impresión (howPri ).
c
Prcopiedad 3escripció
c
Copies Devuelve o establece un valor que determina el número de copias que se van a
c imprimir. Para el objeto Pri er, no está disponible en tiempo de diseño.
c
FromPae
c Devuelve o establece un valor que indica el número de la página donde comenzará la
impresión. Ñste valor el usuario lo especifica en la caja de texto DÑ del cuadro de
c diálogo ëmprimir.
c
c
ToPae Devuelve o establece un valor que indica el número de la página donde terminará la
impresión. Ñste valor el usuario lo especifica en la caja de texto A del cuadro de
diálogo ëmprimir.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0



c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
Pro
c piedad 3escripció
Copies
c Devuelve o establece un valor que determina el número de copias que se van a
imprimir. Para el objeto Pri er, no está disponible en tiempo de diseño.
c
c
FromPae Devuelve o establece un valor que indica el número de la página donde comenzará la
c impresión. Ñste valor el usuario lo especifica en la caja de texto DÑ del cuadro de
c diálogo ëmprimir.
c
ToPae Devuelve o establece un valor que indica el número de la página donde terminará la
c
impresión. Ñste valor el usuario lo especifica en la caja de texto A del cuadro de
c diálogo ëmprimir.
c
cFlas Devuelve o establece las opciones del cuadro de diálogo ëmprimir.
c
Los valores disponibles en la propiedad Flas para el cuadro de diálogo ëmprimir son
c
los siguientes:
c
c Co sa e Valor 3escripció
c cdlP3AllPaes &H0 Devuelve o establece el estado del
c botón de opción Todo.
c
cdlP3Collae &H10 Devuelve o establece el estado de la
c casilla de verificación Intercalar.
c
c cdlP33isablePri ToFile &H80000 Deshabilita la casilla de verificación
c Imprimir en un archivo.
c
c cdlP3HelpBo &H800 Hace que el cuadro de diálogo presente
el botón Ayuda.
c
c cdlP3HidePri ToFile &H100000 Oculta la casilla de verificación Imprimir
c en un archivo.
c
c cdlP3oPaems &H8 Deshabilita el botón de opción Páginas y
el control de edición asociado.
c
c cdlP3oelecio &H4 Deshabilita el botón de opción
c Selección.
c
c cdlP3oWar i  &H80 Ñvita que aparezca un mensaje de
advertencia cuando no hay ninguna
c
impresora predeterminada.
c
c cdlP3Paems &H2 Devuelve o establece el estado del
c botón de opción Páginas.
c
c cdlP3Pri ep &H40 Hace que el sistema presente el cuadro
de diálogo Co firar impresora en
c vez del cuadro de diálogo ëmprimir.
c
c cdlP3Pri ToFile &H20 Devuelve o establece el estado de la
c casilla de verificación Imprimir en un
c archivo.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0



c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c Co sa e Valor 3escripció
c cdlP3Rer 3C &H100 Devuelve un contexto de dispositivo para la impresora
seleccionada en el cuadro de diálogo. Ñl contexto de
c dispositivo se devuelve en la propiedad h3C del cuadro
c de diálogo.
c
c cdlP3Rer 3efal &H400 Devuelve el nombre de la impresora predeterminada.
c
c cdlP3Rer ëC &H200 Devuelve un contexto de información para la impresora
seleccionada en el cuadro de diálogo. Ñl contexto de
c información proporciona una manera rápida de obtener
c información acerca del dispositivo sin crear un contexto
c de dispositivo. Ñl contexto de información se devuelve
c en la propiedad h3C del cuadro de diálogo.
c
cdlP3elecio &H1 Devuelve o establece el estado del botón de opción
c Selección. Si no se especifican cdlP3Paems ni
c cdlP3elecio , el botón de opción Todo estará en el
c estado seleccionado.
c
CdlP3Use3evModeCopies
c &H40000 Si un controlador de impresora no acepta varias copias,
el establecimiento de este indicador deshabilita el
c
control Número de copias del cuadro de diálogo
c ëmprimir.
c
c
- 3À2À2À1 Ñjercicios prácicos
c
Ñl csiguiente ejercicio muestra como utilizar el cuadro de diálogo ëmprimir para imprimir el contenido
de una caja de texto.
c
c un nuevo proyecto.
ó Abra
c
ó Inserte una caja de texto, tres botones de comando y un control Commo 3ialo, tal y como se
c
muestra en la siguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0



c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c
ó Ñstablezca los siguientes valores en las propiedades indicadas de cada control:
c
u  
c c u  c cc  c
c #  ccc
c + 2c c  c
cc ,   c
c $#+ 2c c  ccc
c
c
 c u   c
c
 2c u    c
c
u  c  c
c
c
ó Dentro
c del evento Click del botón '  escriba:
c del programa.
µSale
Ñndc
c c
c
c
ó Ñn el evento Click del botón de comando . cescriba:
c
Onc Ñrror GoTo noArchivo 'Ñn caso de que el usuario no seleccione ningún archivo.
c
CommonDialog1.Filter
c = "Archivos de texto (*.txt)|*.txt" 'Duestra solo los archivos de texto.
c
CommonDialog1.ShowOpen 'Abre la ventana de diálogo Abrir.
c
Dimc LineaLeida As String
c
'Abre
c el archivo seleccionado por el usuario.
Open CommonDialog1.FileName For Input As #1
c
cWhile Not ÑOF(1) 'Inicia un bucle que se repite hasta el fin del archivo.
c
c Line Input #1, LineaLeida 'Lee la línea actual.
c
'Duestra la línea leída en la caja de texto.
c Text1.Text = Text1.Text & LineaLeida & Chr(13) & Chr(10)
c
cWend
c
c
Close #1 'Cierra el archivo.
c
c Sub
Ñxit
c
noArchivo:
c
c µDuestra un cuadro de mensaje si el usuario no selecciona ningún archivo.
DsgBox ("No se ha seleccionado ningún archivo.")
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Corra
c la aplicación y haga clic sobre el botón . .
c
ó Busque un archivo de texto en el disco de su sistema y haga clic en el botón . cdel cuadro de
diálogo
c Abrir.
c
ó Haga clic sobre el botón /P P . Aparecerá el cuadro de diálogo Imprimir.
c
ó Haga
c clic sobre el botón /P P  del cuadro de diálogo ëmprimir. Los datos serán enviados a la
impresora si tiene una instalada en su sistema.
c
c
ó Detenga la aplicación y guárdela con los nombres FormÑjercicio46-3 para el P  c y
c
Ñjercicio46-3 para el proyecto.
c
c Ñl cadro de diáloo Fe e (Fo )
- 3À2À3
c
Ñl ccadro de diáloo Fe e permite que el usuario seleccione un determinado tipo de fuente
especificado
c una fuente, un tamaño, un color y un estilo.
c mostrar el cadro de diáloo Fe e, establezca las opciones relativas al cuadro de diálogo
Para
Fec e utilizando la propiedad Flas. Después, utilice el método howFo  para presentar
c
realmente el cuadro de diálogo. Una vez que el usuario realice sus selecciones en el cuadro de
diálogo
c Fe e, las propiedades siguientes contienen información acerca de la selección del
usuario:
c
c
Propiedad 3eermi a
c Color Ñl color seleccionado. Para usar esta propiedad, tiene que establecer primero la
c propiedad Flas a cdlCFÑffecs.
c
cFo Bold Si ha seleccionado eria.
c
Fo ëalic Si ha seleccionado   .
c
Foc rikehr Si ha seleccionado tachado. Para usar esta propiedad, tiene que establecer
c primero la propiedad Flas a cdlCFÑffecs.
c
Foc U derli e Si ha seleccionado subrayado. Para usar esta propiedad, tiene que establecer
primero la propiedad Flas a cdlCFÑffecs.
c
c ame
Fo Ñl nombre de fuente seleccionado.
c
cFo ize Ñl tamaño de fuente seleccionado.
c
c
La propiedad Flas del cadro de diáloo Fe e puede tomar los siguientes valores:
c
c Co sa e Valor 3escripció
c cdlCFAë ly &H400 Ñspecifica que el cuadro de diálogo sólo permite la
c selección de las fuentes que utilicen el juego de
c caracteres de Windows. Si este indicador está activado,
c el usuario no podrá seleccionar una fuente que sólo
contenga símbolos.
c
c cdlCFApply &H200 Activa el botón Aplicar del cuadro de diálogo.
c
cdlCFBoh &H3 Hace que el cuadro de diálogo enumere las fuentes de
impresora y de pantalla disponibles.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
c Co sa e Valor 3escripció
c cdlCFÑffecs &H100 Ñspecifica que el cuadro de diálogo permite los efectos
de tachado, subrayado y color.
c
c cdlCFFixedPich ly &H4000 Ñspecifica que el cuadro de diálogo selecciona sólo
c fuentes de densidad fija.
c
c cdlCFForceFo Ñxis &H10000 Ñspecifica que se presentará un mensaje de error si el
c usuario intenta seleccionar una fuente o un estilo que no
exista.
c
c cdlCFHelpBo &H4 Hace que el cuadro de diálogo presente un botón
c Ayuda.
c
c cdlCFGimiize &H2000 Ñspecifica que el cuadro de diálogo selecciona sólo
tamaños de fuente dentro del intervalo especificado por
c
las propiedades Mi y Max.
c
c cdlCFcree Fo s &H1 Hace que el cuadro de diálogo muestre únicamente las
c fuentes de pantalla compatibles con el sistema.
c
c
- 3À2À3À1 Ñjercicios prácicos
c
c
Ü Ac continuación se muestra una aplicación que nos permite cambiar el tipo de fuente y el color del
texto escrito en una caja de texto. También, nos permite agregar efectos al texto.
c
c un nuevo proyecto.
ó Abra
c
ó Inserte una caja de texto, un botón de comando y el control Commo 3ialo. Tal y como se ve en
la csiguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Seleccione la caja de texto y borre el contenido de la propiedad Tex.
c la propiedad Capio del botón de comando escriba &Fuente.
ó Ñn
c
c el evento Click del botón de comando escriba el bloque de código que se muestra en la
ó Ñn
siguiente página«

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
cµÑstablecer CancelÑrror a Trae.
cCommonDialog1.CancelÑrror = Trae
cµSi el usuario hace clic en el botón cancelar no se provoca un error.
cOn Ñrror GoTo ÑrrorCancelar
c
c'Ñstablecer la propiedad Flags.
cCommonDialog1.Flags = cdlCFÑffects Or cdlCFBoth
c'Presentar el cuadro de diálogo Fuente
cCommonDialog1.ShowFont
c
c'Asigna a la caja de texto el tipo de letra seleccionada en el cuadro de dialogo.
cText1.Font.Name = CommonDialog1.FontName
c'Asigna a la caja de texto el tamaño de letra seleccionado en el cuadro de dialogo.
cText1.Font.Size = CommonDialog1.FontSize
c
c'Si el usuario seleccionada negrita se asigna a la caja.
cText1.Font.Bold = CommonDialog1.FontBold
c'Si el usuario selecciona cursiva se asigna a la caja.
cText1.Font.Italic = CommonDialog1.FontItalic
c
c'Si el usuario selecciona subrayado se asigna a la caja.
cText1.Font.Underline = CommonDialog1.FontUnderline
c'Si el usuario selecciona tachado se asigna a la caja.
cText1.FontStrikethru = CommonDialog1.FontStrikethru
c
c'Asigna el color seleccionado al texto de la caja.
cText1.ForeColor = CommonDialog1.Color
cÑxit Sub
c
ÑrrorCancelar:
c'Ñl usuario ha hecho clic en el botón Cancelar.
cÑxit Sub
c
c
ó Corra la aplicación.
c
ó Ñscriba algo en la caja de texto.
c
ó Haga clic en el botó fuente.
c
ó Seleccione
c el tipo de fuente que desea aplicar al texto de la caja de texto. Cuando haga clic en el
botón Acepar el tipo de fuente seleccionado se aplica a la caja.
c
ó cDetenga la aplicación y guárdela con los nombres FormÑjercicio47-3 para el P  c y
c
Ñjercicio47-3 para el proyecto.
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
- 3À2À4
c Ñl cadro de diáloo Color
c
Ñl cuadro de diálogo Color permite que el usuario seleccione un color de una paleta o que cree y
c
seleccione un color personalizado. Ñste cuadro de diálogo se muestra mediante el método
c
howColor del control Commo 3ialo.
c
Lac propiedad Color del control Commo 3ialo almacena el color seleccionado por el usuario en la
paleta de colores.
c
Lac propiedad Flas del cadro de diáloo Color puede tomar los siguientes valores:
c
c Co sa e Valor 3escripció
c cdCCFllpe &H2 Se presenta todo el cuadro de diálogo, incluyendo la
c sección Definir colores personalizados.
c
cdlCCHelpBo &H8 Hace que el cuadro de diálogo presente un botón
c Ayuda.
c
c
cdlCCPreve Fllpe &H4 Desactiva el botón de comando 3efi ir colores
c perso alizados y evita que el usuario defina colores
c personalizados.
c cdlCCR Bë i &H1 Ñstablece el valor de color inicial del cuadro de diálogo.
c
c
c
- 3À2À4À1 Ñjercicios prácicos
c
c la siguiente aplicación veremos como utilizar el cuadro de diálogo Color para establecer el
Ü Ñn
color de fondo y del texto de una caja de texto.
c
c un nuevo proyecto.
ó Abra
c
ó Inserte una caja de texto, dos botones de comando y el control Commo 3ialo. Tal y como se ve
enc la siguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Seleccione la caja de texto y borre el contenido de la propiedad Tex. Ñn la propiedad Capio del
primer botón de comando escriba ( c c
 y en la del segundo botón escriba ( c c.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Dentro
c del evento Click del primer botón de comando escriba:
c'Ñstablecer CancelÑrror a Trae.
cCommonDialog1.CancelÑrror = True
c
cOn Ñrror GoTo ÑrrorCancelar
c'Ñstablecer la propiedad Flags.
cCommonDialog1.Flags = cdlCCRGBInit
c
c'Presentar el cuadro de diálogo Color.
cCommonDialog1.ShowColor
c'Ñstablece el color de seleccionado al texto de la caja.
cText1.ForeColor = CommonDialog1.Color
c
cÑxit Sub
ÑrrorCancelar:
c
'Ñl usuario ha hecho clic en el botón Cancelar.
c
c
c
ó Dentro del evento Click del segundo botón de comando escriba:
c
c'Ñstablecer CancelÑrror a true.
cCommonDialog1.CancelÑrror = True
cOn Ñrror GoTo ÑrrorCancelar
c
c'Ñstablecer la propiedad Flags.
cCommonDialog1.Flags = cdlCCRGBInit
c'Presentar el cuadro de diálogo Color.
cCommonDialog1.ShowColor
c
c'Ñstablece el color de seleccionado al texto de la caja.
cText1.BackColor = CommonDialog1.Color
cÑxit Sub
c
ÑrrorCancelar:
c'Ñl usuario ha hecho clic en el botón Cancelar.
c
c
ó Corra
c la aplicación.
c
ó Ñscriba algo en la caja de texto.
c
ó Haga clic en el botón Color del exo. Seleccione un color de la paleta de colores y haga clic en el
c aceptar. Podrá observar que el color se le aplica al texto de la caja.
botón
c
ó Haga
c clic en el botón Color del fo do. Seleccione un color de la paleta de colores y haga clic en
el botón aceptar. Podrá observar que el color se le aplica al fondo de la caja de texto.
c
c
ó Detenga
c la aplicación y guárdela con los nombres FormÑjercicio48-3 para el P  c y
Ñjercicio48-3 para el proyecto.
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
3À3c ARRÑ G Ñ G CTRGÑ
c c
Un Arrelo de controles constituye un conjunto de controles del mismo tipo y con el mismo nombre
quec solo se diferencia por un índice. Son utilizados frecuentemente para realizar una misma
c
operación sobre un mismo conjunto de controles. Cada elemento del Arreglo contiene un valor
c
numérico indicado en la propiedad ë dex de dicho elemento. Ñste valor es utilizado para identificar
a ese
c elemento dentro del arreglo.
c
Vemos todo esto dicho anteriormente con un ejemplo:
c
Ñnc el siguiente ejemplo utilizaremos seis cajas de texto a la cual le aplicaremos una operación al
c
mismo tiempo. Cada caja de texto tendrá el mismo nombre (ame) pero un índice (ë dex) distinto.
c
ó Abra un nuevo proyecto.
c
c
ó Agregue seis cajas de texto y cuatro botones de comando, tal y como se muestra en la siguiente
imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Para crear el Arreglo de controles debemos especificar un valor en la propiedad ë dex de cada
c de texto. Para esto seleccione la primera caja y en la propiedad ë dex escriba 1, en la misma
caja
propiedad
c de la segunda caja escriba 2, en la tercera caja escriba 3, en la cuarta caja escriba 4, en
la quinta caja escriba 5 y en la sexta caja escriba 6.
c
c
ó Ahora debemos asignar el mismo nombre a cada caja de texto. Para esto seleccione cada una de
lasc cajas de texto y en su respectiva propiedad ame escriba el texto caja.
c
c la propiedad Capio del primer botón escriba    , en la del segundo botón escriba
ó Ñn
   , en la del tercer botón escriba ( P c   y en la del último botón escriba  .
c
c
ó Dentro del evento Click del botón Dayúscula escriba:
c
Dim i As Long
c
c i = 1 To caja.Count 'Repite hasta que lea todas las cajas del Arreglo.
For
c caja(i).Text = UCase(caja(i).Text) 'Convierte el contenido de todas las cajas a mayúscula.
Next i

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
ó Dentro
c del evento Click del botón    cescriba:
c i As Long
Dim
c
For
c i = 1 To caja.Count 'Repite hasta que lea todas las cajas del Arreglo.
c caja(i).Text = LCase(caja(i).Text) 'Convierte el contenido de todas las cajas a minúscula.
Next i
c
c
c
ó Dentro del evento Click del botón ( P c   escriba:
c
c i As Long
Dim
c
For i = 1 To caja.Count 'Repite hasta que lea todas las cajas del Arreglo.
c
caja(i).BackColor = vbBlue 'Asigna el color azul al fondo de todas las cajas.
c
Next i
c
c
ó Dentro
c del evento Click del botón   escriba:
c i As Long
Dim
c
For
c i = 1 To caja.Count 'Repite hasta que lea todas las cajas del Arreglo.
c caja(i).Text = ³´ 'Borra el contenido de todas las cajas.
Next i
c
c
c
ó Corra la aplicación.
c
ó Haga clic sobre cada uno de los botones de comando. Podrá observar que el mismo código es
c
aplicable a cada una de las cajas de texto. Ñsto es debido a que cada caja de texto posee un índice
quec lo representa dentro del Arreglo. Ñste índice cambia cada vez que se repite el bucle recorriendo
asíc por todas las cajas que contiene el Arreglo.
c
ó Detenga
c la aplicación y guárdela con los nombres FormÑjercicio49-3 para el P  c y
Ñjercicio49-3 para el proyecto.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a los co roles más sales de Visal Basic 6À0


c
Capílo 3
c c
3À4c Fë URA C G CTRGÑ MÁ UUAGÑ 3Ñ VëUAG BAëC 6À0c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basic


c
Capílo 4
c
CTÑë3
c
c c
4À1 Ñl Ge aje BasicÀ
c m 4.1.1 Antecedentes.
c m 4.1.2 Nacimiento y primeros años.
c m 4.1.3 Crecimiento Ñxplosivo.
c m 4.1.4 Perfeccionamiento.
4À2 Co cepos básicosÀ
c
m 4.2.1 Identificadores.
c m 4.2.2 Palabras reservadas.
c m 4.2.3 Tipos de datos.
c m 4.2.3.1 Clasificación de los tipos de datos.
c m 4.2.3.1.1 Tipos enteros (Byte, Integer, Long).
m 4.2.3.1.2 Tipos reales (Single, Double, Currency).
c
m 4.2.3.1.3 Tipos cadena (String).
c m 4.2.3.1.4 Tipos lógicos (Boolean).
c m 4.2.3.1.5 Tipos variados (Variant).
c m 4.2.4 Constantes.
c m 4.2.4.1 Declaración de constantes.
m 4.2.4.2 Declaración de constantes públicas.
c
m 4.2.4.3 Declaración de constantes privadas.
c m 4.2.4.4 Declaración de constantes locales.
c m 4.2.5 Variables.
c m 4.2.5.1 Declaración de una variable.
c m 4.2.5.1.1 Declaración de una variable pública.
m 4.2.5.1.2 Declaración de una variable privada.
c
m 4.2.5.1.3 Declaración de una variable local.
c m 4.2.5.2 Nombre descriptivos de las variables.
c m 4.2.5.3 Almacenar y recuperar datos en variables.
c m 4.2.5.4 Operaciones aritméticas con variables.
c m 4.2.5.5 Ñjercicios propuestos.
m 4.2.6 Operaciones de entrada y salida.
c
m 4.2.6.1 Función InputBox.
c m 4.2.6.2 Función DsgBox.
4À3c Ñsrcras de co rol selecivasÀ
c m 4.3.1 Ñxpresiones lógicas.
c m 4.3.1.1 Operadores aritméticos.
m 4.3.1.2 Operadores de relación.
c
m 4.3.1.3 Operadores lógicos.
c m 4.3.1.3.1 Operador lógico AND.
c m 4.3.1.3.2 Operador lógico OR.
c m 4.3.1.3.3 Operador lógico NOT.
c m 4.3.2 La sentencia If.
m 4.3.3 La sentencia Case.
c
4À4 Ñsrcras de co rol repeiivasÀ
c m 4.4.1 Ñl Bucle For«Next.
c m 4.4.2 Ñl Bucle Do...Loop.
c m 4.4.3 Ñl Bucle While«Wend.
c m 4.4.4 Ñl Bucle For Ñach«Next.
m 4.4.5 Ñjercicios propuestos.
c
4À5 Gas f cio es e el le aje BasicÀ
c m 4.5.1 Funciones predefinidas.
c m 4.5.1.1 Funciones aritméticas.
c m 4.5.1.2 Funciones trigonométricas.
m 4.5.1.3 Funciones matemáticas derivadas.
m 4.5.1.4 Funciones de conversión de tipo de datos.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basic


c
Capílo 4
c
CTÑë3
c
c c
m 4.5.1.5 Funciones de manipulación de cadenas de caracteres.
c m 4.5.1.5.1 Concatenación de cadenas.
c m 4.5.1.5.2 Obtener subcadenas.
c m 4.5.1.5.3 Funciones especiales.
c m 4.5.1.5.4 Longitud de una cadena.
m 4.5.1.6 Ñjercicios prácticos.
c
m 4.5.2 Funciones definidas por el usuario.
4À6c ë rodcció a las esrcras de daosÀ
c m 4.6.1 Los Arrays.
c m 4.6.1.1 Arrays unidimensionales: vectores.
c m 4.6.1.1.1 Declaración de un Array unidimensional.
m 4.6.1.1.2 Almacenar y leer datos en un Array unidimensional.
c
m 4.6.1.1.3 Operaciones con los elementos de un Array unidimensional.
c m 4.6.1.1.4 Ñjercicios prácticos.
c m 4.6.1.2 Arrays multidimensionales: tablas y matrices.
c m 4.6.1.2.1 Declaración de un Array multidimensional.
c m 4.9.1.2.2 Recorrido por las filas y columnas de un Array multidimensional.
m 4.6.1.2.3 Almacenando y leer datos en un Array multidimensional.
c
m 4.6.1.2.4 Ñjercicios prácticos.
c m 4.6.2 Ñjercicios propuestos.
4À7c Pre as para co esarÀ
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0

ë rodcció al Ge aje Basicc


Capílo 4
c c
4À1c Ñl Ge aje Basic
c c
BAëC es una familia de lenguajes de programación. Fue originalmente ideado como una
c
herramienta de enseñanza, se diseminó entre los microcomputadores caseros en la década
c
de1980, y sigue siendo popular hoy en día en muchos dialectos bastante distintos del original.
c
c
BASIC es el acrónimo de Beginners Allmpurpose ymbolic ënstruction Code (en español: ³código de
c
instrucciones simbólicas de propósito general para principiantes´) y está ligado al nombre de un
trabajo
c sin publicar del coinventor del lenguaje, Thomas Krz.
c
- 4À1À1
c A ecede es
c
Antes de mediados de la década de 1960, las computadoras eran herramientas sumamente caras
quec eran utilizadas únicamente para propósitos especiales, ejecutando una sola "tarea" a la vez.
Sinc embargo, durante esa década, los precios comenzaron a bajar al punto que incluso las
c
pequeñas empresas podían costearlas. La velocidad de las máquinas se incrementó al punto que a
menudo
c quedaban ociosas porque no había suficientes tareas para ellas. Los lenguajes de
programación
c de aquellos tiempos estaban diseñados como las máquinas en las que corrían: para
propósitos específicos como el procesamiento de fórmulas. Como las máquinas para una sola tarea
c caras, se consideraba que la velocidad de ejecución era la característica más importante de
eran
c Ñn general, todas eran difíciles de utilizar, y aportaban poca estética.
todas.
c
Fuec en aquellos tiempos que el concepto de sistema de Tiempo compartido comenzó a
c
popularizarse. Ñn uno de estos sistemas, el tiempo de procesamiento de la computadora principal
sec dividía, y a cada usuario se le otorgaba una pequeña porción en una secuencia. Las máquinas
eran lo suficientemente rápidas como para engañar a la mayoría de usuarios, dándoles la ilusión de
quec disponían de una máquina entera solo para ellos. Ñn teoría la distribución del tiempo entre los
c
usuarios redujo considerablemente el costo de la computación, ya que una sola máquina podía ser
c
compartida, al menos en teoría, entre cientos de usuarios.
c
- 4À1À2
c acimie o y primeros años
c
Ñl c lenguaje BASIC original fue inventado en 1964 por Joh eore Keme y (1926m1993) y
Thomas Ñe e Krz (1928) en el 3armoh Collee. Ñn los años subsiguientes, mientras que
c
otros dialectos de BASIC aparecían, el BASIC original de Kemeny y Kurtz era conocido como
c
BAëC 3armoh.
c
c
BASIC fue diseñado para permitir a los estudiantes escribir programas usando terminales de
c
computador de tiempo compartido. BASIC estaba intencionado para facilitar los problemas de
complejidad
c de los lenguajes anteriores, con un nuevo lenguaje diseñado específicamente para la
clase de usuarios que los sistemas de tiempo compartido permitían: un usuario más sencillo, a
c
quien no le interesaba tanto la velocidad, sino el hecho de ser capaz de usar la máquina. Los
c
diseñadores del lenguaje también querían que permaneciera en el dominio público, lo que
c
contribuyó a que se diseminara.
c
Losc ocho principios de diseño de BASIC fueron:
c
c 1. Ser fácil de usar para los principiantes.
c 2. Ser un lenguaje de propósito general.
3. Permitir que los expertos añadieran características avanzadas, mientras que el lenguaje
c permanecía simple para los principiantes.
c 4. Ser interactivo.
5. Proveer mensajes de error claros y amigables.
6. Responder rápido a los programas pequeños.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
c 7. No requerir un conocimiento del hardware de la computadora.
c 8. Proteger al usuario del sistema operativo.
c
Ñl lenguaje fue en parte basado en FRTRA ëë y en parte en Alol 60, con adiciones para hacerlo
c
apropiado para tiempo compartido y aritmética de matrices, BASIC fue implementado por primera
vezc en la mai frame Ñ-265, que soportaba múltiples terminales. Contrario a la creencia popular,
erac un lenguaje compilado al momento de su introducción. Casi inmediatamente después de su
lanzamiento,
c los profesionales de computación comenzaron a alegar que BASIC era muy lento y
simple.
c Tal argumento es un tema recurrente en la industria de las computadoras.
c
Aun así, BASIC se expandió hacia muchas máquinas, y se popularizó moderadamente en las
c
minicomputadores como la serie 3ÑC P3P y la 3aa e eral ova. Ñn estos casos, el lenguaje
erac implementado como un intérprete, en vez de un compilador, o alternativamente, de ambas
c
formas.
c
- 4À1À3
c Crecimie o Ñxplosivo
c
Sinc embargo, fue con la introducción de la Microcompador Alair 8800 en 1975 que BASIC se
diseminó ampliamente. La mayoría de lenguajes de programación eran demasiado grandes para
c en la pequeña memoria que la mayoría de usuarios podía pagar para sus máquinas, y con el
caber
c almacenamiento que era la cinta de papel, y más tarde la cinta de audiocasete (los discos
lento
c
magnéticos aún no existían), y la falta de editores de texto adecuados, un lenguaje pequeño como
BASIC
c era una buena opción. Uno de los primeros en aparecer fue Ti y BAëC, una
implementación
c simple de BASIC escrita originalmente por el 3rÀ Gi-Che Wa , y portada más
tarde a la Alair por 3e is Alliso , a petición de Bob Albrech (quien después fundó el 0c
c
0c 9 ). Ñl diseño de Tiny BASIC y el código fuente completo fue publicado en 1976 en
c
DDJ.
c
Ñnc 1975 Dicrosoft (entonces constaba de dos personas: Bill aes y Pal Alle ) lanzó Altair
BASIC.
c Luego comenzaron a aparecer bajo licencia versiones para otras plataformas, y millones de
copias
c y variantes pronto estarían en uso. Se convirtió en uno de los lenguajes estándar en la Apple
II. Para 1979 Dicrosoft estaba negociando con varios vendedores de microcomputadores,
c
incluyendo a IBD, para licenciar un intérprete de BASIC para sus computadores. Una versión se
c
incluyó en los chips ROD de las PCs IBD, para PCs sin discos, y en las que disponían de unidad
dec diskettes el BASIC era iniciado automáticamente si es que no se colocaba ningún diskette de
c
arranque de sistema operativo.
c
Dientras
c que las nuevas compañías intentaban seguir los pasos del éxito de Altair, IDSAI, North
Star, y Apple, creando la revolución de la computadora casera. BASIC se convirtió en una
c
característica estándar para casi todas las computadoras caseras; la mayoría venía con un
c
intérprete de BASIC en ROD (algo hecho por primera vez por la Commodore PÑT en 1977). Pronto
c muchos millones de computadores corriendo BASIC alrededor del mundo, un número mucho
había
másc grande que el de todos los usuarios de otros lenguajes juntos. Duchos programas,
especialmente
c los de la Apple II e IBD PC, dependían de la presencia del intérprete de BASIC de
Dicrosoft y no correrían sin éste; por lo que Dicrosoft usó la licencia de copyright en los intérpretes
c
de BASIC para influir en las negociaciones con los vendedores de computadores.
c
Ñl cBASIC fue también el lenguaje prefijado en los computadores caseros europeos de la década de
losc 80 como el Z pecrm, M o el Commodore 64, haciendo muchas veces la función de
c
intérprete y sistema operativo primitivo ya que venían implementados en ROD.
c
- 4À1À4
c Perfeccio amie o
Ñn este período se crearon versiones de BASIC nuevas y más poderosas. Dicrosoft vendió varias

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
versiones
c de BASIC para M-3/PC-3, incluyendo BAëCA, W-BAëC (una versión
compatible con BASICA que no necesitaba la ROD de IBD), y Qick BAëC. Ñl fabricante de
c
Trbo Pascal, Borla d, publicó Trbo BAëC 1.0 en 1985 (versiones sucesoras aún se venden
c el nombre de PowerBAëC por otra compañía). Aparecieron varias extensiones de BASIC
bajo
c computadores caseras, típicamente con gráficos, sonido, y comandos DOS, así como
para
c
facilidades para Programación estructurada. Otros lenguajes usan la sintaxis de BASIC como base
para
c otros sistemas totalmente diferentes, como por ejemplo GRASS.
c
Sinc embargo a finales de la década de 1980 las computadoras nuevas eran mucho más complejas,
e incluían características (como la Interfaz gráfica de usuario) que hacían a BASIC menos
c
apropiado para programarlas. Al mismo tiempo las computadoras progresaban de ser un interés
c aficionados a herramientas usadas principalmente para ejecutar aplicaciones escritas por
para
c y la programación en sí se fue haciendo menos importante para la creciente mayoría de
otros,
usuarios.
c BASIC comenzó a desvanecerse, aunque numerosas versiones aún estaban disponibles.
c
Lac suerte de BASIC dio un giro nuevamente con la introducción de Visal Basic de Dicrosoft.
Aunque es algo difícil considerar este lenguaje como BASIC (a pesar de que usa muchas palabras
c conocidas de BASIC) se ha convertido en uno de los lenguajes más usados en la plataforma
clave
c
Windows, y se dice que representa del 70 al 80% del desarrollo comercial de aplicaciones. Visal
c for Applicaio s (VBA) fue añadido a Microsof Ñxcel 5À0 en 1993 y al resto de la línea de
Basic
productos
c de Dicrosoft Office en 1997. Windows 98 incluyó un intérprete de VBcrip. La versión
másc reciente de Visual Basic es llamada VBÀÑT. La suite pe fficeÀor incluye una variante de
BASIC menos poderosa que su contraparte de Dicrosoft.
c
c
4À1c Co cepos básicos
c c
c
Todos los lenguajes de programación están compuestos por una serie de objetos que hacen
posible
c su funcionamiento entre los cuales tenemos: variables, constantes, tipos de datos,
sentencias,
c expresiones, funciones y estructuras. Sin estos los lenguajes de programación serían
totalmente inservibles.
c
c ëde ificadores
- 4À2À1
c
Losc identificadores representan una expresión que hace referencia a una variable o una constantes.
Unc identificador es una secuencia de caracteres que puede tener una longitud máxima de 255
c
caracteres.
c
Un identificador se caracteriza por estas reglas:
c
c 1. Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no puede contener
c blancos.
c
c 2. Letras, dígitos y caracteres subrayados ( ) están permitidos después del primer carácter.
c 3. No se puede utilizar una palabra reservada como identificador.
c
c 4. Ñl @ Arroba es valido después del último carácter y representa un tipo de datos.
c
c 5. Ñl & Ampersa d es valido después del último carácter y representa un tipo de datos.
c
A continuación, se muestra una lista de identificadores validos:
c
ó Nombre

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
c ó Area Rectangulo
c
ó Lado1
c
c ó Impuesto Sobre La Renta
c
c ó ImpuestoTotales
c
c son identificadores no validos:
Ñstos
c
c ó Area&Rectangulo : Tiene un & Ampersand antes del último carácter. Ñs valido
c solo al final.
c
ó Lado 1 : Tiene un espacio.
c
c ó Impuesto@Renta : Tiene un @ Arroba antes del último carácter. Ñs valido
c solo al final.
c
ó For : Ñs una palabra clave del lenguaje Basic.
c
c
c ó 5Nombre : Tiene un número al inicio. Ñs valido después del primer
c carácter.
c
- 4À2À2 Palabras reservadas
c
Lasc palabras reservadas del lenguaje Basic no se pueden utilizar como identificadores, ya que
c significado especial en Visual Basic y no se utilizan para otros propósitos.
tienen
c
A continuación,
c se muestra una lista con las palabras reservadas del lenguaje Basic:
c
Abs Add And App
c
Activate Array Ascatn Base
c
Beep Cbool Cbyte Ccur
c
Cdate Cdbl Cdec Cint
Clng
c Csng Cstr Cvar
Cverr Call Case Cdh
c
Choose Chdir Chdrive Clear
c
Close Collection Command Compare
c
Const Cos CreateObject Curdir
c
Dateserial Datevalue Day Ddb
Defftype
c Dim Deletesetting Dir
Do Doevents Ñach Ñnd
c
Ñnviron Ñof Ñqv Ñrase
Ñrrc Ñrror Ñxit Ñxp
c
Ñxplicit Fileattr Filecopy Filedatetime
c
Filelen Fix For Format
Freefile
c Function Fv Get
Getattr GetObject Getsetting Getallsetting
c
Gosub Goto Hex Hour
Impc Input Instr Int
c
Integer Ipmt Irr Is
c
Isarray Isdate Isempty Iserror
Ismissing Isnull Isnumeric Isobject
Item Kill Lbound Lcase

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
Left
c Let Like Loc
Lock Lof Log Loop
c
Lset Ltrim De Did
c
Dinute Dirr Dkdir Dod
c
Donth Name New Next
Notc Nper Npv Oct
Onc Onerror Open Or
Option Print Ppmt Print#
c
Private Property Public Put
Pvc Qbcolor Raise Randomize
c
Rate Redim Remove Reset
c
Resume Return Rgb Right
Rmdir
c Rnd Rset Rtrim
Savesettings Second Selectcase Seek
c
Shell SendKeys Setattr Sgn
Sinc Single Sln Space
Spcc Sqr Static Stop
Strc Strcomp Strconv String
Subc Syd Switch Tab
Tan Timer TimeSerial TimeValue
c
Trim Typename Ubound Ucase
c
Unlock Val Vartype Weekday
c
Wend While Width Write#
Xorc Yeqr #if #else
c
c
- 4À2À3 Tipos de daos
c
Losc tipos de datos son los distintos objetos de información con los que trabaja una aplicación en
c
Visual Basic. Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple
carácter
c como un ³B´, una cadena de caracteres como ³La casa de pedro´, un valor entero como
242, un número real como 3.1415 o un valor lógico como True o False.
c
c
- 4À2À3À1 Clasificació de los ipos de daos
c
Sec dijo anteriormente, que cada tipo de información tiene un tipo de datos asociados. Cualquier
c de datos estará definido dentro de la siguiente clasificación: ipos e eros (Bye, ë eer,
tipo
Go ), ipos reales (i le, 3oble, Crre cy), ipos cade a (ri ), ipos lóicos (Boolea ),
c
ipos fecha (3ae) y ipos variados (Varia ). Al seleccionar un tipo de datos adecuado para las
c
variables de su programa ahorraría mucho espacio en la memoria del computador donde se ejecute
la caplicación y como resultado esta trabajaría mucho más rápido. Ñl tipo datos a seleccionar va a
c
depender del tipo de información que usted valla a almacenar en una variable. A continuación, se
muestran
c todos los tipos de datos disponibles en Visual Basic y el tipo de información que cada uno
de ellos pueden almacenar, así como los valores máximos y mínimos que estos soportan.
c
c
- 4À2À3À1À1 Tipos e eros (Bye, ë eer, Go )
c
c
Visual Basic tiene tres tipos de datos predefinidos para representar los números enteros: Bye,
ë eer
c y Go À
c
ó Bye: Las variables de tipo Byte se almacenan como números de 8 bits (1 byte). No pueden tener
c
signos y debe estar dentro de los valores 0 y 225. Ñl tipo de datos Byte es útil para almacenar datos
c
binarios.
c
ó ë eer: Las variables de tipo Integer se almacenan como número de 16 bits (2 bytes). Pueden

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
tener
c signos negativo o positivo dentro del intervalo m32.768 a 32.767. Ñsto quiere decir, que el
mayor número negativo que puede almacenar es m32.768 y el mayor número positivo es 32,767. Ñl
c
carácter de declaración de tipo para el tipo ë eer es el signo de porcentaje (%).
c
Lasc variables tipo ë eer también se pueden utilizar para representar valores enumerados. Un
c enumerado puede contener un conjunto finito de números enteros únicos, cada uno de los
valor
cuales
c tiene un significado especial en el contexto en el que se utiliza. Los valores enumerados
proporcionan una forma cómoda de seleccionar entre un número conocido de opciones. Por
c
ejemplo, cuando se pregunta al usuario que elija un color de una lista, se podría tener 0 = negro, 1
c
= blanco y así sucesivamente. Ñs una buena práctica de programación definir constantes utilizando
c
la instrucción Co s para cada valor enumerado.
c
c : Las variables Go  (enteros largos) se almacenan como números con signo de 32 bits (4
ó Go
bytes) con un valor comprendido entre m2.147.483.648 y 2.147.483.647. Ñl carácter de declaración
c
de tipo para Go  es el Ampersand (&).
c
c
- 4À2À3À1À2 Tipos reales (i le, 3oble, Crre cy)
c
Visual
c Basic también posee tres tipos de datos para representar los números reales: i le,
3oble y Crre cyÀ
c
c le: Las variables Single (punto flotante de precisión simple) se almacenan como números
ó i
c de coma flotante de 32 bits (4 bytes) con valores que van de m3,402823Ñ38 a m1,401298Ñm45
IÑÑÑ
c valores negativos y de 1,401298Ñm45 a 3,402823Ñ38 para valores positivos. Ñl carácter de
para
declaración
c de tipo para Single es el signo de exclamación (!).
c
ó 3oble: Las variables Double (punto flotante de doble precisión) se almacenan como números
c de coma flotante de 64 bits (8 bytes) con valores de m1,79769313486232Ñ308 a m
IÑÑÑ
c
4,94065645841247Ñm324 para valores negativos y de 4,94065645841247Ñm324 a
c
1,79769313486232Ñ308 para valores positivos. Ñl carácter de declaración de tipo para 3oble es
el csigno de número (#).
c
ó Crre cy: Las variables tipo Currency se almacenan como números de 64 bits (8 bytes) en un
c
formato de número entero a escala de 10,000 para dar un número de punto fijo con 15 dígitos a la
c
izquierda del signo decimal y 4 dígitos a la derecha. Ñsta representación proporciona un intervalo
dec m922.337.203.685.477,5808 a 922.337.203.685.477,5807. Ñl carácter de declaración de tipo para
Currency
c es el signo arroba @.
c
Ñl tipo de datos Currency es útil para cálculos monetarios y para cálculos de punto fijo, en los
c
cuales la precisión es especialmente importante.
c
c
- 4À2À3À1À3 Tipos cade a (ri )
c
Hayc dos clases de cadenas: cadenas de longitud variable y cadenas de longitud fija.
c
c à Las cadenas de longitud variable pueden contener hasta 2,000 millones de caracteres
(2^31).
c
c à Las cadenas de longitud fija que pueden contener de 1 a 64 KB (2^16) caracteres.
c
c No se puede usar una cadena Pblic de longitud fija en un P cc .
oa:
c
Losc códigos para caracteres de tipo ri  varían desde 0 a 255. Los primeros 128 caracteres (0±
127) del juego de caracteres corresponden a las letras y los símbolos de un teclado estándar de
ÑÑ.UU. Ñstos primeros 128 caracteres son los mismos que los definidos por el juego de caracteres

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
ACëë.
c Los siguientes 128 caracteres (128±255) representan caracteres especiales, como letras de
alfabetos internacionales, acentos, símbolos de moneda y fracciones. Ñl carácter de declaración de
c
tipo para ri  es el signo de dólar ($).
c
c
- 4À2À3À1À4 Tipos lóicos (Boolea )
c
Lasc variables tipo Boolea se almacenan como números de 16 bits (2 bytes), pero sólo pueden ser
Tre
c o False. Las variables tipo Boolea se presentan como True o False(cuando se utiliza Pri )
o #TRUÑ# o #FALSÑ# (cuando se utiliza Wrie #). Utilice las   c  Tre y False para
c
asignar uno de los dos estados a las variables tipo Boolea .
c
c
Cuando se convierten a tipo Boolea otros  cP  , 0 se convierte en False, y el resto de
losc valores se convierten en Tre. Cuando los valores tipo Boolea se convierten a c cc
 c numéricos, False se convierta en 0 y Tre se convierte en m1.
c
- 4À2À3À1À5
c Tipos variados (Varia )
c
Una variable Varia  es capaz de almacenar todos los tipos de datos definidos en el sistema. No
c que convertir entre esos tipos de datos si los asigna a una variable Varia ; Visal Basic
tiene
c
realiza automáticamente cualquier conversión necesaria.
c
- 4À2À4
c Co sa es
c
A menudo verá que el código contiene     que reaparecen una y otra vez. O puede
quec el código dependa de ciertos números que resulten difíciles de recordar (números que, por sí
c
mismos, no tienen un significado obvio).
c
Ñnc estos casos, puede mejorar mucho la legibilidad del código y facilitar su mantenimiento si utiliza
constantes.
c Una   es un nombre significativo que sustituye a un número o una cadena que
no varía. Aunque una   recuerda ligeramente a una variable, no puede modificar una
c
constante o asignarle un valor nuevo como ocurre con una variable. Hay dos orígenes para las
c :

c
(
c c  cc   cc c P a proporcionadas por aplicaciones y controles. Las
constantes
c de Visual Basic se muestran en Visal Basic (VB) y Visal Basic para aplicaciones
(VBA) y las bibliotecas de objetos en el Ñxaminador de objetos. Otras aplicaciones que
c
proporcionan bibliotecas de objetos, como Dicrosoft Ñxcel y Dicrosoft Project, también
c
proporcionan una lista de constantes que puede usar con sus objetos, métodos y propiedades.
c
También se definen constantes en la biblioteca de objetos de cada control Acive . Para obtener
másc detalles acerca de la utilización del Ñxaminador de objetos, vea "Programar con objetos".
c
, c  c  P c c    c c  c   ac se declaran mediante la instrucción Co s.
Lasc constantes definidas por el usuario se describen en la próxima sección, "Crear sus propias
c
constantes".
c
Ñnc Visual Basic, los nombres de   tienen un formato que combina mayúsculas y
minúsculas,
c con un prefijo que indica la biblioteca de objetos que define la constante. Las
 cde las bibliotecas de objetos de Visal Basic y Visal Basic para aplicaciones tienen el
c "vb"; por ejemplo, vbTileHorizo al.
prefijo
c
c
- 4À2À4À1 3eclaració de co sa es
c
Lac sintaxis para declarar una constante es la siguiente:

ÈPblic | Privae] Co s NombreConstante ÈAs Tipo] = Ñxpresión

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
Ñl cargumentocombreCo sa e es un nombre simbólico valido (Las reglas son las mismas que
para crear variables), y Ñxpresió está compuesta por constantes y operadores de cadena o
c
números. Sin embargo, no puede usar llamadas a funciones en expresión.
c
Lac declaración de una constante puede ser de distintos tipos: Pblica (dentro de un módulo),
c
Privada (en el área de declaraciones general de un formulario) o Gocal (dentro de un
procedimiento).
c
c
- 4À2À4À2 3eclaració de co sa es pblicas
c
c
Declarar una  c  significa que esa constante podrá ser utilizada desde cualquier
c
procedimiento, formulario o módulo que contenga la aplicación. Para declarar una constante pública
siga
c los siguientes pasos:
c
Para declara una constante pública siga los siguientes pasos:
c
c 1. Inserte un modulo desde el menú Projec/Add Modle.
c
c 2. Dentro de ese modulo escriba la instrucción Pblic seguida de la instrucción Co s y, a
continuación, el Pcc c   con su  c  .
c
c 3. Por último, ponga el valor que tendrá la constante después del signo de igual.
c
c
Ñjemplo:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Después de hacer esta declaración puede usar la constante Pë para hacer cualquier cálculo
matemático
c dentro de cualquier procedimiento (un botón de comando, una caja de lista, un
formulario, etc.) sin la necesidad de hacer referencia al módulo que la contiene.
c
c probar esto hagamos una aplicación que nos permita calcular el volumen de un cilindro. Ñl
Para
c
volumen de un cilindro se calcula mediante la siguiente formular: V = PI * Radio * Radio * Altura. Ñl
c y la altura deberán ser introducidas por el usuario mediante cajas de texto. Ñl programa
radio
mostrará
c el volumen calculado en otra caja de texto.
c
ó Ñn el mismo proyecto que creo la constante inserte tres etiquetas y al lado de cada etiqueta una
c de texto. Ñn la parte inferior derecha del formulario inserte dos botones de comando, uno para
caja
Calcular el volumen y el otro para salir de la aplicación, tal y como se muestra en la figura de la
siguiente página:
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Aplique los siguientes valores en las propiedades indicada de los controles que se muestran en la
c
siguiente tabla:
c
c
u  
c c u  ccc  c
c c
cc !  c
c u   cc ;c
c
cc  'c
c * c
c
c2c !  c
c u   cc ;c
c
2c    c
c *
c
c&c !  c
c u ';c
c c
c&c  'c
$%  c
c * c
c
c
 c    c
c u   c
c
c
u $ c  c
 c  c
c c
c
c
ó Hagamos que las dos primeras cajas solo admitan números. Dentro del evento KeyPress de las
dosc primeras cajas de texto escriba:
c
µHace
c que la caja de texto solo acepte números.
If Not
c (KeyAscii >= 48 And KeyAscii ®= 57 Or KeyAscii = 8) Then
KeyAscii = 0
Ñnd If

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
ó Haga
c doble clic sobre el primer botón de comando y dentro del evento Click escriba:
c
µVerificamos que se introduzca el radio.
Ifc Len(Trim(txtRadio.Text)) = 0 Then
c DsgBox ("Debe introducir el radio.")
txtRadio.SetFocus ' Hace que la caja del radio reciba el enfoque.
c
c
µVerificamos que se introduzca la altura.
c
ÑlseIf Len(Trim(txtAltura.Text)) = 0 Then
c DsgBox ("Debe introducir la altura.")
c txtAltura.SetFocus ' Hace que la caja de la altura reciba el enfoque.
c
µSi todo esta bien calculamos el volumen.
c
Ñlse
c
c Dim Radio As Double ' Definimos la variable para el radio.
c Dim Altura As Double µDefinimos la variable para la altura.
Dim Resultado As Double 'Definimos la variable para el resultado.
c
c µAlmacenamos el valor de la caja del Radio en la variable Radio.
c Radio = CDbl(txtRadio.Text)
c
c µAlmacenamos el valor de la caja de la altura en la variable altura.
Altura = CDbl(txtAltura.Text)
c
c µCalculamos el volumen del cilindro.
c Resultado = PI * Radio * Radio * Altura
c
c µDostramos el resultado en la caja del resultado.
txtResultado.Text = Resultado
c
c If
Ñnd
c
ó Ñnc el evento Click del segundo botón de comando escriba:
c
µSale de la aplicación.
c
Ñnd
c
c
ó Corra la aplicación.
c
ó Ñscriba
c un valor en la caja del radio y un valor en la caja de la altura. Después, haga clic en el
botón Calcular. Podrá observar que el programa le muestra el resultado, es decir, el volumen del
c
cilindro.
c
Loc importante en esta aplicación es la utilización de la constante Pë que declaramos en el modulo.
Si c observa en la formula que utilizamos dentro del botón de comando podrá observar que
especificamos
c el nombre de la constante en vez de especificar el valor que esta contiene aunque la
formula interpreta el nombre de la constante PI por el valor 3.141592. Tenga en cuenta que podrá
c
utilizar esta constante cuantas veces desee dentro de la misma aplicación.
c
c
ó Detenga la aplicación y guarde el ejercicio con los nombres ModloÑjercicio1-4 para el módulo,
FormÑjercicio1-4
c para el formulariocy Ñjercicio1-4 para el proyecto.
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció al Ge aje Basicc


Capílo 4
c c
- 4À2À4À3
c 3eclaració de co sa es privadas
c
Declarar una      significa que esa   puede ser usada dentro de todos los
c
procedimientos de un mismo formulario o dentro del formulario donde se declara la   Para
c
declarar una  c   siga los siguientes pasos:
c
a) cHaga doble clic sobre cualquier parte del formulario y en la sección ( e eral) del formulario
escriba la instrucción Co s seguida del nombre de la constante, su tipo asociado y su valor. Tenga
c
mucho cuidado de no declarar la constante dentro del evento Goad del formulario.c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
La zona encerrada en el círculo es donde debe de declarar la variable privada. Ñsta es la sección
c
general de un formulario. Todas las variables y constantes que se declaren en esta zona serán de
c privada.
índole
c
b) cAl hacer esto puede utilizar la constante PI desde cualquiera de los procedimientos dentro de ese
formulario,
c es decir, puede agregar un botón de comando, una caja de lista, una etiqueta, en fin,
cualquier control en general y hacer referencia a esta constante solo por su nombre desde
c
cualquiera de los eventos de dicho control. Por ejemplo, agregue un botón de comando al
c
formulario y dentro del evento Click escriba:
c
c
DsgBox (PI * 3) µDultiplica el valor del PI por tres y muestra el resultado en la pantalla.
c
c
- 4À2À4À4 3eclaració de co sa es locales
c
c
Declarar una  c  significa que esa   solo puede ser usada dentro del
procedimiento
c donde se declara. Para declarar una  c  escriba la instrucción Co s
seguida del nombre de la constantec su tipo asociado y su valor dentro de un procedimiento o
evento.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
c
Ñjemplo:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
- 4À2À5
c Variables
c
Ñn Visual Basic lasc    se utilizan para almacenar temporalmente valores durante la ejecución
dec la aplicación. Las variables tienen un nombre que nos permite acceder al valor que tiene la
c
variable y un tipo de dato asociado que nos permite determinar la clase de datos que la variable
c
puede almacenar. Una variable se puede definir también como un marcador de posición en la
memoria
c del computador donde se almacena un valor desconocido. Por ejemplo, si ha creado un
programa para gestionar las ventas de computadoras de una empresa y usted no sabe el precio de
c
las computadoras ni la cantidad de computadora a vender, puede utilizar dos variables para
c
almacenar los valores desconocidos, vamos a llamarles a esas variables  (P  y
( c  (P . Cada vez que se ejecute el programa, el usuario deberá especificar los
c
valores para estas dos variables posiblemente mediante dos cajas de texto. Para calcular el total de
la venta
c y mostrarlo en una caja de texto llamada 
 , el código debería parecerse al siguiente.
c
µAlmacena el precio de la computadora en la variable PrecioComputadora contenido en la caja.
c
PrecioComputadora = CDbl(txtPrecioComputadora.Text)
c
c
µAlmacena la cantidad de computadora a comprar en la variable PrecioComputadora contenida en
µla ccaja.
CantidadComputador = CInt(txtCantidadComputadora.Text)
c
c
µCalcula el precio total y almacena el resultado en la caja txtTotal.
c
txtTotal.Text = PrecioComputadora * CantidadComputadora
c
Lac expresión devuelve un total distinto cada vez, dependiendo de los valores que indique el usuario.
Las     le permiten realizar un cálculo sin tener que saber antes cuáles son los valores
c
especificados.
c
c
- 4À2À5À1 3eclaració de  a variable
c
Declarar
c una variable consiste en indicarle de antemano al programa el lugar donde se
almacenaran los datos desconocidos. Al declarar una variable se debe especificar    c c
c
 cc c   c cPcc c cc c  c c  c   
c
c de declarar una variable debe de conocer los distintos tipos de   c c   de una
Antes
c
variable. Ñl   cc   le va a permitir conocer las distintas zonas desde donde podrá utilizar
las variables. Ñxisten tres tipos de   c c   que son:  c   c c  . Ñn los
siguientes temas tratamos cada uno de estos y su forma de establecerlo en una variable.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
- 4À2À5À1À1
c 3eclaració de  a variable pblica
c
Al igual que las constantes públicas una    c podrá ser utilizada desde cualquier parte
dec la aplicación. Ñstas se declaran a nivel de módulos mediante el identificador Pblic. Una
c
variable pública es declarada mediante el siguiente formato:
c
Pblic
c P%    As  %% 
c
Donde:
c
c  c c : Indica que la variable es de nivel público.
c
c P%   : Ñs un identificador valido para Visual Basic. Ñste es el nombre que le
permitirá acceder a los valores desconocidos.
c
c .c c c: Palabra clave para indicar el tipo de datos.
c
c  %%  : Indica el tipo de datos que podrá almacenar las variables.
c Ñste corresponde a la clasificación de los tipos de datos.
c
Tiene que tener en cuenta que no todas las variables pueden ser de tipo pública por el simple echo
dec que sea posible hacerlo. Ñl   cc   de la variable va a depender del uso que le va a dar
c variable. Las variables públicas son utilizadas principalmente para almacenar valores que serán
a la
c
utilizados en la aplicación a nivel general. Por ejemplo, si crea una aplicación que va a requerir el
usoc de la impresora y desea informar al usuario cuando esta no se encuentre disponible en el
computador cada vez que el programa requiera su uso. Podrá verificar al iniciar la aplicación, si el
c
computador dispone de una impresora y almacenar un valor en una variable pública que luego va a
c para comprobar o consultar si el computador tiene o no una impresora disponible.
servir
c
c
- 4À2À5À1À2 3eclaració de  a variable privada
c
Sonc variables que pueden ser utilizadas dentro de un mismo módulo o formulario. Ñl alcance de
este tipo de variable será de nivel general dentro de un mismo modulo o formulario. Se declaran a
c de módulos o en la  c  de un formulario mediante el identificador 3im. Ñstas
nivel
c
variables son muy utilizadas pero debe de controlar su uso. Tiene que tener en cuenta, que si
c
declara una variable de   c   no podrá declarar la misma variable de   c  o  en
la cmisma aplicación. De esta misma forma, si declara una    c  no podrá declara la
misma variable a   c    o  . Una variable de   c    se declara bajo el siguiente
c
formato:
c
c
DimcP%    As  %% 
c c
c
Ñjemplos:
c
Dim TotalVentasDelDia As Integer
Dimc FacturasImpresa As Integer
c
c
- 4À2À5À1À3 3eclaració de  a variable local
c
Sin lugar a dudas, es el nivel de alcance más utilizado y recomendado para una variable. Ñstas
c
    se declaran en un procedimiento o evento mediante la instrucción 3im y sólo existen
c
mientras se ejecuta el procedimiento. Cuando termina el procedimiento, desaparece el valor de la
c
variable. Además, el valor de una variable de un procedimiento es local de dicho procedimiento; es
c no puede tener acceso a una variable de un procedimiento desde otro procedimiento. Ñstas
decir,
características le permiten usar los mismos nombres de     en distintos procedimientos sin
preocuparse por posibles conflictos o modificaciones accidentales.c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
- 4À2À5À2
c ombre descripivos de las variables
c
No existe un modelo a seguir para establecer o asignar un nombre adecuado a una variable, esto
vac a depender de su criterio como programador. Pero por experiencia considere algunos consejos
quec lees doy como programador antes de definir una variable: 1) No utilice nombres muy largos
c las variables, 2) Utilice nombres que describan de forma muy reducida la función de la
para
variable,
c 3) No utilice variables incoherentes en procesos de cálculos matemáticos exactos, 4)
Utilice variables incoherentes para procesos de calculo aleatorios. Ñvitará muchos problemas
c
futuros si considera los consejos anteriores. Debe de tener en cuenta que una variable esta
c
sometida a las reglas de los identificadores en Visual Basic.
c
c
- 4À2À5À3 Almace ar y recperar daos e variables
c
Para almacenar un valor en una variable utilice el signo de igualdad ³=´, que es considerado
c
también como operador de asignación.
c
. Pc  c cc c   ac
c
1) cDanzanasVendidas = 10 ' Se pasa el valor 10 a la variable.
c
2) DanzanasVendidas = DanzanasVendidas + 1 ' Se incrementa la variable.
c
3) cCantidadComprar = Cint(txtCantidadComprar.Text) µ Se almacena el valor contenido en la caja.
c
c
,c c cc c   ac
c
c leer los datos de una variable especifique primero el lugar donde se almacenará los valores
Para
quec contiene la variable, tal y como se muestra en los siguientes ejemplos:
c
1) cDsgBox(DanzanasVendidas) µ Duestra el valor de la variable en una caja de mensaje.
c
2) txtDazanasVendias.Text = DazanasVendias µPone el valor de la variable en la caja de texto.
c
3) ctxtCantidadComprar.Text = CantidadComprar µPone el valor de la variable en la caja de texto.
c
c
- 4À2À5À4 peracio es arim
icas co variables
c
Lasc operaciones aritméticas se realizan a través de una expresión o formula matemática. Las
c
formulas matemáticas están compuesta por un conjunto de variables, escritas mediante operadores
dec igualdad y los operadores matemáticos.
c
Toda
c expresión o formula matemática en todas las áreas del saber son representadas mediante
símbolos o variables que luego son sustituidas por valores reales proporcionados por el usuario. De
c misma manera se realizan las operaciones aritméticas con variables en Visual Basic. Ñl
esta
c
usuario deberá sustituir los valores de cada variable por valores reales utilizando la operación de
c
asignación.
c
Por ejemplo:
c
Si custed requiere diseña un programa que permita calcular el sueldo bruto de un empleado a partir
dec las horas trabajadas y el precio por hora, sabiendo que el sueldo bruto es obtenido multiplicando
lasc horas trabajadas por el precio por hora. Deberá expresarlo con una formula similar a la
siguiente: SueldoBruto = HorasTrabajadas * PrecioPorHoras, o más resumido, SB = HT * PH.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
Para
c resolver este problema deberá definir tres variables y permitir al usuario introducir los valores
desconocidos, que en este caso son las horas trabajadas y el precio por hora. Podrá utilizar cajas
c
de texto para asignar en las variables los valores proporcionados por el usuario.
c
c crear la aplicación anterior siga los siguientes pasos:
Para
c
ó Abra
c un nuevo proyecto.
c
ó Inserte tres etiquetas, tres cajas de texto y dos botones de comando, tal y como se muestra en la
c
siguiente figura:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Aplique los siguientes valores en las propiedades indicada de los controles que se muestran en la
siguiente
c tabla:
c
u  
c
c !  c
c u  c ;c
c c
c
2c !  c
c u   c  c ;c
c c
&c
c !  c
u c ;c
c
cc    c
c c *
c2c     c
c c $%  c
c * c
c&c   c
c *
c
c
 c    c
c u   c
c
c
 2c   c
c u  c
c c
  c c c
c
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
ó Dentro
c del evento KeyPress de las dos primeras cajas de texto escriba el siguiente bloque de
código para que solo admitan números:
c
c
µHace que la caja de texto solo acepte números.
c (KeyAscii >= 48 And KeyAscii ®= 57 Or KeyAscii = 8) Then
If Not
c
KeyAscii =0
Ñndc If
c
c
ó Haga doble clic sobre el botón Calcular y dentro del evento Click escriba:
c
c
'Verificamos que las cajas no se dejen vacías.
If Len(Trim(txtHorasTrabajadas.Text))
c = 0 Then
DsgBox ("Introduzca las horas trabajadas.")
c
txtHorasTrabajadas.SetFocus
c Len(Trim(txtPrecioHora.Text)) = 0 Then
ÑlseIf
c
DsgBox ("Introduzca el precio por hora.")
c
txtPrecioHora.SetFocus
c
Ñlse
c
Dim horas trabajadas As Integer ' Variable para almacenar las horas trabajadas.
Dimc precio horas As Currency 'Variable para almacenar el precio por horas.
Dimc sueldo bruto As Currency 'Variable para almacenar el sueldo bruto.
c
horas
c trabajadas = CInt(txtHorasTrabajadas.Text) ' Almacena las horas escrita en la caja en la
µvariable.
c
c
precio horas = CCur(txtPrecioHora.Text) 'Almacena el precio por hora escrita en la caja en la
c µvariable.
c
sueldo
c bruto = horas trabajadas * precio horas 'Calcula el sueldo bruto.
txtSueldoBruto.Text = FormatCurrency(CDbl(sueldo bruto)) ' Ñscribe el sueldo bruto en la caja.
c
Ñndc If
c
c
ó Dentro
c del evento Click del botón salir.
c de la aplicación.
µSale
Ñndc
c
c
ó Corra la aplicación.
c
ó Introduzca un valor en la caja horas trabajadas y un valor en la caja precio por hora.
c
ó Haga clic en el botón calcular y podrá ver los resultados.
c
c
Ñxplicació del códio:
c
Ñnc esta aplicación anterior, cabe destacar la forma en que almacenamos en las variables los
valores contenidos en las cajas de texto. Para las dos primeras cajas de texto hemos declarado una
c
variable independiente. Ñn estas variables se almacenan los valores introducidos por el teclado, en
c
nuestro caso, las horas trabajadas y el precio por hora. Cuando asignamos estos valores en las
c
variables mediante el operador de asignación ³=´, procedemos a calcular el sueldo bruto mediante
la cformula sueldo bruto = horas trabajadas * precio horas. Cuando obtenemos el resultado, lo
mostramos en la tercera caja de texto, que es la caja destinada para escribir el sueldo bruto
calculado.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
ó Detenga
c la aplicación y guarde el ejercicio con los nombres FormÑjercicio2-4 para el formulariocy
Ñjercicio2-4 para el proyecto.
c
c
- 4À2À5À5 Ñjercicios propesos
c
1) cSe requiere calcular el área de un triángulo:  /ÿ 0%12cla base y la altura deben
serc introducidas mediante cajas de texto. Ñl programa debe mostrar el área del triángulo en una
caja de texto.
c
2) cSe requiere calcular el volumen de una esfera:  /3140 ë000c
c c
c  Ö  c c"
3) cSe requiere evaluar la siguiente formula: X1 = (es la solución positiva de una
2
c
ecuación de segundo grado). Los datos deben ser proporcionados mediante cajas de texto.
c
c
4) cSe requiere calcular el área y el volumen de un cilindro: area = (2 * (Pë * radio*radio)) + ((2 * Pë *
radio)
c * h) y volme = (Pë * radio*radio) * h.
c
5) cSe requiere calcular las raíces de una ecuación de segundo grado: x1= (-b + raiz(b*b - (4 * a *
c))c / 2 * a y x2= (-b - raiz(b*b - (4 * a * c)) / 2 * a. Los datos deben ser proporcionados mediante
cajas
c de texto.
c
c peracio es de e rada y salida
- 4À2À6
c
c Basic proporciona dos herramientas rápidas y simples para permitir que el usuario introduzca
Visual
c y lo muestre en la pantalla. Ñstas dos herramientas son las funciones ë pBox y MsBox.
datos
c
- 4À2À6À1 F ció ë pBox
c
c
Duestra un mensaje en un cuadro de diálogo, espera que el usuario escriba un texto o haga clic en
unc botón y devuelve un tipo '  con el contenido del cuadro de texto.
c
Suc formato es:
c ë pBox(PÈ,   ßÈ,   ßÈ,
ßÈ, ßÈ,   , 
ß)
c
c
Donde:
c
c # Ñs una expresión de tipo cadena requerida por la función. Ñste parámetro
indica el mensaje que aparecerá en el cuadro de diálogo. La longitud
c máxima de ## es de aproximadamente 1024 caracteres, según el
c ancho de los caracteres utilizados. Si ## consta de más de una línea,
c puede separarlos utilizando un carácter de retorno de carro (Chr(13)), un
c carácter de avance de línea (Chr(10)) o una combinación de los caracteres
c de retorno de carromavance de línea (Chr(13) y Chr(10)) entre cada línea y
la siguiente.
c   Opcional. Ñxpresión de cadena que indica el texto que aparecerá en la
c barra de título del cuadro de diálogo. Si se omite ile, se muestra en la
c barra de título el nombre de la aplicación.
c  ) Opcional. Ñxpresión de cadena que se muestra en el cuadro de texto como
respuesta predeterminada cuando no se suministra una cadena. Si omite
 ), se muestra el cuadro de texto vacío.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
c
(#  Opcional. Ñxpresión numérica que especifica, en twips, la distancia en sentido
c horizontal entre el borde izquierdo del cuadro de diálogo y el borde izquierdo de la
pantalla. Si se omite (# , el cuadro de diálogo se centra horizontalmente.
c
c
#  Opcional. Ñxpresión numérica que especifica, en twips, la distancia en sentido vertical
c entre el borde superior del cuadro de diálogo y el borde superior de la pantalla. Si se
c omite # , el cuadro de diálogo se coloca a aproximadamente un tercio de la altura de
c la pantalla, desde el borde superior de la misma.
 #)  Opcional. Ñxpresión de cadena que identifica el archivo de Ayuda que se utilizará para
c proporcionar ayuda interactiva para el cuadro de diálogo. Si se especifica  #) ,
c también deberá especificarse   (.
c  ( Opcional. Ñxpresión numérica que es el número de contexto de Ayuda asignado por el
c autor al tema de Ayuda correspondiente. Si se especifica   (, también deberá
c especificarse  #) .
c
Ñjercicio:
c c
c un nuevo proyecto e inserte un botón de comando.
ó Abra
c c
ó Dentro
c del evento Click del botón de comando escriba:
c
µSe declaran las variables donde se almacenará el nombre y el apellido.
Dimc nombre As String
Dimc apellido As String
c
µPermite
c que el usuario introduzca su nombre y lo almacena en la variable nombre.
nombre = InputBox("Introduzca su nombre:", "Datos personales")
c
c
µPermite que el usuario introduzca su apellido y lo almacena en la variable apellido.
c
apellido = InputBox("Introduzca su apellido:", "Datos personales")
c
µDuestra
c en una caja de mensaje el nombre completo.
DsgBox ("Su nombre completo es: " & nombre & " " & apellido)
c
c
c
ó Corra la aplicación.
c
ó Aparecerá
c el siguiente cuadro de diálogo:
c
c
c
c
c
c
c
c
c
c
ó Ñscriba
c su nombre en la caja de texto y, a continuación, haga clic en el botón OK.
c
ó Aparecerá otro cuadro de diálogo similar solicitando su apellido. Ñscriba el apellido y haga clic en
el cbotón OK.

ó Aparecerá luego en una caja de mensaje su nombre y su apellido.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
ó Detenga
c la aplicación y guarde el ejercicio con los nombres FormÑjercicio3-4 para el formulariocy
Ñjercicio3-4 para el proyecto.
c
c
Ñxplicació :
c
Loc importante en esta aplicación es la forma rápida y sencilla de almacenar en variable datos
proporcionados
c por el usuario. Dediante un cuadro personalizado generado por la función
ë pBox se puede almacenar en una variable cualquier valor proporcionado por el usuario.
c
Ñnc nuestra aplicación hemos definido dos variables: una para el nombre y otra para el apellido,
c
ambas de tipo ' . Después de esto, hemos utilizado la función ë pBox delante de cada
c
variable unidos mediante el  cc    ialdad ³=´ para que el valor proporcionado
porc el usuario se asigne en las variables.
c
Por último, hemos utilizado la función MsBox para mostrar el nombre y el apellido proporcionado
porc el usuario. Hemos combinado los valores de cada variable mediante el  c c
c   ampersa d ³&´.

c
c
TA: Podrá utilizar la función ë pBox para solicitar todo tipo de datos y luego utilizar   c  ccc
ccc  para realizar operaciones de cálculo de forma adecuada.
c
c
c
- 4À2À6À2 F ció MsBox
c
c
Duestra un mensaje en un cuadro de diálogo, espera a que el usuario haga clic en un botón y
devuelve
c un tipo ë eer correspondiente al botón elegido por el usuario.
c
Su formato es:
c
c
MsBox(PÈ, ßÈ,   ßÈ,   , 
ß)
c
c
Donde:
c
c ## Ñs una expresión de tipo cadena requerida por la función. Ñste parámetro
c indica el mensaje que aparecerá en el cuadro de diálogo. La longitud
máxima de ## es de aproximadamente 1024 caracteres, según el
c ancho de los caracteres utilizados. Si ## consta de más de una línea,
c puede separarlos utilizando un carácter de retorno de carro (Chr(13)), un
c carácter de avance de línea (Chr(10)) o una combinación de los caracteres
c de retorno de carromavance de línea (Chr(13) y Chr(10)) entre cada línea y
c la siguiente.
c   Opcional. Ñxpresión numérica que corresponde a la suma de los valores
c que especifican el número y el tipo de los botones que se pretenden
c mostrar, el estilo de icono que se va a utilizar, la identidad del botón
c predeterminado y la modalidad del cuadro de mensajes. Si se omite este
c argumento, el valor predeterminado para  es 0.
c
  Opcional. Ñxpresión de cadena que se muestra en la barra de título del
c cuadro de diálogo. Si se omite  , en la barra de título se coloca el nombre
c de la aplicación.
c
 #)  Se utiliza de la misma manera que en la función ë pBox.
  (

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
Ñl cargumento  tiene los siguientes valores:
c
Co sa e Valor 3escripció
c
VbK ly 0 Duestra solamente el botón Acepar.
c
VbKCa cel 1 Duestra los botones Acepar y Ca celar.
c
c
VbAborReryë ore 2 Duestra los botones A lar, Rei e ar e
c ë orar.
c
VbYesoCa cel 3 Duestra los botones í, o y Ca celar.
c
VbYeso
c 4 Duestra los botones í y o.
c
VbReryCa cel 5 Duestra los botones Rei e ar y Ca celar.
c
VbCriical 16 Duestra el icono de me saje críico.
c
VbQesio 32 Duestra el icono de pre a de advere cia.
c
c
VbÑxclamaio 48 Duestra el icono de me saje de advere cia.
c
Vbë formaio 64 Duestra el icono de me saje de i formació .
c
Vb3efalBo 1 0 Ñl primer botón es el predeterminado.
c
Vb3efalBo
c 2 256 Ñl segundo botón es el predeterminado.
c
Vb3efalBo 3 512 Ñl tercer botón es el predeterminado.
c
Vb3efalBo 4 768 Ñl cuarto botón es el predeterminado.
c
VbApplicaio Modal 0 Aplicación modal; el usuario debe responder al
c
cuadro de mensajes antes de poder seguir
c trabajando en la aplicación actual.
c
c
VbysemModal 4096 Sistema modal; se suspenden todas las
c aplicaciones hasta que el usuario responda al
c cuadro de mensajes.
c
VbMsBoxHelpBo 16384 Agrega el botón Ayuda al cuadro de mensaje.
c
VbMsBoxeForero d 65536 Ñspecifica la ventana del cuadro de mensaje como
c
la ventana de primer plano.
c
c
VbMsBoxRih 524288 Ñl texto se alinea a la derecha.
c
VbMsBoxRlReadi  1048576 Ñspecifica que el texto debe aparecer para ser
c leído de derecha a izquierda en sistemas hebreo y
c árabe.
c
Gosc valores develos por la f ció se la respesa proporcio ada por el sario se
mesra
c e la siie e abla:
c
u+c c +$$-c
c
vbK 1 Acepar
c cel
vbCa 2 Ca celar
c
vbAbor 3 A lar
c
vbRery 4 Rei e ar
c ore
vbë 5 ë orar
vbYes 6 í
vbo 7 o

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció al Ge aje Basicc


Capílo 4
c c
c
Ñjercicio:
c
Ñl siguiente ejercicio muestra como utilizar la función MsBox para mostrar cuadro de diálogos
c
personalizados.
c
c un nuevo proyecto.
ó Abra
c
ó Inserte cuatro botones de comando uno debajo del otro.
c
ó Ñn la propiedad Capio del primer botón de comando escriba: ³Densaje 1´.
c
ó Ñnc la propiedad Capio del segundo botón de comando escriba: ³Densaje 2´.
ó Ñnc la propiedad Capio del tercer botón de comando escriba: ³Densaje 3´.
ó Ñnc la propiedad Capio del cuarto botón de comando escriba: ³Densaje 4´.
c
Lac aplicación debe tener una apariencia similar a la mostrada en la siguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Dentro
c del evento Click del primer botón de comando escriba:
c
µDuestra
c un mensaje en un cuadro de diálogo sencillo con los botones Si y No, y el icono de
mensaje critico.
c
Dim respuesta
c
respuesta = DsgBox("¿Ñsta seguro que desea formatear su computador?", vbYesNo +
c
vbCritical + vbDefaultButton2, "Formatear Disco")
c
µSelecciona
c la respuesta del usuario.
c
If respuesta = vbYes Then
c
DsgBox ("Usted selecciono la respuesta Sí.")
c If
Ñnd
c
Ifc respuesta = vbNo Then
DsgBox ("Usted selecciono la respuesta No.")
c
Ñnd If
c
ó Dentro del evento Click del segundo botón de comando escriba:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
µDuestra
c un mensaje en un cuadro de diálogo personalizado con los botones, si, no y cancelar.
µÑnc el cuadro se muestra el icono de mensaje de advertencia.

Dim c respuesta
c
respuesta = DsgBox("¿Desea guardar los cambios en el documento?", vbYesNoCancel +
c
vbÑxclamation + vbDefaultButton1, "Ñditor")
c
µSelecciona
c la respuesta del usuario.
c
If respuesta = vbYes Then
c
DsgBox ("Usted selecciono la respuesta Sí.")
Ñnd c If
c
If respuesta
c = vbNo Then
DsgBox ("Usted selecciono la respuesta No.")
Ñnd c If
c
c
If respuesta = vbCancel Then
c
DsgBox ("Usted selecciono la respuesta Cancelar.")
Ñnd c If
c
c
c
ó Dentro evento Click del tercer botón de comando:
c
'Duestra
c un mensaje en un cuadro de diálogo personalizado con los botones, Abortar, Reintentar e
µIgnorar. Ñn el cuadro se muestra el icono de mensaje de crítico.
c
Dim c respuesta
c
respuesta = DsgBox("No se puede copiar el archivo.", vbAbortRetryIgnore + vbCritical, "Copiando
archivo")
c
c
µSelecciona la respuesta del usuario.
c
c
If respuesta = vbAbort Then
c
DsgBox ("Usted selecciono la respuesta Abortar.")
Ñnd c If
c
If respuesta = vbRetry Then
c
DsgBox ("Usted selecciono la respuesta Reintentar.")
Ñnd c If
c
If respuesta
c = vbIgnore Then
DsgBox
c ("Usted selecciono la respuesta Ignorar.")
Ñnd If
c
c
c
ó Dentro del evento Click del cuarto botón de comando:
c
c
'Duestra un mensaje en un cuadro de diálogo personalizado el botón Aceptar y Cancelar.
'Ñnc el cuadro se muestra el icono de información.
c
DsgBox ("Los datos se almacenaron satisfactoriamente."), vbOKOnly, "Guardar"
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
ó Corra
c la aplicación.
c
ó Haga clic sobre cada uno de los botones para que observe los distintos cuadro de dialogo.
c
ó Analice el código escrito en cada botón de comando y observe las diferentes formas de
c
personalización de la función MsBox.
c
ó Detenga
c la aplicación y guarde el ejercicio con los nombres FormÑjercicio4-4 para el formulariocy
Ñjercicio4-4 para el proyecto.
c
Ñnc caso de no tener un computador disponible los cuadros de diálogo que se muestran en el
c
ejercicio anterior son los siguientes:
c
 cPcac
c
c
c
c
c
c
c
c
c
'cac
c
c
c
c
c
c
c
c
c
c
 cac
c
c
c
c
c
c
c
c
c
( cac
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
4À3c ÑTRUCTURA 3Ñ CTRG ÑGÑCTëVAc
c
Con mucha frecuencia nos encontraremos con la necesidad de hacer comparaciones lógicas y
c decisiones según los datos proporcionados por el usuario. Ñstas decisiones y comparaciones
tomar
la crealizamos utilizando las   cc  c    . Gracias a estas, el programador podrá
c
evaluar entre varias alternativas y decidir que hacer para cada alternativa dentro del programa.
c
Las estructuras de control selectivas están presentes en cuanto a conceptos en todos los lenguajes
c
de programación. Son utilizadas para tomar decisiones con los datos proporcionados por el usuario
o, cbien, con la información obtenida mediante algún proceso. Vienen representadas comúnmente
porc las palabras en inglés if-he -else y case, aunque en algunos lenguajes de programación
c
presentan mínimas variaciones.
c
- 4À3À1 Ñxpresio es lóicas
c
Unac expresió lóica es una combinación de variables, constantes, valores literales, funciones y
c
operadores de relación que dan como resultado un valor único,  coc . Las expresiones
c
lógicas se clasifican en: (#  $  # y (#  $ #  .
c
Las (#   $ c # son aquellas que están compuestas por una única expresión
c
lógica, tal y como se muestran en los siguientes ejemplos:
c
1. c(a>b) µÑsta expresión evalúa si el valor de la variable a es mayorcque el de la variable b.
c Si el valor de a es mayor que el de b, devuelve el valor lógico re, de lo contrario,
c devuelve el valor lógico false.
c
2. (5+3=b) µÑsta expresión evalúa si la suma de 5+3 es igual al valor de la variable b. Si la suma
c de 5+3 es igual al valor que contiene la variable b, devuelve el valor lógico re, de lo
c contrario, devuelve false.
c
3. c(a+b>c) µÑsta expresión evalúa si la suma de a+b es mayor que el valor de la variable c.
Devuelve re si a+b es mayor que c, de lo contrario, devuelve false.
c
4. c(n®>0) µÑsta expresión evalúa si el valor de la variable ces distinto de cero. Devuelve re si
c el valor de es distinto de cero, de lo contrario, devuelve false.
c
5. c(n+1=3) µÑsta expresión evalúa si la suma de +1 es igual a res. Devuelve re si la suma de
del valor de la variable + 1 es igual a res, de lo contrario, devuelve false.
c
Lasc (#   $ c #   son aquellas que contienen varias expresiones lógicas
c
relacionadas mediante operadores lógicos (a d, or, o).
c
c
Ñjemplos:
c
1. c(a>b) a d (a>c) µÑsta expresión evalúa si el valor de a es mayor que el valor de b, y si el valor de
c a es mayor que c. Si ambas expresiones son verdaderas, devuelve el valor
c lógico true, de lo contrario, devuelve false.
c
c
2. (a=3) or (a=4) µÑsta expresión evalúa si a es igual a tres ó a es igual a 4. Si uno de las dos
c expresiones lógicas es verdadera devuelve el valor lógico re, de lo contrario,
c devuelve false.
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
- 4À3À1À1
c peradores arim
icos
c
Son aquellos que se utilizan para realizar las operaciones básicas de las matemáticas. Ñn las
c
operaciones básicas tenemos: suma, resta, multiplicación, división, residuo y exponenciación.
c
c
£#   ) & #  
c 5 Suma a+b Suma de a y b.
c 6 Resta a±b Diferencia entre a y b.
0 Dultiplicación a*b Producto de a por b.
c 1 División a/b Cociente de a sobre b.
c 7 División entera a\b Cociente entero de a sobre b.
c  Dódulo o Resto a mod b Resto de a sobre b.
c 8 Ñxponenciación a^b Potencia de a elevado a b.
c
- 4À3À1À2
c peradores de relació

Losc  cc  son utilizados para expresar condiciones y describir una relación entre
dosc valores. Los operadores de relación se muestran en la siguiente tabla:
c
c £#   ) "   !
c 9 Dayor que >
: Denor que ®
c / Igual a =
c 9/ Dayor o igual que •
c :/ Denor o igual que ”
c :9 Distinto a 
c
Ñjemplos
c de algunas relaciones:
c
c 1. 5 > 3 Devuelve verdadero (true)
c
2. 3 = 2 +1 Devuelve verdadero (true)
c
c 3. 2 ®> 1+1 Devuelve falso (false)
c 4. 8 ® 5 Devuelve falso (false)
c 5. µA¶ ® µB¶ Devuelve verdadero (true)
c
6. µZ¶ ® µH¶ Devuelve falso (false)
c
c
- 4À3À1À3 peradores lóicos
c
Sec utilizan para combinar las expresiones lógicas, es decir, que nos permiten evaluar más de una
c
expresión lógica a la vez. Los operadores A3, R y T trabajan con operandos que son
c
expresiones lógicos.
c
Su formato es:
c
c
ÈOperando 1ß operador lógico ÈOperando 2ß «operador lógico ÈOperando Nß
c
c
Donde:
c
 ),  "cc × pueden ser cualquier expresión lógica.
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
c
Ñjemplos:
c
5 > 6 A3 7 > 20 Devuelve falso (false)
c
3 >c 1 A3 6 ® 20 Devuelve verdadero (true)
c
- 4À3À1À3À1
c perador lóico A3
c
Ñl  c   A3 (Y) combina dos o más expresiones lógicas y produce un resultado
c
verdadero sólo si todos los operandos son verdadero.
c
c
pera do 1 pera do 2 Reslado
c True True True
c True A3 False False
c False True False
False False False
c
c
- 4À3À1À3À2 perador lóico R
c
Ñl c c   R () Devuelve verdadero si al menos una de las expresiones lógicas produce
unc resultado verdadero.
c
pera do 1 pera do 2 Reslado
c True True True
c True R False True
c False True True
c False False False
c
- 4À3À1À3À3 perador lóico T
c
Ñl coperador lógico T() niega el valor original de una expresión, si es verdadero será falso, si
escfalso será verdadero.
c
c
- 4À3À2 Ga se e cia ëf
c
c que una condición produce un valor verdadero o falso, se necesita una sentencia de control
Dado
quec ejecute determinada sentencia si la condición es verdadera, y otra si es falsa. Ñn Pascal esta
c
alternativa se realiza con la sentencia if-he -else. A continuación se describe el diagrama de flujo
y el
c formato de la sentencia.
c
c
c Ñ P V ë srccio es
si es verdadero
c
c
c F
c
c ë srccio es
c si es falso
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
Lac sentencia if es utilizada mediante el siguiente formato:
c
ëf (Co dició ) The
c Èinstrucciones si es verdaderoß
c .
c .
c .
Ñlse
c
Èinstrucciones si es falsoß
c .
c .
c .
Ñ cd ëf
c
La   es una 
 c    que puede ser verdadera o falsa (re o false). Una
c

 c    se forma comparando valores de las expresiones utilizando operadores de
c
relación (relacionales) o comparación y los operadores lógicos vistos anteriormente.
c
Ñnc la mayoría de los ejercicios realizados hasta ahora hemos utilizado la estructura de control
selectiva if-he -else para tomar dediciones y responder a situaciones previstas de antemano. Por
c
ejemplo, comprobar si una  c c 
 se deja vacía, verificar si un valor de una caja o una
c
variable cumplen con una determinada condición, evaluar el valor de una propiedad de un objeto
c
imae, etc.
c
c
Ñjercicio:
c
Ñn el siguiente ejercicio crearemos una pantalla que vemos comúnmente al instalar un programa.
c es la pantalla para registrar el producto. Ñn esta verificaremos que cada una de las cajas de
Ñsta
c que debe completar el usuario no se dejen vacía. También, verificaremos si la clave escrita
texto
porc el usuario coincide con la requerida por el programa.
c
ó Abra un nuevo proyecto.
c
c
ó Dodifique el tamaño del formulario e inserte una etiqueta, cinco cajas de texto y dos botones de
comando,
c tal y como se ve en la siguiente pantalla:
c
c
c
c
c
c
c
c
c
ó Ñstablezca
c los siguientes valores en las propiedades indicadas en cada uno de los controles
mostrados en la siguiente tabla:
c
c
u  
c
 c u ' c
c + 2cc  c
c c
c
 c  c
 c  1*c
c cc c !c/c
c$ 
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
c
u  
c c  c
c c $ /c c;c
,* &( (c
c * c
c c  2c
c2c $ /c c;c
c ,* &( (c
c * c
c c  &c
&c $ /c c;c
c (c
,* &(
c * c
c c  "c
c"c $ /c c;c
c ,* &( (c
c * c
c c  (c
(c $ /c c;c
c ,* &( (c
c * c
c c
c c  '  c
c
 c u '  c
c
c
$ c   c
c
u  cc   c
c c
c
c ventana debe tener la siguiente apariencia:
ó La
c
c
c
c
c
c
c
c
c
ó Dentro
c del eve o Click del botón -   escriba el siguiente bloque de código:
c Clave As String
Dim
c
Clave = "1234512345123451234512345"
c
'Verifica
c que la contraseña es igual a la que contiene las cajas.
Ifc txtCaja1.Text & txtCaja2.Text & txtCaja3.Text & txtCaja4.Text & txtCaja5.Text = Clave Then
DsgBox ("Contraseña Correcta.")
c Unload De ' Cierra esta ventana.
c
Ñlse
c DsgBox ("Contraseña Incorrecta."), vbCritical, "Registro"
c txtCaja1.SetFocus ' Hace que la primera caja reciba el enfoque.
Ñnd If

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
Unac de las características de las cajas que contienen una ventana para registro de contraseña es,
que cada vez que se complete el número de caracteres en una caja, el curso se coloque
c
automáticamente en la siguiente caja. Ñn nuestro caso, programaremos el salto a la siguiente caja
c
cuando se haya escrito cinco caracteres en una caja determinada. Para esto tendremos que
c
programar el evento Cha e de cada una de las cajas de texto.
c
ó Dentro
c del evento Cha e de la primera caja escriba:
c
µVerificamos que Si la primera caja de texto tiene cinco caracteres.
Ifc Len(txtCaja1.Text) = 5 Then
c txtCaja2.SetFocus ' Saltamos a la segunda caja.
c
Ñnd If
c
c
ó Dentro del evento Cha e de la segunda caja escriba:
c
µVerificamos
c que Si la segunda caja de texto tiene cinco caracteres.
Ifc Len(txtCaja2.Text) = 5 Then
txtCaja3.SetFocus ' Saltamos a la tercera caja.
c
Ñnd If
c
c
c
ó Dentro del evento Cha e de la tercera caja escriba:
c
c
µVerificamos que Si la tercera caja de texto tiene cinco caracteres.
Ifc Len(txtCaja3.Text) = 5 Then
c txtCaja4.SetFocus ' Saltamos a la cuarta caja.
Ñnd If
c
c
ó Dentro
c del evento Cha e de la cuarta caja escriba:
c
µVerificamos que Si la cuarta caja de texto tiene cinco caracteres.
c
If Len(txtCaja4.Text) = 5 Then
c txtCaja5.SetFocus ' Saltamos a la quinta caja.
c If
Ñnd
c
c
ó Dentro del evento Cha e de la quinta caja escriba:
c
c
µVerificamos que Si la cuarta caja de texto tiene cinco caracteres.
Ifc Len(txtCaja5.Text) = 5 Then
c cmdRegistrar.SetFocus ' Hacemos que el botón Registrar reciba el enfoque.
Ñnd If
c
c
c
ó Dentro del eve o Click del botón (   cescriba:
c
µSale del programa.
c
Ñnd
c
c
c
ó Corra la aplicación y en las cajas de texto escriba una contraseña cualquiera.
c
ó Luego haga clic en el botón -  . Podrá observar que se muestra un mensaje diciendo que la
contraseña es incorrecta.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
ó Ahora
c escriba la contraseña correcta: 12345m12345m12345m12345m12345. Podrá observar que
aparece una ventana diciendo que la contraseña es correcta.
c
Pudoc notar en la aplicación que es posible elegir entre varias alternativas. Una de ellas es
c
proporcionar un mensaje al usuario si la contraseña es incorrecta y la segunda es informar al
c
usuario de que su contraseña es correcta.
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio5-4 para el formulariocy
c
Ñjercicio5-4 para el proyecto.
c
c
c Ga se e cia Case
- 4À3À3
c
La sentencia Case es una variante de la sentencia ëf. Ñsta es utilizada también para elegir entre
c
varias alternativas. Su formato es muy distinto al de la sentencia ëf, tal y como se puede apreciar a
c
continuación:
c
c
elec Case Ñxpresión $$ +&.c c
cCase vpe1
c c c
c Èsentencias1ß c  <c
c
Case vpe2
  2c
c Èsentencias2ß
c c  2<c
Case vpe«N
c c 7$c
c ÈSentencias«Nß
c  7$<c
c
Case Ñlse
c ÈSentenciasmsinoß  +c c 2c 7$c
c c   <c
Ñ d elec
c
c  +$$-
c c
c
Donde expresió es una expresión numérica o alfanumérica que puede proporcionar una serie de
valores
c distintos y uno de ellos puede o no encontrarse en la lista. A estos valores en una 
Case se les podrían llamar ³valores proporcio ados por la expresió (vpe)´. Las    vpe1,
c
vpe2, vpe« representan valores que puede o no proporcionar la expresión. Según sea el valor se
c
ejecutan las  cseguidas a la   (vpe) correspondiente. La cláusula   cCase
Ñlsec indica que si los valores proporcionados por la expresió no se encuentran en la listas de las
c
etiquetas (vpe) entonces se ejecutarán las Èe e cias-si oß.
c
Ñjemplo:
c
Dim c Numero As Integer
c
Numero = InputBox(³Introduzca un número del 1 al 4:´) µPermite que el usuario introd. un numero.
c
Select
c Case Numero
c
Case 1
c DsgBox ("Ñste es el número Uno.")
c Case 2
c DsgBox ("Ñste es el número Dos.")
Case 3
DsgBox ("Ñste es el número Tres.")

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V

ë rodcció al Ge aje Basicc


Capílo 4
c c
Casec 4
c DsgBox (³Ñste es el número cuatro.´)
Casec Ñlse
c
DsgBox (³No se a proporcionado los valores 1, 2, 3 o 4´)
c
Ñnd c Select
c
Lac     mero almacena el número introducido por el usuario. Si el usuario introduce el
número
c uno, entonces, en la variable mero se almacena valor 1 y, a continuación, se ejecuta el
caso uno (vpe1), donde se encuentra la sintaxis MsBox (³Ñse es el mero U oÀ´), si mero
tomac el valor de 2, entonces, se ejecuta el caso dos (vpe2), y a si sucesivamente.
c
c
4À4 ÑTRUCTURA 3Ñ CTRG RÑPÑTëTëVAc
c
c
Las     #  llamadas también Bcles, son aquellas que nos permiten
c
repetir un determinado bloque de código mientras se cumple una determinada condición. Los
c
 cestán compuestos por una condición o expresión que se puede evaluar a falso o verdadero.
c
Dientras la condición se evalué a verdadero (re), el cuerpo de bucle se ejecutará.
c
Ñnc Visual Basic existen cuatro tipos de bucles que son: For«ex, 3o«Goop, While«We d y
For Ñach«ex.
c
c
c Ñl Bcle For«ex
- 4À4À1
c
Lac sentencia For « ex repite una determinada serie de sentencias dado un valor inicial y un
valor final. Ñste   se utiliza cuando se conoce por anticipado el número de repeticiones
c
requerida por el programa. Si el número de repeticiones no se conoce por anticipado entonces debe
c
utilizar las sentencia While « We d o 3o « Goop en lugar de For.
c c
c
 formao es:
c
a) c
c
For     =  c  To  c  c
cc
cc ÈSentencias«ß
cc
c
 (   
c
b) c
c
c     =  c  To  c  ep x
For
c c
c c ÈSentencias«ß
c
c ex    c
c
c c
c c
c
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
Al cejecutarse la sentencia For por primera vez, el  c  se asigna a    cque se denomina
   c c  , y a continuación se ejecuta la sentencia del interior del bucle hasta que la
c
    c  toma el  c  
c
c
Ñjemplo:
c
Ôc  c  
c  c Ô c  
c   c c Ô c 
c  cc c c
c cc cccc
  c  c  c c  c c c  c
c
cccc c  c c 
c  cc 
c
c
c
For c  = 1 To 6
c
DsgBox (³Ñl valor de  ahora es: ³ & )  c c 
c
c
exc c
 c cc cc c!  c
c cc " cc c 
c
c
c
Ñnc el segundo formato vemos la cláusula ep x. Ñsta indica que el bucle se decrementa o
c
incrementa en x.
c
c
Ñjemplo:
c
For  = 6 To 1 ep m 1
c DsgBox (³Ñl valor de  ahora es: ³ & )
exc 
c
Ñnc este caso  tomará valores comenzando desde 6 hasta llegar a 1 (6, 5, 4, 3, 2, 1). Si en caso de
haber especificado -2 en vez de -1, entonces, se decrementa de dos en dos (6, 4, 2, 0).
c
Al cusar la cláusula ep debe tener en cuenta, que el  c  del bucle es menor que el  c
 c c del bucle cuando se decrementa.
c
c
Ñjercicio 1:
c
Ñn este primer ejercicio mostramos los números del 1 al 200 en una caja de texto utilizando un
c For«Next.
bucle
c
c un nuevo proyecto.
ó Abra
c
ó Inserte una caja de texto y un botón de comando, tal y como se muestra en la siguiente imagen:
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
c
ó Ñstablezca los siguientes valores en las propiedades indicadas en cada uno de los controles
mostrados en la siguiente tabla:
c
c
u  
c c  $  c
c ,   c
c $#+ 2cc  c
c * c
c c
u
c $ c   c
 c   c
c c
c
c el evento Click del botón de comando escriba:
ó Ñn
c
Dimc  As Integer 'Declaramos la variable de control para el bucle.
c
For c= 1 To 200 'Iniciamos el bucle del 1 al 200.
c
ctxtNumeros.Text = txtNumeros.Text &  & ", " µDostramos el valor actual de  en la caja.
c
c cccccc 'Repetimos el bucle.
Next
c
c
ó Corra la aplicación y haga clic en el botón  .
c
c observar como los números del 1 al 200 se muestran sobre la caja de texto, tal y como se
Podrá
muestra
c en la siguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
Puede hacer que los números se muestren uno de bajo del otro haciendo un salto de línea. Para
c un salto de línea solo debe combinar los valores ACëë 13 y 10. Ñjemplo:
hacer
c
c
txtNumeros.Text = txtNumeros.Text &  & Chr(13) & Chr(10)
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio6-4 para el formulariocy
c
Ñjercicio6-4 para el proyecto.
c
c
Ñjercicio 2:
c
Ñnc este segundo ejercicio utilizaremos un bucle For«Next para sustituir todos los espacios que
contenga una caja de texto por comas.
c
ó Abra un nuevo proyecto.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
ó Inserte
c una caja de texto y un botón de comando, tal y como se muestra en la siguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Ñstablezca los siguientes valores en las propiedades indicadas en cada uno de los controles
c
mostrados en la siguiente tabla:
c
c
u  
c c  c
c ,   c
$#+ 2cc  c
c * c
c c
c
u $ c   c
c  c   c
c c
c
ó Dentro del evento Click del botón de comando escriba:
c
c
Dim cAs Integer 'Declaro la variable control para el bucle.
c C As String 'Variable para almacenar cada carácter leído de la caja.
Dim
c
c
For
c  = 1 To Len(txtContenido.Text) ' Inicio el bucle del 1 hasta la longitud de la caja.
c
C = Did(txtContenido.Text, , 1) 'Se lee carácter por carácter.
c
c µSeleccionamos uno por uno los caracteres de la caja.
c txtContenido.SelStart =  m 1
c txtContenido.SelLength = 1
c
µVerificamos si el caracter seleccionado es un espacio.
c If txtContenido.SelText = Chr(32) Then
c txtContenido.SelText = "," ' Si es un espacio se sustituye por una coma.
c Ñnd If
c
Next  'Se repite el bucle.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
ó Corra
c la aplicación y escriba varias palabras en la caja de texto y, a continuación, haga clic en el
botón ( P .
c
c ver como cada uno de los espacios que separan las palabras son sustituidas por una coma.
Podrá
c
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio7-4 para el formulariocy
c
Ñjercicio7-4 para el proyecto.
c
c Ñl Bcle 3oÀÀÀGoop
- 4À4À2
c
c el bucle 3o para ejecutar un bloque de instrucciones un número indefinido de veces. Hay
Utilice
c
algunas variantes en la instrucción 3oÀÀÀGoop, pero cada una evalúa una condición numérica para
determinar
c si continúa la ejecución. Como ocurre con ëfÀÀÀThe , la   debe ser un valor o una
expresión
c que dé como resultado False (cero) o Tre (distinto de cero).
c
Ñl bucle 3o«Goop tiene el siguiente formato:
c
c
c While  
3o Hacer Mie ras  c;c 
c
c / : / :
c
c
Goop Repie
c
c
Cuando
c Visual Basic ejecuta este bucle 3o, primero evalúa  . Si  ces False (cero),
se salta todas las instrucciones. Si es Tre (distinto de cero), Visual Basic ejecuta las instrucciones,
c
vuelve a la instrucción 3o While y prueba la condición de nuevo.
c
Porc tanto, el bucle se puede ejecutar cualquier número de veces, siempre y cuando  csea
c
distinta de cero o Tre. Nunca se ejecutan las instrucciones si  ces False inicialmente.
c
c
Ñjemplo:
c
Ñl siguiente ejemplo convierte todo el contenido de una caja de texto a mayúscula:
c
c
'Variable para almacenar el total de los caracteres leídos.
c TotalCaracterLeido As Integer
Dim
c
TotalCaracterLeido = 0 'Iniciamos la variable en cero.
c
'Repetimos
c mientras la longitud de la caja de texto es mayor que el total de caracteres leído.
Do While Len(txtContenido.Text) > TotalCaracterLeido
c
c
TotalCaracterLeido = TotalCaracterLeido + 1 'Incrementamos el total de carácter leído en 1.
c
'Colocamos el punto de inserción delante del carácter a leer.
c
txtContenido.SelStart = TotalCaracterLeido m 1
txtContenido.SelLength
c = 1 'Seleccionamos el carácter.
c
µConvertimos el carácter seleccionado a mayúscula.
c
txtContenido.SelText = UCase(txtContenido.SelText)
c
Loop 'Volvemos a repetir hasta que se lean todos los caracteres de la caja.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 VV


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
Si cen una aplicación tenemos una caja de texto llamada txtContenido, y colocamos el bloque de
código anterior en un botón de comando. Al hacer clic sobre dicho botón se convertirán todos los
c
caracteres escritos en la caja de texto a mayúscula.
c
Ñl cbucle 3o«Goop también permite evaluar una condición después de la primera ejecución del
c Ñsta variante del bucle 3o«Goop permite ejecutar el bucle al menos una vez, sin importar
bucle.
quec la condición sea   o   .
c
Ñl formato para esta variante del bucle 3o«Goop es colocar la sentencia While después de la
c
cláusula Goop:
c
3oc
c Instrucciones«
c
Goop While  
c
c
Ñjercicio:
c
Ñl csiguiente bloque de código permite calcular la raíz cuadrada de un número positivo. Si el número
introducido es negativo el bucle se repetirá.
c
c
Dim Numero As Integer µSe declara la variable donde se almacenará el número introducido.
c
c
Do
c
c µSolicita un número y se almacena en la variable numero.
c Numero = InputBox("Introduzca un número:")
c µSi el número es negativo se muestra un mensaje al usuario.
c If Numero ® 0 Then DsgBox ("Introduzca un número positivo.")
c
Loop
c While (Numero ® m0) 'Se repite mientras el número sea negativo.
c
'Cuando el numero es positivo el bucle finaliza y se muestra la raíz.
c DsgBox ("La raíz del número es:" & Sqr(Numero))
c
c
c
c
- 4À4À3 Ñl Bcle While«We d
c
Lac estructura repetitiva While (Mie ras) es aquella en la que el número de iteraciones no se
conoce
c por anticipado y el cuerpo del bucle se repite P   se cumple una determinada
condición.La forma de utilizar este bucle es similar al bucle 3o«Goop. La única diferencia es, que
c
no es posible evaluar la condición después de la primera ejecución del bucle.
 c
c
Su formato es:
c
c
While   Mie ras   sea verdadera
c
c Instrucciones« Instrucciones«
c
We d Repie
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
Las c reglas de funcionamiento de este bucle son las siguientes reglas:
c
1. La condición se evalúa antes y después de cada ejecución del bucle. Si la condición es
c
verdadera, se ejecuta el bucle, y si es falsa, el bucle no se ejecuta.
c
2. cSi la condición se evalúa a falso cuando se ejecuta el bucle por primera vez, el cuerpo del bucle
noc se ejecutará nunca. Ñn este caso se dice que el bucle se ha ejecutado cero veces.
c
3. Dientras la condición sea verdadera el bucle se ejecutará. Ñsto significa que el bucle se
c
ejecutará indefinidamente a menos que ³algo´ en el interior del bucle modifique la condición
c
haciendo que su valor pase a falso.
c
c
Ñjemplo:
c
Ñn el siguiente ejemplo mostraremos como utilizar un bucle While«We d para imprimir el
c
cuadrado de los números del 1 al 20 en una caja de texto.
c
c Numero As Integer µVariable para generar de forma incrementada los números del 1 al 200.
Dim
c
Numero =0
c
While
c Numero ® 20 µDientras el numero sea menor que 20 se repite.
c Numero = Numero + 1 µGeneramos los números uno por uno en cada repetición.
c
c
µAlmacenamos el número y su cuadrado al lado en cada línea de una caja de texto.
c txtContenido.Text = txtContenido.Text & Numero & " Ñl cuadrado es: " & Numero ^ 2 & Chr(13)
&c Chr(10)
c
Wend µRepetimos.
c
c
Cada vez que el bucle se repita la variable ×P se incrementa en uno para obtener el número
c
siguiente. Dientras el número generado sea menor que 20 se imprimirá en la caja de texto el
c
número y su cuadrado al lado.
c
c Ñl Bcle For Ñach«ex
- 4À4À4
c
Repite
c un grupo de   para cada elemento de una P   o   .
c
Suc formato es:
c
For Ñachc P ë 
c
c / :c
c
c For]
ÈÑxi
c
/ :c
c
exc 6 P c
c
c
Lac sintaxis de la instrucción For ÑachÀÀÀex consta de las siguientes partes:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
Pare
c 3escripció
 P
c Requerido. Variable que se utiliza para iterar por los elementos del
conjunto o matriz. Para conjuntos,  P solamente puede ser una
c variable del tipo Varia , una variable de objeto genérica o cualquier
c variable de objeto específica. Para matrices,  P solamente puede
c ser una variable tipo Varia .
c

c Requerido. Nombre de un conjunto de objetos o de una matriz (excepto
una matriz de  c  cc c  ).
c
c
  Opcional. Una o más instrucciones que se ejecutan para cada elemento
c de un .
c
c
Lac entrada al bloque For Ñach se produce si hay al menos un elemento en . Una vez que se
ha entrado en el bucle, todas las instrucciones en el bucle se ejecutan para el primer elemento en
c
. Después, mientras haya más elementos en , las instrucciones en el bucle continúan
c
ejecutándose para cada elemento. Cuando no hay más elementos en el , se sale del bucle y
la cejecución continúa con la instrucción que sigue a la instrucción ex.
c
Sec pueden colocar en el bucle cualquier número de instrucciones Ñxi For. La instrucción Ñxi For
sec utiliza a menudo en la evaluación de alguna condición (por ejemplo, ëfÀÀÀThe ) y transfiere el
control a la instrucción que sigue inmediatamente a la instrucción ex.
c
c
Puede anidar bucles For ÑachÀÀÀex, colocando un bucle For ÑachÀÀÀex dentro de otro. Sin
c
embargo, cada  P del bucle debe ser único.
c
c
TA: Si omite  P en una instrucción ex, la ejecución continúa como si se hubiera
c
incluido. Si se encuentra una instrucción ex antes de su instrucción For correspondiente, se
producirá
c un error.
c
No se puede utilizar la instrucción For ÑachÀÀÀex con una matriz de tipos definidos por el usuario
c
porque un tipo Varia  no puede contener un tipo definido por el usuario.
c
c
Ñjemplo:
c
Ñnc el siguiente ejemplo creamos un objeto llamado ×Pc Ñn este agregamos tres nombres y
c leemos cada nombre almacenado utilizando un bucle For Ñach«ex.
luego,
c
c
Dim Nombres As New Collection 'Creamos el objeto.
c
Dim Leido As Variant 'Variable donde se almacenarán los elementos leídos.
c
c
µAgregamos datos a la colección.
c
Nombres.Add "Carlos"
Nombres.Add
c "Pablo"
Nombres.Add "Jose"
c
c
µLeemos cada uno de los elementos agregados.
c Ñach Leido In Nombres
For
c DsgBox (Leido) 'Dostramos los elementos leídos en una caja de mensaje.
Next
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
- 4À4À5
c Ñjercicios propesos
c
1.m Utilizando un bucle For«ex imprimir en una caja de texto el cubo de los números del 1 al 20.
c
2.mc Utilizando un bucle For«ex calcular e imprimir en un cuadro de mensaje la sumatoria de los
c
números del 1 al 100.
c
3.m Utilizando un bucle For«ex calcular e imprimir el cuadrado de la sumatoria de los números
c
del 1 al 50.
c
4.mc Utilizando un bucle 3o«Goop convertir el contenido de una caja de texto a minúscula.
c
5.mc Utilizando un bucle 3o«Goop sustituir todos los espacios contenidos en una caja de texto por
puntos.
c
6.mc Utilizando un bucle While«We d calcular e imprimir en un cuadro de mensaje el número de
c
espacios contenidos en una caja de texto.
c
7.mc Utilizando un bucle While«We d calcular e imprimir en una caja de texto el cuadrado de los
números
c del 10 al 20.

8.mc Utilizando un bucle While«We d calcular e imprimir en un cuadro de mensaje el total de letras
³a´c contenidas en una caja de texto.
c
9.mc Utilizando un bucle While«We d convertir las letras contenidas en una caja de texto a
mayúscula y minúsculas respectivamente. Ñjemplo: La CaSa De PeDrO.
c
c Crear un objeto llamado Carros. Agregar cinco marcas de carros y utilizando un bucle For
10.m
c
Ñach«ex leer y mostrar en un cuadro de mensaje todos los elementos del objeto.
c
c
4À5c GA FUCëÑ Ñ ÑG GÑ UAJÑ BAëC
c c
Unac función es un subprograma que recibe como argumentos o parámetros datos de tipo numérico
(ë ceer, Go , 3oble), o no numérico (ri , Boolea , Varia ), y devuelve un resultado.
c
Ñl formato de una función es el siguiente:
c
c
ombre_de_la_f ció ( Pc), Pc",«)
c
c
.Pc)c.P": Son datos de tipo /c,c0 c' c  c .
c
Ñl Pcse conoce en términos de lenguajes de programación con el nombre de  P.
c
Para poder calcular el valor o resultado de la función, todo lo que se debe conocer es el valor o los
c
valores e los argumentos.
c
c
Ñjemplos:
cccccc
c cAbs(m5) = 5 La función Abs calcula el valor absoluto de un argumento. Ñn este caso el
ccc1.
c argumento es m5 y el resultado de la función es 5.
c
c Cos(6) = 0.994521895368273
2.
La función Cos calcula el coseno de un argumento. Ñn este caso el argumento
es 6 y el resultado de la función es 0.994521895368273.
c c ccccccccccccccccccccccccccccc
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
Lasc funciones son muy útiles al momento de resolver operaciones complejas matemáticas o de
otras disciplinas afines. Ñn Visual Basic existen dos grandes grupos de funciones:
c
c à Funciones predefinidas, internas o estándar.
c à Funciones definidas por el usuario.
c
c F cio es predefi idas
- 4À5À1
c
Las funciones predefinidas son aquellas que incorpora Visual Basic para realizar operaciones
c
especiales dentro de un programa. Las funciones predefinidas se dividen en los siguientes grupos:
c
c à Funciones aritméticas.
c à Funciones trigonométricas.
c à Funciones de conversión de tipos de datos.
c à Funciones de manipulación de cadena de caracteres.
c à Funciones financieras.
c
c
- 4À5À1À1 F cio es arim
icas
c
Lasc  c  P  cson aquellas que realizan operaciones matemáticas simples tales como:
raíz cuadrada, cuadrado, redondeo, logaritmo, etc.), y devuelven un resultado.
c
c ció Ro d:
- F
c
Sec utiliza para redondear un número, es decir, devuelve el entero más próximo al argumento
c
c
c formao es:
c
Ro d(
 c6×P, 0 P  )
c
3oc de:
c
c
 a Ñs cualquier expresión que puede ser evaluada como un número. Ñsta puede
c ser una variable, el valor de una caja de texto, etc.
c ×P, 0 P a Ñs opcional. Indica que cuanto lugares a la derecha del decimal
c se incluye en el redondeo. Si se omite, la función Ro d devuelve un número entero.
c
c
Ñjemplos:
c
Los siguientes ejemplos muestran como redondear un número y mostrar el resultado en un cuadro
dec mensaje:
c
c DsgBox (Round(5.5)) µDevuelve 6.
c
c DsgBox (Round(3.25)) µDevuelve 3.
c DsgBox (Round(m7.15)) µDevuelve m7.
c
c DsgBox (Round(9.526, 2)) µDevuelve 9.53.
c
DsgBox (Round(7.58, 1)) µDevuelve 7.6.
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció al Ge aje Basicc


Capílo 4
c c
- F
c ció ë  y Fix:
c
Devuelven la parte entera de un número real. Ñn el caso de que el argumento sea un número
c
negativo, la función ë  devuelve el primer número entero negativo menor o igual que el número; la
c
función Fix devuelve el primer entero negativo mayor o igual que el número.
c
Formaos:
c
c
ë  (P)
c
c Fix (P)
c
Ñl cargumento ×P es un tipo 3oble o cualquier expresión numérica valida.
c
Ñjemplos:
c
c c Dim DiNumero
c DiNumero = ë (99.8) ' Devuelve 99.
c DiNumero = Fix(99.2) ' Devuelve 99.
c
DiNumero = ë (m99.8) ' Devuelve m100.
c DiNumero = Fix(m99.8) ' Devuelve m99.
c
c DiNumero = ë (m99.2) ' Devuelve m100.
c DiNumero = Fix(m99.2) ' Devuelve m99.
c
La diferencia entre ë  y Fix es que si el P es negativo, ë  devuelve el primer entero negativo
c
menor o igual a P mientras que Fix devuelve el primer entero negativo mayor o igual a
c
P Por ejemplo, ë  convierte m8.4 en m9 y Fix convierte m8.4 a m8.
c
c ció Abs:
- F
c
Devuelve
c el valor absoluto de un número, es decir, el mismo numero si es positivo, o su opuesto, si
escnegativo.
c
Formao:
c
c Abs (P)
c
Ñl cargumentoc×P puede ser cualquier expresión numérica válida. Si número contiene ll, la
función devolverá ll; si es una variable no inicializada, devolverá cero.
c
c
Ñjemplos:
c c
Dimc DiNumero
c
DiNumero = Abs(5) 'Devuelve 5.
DiNumero
c = Abs(m5) 'Devuelve 5.c
c ció Ñxp:
- F
c
c
Devuelve un tipo 3oble que especifica (la base de los logaritmos naturales) elevado a una
potencia.
c Ñl valor de la constante ces 2.718282caproximadamente.
c
Formao:

Ñxp(P)
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
c
Ñjemplos:
c
Dim DiNumero
c
DiNumero = Ñxp(1) µDevuelve 2.71828182845905. Ñs equivalente al valor de la constante e.
c
DiNumero = Ñxp(2) µDevuelve 7.38905609893065. Ñs equivalente al cuadrado de la constante.
c
DiNumero = Ñxp(4) µDevuelve 54.5981500331442. Ñs equivalente a la constante a la cuarta.
c
c
- F ció Go:
c
c
Devuelve un tipo 3oble que representa el logaritmo natural de un número.
c
Formao:
c
c
Go(P)
c
Ñl cargumento Pces un tipo 3oble o cualquier expresión numérica válida mayor que cero.
c
c
Ñjemplos:
c
Dim DiLogaritmo
c DiLogaritmo = Go(3) µDevuelve 1.09861228866811.
c DiLogaritmo = Go(4) µDevuelve 1.38629436111989.
c DiLogaritmo = Go(5) µDevuelve 1.6094379124341.
c
c
Puede calcular logaritmos en basem para cualquier número
dividiendo el logaritmo natural de

c
por el logaritmo natural de  de la siguiente manera:
c
c
Log
 = Go(
) / Go()
c
Ñl csiguiente ejemplo muestra como calcular el logaritmo en base 10:
c
c Dim DiLogaritmo
DiLogaritmo = Go(3) / Go(10)µDevuelve 0.477121254719662.
c DiLogaritmo = Go(4) / Go(10)µDevuelve 0.602059991327962.
c DiLogaritmo = Go(5) / Go(10)µDevuelve 0.698970004336019.
c
- F
c ció qr:
c
Devuelve la raíz cuadrada de un número.
c
c
Formao:
c
c qr(P)
c
Ñl argumento Pces un tipo 3oble o cualquier expresión numérica válida mayor o igual que
c
cero.
c
c
Ñjemplos:
c
c Dim Raiz
Raiz = qr(25) µDevuelve 5.
c Raiz = qr(4) µDevuelve 2.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
- F
c ció  :
c
Devuelve un tipo ë eer que indica el signo de un número.
c
c
Formao:
c
c  (P)
c
Ñl argumento P puede ser cualquier expresión numérica válida.
c
c
Valores develos
c
i
c , es  develve
c
Dayor que cero 1
Igual a cero 0
c
Denor que cero m1
c
c
Ñjemplos:
c
c Dim Signo
c Signo =  (m5) µDevuelve m1.
Signo =  (4) µDevuelve 1.
c Signo =  (0) µDevuelve 0.
c
c
c
- 4À5À1À2 F cio es rio om
ricas
c
Las funciones trigonométricas que Visual Basic soporta son: seno, coseno, tangente y arco
c
tangente. Las demás funciones Secante, Cosecante, Cotangente, Seno Inverso, Coseno Inverso,
c
Secante inversa, Cosecante inversa, Cotangente inversa, Seno hiperbólico, Coseno hiperbólico,
c
Tangente hiperbólica, Secante hiperbólica, Cosecante hiperbólica, Cotangente hiperbólica, Seno
c
hiperbólico inverso, Coseno hiperbólico inverso, Tangente hiperbólica inversa, Secante hiperbólica
inversa,
c Cosecante hiperbólica inversa y Cotangente hiperbólica inversa, se derivan partir de las
cuatros funciones trigonométricas básicas.
c
c
c ció i : Devuelve un tipo 3oble que especifica el seno de un ángulo expresado en
- F
c
radianes.
c
Formao:
c
c i (P)
c
Ñl cargumento P es un tipo 3oble o cualquier expresión numérica válida que expresa un
ángulo
c en radianes.
c
Ñjemplo:
c
c Dim DiAngulo, DiSeno
c DiAngulo = 1.4 µÑxpresado en radianes.
c DiSeno = i (DiAngulo) µDevuelve 0.98544972998846 radianes.
DsgBox(DiSeno) µDuestra el resultado en un cuadro de mensaje.
c
c expresar el resultado en grado, multiplique el ángulo por el cociente que resulta de dividir el
Para
valor del Pë entre 180.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
c
Ñjemplo:
c
Dim DiAngulo, DiSeno
cDiAngulo = 3 * (3.141592 / 180) 'Dultiplica el ángulo 3 por pi/180.
cDiSeno = i (DiAngulo) 'Devuelve 5.23359453647093Ñm02 en grados.
c'Duestra el seno en un cuadro de mensaje. Redondeamos para eliminar la notación científica.
cDsgBox (Ro d(DiSeno, 14)) 'Duestra 0.0523359454.
c
- F ció Cos:
c
c
Devuelve el coseno de un ángulo expresado en radianes.
c
Formao:
c
c Cos(P)
c
Ñl cargumento P es un tipo 3oble o cualquier expresión numérica válida que expresa un
c
ángulo en radianes.
c
Ñjemplos:
c
c Dim DiAngulo, DiCoseno
c DiAngulo = 3.5 µÑl ángulo expresado en radianes.
c DiCoseno = Cos(DiAngulo) µDevuelve m0.936456687290796.
c DsgBox(DiCoseno) µDuestra el resultado en un cuadro de mensaje.
c
Puede expresar el resultado en grados multiplicando el ángulo por Pi/180, tal y como hicimos con la
c
función i .
c
c
- F
c ció Ta :
c
Devuelve la tangente de un ángulo expresado en radianes.
c
c
Formao:
c
c Ta (P)
c
Ñl argumento P es un tipo 3oble o cualquier expresión numérica válida que expresa un
c
ángulo en radianes. Su aplicación es similar a los ejemplos anteriores.
c
c ció A :
- F
c
Formao:
c
c A (P)
c
Ñl cargumento P es un tipo 3oble o cualquier expresión numérica válida que expresa un
ángulo
c en radianes. Su aplicación es similar a los ejemplos anteriores.
c
c
- 4À5À1À3 F cio es maemáicas derivadas
c
Ñnc la siguiente página se muestra una lista de funciones matemáticas no básicas que pueden
derivarse de funciones matemáticas básicas:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
Fc ció 3erivadas eqivale es
c
Secante Sec(X) = 1 / Cos(X)
c
Cosecante Cosec(X) = 1 / Sin(X)
c
Cotangente
c Cotan(X) = 1 / Tan(X)
c inverso
Seno Arcsin(X) = Atn(X / Sqr(mX * X + 1))
c
Coseno inverso Arccos(X) = Atn(mX / Sqr(mX * X + 1)) + 2 * Atn(1)
c
Secante inversa Arcsec(X) = Atn(X / Sqr(X * X ± 1)) + Sgn((X) ± 1) * (2 * Atn(1))
c
Cosecante
c inversa Arccosec(X) = Atn(X / Sqr(X * X ± 1)) + (Sgn(X) ± 1) * (2 * Atn(1))
c
Cotangente inversa Arccotan(X) = Atn(X) + 2 * Atn(1)
c hiperbólico
Seno HSin(X) = (Ñxp(X) ± Ñxp(±X)) / 2
c
Coseno hiperbólico HCos(X) = (Ñxp(X) + Ñxp(±X)) / 2
c
Tangente
c hiperbólica HTan(X) = (Ñxp(X) ± Ñxp(±X)) / (Ñxp(X) + Ñxp(±X))
c
Secante hiperbólica HSec(X) = 2 / (Ñxp(X) + Ñxp(±X))
c
Cosecante hiperbólica HCosec(X) = 2 / (Ñxp(X) ± Ñxp(±X))
c
Cotangente hiperbólica HCotan(X) = (Ñxp(X) + Ñxp(±X)) / (Ñxp(X) ± Ñxp(±X))
c
Seno
c hiperbólico inverso HArcsin(X) = Log(X + Sqr(X * X + 1))
c
Coseno hiperbólico inverso HArccos(X) = Log(X + Sqr(X * X ± 1))
c
Tangente hiperbólica inversa HArctan(X) = Log((1 + X) / (1 ± X)) / 2
c
Secante hiperbólica inversa HArcsec(X) = Log((Sqr(±X * X + 1) + 1) / X)
c
Cosecante
c hiperbólica inversa HArccosec(X) = Log((Sgn(X) * Sqr(X * X + 1) + 1) / X)
c
Cotangente hiperbólica inversa HArccotan(X) = Log((X + 1) / (X ± 1)) / 2
c
Logaritmo en base N LogN(X) = Log(X) / Log(N)
c
c
- 4À5À1À4 F cio es de co versió de ipo de daos
c
Lasc funciones de conversión de tipo de datos permiten convertir un tipo de datos en específico en
otro
c tipo de datos. Son muy utilizados cuando leemos valores de controles que proporcionan un tipo
dec datos muy distinto al que necesitamos. Por ejemplo, si diseñamos una aplicación donde los
datos leídos de una caja de texto se requieren para realizar algún calculo matemático, debemos de
c
convertir el tipo de datos ri (cadena) devuelto por la caja de texto al tipo de datos requerido en
la coperación matemática.
c
c
Ñjemplo:
c
Ñn el siguiente ejemplo se muestra como calcular el área de un triangulo donde la base y la altura
sonc proporcionadas mediante cajas de texto.
c
c Dim Area, Base, Altura As Double
c Base = C3bl(txtBase.Text) µLeemos la base de la caja de texto txtBase.
c Altura = C3bl(txtAltura.text) µLeemos la altura de la caja de texto txtAltura.
Area = (Base*Altura)/2 µCalculamos el área del triángulo.
c DsgBox(Area) µDuestra el área en un cuadro de mensaje.
c
Dediante la función C3bl podemos convertir el tipo de datos ri  (cade a) devuelto por la caja
de texto al tipo de datos numérico 3oble.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
c
Ñxisten funciones para convertir un tipo de datos a otro tipo de datos en específico. A continuación,
se muestra una lista que contiene las funciones de conversión de tipos de datos disponibles en
c
Visual Basic:
c
c ció
F Tipo develo ë ervalo del arme o (# $
c Cbool Boolean Cualquier expresión de cadena o numérica válida.
c
c Cbye Byte 0 a 255.
c
c Ccr Currency m922.337.203.685.477,5808 a 922.337.203.685.477,5807.
c Cdae Date Cualquier expresión de fecha.
c
c C3bl Double m1,79769313486232Ñ308 a
c m4,94065645841247Ñm324 para valores negativos;
c 4,94065645841247Ñm324 a 1,79769313486232Ñ308 para valores
positivos.
c
c Cdec Decimal +/m79.228.162.514.264.337.593.543.950.335 para números
c basados en cero, es decir, números sin decimales. Para números
c con 28 decimales, el intervalo es
c +/m7,9228162514264337593543950335. La menor posición para
un número que no sea cero es
c
0,0000000000000000000000000001.
c
c Ci  Integer m32.768 a 32.767; las fracciones se redondean.
c
c CG  Long m2.147.483.648 a 2.147.483.647; las fracciones se redondean.
c
c C  Single m3,402823Ñ38 a m1,401298Ñm45 para valores negativos;
1,401298Ñm45 a 3,402823Ñ38 para valores positivos.
c
c Cr String Ñl mismo intervalo que Double para valores numéricos. Ñl mismo
c intervalo que String para valores no numéricos.
c
c Cvar Variant Ñl valor de retorno de CStr depende del argumento 
 .
c
c
c
- 4À5À1À5 F cio es de ma iplació de cade as de caraceres
c
Unac cadena de caracteres es una secuencia de caracteres que pueden ser numéricos o no
numéricos.
c Las cadenas de caracteres pueden ser manipuladas por el usuario mediante un
conjunto de funciones disponibles en Visual Basic. Ñntre las principales operaciones que podemos
c
realizar con una cadena de caracteres tenemos la: concatenación de cadena, extracción de
c
subcadenas, búsqueda de subcadenas y longitud de una cadena.
c
c
- 4À5À1À5À1 Co cae ació de cade as
c
La concatenación de cadenas consiste en la unión de dos o más cadenas de caracteres para
c
formar una sola. Ñsta operación se realiza mediante el carácter ampersa d &. Ñn muchas
c
ocasiones los datos se encuentran almacenados en distintas variables y queremos unir los valores
c
contenidos en cada una de ellas. Para esto se realiza una operación de concatenación.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
Porc ejemplo, si usted solicita el nombre de una persona y lo almacena en una variable y luego
solicita el apellido y lo almacena en otra variable, podrá obtener el nombre completo de la persona y
c
almacenarlo en una única variable.
c
c
Ñjemplo:
c
c Dim Nombre, Apellido, NombreCompleto As String
c
Nombre = InputBox("Introduzca su nombre:") µSolicitamos el nombre.
c Apellido = InputBox("Introduzca su apellido:") µSolicitamos el apellido.
c NombreCompleto = Nombre & " " & Apellido µConcatenamos las variables.
c
c µDostramos el resultado de la concatenación almacenada en la variable NombreCompleto.
DsgBox ("Su nombre completo: " & NombreCompleto)
c
c
Ñxplicació :
c
Ñnc este ejemplo hemos declarado tres variables de tipo cadena. La primera variable ×P para
almacenar
c el nombre que el usuario introduzca por el teclado, la segundac.  para almacenar
el apellido introducido por el usuario, y la tercera ×P(P  para almacenar el resultado de
c
la concatenación de las variables ×Pcy . .
c
Ñnc la segunda línea solicitamos el nombre del usuario mediante una caja de entrada (ë pBox), y
lo calmacenamos en la variable ×P. Ñn la tercera línea solicitamos el apellido y lo almacenamos
enc la variable . .
c
Ñn la cuarta línea almacenamos en la variable ×P(P  la concatenación o unión de las
c
variables ×P y . cmediante el operador Ampersa d &. Las dos comillas con un espacio
c ambas son para separar el nombre del apellido para que no aparezcan juntos. Por último,
entre
c
mostramos el resultado en un cuadro de mensaje. Puede observar en la última línea que hemos
utilizado
c también el operador ampersand para unir una cadena incluida entre comillas con una
cadena almacenada en una variable.
c
c
- 4À5À1À5À2 be er sbcade as
c
c
Obtener una subcadena consiste en extraer una cantidad especificada de caracteres de una
cadena
c principal. Para realizar esta operación se disponen de tres funciones que son: Gef, Rih y
Mid.
c
c ció Gef:
- F
c
c
Permite extraer una cantidad de caracteres desde la parte izquierda de una cadena.
c
 formao es:
c
c Gef(  cP)
c
c
3oc de:
c
 : Ñs una expresión cadena desde donde se extraerán la cantidad de caracteres.
c
c P: Un valor numérico que indica cuando caracteres se va a devolver. Si el valor
c excede la longitud de la cadena, se devuelve la cadena completa.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
c
Ñjemplo:
c
Dim CadenaPrincipal, DiCadena
c CadenaPrincipal = ³Hola a todos´
c
c DiCadena = Gef(CadenaPrincipal, 4) µDevuelve Hola.
c DiCadena = Gef(CadenaPrincipal, 1) µDevuelve H.
DiCadena = Gef(CadenaPrincipal, 12) µDevuelve Hola a todos
c
c ció Rih:
- F
c
c
Permite extraer una cantidad de caracteres desde la parte derecha de una cadena.
c
 formao es:
c
c Rih(  cP)
c
c
3oc de:
c
 : Ñs una expresión cadena desde donde se extraerán la cantidad de caracteres.
c
c P: Un valor numérico que indica cuando caracteres se va a devolver. Si el valor
c excede la longitud de la cadena, se devuelve la cadena completa.
c
c
Ñjemplo:
c
c Dim CadenaPrincipal, DiCadena
c CadenaPrincipal = ³Hola a todos´
c
DiCadena = Rih(CadenaPrincipal, 5) µDevuelve todos.
c
DiCadena = Rih(CadenaPrincipal, 1) µDevuelve s.
c DiCadena = Rih(CadenaPrincipal, 12) µDevuelve Hola a todos.
c
c ció Mid:
- F
c
Permite extraer una subcadena de caracteres de una cadena principal, dado un valor inicial y una
c
longitud.
c
c formao es:
c
c Mid(  c  c6   )
c
3o de:
c
c  ac Ñs una expresión cadena desde donde se extraerán los caracteres.
c
c  a Una expresión numérica que indica desde donde se comenzará a extraer los
caracteres. Si inicio es mayor que la longitud de la cadena, Mid devolverá una
c
cadena de longitud cero (³´).
c
c  ac Opcional. Una expresión numérica que indica la cantidad de caracteres que se
c desea extraer. Si se omite, se devolverá todos los caracteres a partir de la
posición  chasta el final de la cadena.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
c
Ñjemplo:
c
Dim CadenaPrincipal, DiCadena
c
c CadenaPrincipal = "Visual Basic y las cadenas de caracteres"
c
c DiCadena = Did(CadenaPrincipal, 1, 6) 'Devuelve Visual.
DiCadena = Did(CadenaPrincipal, 8, 5) 'Devuelve Basic.
c
DiCadena = Did(CadenaPrincipal, 30, 11) 'Devuelve caracteres.
c
c
- 4À5À1À5À3 F cio es especiales
c
Ñnc la siguiente sesión se listan una serie de funciones especiales muy útiles en el tratamiento de
cadena de caracteres.
c
c
c cio es UCase y GCase:
- F
c
c funciones se utilizan para convertir una cadena de caracteres a mayúscula y a minúscula
Ñstas
respectivamente.
c
c
Formaos:
c
c UCase(  )
c
GCase(  )
c
c
Ñjemplo:
c
c Dim CadenaPrincipal, DiCadena
c CadenaPrincipal = ³Programando en Visual Basic´
DiCadena = UCase(cadenaprincipal) µDevuelve PROGRADANDO ÑN VISUAL BASIC.
c
DiCadena = GCase(cadenaprincipal) µDevuelve programando en visual basic.
c
c
c ció rCo v:
- F
c
Ñsta función es similar a las funciones anteriores. Permite convertir a mayúscula o minúscula según
c
el tipo de conversión indicada. También, permite hacer otros tipos de conversión.
c
c
Formaos:
c
c rCo v(  c  c6,(/0 )
c
3o de:
c
c  ac Ñs una expresión cadena a la cual se aplicará la conversión.
c
c  c Un valor numérico que indica el tipo de conversión que será aplicada a la
cadena de caracteres.
c
c ,(/0c Opcional. La LocaleID, si es diferente de la LocaleID del sistema. (La
c LocaleID del sistema es la predeterminada.)
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
Losc valores del argumento    $ son:
c
Coc sa e Valor 3escripció
vbUpperCase 1 Convierte la cadena a caracteres en mayúscula.
c
vbGowerCase
c 2 Convierte la cadena a caracteres en minúscula.
c
vbProperCase 3 Convierte a mayúscula la primera letra de cada palabra de la
c cadena.
vbWide*
c 4* Convierte los caracteres cortos (un único byte) de la cadena a
c caracteres anchos (doble byte).
vbarrow* 8* Convierte los caracteres anchos (doble byte) de la cadena a
c caracteres cortos (un único byte).
c
vbKaaka a** 16** Convierte los caracteres Hiragana de la cadena a caracteres
c Katakana.
c
vbHiraa a** 32** Convierte los caracteres Katakana de la cadena a caracteres
c Hiragana.
vbU icode 64 Convierte la cadena a   utilizando la página de códigos
c
predeterminada del sistema.
c
vbFromU icode 128 Convierte la cadena de   a la página de códigos
c predeterminada del sistema.
c
c
Ñjemplo:
c
cDim CadenaPrincipal, DiCadena
c
cCadenaPrincipal = "Carlos Bucarelly"
cDiCadena = UCase(CadenaPrincipal) 'Devuelve CARLOS BUCARÑLLY
cDiCadena = GCase(CadenaPrincipal) 'Devuelve carlos bucarelly
DiCadena = rCo v(CadenaPrincipal, 1) 'Devuelve CARLOS BUCARÑLLY
cDiCadena = rCo v(CadenaPrincipal, 2) 'Devuelve carlos bucarelly
cDiCadena = rCo v(CadenaPrincipal, 3) 'Devuelve Carlos Bucarelly
c
- F
c ció Asc:
c
La función Asc devuelve el código de carácter ANSI o DBCS del primer carácter de una cadena.
c
c
Formao:
c
c Asc(  )
c
Ñl argumento obligatorio  c es una expresión de cadena válida. Si cadena no contiene
c
caracteres, se produce un cc Pcc  .
c
c
Ñjemplo:
c
c Dim DiCodigo
DiCodigo = Asc("A") 'Devuelve 65.
c DiCodigo = Asc("a") 'Devuelve 97.
c DiCodigo = Asc("Adios") 'Devuelve 65.
c
- F
c ció Chr:
c
Devuelve una cadena correspondiente al código ANSI o DBCS especificado como argumento.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció al Ge aje Basicc


Capílo 4
c c
c
Ñjemplo:
c
Dim DiCadena
c DiCadena = Chr(65) µDevuelve A.
c DiCadena = Chr(97) µDevuelve a.
c DiCadena = Chr(56) µDevuelve 8.
c
- F ció ë r:
c
c
Devuelve un valor numérico que especifica la posición de la primera aparición de una cadena en
c desde el principio de la cadena.
otra,
c
Formao:
c
c
ë r(6   ,  )c  "c6 P   )
c
3oc de:
c
c  c Opcional. Ñs un valor numérico que indica la posición desde donde se
c comenzará a realizar la búsqueda. Si se omite, la búsqueda se hará
desde el principio de la cadena principal.
c
c  )c Una expresión cadena donde se realizará la búsqueda.
c
c  "c Una expresión cadena que indica la cadena que se busca.
c
P  c Opcional. Un valor numérico que indica la clase de comparación que se
c
utilizará cuando se evalúen subcadenas. Si se omite, se realiza una
c comparación binaria.
c
c
Ñl cargumento P   puede tener los valores siguientes:
c
Coc sa e Valor 3escripció
vbUseComparepio
c ±1 Realizar una comparación utilizando el valor de la
instrucción pio CompareÀ
c
vbBi aryCompare 0 Realizar una comparación binaria.
c
vbTexCompare
c 1 Realiza una comparación basada en el texto.
c
vb3aabaseCompare 2 Sólo para Dicrosoft Access. Realizar una comparación
c basada en la información de su base de datos.
c
Ñjemplo:
c
cDim CadenaPrincipal, CadenaBuscada, PosicionCadena
c
c
CadenaPrincipal = "La computadora de pedro" 'Cadena donde se busca.
CadenaBuscada
c = "computadora" 'Cadena que se buscará.
c
'Realiza una búsqueda basada en una comparación textual comenzando desde la posición 1.
c
PosicionCadena = ë r(1, CadenaPrincipal, CadenaBuscada, 1) 'Devuelve 4.
c
c
'Realiza una búsqueda basada en una comparación textual comenzando desde la posición 15.
PosicionCadena = ë r(15, CadenaPrincipal, CadenaBuscada, 1) 'Devuelve 0.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
- F
c ció ë rRev:
c
Devuelve un valor numérico que especifica la posición de la primera aparición de una cadena en
c desde el final de la cadena.
otra,
c
c
Formao:
c
ë rRev(6   ,  )c  "c6 P   )
c
3oc de:
c
c  c Opcional. Ñs un valor numérico que indica la posición desde donde se
c comenzará a realizar la búsqueda. Si se omite, la búsqueda se hará
c desde el principio de la cadena principal.
c  )c Una expresión cadena donde se realizará la búsqueda.
c
c  "c Una expresión cadena que indica la cadena que se busca.
c
c P  c Opcional. Un valor numérico que indica la clase de comparación que se
utilizará cuando se evalúen subcadenas. Si se omite, se realiza una
c comparación binaria.
c
c
Ñjemplo:
c
c Dim CadenaPrincipal, CadenaBuscada, PosicionCadena
c
CadenaPrincipal = "La computadora de pedro" 'Cadena donde se busca.
c CadenaBuscada = "computadora" 'Cadena que se buscará.
c
c 'Realiza una búsqueda basada en una comparación textual comenzando desde la posición 1.
c PosicionCadena = ë rRev(1, CadenaPrincipal, CadenaBuscada, 1) 'Devuelve 4.
c
'Realiza una búsqueda basada en una comparación textual comenzando desde la posición 1.
c PosicionCadena = ë rRev(1, CadenaPrincipal, ³pedro´, 1) 'Devuelve 19.
c
c
- 4À5À1À5À4 Go id de  a cade a
c
Determinar
c la longitud de una cadena juega un papel muy importante al momento que se esta
manipulando cadenas de caracteres. Ñn muchas ocasiones verá la necesidad de conocer la
c
cantidad de caracteres que posee una cadena de caracteres. Para esto, disponemos de la función
Gec , que devuelve una expresión numérica que indica la cantidad de caracteres de una cadena
c
pasada como argumento a la función.
c
 formao es:
c
c Ge (  )
c
Ñl cargumento cadena es una expresión de cadena valida. Si la cadena es nula, devuelve cero.
c
Ñjemplo:
c
c Dim LongitudCadena
c LongitudCadena = Ge (³carlos´) µDevuelve 6.
LongitudCadena = Ge (³Pedro Danuel´) µDevuelve 12. Ñl espacio se cuenta.
LongitudCadena = Ge (³´) µDevuelve 0.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
- 4À5À1À6
c Ñjercicios prácicos
c
1. Nuestro primer ejercicio práctico consiste en una calculadora que permite calcular algunas de las
c
funciones matemáticas y trigonométricas vistas en este capítulo.
c
c un nuevo proyecto.
ó Abra
c
ó Inserte una caja de texto y 16 botones de comando, tal y como se ve en la siguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Ñstablezca los siguientes valores en las propiedades de cada control indicado en la siguiente
tabla:
c
c
u  
c u  
 c u   c  c  c
c #  cccc
 c
u c
c c  $  c  2c  2c
c c & cc'c0
c u c
c * c  &c  &c
c
 c  c u  c
c u ' c  "c  "c
 2c
c  2c u  c
u    c
c  (c  (c
 &c  &c u c
c u  c 
c u $ c )c
c
 "c  "c  c
c
c
c u c
c
c
 (c  (c
c u c
c
 )c  )c
u /c
c
 +c  +c
c u '5c
c
 -c  -c
c u  c
c
 .c  .c
c u c
c
u
$ c /c
 c c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
ó Dentro
c del evento KeyPress de la caja de texto escriba:
c
'Hace
c que una caja solo acepte números, el punto y el signo de menos.
If InStr("0123456789.m" & Chr(8) & Chr(13), Chr(KeyAscii)) = 0 Then
c
KeyAscii = 0
c If
Ñnd
c
c
ó Dentro del evento oFocs de la caja de texto escriba:
c
c
'Hace que el punto de inserción se coloque al final de la caja.
c
txtNumero.SelStart = Len(txtNumero.Text)
cc
c
ó Dentro del evento Click del botón - cescriba:
c
On
c Ñrror Resume Next 'Ñn caso que la caja este vacía.
'Redondea
c el valor de la caja de texto.
txtNumero.Text = Round(CDbl(txtNumero.Text))
c
c
c
ó Dentro del evento Click del botón  cescriba:
c
On
c Ñrror Resume Next 'Ñn caso que la caja este vacía.
'Ñlimina la parte decimal del valor de la caja de texto.
c
txtNumero.Text = Int(CDbl(txtNumero.Text))
c
c
c
ó Dentro del evento Click del botón  c.cescriba:
c
On Ñrror Resume Next 'Ñn caso que la caja este vacía.
c
'Calcular el valor absoluto del valor de la caja de texto.
c
txtNumero.Text = Abs(CDbl(txtNumero.Text))
c
c
c
ó Dentro del evento Click del botón (cescriba:
c
'Limpia la caja de texto.
c
txtNumero.Text = ""
c
txtNumero.SetFocus
c
c
ó Dentro del evento Click del botón ,cescriba:
c
On
c Ñrror Resume Next 'Ñn caso que la caja este vacía.
'Calcula el logaritmo natural del valor de la caja de texto.
c
txtNumero.Text = Log(CDbl(txtNumero.Text))
c
c
ó Dentro
c del evento Click del botón ,)cescriba:
c
On Ñrror Resume Next 'Ñn caso que la caja este vacía.
c
'Calcula el logaritmo base diez del valor de la caja de texto.
c
txtNumero.Text = Log(CDbl(txtNumero.Text)) / Log(10)
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
ó Dentro
c del evento Click del botón - cescriba:
c Ñrror Resume Next
On 'Ñn caso que la caja este vacía.
c
'Calcula la raíz cuadrada del valor de la caja de texto.
txtNumero.Text
c = Sqr(CDbl(txtNumero.Text))
c
c
ó Dentro del evento Click del botón (  cescriba:
c
c Ñrror Resume Next
On 'Ñn caso que la caja este vacía.
'Calcula
c el cuadrado del valor de la caja de texto.
txtNumero.Text
c = CDbl(txtNumero.Text) * CDbl(txtNumero.Text)
c
c
ó Dentro del evento Click del botón 'cescriba:
c
On
c Ñrror Resume Next 'Ñn caso que la caja este vacía.
'Calcula
c el seno del valor de la caja de texto.
txtNumero.Text = Round(Sin(CDbl(txtNumero.Text) * (3.141592 / 180)), 14)
c
c
c
ó Dentro del evento Click del botón (oscescriba:
c
On
c Ñrror Resume Next 'Ñn caso que la caja este vacía.
'Calcula el coseno del valor de la caja de texto.
c
txtNumero.Text = Round(Cos(CDbl(txtNumero.Text) * (3.141592 / 180)), 14)
c
c
c
ó Dentro del evento Click del botón  cescriba:
c
On Ñrror Resume Next 'Ñn caso que la caja este vacía.
c
'Calcula la tangente del valor de la caja de texto.
c
txtNumero.Text = Round(Tan(CDbl(txtNumero.Text) * (3.141592 / 180)), 14)
c
c
c
ó Dentro del evento Click del botón ' cescriba:
c
'Te muestra en un cuadro de mensaje si el número es positivo o negativo.
Ifc Len(txtNumero.Text) > 0 Then
Ifc Sgn(CDbl(txtNumero.Text)) = 1 Then DsgBox ("Ñl número es positivo.")
Ifc Sgn(CDbl(txtNumero.Text)) = m1 Then DsgBox ("Ñl número es negativo.")
c If
Ñnd
c
ó Dentro del evento Click del botón ' cescriba:
c
c Ñrror Resume Next
On 'Ñn caso que la caja este vacía.
'Calcula
c la secante del valor de la caja de texto.
txtNumero.Text
c = Round(1 / Cos(CDbl(txtNumero.Text) * (3.141592 / 180)), 14)
c
c
ó Dentro del evento Click del botón (os cescriba:
c
On
c Ñrror Resume Next 'Ñn caso que la caja este vacía.
'Calcula
c la cosecante del valor de la caja de texto.
txtNumero.Text = Round(1 / Sin(CDbl(txtNumero.Text) * (3.141592 / 180)), 14)

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
ó Dentro
c del evento Click del botón ( cescriba:
c Ñrror Resume Next
On 'Ñn caso que la caja este vacía.
c
'Calcula la cotangente del valor de la caja de texto.
txtNumero.Text
c = Round(1 / Tan(CDbl(txtNumero.Text) * (3.141592 / 180)), 14)
c
c
ó Dentro del evento Click del botón . c cescriba:
c
c Ñrror Resume Next
On 'Ñn caso que la caja este vacía.
'Calcula
c el arcotangente del valor de la caja de texto.
txtNumero.Text
c = Round(Atn(CDbl(txtNumero.Text) * (3.141592 / 180)), 14)
c
c
ó Corra la aplicación.
c
c
Ñscriba algún valor en la caja de texto y, a continuación, haga clic sobre la función matemática que
c ejecutar sobre ese número.
quiera
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio8-4 para el formulariocy
c
Ñjercicio8-4 para el proyecto.
c
c
2. cÑn nuestro segundo ejercicio veremos como utilizar algunas de las funciones de manipulación de
cadenas
c vistas en este capitulo.
c
ó Abra un nuevo proyecto.
c
ó Inserte
c dos etiquetas, dos cajas de texto, un control frame y dentro de este doce botones de
comando. Tal y como se muestra en la siguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Ñstablezca los siguientes valores en las propiedades de cada control indicado en la tabla de la
c
siguiente página:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
c
u   u  
c c u    c c c  )c  )c
c #  cccc u 
c c  c
cc !  c  +c  +c
u  $ c;c u   ccc
c2c  c  -c -c
! 
c u  $ c2;c u cc c
cc  c  .c  .c
c * c u  cc
c2c  2c  /c  /c
c * u   c  c
c
  c u ' $c  c  c
c u 
c
: :c
c
 c  c u $ c 2c
c u   c  c   c  8  c
c
 2c  2c c
c u   cc c
c
 &c  &c
c u   cc  c
c
 "c  "c
c u 
c
:
c
uV $ c (c
c
 c 
c:
c
c
c
ó Dentro del evento Click del botón (   escriba:
c
Dim
c DiCadena As String
'Combina las dos cadenas escritas en las cajas de texto y la muestra en un DsgBox.
c
DiCadena = txtCadena1.Text & " " & txtCadena2.Text
c
DsgBox (DiCadena) µDuestra la cadena resultante.
c
c
c
ó Dentro del evento Click del botón
 cc   escriba:
c
'Ñxtrae
c la cantidad de caracteres especificado del texto contenido en la primera caja.
On
c Ñrror Resume Next 'Ñn casos de que las cajas se dejen vacías.
c numero As Long
Dim
c DiCadena As String
Dim
c
'Solicita
c la cantidad de caracteres a leer.
numero
c = InputBox("Introduzca la cantidad de caracteres a extraer:")
c utiliza la función Left para leer desde la izquierda de la caja de texto.
'Se
c
DiCadena = Left(txtCadena1.Text, numero)
c
µDuestra
c la cadena resultante.
DsgBox
c (DiCadena)
c
c
ó Dentro
c del evento Click del botón
 cc  escriba:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
'Ñxtrae
c la cantidad de caracteres especificado del texto contenido en la primera caja.
On
c Ñrror Resume Next 'Ñn casos de que las cajas se dejen vacías.
c numero As Long
Dim
c DiCadena As String
Dim
c
'Solicita
c la cantidad de caracteres a leer.
numero
c = InputBox("Introduzca la cantidad de caracteres a extraer:")
c utiliza la función Right para leer desde la derecha de la caja de texto.
'Se
c
DiCadena = Right(txtCadena1.Text, numero)
c
µDuestra
c la cadena resultante.
DsgBox
c (DiCadena)
c
c
ó Dentro del evento Click del botón (c cescriba:
c
On
c Ñrror Resume Next 'Ñn caso de que las cajas se dejen vacías.
c
txtCadena1.Text = UCase(txtCadena1.Text) 'Convierte a mayúscula la primera caja.
c
txtCadena2.Text = UCase(txtCadena2.Text) 'Convierte a mayúscula la segunda caja.
c
c
ó Dentro
c del evento Click del botón (c cescriba:
c Ñrror Resume Next 'Ñn caso de que las cajas se dejen vacías.
On
c
c
txtCadena1.Text = LCase(txtCadena1.Text) 'Convierte a minúscula la primera caja.
txtCadena2.Text
c = LCase(txtCadena2.Text) 'Convierte a minúscula la segunda caja.
c
c
ó Dentro del evento Click del botón (c c1 cescriba:
c
c Ñrror Resume Next 'Ñn caso de que las cajas se dejen vacías.
On
c
txtCadena1.Text = StrConv(txtCadena1.Text, 3) 'Convierte a tipo oración la primera caja.
c
txtCadena2.Text = StrConv(txtCadena2.Text, 3) 'Convierte a tipo oración la segunda caja.
c
c
ó Dentro
c del evento Click del botón (c c1 cescriba:
c
On Ñrror Resume Next 'Ñn caso de que las cajas se dejen vacías.
c CadenaInvertida As String
Dim
c i As Long
Dim
c
'Iniciamos
c el bucle para leer carácter por carácter el contenido de la caja.
For i = Len(txtCadena1.Text) To 1 Step m1
c
c 'Leemos carácter por carácter desde la derecha.
c CadenaInvertida = CadenaInvertida & Did(txtCadena1.Text, i, 1)
c
Next i
c
µDostramos en la primera caja la cadena invertida.
c
txtCadena1.Text = CadenaInvertida

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
ó Dentro
c del evento Click del botón / c c
cescriba:
c
µInvierte el texto contenido en la primera caja de texto.
c Ñrror Resume Next 'Ñn caso de que las cajas se dejen vacías.
On
Dim
c CadenaInvertida As String
Dim i As Long
c
c
µIniciamos el bucle para leer caracter por carácter el contenido de la caja de texto.
c i = Len(txtCadena1.Text) To 1 Step m1
For
c
'Leemos caracter por caracter desde la derecha.
CadenaInvertida
c = CadenaInvertida & Did(txtCadena1.Text, i, 1)
Next i
c
c
µDuestra la cadena invertida en la primera caja de texto.
c
txtCadena1.Text = CadenaInvertida
c
c
ó Dentro del evento Click del botón ( cc  cescriba:
c
'Lee
c el código ANSI del primer carácter de la primera caja de texto.
On
c Ñrror Resume Next 'Ñn caso que la primera caja se deje vacía.
Dim DiCodigo
c
DiCodigo = Asc(txtCadena1.Text)
c
µDuestra el código ANSI del carácter en un cuadro de mensaje.
c
DsgBox (DiCodigo)
c
c
ó Dentro del evento Click del botón ,c  cescriba:
c
'Lee
c y muestra en un DsgBox la longitud de cada caja de texto.
c
DsgBox ("La primera caja tiene " & Len(txtCadena1.Text) & " caracteres.")
c
c
DsgBox ("La segunda caja tiene " & Len(txtCadena2.Text) & " caracteres.")
c
c
c
ó Dentro del evento Click del botón . c cescriba:
c
'Agrega espacios entre cada carácter.
c i As Long
Dim
c CadenaÑspacios As String
Dim
c
'Iniciamos
c el bucle para leer carácter por carácter la caja de texto.
For
c i = 1 To Len(txtCadena1.Text)
'Leemos cada carácter y agregamos un espacio con Chr(32).
c CadenaÑspacios = CadenaÑspacios & Did(txtCadena1.Text, i, 1) & Chr(32)
c
Next i
c
'Dostramos
c la cadena resultante.
txtCadena1.Text
c = CadenaÑspacios
c
c
ó Dentro del evento Click del botón (c 7 cescriba:
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
'Convertimos
c a mayúscula y minúscula cada carácter de la primera caja.
Dimc i As Long
Dim CadenaConvertida As String
c
c
'Iniciamos el bucle para leer carácter por carácter el contenido de la caja.
Forc i = 1 To Len(txtCadena1.Text)
cIf i Dod 2 ®> 0 Then
cCadenaConvertida = CadenaConvertida & UCase(Did(txtCadena1.Text, i, 1))
Ñlse
cCadenaConvertida = CadenaConvertida & LCase(Did(txtCadena1.Text, i, 1))
cÑnd If
c i
Next
c
'Dostramos
c la cadena resultante.
txtCadena1.Text = CadenaConvertida
c
c
c
ó Dentro del evento Click del botón  c  cescriba:
c
'Buscar y borrar un carácter especificado.
Dimc i As Long
Dimc Cadena As String
Dimc Caracter As String
c
'Lee
c el carácter que se quiere borrar.
Caracter = InputBox("Introduzca el carácter que desea borrar de la caja:")
c
c
'Iniciamos el bucle para leer carácter por carácter el contenido de la caja.
Forc i = 1 To Len(txtCadena1.Text)
c'Verifica si el carácter que se quiere borrar coincide con uno de la caja.
cIf Did(txtCadena1.Text, i, 1) ®> Caracter Then
'Vamos creando la cadena sin el carácter que se quiere borrar.
cCadena = Cadena & Did(txtCadena1.Text, i, 1)
cÑnd If
c i
Next
c
'Dostramos
c la cadena resultante.
txtCadena1.Text = Cadena
c
c
c
ó Corra la aplicación.
c
ó Ñscriba algún texto en la primera y la segunda caja de texto.
c
ó Utilice
c cada uno de los botones de comando para probar los códigos escritos en cada uno de
ellos.
c
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio9-4 para el formulariocy
c
Ñjercicio9-4 para el proyecto.
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0

ë rodcció al Ge aje Basicc


Capílo 4
c c
- 4À5À2
c F cio es defi idas por el sario
c
Además de las  c  propias de Visual Basic usted podrá crear sus propias funciones
c
y asignarle el nombre que usted considere adecuado. Las funciones definidas por el usuario juegan
unc papel muy importante en una aplicación. Ñstas permiten crear subprogramas dentro de la
c
aplicación que pueden ser ejecutados con solo escribir su nombre y los argumentos que usted
agrego
c cuando la definió.
c
La diferencia entre las  c  y las  c   c c   radica en que en la
c
primera usted no tiene ninguna participación en el código que posee dicha función, sin embargo, las
c
funciones definidas por el usuario pueden ser modificadas y perfeccionadas cada vez que usted lo
c
considere adecuado.
c
Las funciones definidas por el usuario tienen las siguientes ventajas:
c
c à Ñvitan la repetición de código.
c
c à Pueden ser modificadas por el usuario.
c
c à Se adaptan a la necesidad del usuario.
c
à Podrá crear funciones para realizar cálculos simples y complejos.
c
c à Podrá indica el tipo de alcance de la función.
c
c crear una función Visual Basic dispone de la palabra reservada F cio . Una función básica
Para
tiene
c el siguiente formato:
c
F cio ×P(6 P) c6 P" c:6 P× ) c
c
c Sentencias«
c
Ñ cd F cio
c
c
3o de:
c
c ×Pc Ñs un identificador valido que indica el nombre de la función.
c
c P)c Opcional. Son variables que proporcionan valores requeridos por
c P"c la función para su correcto funcionamiento.
P×c
c
c ' :c Conjunto de código que se ejecutan dentro de la función.
c
c
c
Vamos a crear nuestra primera función para que pueda observar el uso correcto de estas. Nuestra
c
primera función va a consistir en una función que permita calcular el sueldo bruto de un empleado a
c de sus horas trabajadas y el precio por horas de trabajo. Ñs obvio que Visual Basic no posee
partir
unac función para realizar dicho cálculo, por tal razón el usuario se verá en la necesidad de crearla.
A cesta función le recomendamos poner el nombre de SueldoBruto, tal y como se muestra en la
siguiente
c página:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
Function
c SueldoBruto(HorasTrabajadas As Long, PrecioPorHora As Currency)
c'Calcula el sueldo bruto.
SueldoBruto = HorasTrabajadas * PrecioPorHora
Ñndc Function
c
Al cescribir esta función en su proyecto, desde el editor de código podrá calcular el sueldo bruto de
unc empleado con solo escribir el P de la función y especificando algún valor para los
argumentos $      y   $ .
c
c
Ñjemplo:
c
c Dim DiSueldoBruto As Currency
c
DiSueldoBruto = SueldoBruto(2, 200) µDevuelve 400.
c
c DiSueldoBruto = SueldoBruto(5, 100) µDevuelve 500.
c
c
Podrá
c crear funciones que no requieran ningún tipo de argumento, por ejemplo:
c
µLa siguiente función muestra un mensaje de bienvenida cuando la ejecute.
c
Function Densaje()
c
c DsgBox(³Bienvenido a Visual Basic 6.0´)
c
Ñnd Function
c
c ejecutar esta función desde cualquier procedimiento. Por ejemplo, dentro de un botón de
Podrá
c
comando:
c
Private
c Sub Command1 Click()
c
Densaje µLlama la función. Se muestra el mensaje de bienvenida en un DsgBox.
c
Ñndc Sub
c
c
4À6c ëTR3UCCë A GA ÑTRUCTURA 3Ñ 3AT
c c
Unac esrcra de daos es una colección de datos organizados de un modo particular. Las
c
estructuras de datos pueden ser de dos tipos:   cc c  y   cc c
 P
c .
c
Las esrcras de daos esáicas son aquellas en las que se asigna una cantidad fija de
c
memoria cuando se declara la variable. Las esrcras de daos di ámicas son aquellas cuya
c
ocupación de memoria puede aumentar o disminuir en tiempo de ejecución del programa.
c
- 4À6À2
c Gos Arrays (Arrelos)
c
Un Array es una estructura de datos en la que se almacena una colección de datos del mismo tipo
c ejemplo, los salarios de los empleados de una empresa). De otro modo se puede decir que un
(por
c es una lista de variables con el mismo nombre que solo se diferencia por un índice.
Array
c
Ñjemplo:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
Salario
c È1ß
Salario È2ß
c
Salario È3ß
. c
. c
. c
Salario
c Ènß
c
Donde '   es el nombre del Array y los números dentro de los paréntesis llamados índices
c
diferencia cada uno de los elementos del Array. Cada elemento del Array pueden tomas valores
c
distintos y tratar de modo como datos independientes, es decir, ningún elemento afecta los datos
quec contienen los otros elementos del Array.
c
Los Arrays se clasifican en:
c
c à Unidimensionales (vectores o listas)
c
c à Dultidimensionales (tablas o matrices)
c
- 4À6À1À1 Arrays  idime sio ales: vecores
c
Unc Array de una dimensión es aquel que cada elementos del Array solo puede almacenar un solo
valor
c en una sola posición. Ñn los Arrays de una dimensión se conoce de antemano el número de
elementos que contiene ya que debe ser especificado en tiempo de diseño.
c
c
Todos los elementos del Array deben ser del mismo tipo. Cuando se declara un Array de  
c
ë    esto quiere decir, que todos los elementos del Array serán de tipo entero.
c
c
Ñjemplo:
c
c
' cc c P  c c  cc#c cc    cc. cc#c Pc
c  Pc  c  c c c Pc  c c Pc  c c  c  c
c 
c
Pc  c  cc. ccc cc   ccPc
c
Para declara este Arrays lo hacemos de la misma forma en que declaramos una variable, con la
c
única diferencia de los paréntesis y el número de elementos del Array dentro de estos:
c
Dimc Calificaciones(50) As Integer
c
Dec esta manera se declara el Array Calificaciones con 50 posiciones para almacenar valores de
tipo
c entero. Para almacenar o leer algún dato en el Array, deberá especificar el nombre del Array y
dentro de los paréntesis el número de posición de ese elemento dentro del Array:
c
c Calificaciones(1) µPrimer elemento.
c Calificaciones(2) µSegundo elemento.
c
c Calificaciones(3) µTercer elemento.
c Calificaciones(4) µCuarto Ñlemento.
c .
c .
c
c .
Calificaciones(50) µÚltimo elemento.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
- 4À6À1À1À1
c 3eclaració de  Array  idime sio al
c
Para declarar un Array unidimensional debe hacer lo siguiente:
c
c 1. Declarar el nivel de alcance del Array (Público o Local).
c 2. Ñspecificar un identificador valido para el Array.
c 3. Dentro de paréntesis ( ) escriba el número de posiciones que tendrá el Array.
c 4. Indicar el tipo de datos que se almacenarán en los elementos del Array.
c formao es:
c
c 3im P% %    PcAs Tipo
c
Donde P% %   es un identificador valido, es decir, un nombre valido para una variable,
c
 P es un rango ordinal, enumerado, lógico o tipo carácter y  c es el tipo de datos de los
c
elementos del Array (String, Long, Double, Integer, Boolean, Currency, etc.).
c
c
Ñjemplos:
c
µDeclara un Array llamado Nombre de tipo String de 100 elementos.
c
Dim Nombres(100) As String
c
c µDeclara un Array llamado Números de tipo Long de 50 elementos.
c Dim Numeros(50) As Long
c
µDeclara dos Arrays de 100 elementos, uno de tipo Currency y otro de tipo Integer.
c
Dim Sueldo(100) As Currency, HorasTrabajadas(100) As Integer
c
c
- 4À6À1À1À2 Almace ar y leer daos e  Array  idime sio al
c
Para
c almacenar y leer datos en los elementos de un Array unidimensional, deberá indicar el nombre
del Array y la posición del elemento donde quiere almacenar los datos. Por ejemplo, si queremos
c
una aplicación que permita almacenar en dos Arrays los nombres y apellidos de cien personas
c
introducidas mediante cajas de texto diseñaríamos una aplicación similar a la siguiente:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
ó Abra
c un nuevo proyecto y diseñe el entorno que vimos en la imagen de la página anterior.
c la sección general del editor de código escriba:
ó Ñn
c
Dim Nombre(30) As String
c Apellido(30) As String
Dim
cc
c el evento Click del botón Arear escriba:
ó Ñn
c
c
'Verifica que las cajas no se dejen vacías.
Ifc Len(Trim(Text1.Text)) = 0 Then
c DsgBox ("Debe introducir un nombre.")
Text1.SetFocus 'Hace que la caja reciba el enfoque.
c
c
ÑlseIf Len(Trim(Text2.Text)) = 0 Then
c DsgBox ("Debe introducir el apellido.")
c Text2.SetFocus 'Hace que la caja reciba el enfoque.
Ñlse
c
'Contamos los elementos del Array que contienen información.
c Dim i As Long
c Dim TotalLeidos As Long
c
c For i = 1 To UBound(Nombre) 'Repite hasta que se lean todos los elementos del Arrays.
c If Len(Trim(Nombre(i))) > 0 Then
TotalLeidos = TotalLeidos + 1 'Acumula los elementos del Arrays que tienen datos.
c 'Ñsto es para saber cual será la posición del siguiente elemento.
c Ñnd If
c Next I
c
c Nombre(TotalLeidos + 1) = Text1.Text 'Agrega el nombre al Array.
Apellido(TotalLeidos + 1) = Text2.Text 'Agrega el apellido al Array.
c
c 'Limpiamos las cajas.
c Text1.Text = ""
c Text2.Text = ""
c Text1.SetFocus
Ñnd If
c
c
c el evento Click del botón Leer arreglo escriba:
ó Ñn
c i As Integer
Dim
c
'Leemos todos los elementos del Array y lo mostramos en el ListBox.
For
c i = 1 To UBound(Nombre)
c If Len(Trim(Nombre)) > 0 Then 'Verificamos los elementos que contienen datos.
List1.AddItem Nombre(i) & " " & Apellido(i) 'Ñscribimos los elementos en la ListBox.
c Ñnd If
c
Next i
c
ó Corra
c la aplicación.
c
ó Ñscriba un nombre y su apellido, luego haga clic en el botón Arear. Repite la misma operación
c
varias veces. Después, haga clic en el botón leer Array. Podrá notar que los datos no se perdieron,
sino
c que se almacenaron en un arreglo para su posterior lectura.
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio10-4 para el formularioc
y Ñjercicio10-4 para el proyecto.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
- 4À6À1À1À3
c peracio es co los eleme os de  Array  idime sio al
c
Una de las principales ventajas de los arreglos es que se puede realizar un sin número de
c
operaciones con los elementos que este contiene. Ñntre las cuales tenemos: consultas, cálculos
c
matemáticos, concatenación, eliminación y modificación de uno o varios elementos, etc. Para
c
realizar un determinado tipo de operación, debemos de recorrer todos los elementos del Array
utilizando
c un bucle for, y luego establecer los criterios u operaciones que desea realizar con dichos
elemento. Para entender esto tenemos el siguiente problema:
c
c
Imaginase que usted tiene almacenado en una Array los nombres, apellidos y sueldos de 2000
c
personas y usted necesita obtener los siguientes reportes:
c
c a) Nombres y apellidos de personas que ganan más de 5000 pesos.
c b) Nombres de las personas cuyo apellido sea Rodríguez.
c) Nombre y apellidos de las personas que ganan menos de 2000 pesos.
c
Parac obtener estos reportes tendremos que hacer un recorrido por todos los elementos del Array, y
c
mediante condiciones verificar que se cumplan los criterios especificados. Para esto necesitaríamos
unc código similar al que se muestra a continuación:
c
Dim i As Integer
c
c
'Suponemos que el arrays nombre ya exista y contenga los nombres de 2000 personas.
c
'Suponemos que existen también los arrays apellidos y sueldos.
c
For i = 1 To UBound(nombres)
c
c
'Obtenemos el primer reporte. Personas que ganen más de 5000 pesos.
If csueldos(i) > 5000 Then 'Verificamos los sueldos mayores de 5000 dentro del array.
c
'Sic se encuentra un sueldo mayor de 5000 escribimos en una ListBox el nombre y el apellido de la
µpersona.
c
List1.AddItem nombres(i) & " " & apellidos(i)
c
Ñnd c If
c
'Obtenemos
c el segundo reporte. Nombres de las personas cuyo apellido sea Rodríguez.
f UCase(apellidos(i)) = UCase("rodriguez") Then 'Verificamos los apellidos Rodríguez.
c
'Sic encontramos algún apellido igual a Rodríguez mostramos el nombre y el apellido de la persona
µenc otra ListBox.
cList2.AddItem nombre(i) & " " & apellidos(i)
c
Ñnd If
c
c
'Obtenemos el tercer reporte. Nombres y apellidos de las personas que ganan menos de 2000
c
µpesos.
c
If sueldos(i) ® 2000 Then 'Verificamos los sueldos menores de 2000 dentro del array Sueldos.
'Sic se encuentra un sueldo menor de 2000 pesos escribimos en una ListBox el nombre y el apellido
µde la persona.
c
List3.AddItem nombres(i) & " " & apellidos(i)
c
Ñnd c If
Nextc i

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
- 4À6À1À1À4
c Ñjercicios prácicos
c
1.m Hacer un programa que pida los datos de treinta empleados mediante 7 cajas de texto: ×Pc
c c0  Pc   c' c0  cc . Los datos deben ser mostrados
.
dec la siguiente manera:
c
c
×Pc . c 0c   c ' c c 0  c  c
xxxxxxxx xxxxxxxx xxxxxxxxxxxx xxxxxx xxxxxxxx xxxxxxx
c
xxxxxxxx xxxxxxxx xxxxxxxxxxxx xxxxxx xxxxxxxx xxxxxxx
c
xxxxxxxx xxxxxxxx xxxxxxxxxxxx xxxxxx xxxxxxxx xxxxxxx
c
2.mc Hacer un programa que mediante cajas de texto almacene en dos arrays 20 números. Luego se
debe
c sumar los elementos de cada array y almacenarse en otro arrays. Dostrar los resultados en
una ListBox.
c
108
3.mc Hacer un programa que multiplique por tres los elementos de un array. Ñl programa debe
c
permitir almacenar 10 números mediante una caja de texto. Luego de estar almacenados, se debe
c
multiplicar por tres cada uno de los elementos del array. Los productos deben ser almacenados en
otro
c array. Dostrar los resultados en una ListBox.
c
Ñjemplo:
c
10c 30
20c 60
5 c 15
c
4.m Ñscribir un programa que reste el contenido de dos arrays. Cada array debe tener 10 elementos
c diferencia debe ser almacenada en otro array. Dostrar los resultados en una ListBox.
y la
c
5.mc Ñscribir un programa que divida el contenido de tres arrays. Cada array debe tener 10
elementos
c y el cociente debe ser almacenado en otro array. Dostrar los resultados en una ListBox.
c
6.m Ñscribir un programa que calcule el resto de los valores de dos arrays. Cada array debe tener 10
c
elementos y el resto de la división debe ser almacenado en otro array. Dostrar los resultados en
unac ListBox.
c
7.mc Hacer un programa que permita almacenar 15 valores en un array y verificar cuales de ellos
están más cercano al número 100 y luego mostrarlos en una ListBox.
c
8.mc Hacer un programa que permita almacenar 15 valores en un array y luego verificar cuales de
c es positivo y luego mostrarlos en una ListBox.
ellos
c
9.mc Hacer un programa que calcule el cuadrado de los elementos de un array. Los cuadrados deben
serc almacenados en otro array y mostrados en una ListBox.
c Hacer un programa que pida 5 nombres y luego esos nombres deben ser mostrados de forma
10.m
c
inversa. Dostrar los resultados en una ListBox.
c
c
Ñjemplo:
c
0 cc  0 cc 
c
Carlos José
c
Pablo Nelson
c
Nelson Pablo
José Carlos

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
- 4À6À1À2
c Arrays mlidime sio ales: ablas y marices
c
Son aquellos Arrays que poseen dos índices y uno de los índices representa las columnas del Array
y cel otro representa las filas. Ñstos Arrays llamados también Arrays bidimensionales o tablas
c
almacenan la información como registros de datos.
c
Para
c localizar y almacenar un valor en el Array se deben especificar dos posiciones, uno para la fila
y otro
c para la columna. Un Array bidimensional tiene la siguiente estructura:
c Colm as
c
c 1 2 3 4 5 6 7 8
c Ñ(1,1) Ñ(1,2) Ñ(1,3) Carlos Pablo Nelson Ñ(1,8)
1
c
2
c
Filas
c 3
c 4
c 5
c Ñ(6,1) Ñ(6,8)
6
c
c
Los valores en la parte de arriba de la tabla representas las columnas del Array y los valores a la
c
izquierda de la tabla representan las filas del Array. Para referirse a cada elemento del Array es
c
necesario especificar el nombre del Array seguido del valor de la fila y el valor de la columna.
c
c
Ñjemplo:
c
c leer el valor que posee la primera fila y la cuarta columna del Array se haría de la siguiente
Para
c
manera:
c
c 4)
Ñ(1, : Donde Ñ represente el nombre del Array, el valor 1 el numero de la fila y 4 el
número de la columna.
c
Ñnc este caso el valor de este elemento del Array es (   ya que este es el dato que se encuentra
enc la posición especificada de la tabla.
c
- 4À6À1À2À1
c Recorrido por las filas y colm as de  Array mlidime sio al
c
Como se ha dicho anterior mente es necesario especificar el valor de la fila y luego el valor de la
c
columna para leer o almacenar un valor en cualquier elemento del Array. Ñn muchas ocasiones nos
c
veremos en la necesidad de leer el contenido de una fila del Array o el contenido de una columna
delc Array. Para explicar esto lo haremos con el siguiente ejemplo:
c
Primero declaramos un Array llamado agenda con 6 filas y 5 columnas. Ñste Array también es
c
llamado Array 6x5, es decir, que posee 30 elementos.
c
c
µDeclaración de un Arrays multidimensional. Indicamos el número de filas y el número de columnas.
Dimc agenda(6, 5) As String
c
Ñsta declaración crea una tabla lógica llamada ae da que posee seis filas y cinco columnas, es
c
decir, una tabla con treinta celdas. Ñn términos de base de datos, se podría decir que esta es una
c que permite almacenar seis registros y cinco campos. La estructura sería como el que se
tabla
muestra en la siguiente página«

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
- 4À6À1À2À2
c 3eclaració de  Array mlidime sio al
c
Declarar un Array multidimensional es similar a la declaración de un Array unidimensional:
c
c 5. Declarar el nivel de alcance del Array (Público o Local).
c 6. Ñspecificar un identificador valido para el Array.
c 7. Dentro de paréntesis ( ) escriba el número de filas y el número de columnas que tendrá el
Array.
c
8. Indicar el tipo de datos que se almacenarán en los elementos del Array.
c
c formao es:
c
c 3im P% %    c  P cAs Tipo
c
Donde P% %   es un identificador valido, es decir, un nombre valido para una variable,
 c es un valor numérico que indica la cantidad de registros que podrá almacenar la tabla,  P 
escun valor numérico que indica la cantidad de campos que tendrá la tabla y  ces el tipo de datos
dec los elementos del Array (String, Long, Double, Integer, Boolean, Currency, etc.).
c
Ñjemplos:
c
c µDeclara un Array llamado empleados que permitirá almacenar 10 registros de cinco campos.
c Dim empleados(10, 5) As String
c
c µDeclara un Array llamado clientes que permitirá almacenar 10 registros de cuatro campos.
c Dim clientes(10, 4) As Long
c
Ñl cprimer Array llamado empleados podría tener la siguiente estructura:
c
c Nombre Apellido Cargo Sueldo Bruto Sueldo Neto
c
c
c
c
c
c
c
Ñl csegundo Array llamado clientes podría tener la siguiente estructura:
c
Nombre Apellido Teléfono Dirección
c
c
c
c
c
c
c
c
Ñl cnombre de cada campo dependerá de los datos que el programador desea almacenar en la en el
c Ñstos campos cambiarán dependiendo de los requerimientos de la aplicación.
Array.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
c 1 2 3 4 5
c 1 Yokasty Abreu 597m4720 01/02/1980 Los Dina
c 2 Odalis Derra 536m2152 05/04/1970 Las América
c 3 Angel Castillo 699m5235 02/03/1982 Ñl Duarte
c 45 Rosa Paulino 598m5566 09/10/1985 Ñl Luperón
Andrés Sánchez 866m5544 04/08/1950 Los tres ojos
c 6
Ñlvis Santana 565m5251 02/08/1965 Lucerna
c
c
1. c Si se desea leer el primer registro del Array que corresponde a la primera fila y a las columnas
c
1,2,3,4,5:
c
c agenda(1, 1) agenda(1, 2) agenda(1, 3) agenda(1, 4) agenda(1, 5)
c
(Pccc c c c)cc P cc cccc c  cc c c
c  P c c c. c
c
c
Ñjemplo:
c
µAgrega a una ListBox el primer registro de la tabla.
c
List1.AddItem agenda(1,1) & ³ ³ & agenda(1,2) & ³ ³ & agenda(1, 3) & ³ ³ & agenda(1, 4) & ³ ³ &
c
agenda(1,5)
c
Conc esta línea de código agregaríamos el registro Yocasty Abreu 597m4720 01/02/1980 Los Dina
enc una ListBox.
c
- 4À6À1À2À3 Almace ar y leer daos e  Array mlidime sio al
c
c Almacenar y leer datos en un Array unidimensional haga lo siguiente:
Para
c
c 1. Utilice un bucle For para leer todas las filas del Array.
c
2. Ñspecifique la variable control del bucle para representar las filas del Array.
c
c 3. Ñspecifique el número que representa cada columna que desea leer.
c
Porc ejemplo, si queremos leer todos los registros del Array agenda escribimos un código similar a
este:
c
Dimc f As Integer
c
Forc f = 1 To UBound(agenda) µRepite hasta que se lean todos los registros.
c
µLeemos todos los campos. Las filas cambian cada vez que se repite el bucle.
c
µLos campos siempre serán los mismo. Lo único que debe de cambiar es el número de la fila.
c
List1.AddItem agenda(f,1) & ³ ³ & agenda(f,2) & ³ ³ & agenda(f, 3) & ³ ³ & agenda(f, 4) & ³ ³ &
c
agenda(f,5)
c
Next
c f
c
Podrá notar que hemos especificado una variable para recorrer cada una de las filas del Arreglo.
c vez que el bucle se repite el valor de la fila cambia pasando así por todos los registros de la
Cada
c Debe tener en cuenta que los valores de las columnas deben ser siempre los mismo, es
tabla.
c no deben cambiar como lo hicimos con las filas. No es necesario especificar todas las
decir,
columnas, si solo desea leer dos campos, como por ejemplo, el nombre y el apellido, solo tendrá
que especificar las columnas 1 y 2, las demás 3, 4, 5 se excluyen.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció al Ge aje Basicc


Capílo 4
c c
c
Ñjercicio:
c
La siguiente aplicación permite almacenar en un arreglo multidimensional el nombre, apellido,
c
teléfono y dirección de varias personal.
c
c un nuevo proyecto.
ó Abra
c
ó Diseñe la siguiente pantalla:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c la sección general escriba:
ó Ñn
Dimc Agenda(200, 4) As String 'Define una tabla con 200 filas y cuatro columnas.
c
c el evento Click del botón ardar escriba:
ó Ñn
c
c
'Verifica que se escriba el nombre y el apellido de la persona.
If Len(Trim(Text1.Text))
c = 0 Then
c DsgBox ("Debe escribir un nombre.")
Text1.SetFocus
c
c Len(Trim(Text2.Text)) = 0 Then
ÑlseIf
c DsgBox ("Debe escribir el apellido.")
c Text2.SetFocus
c
Ñlse

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
Dimc i As Long
Dimc NoÑlementos As Long
c
'Contamos la cantidad de registro que tiene el arreglo
Forc i = 1 To UBound(agenda) 'Repetimos hasta leer todos los elementos.
cIf Len(Trim(agenda(i, 1))) > 0 Then 'Verificamos los elementos que tienen datos.
cNoÑlementos = nolementos + 1 µAlmacenamos los registros que tienen datos.
cÑnd If
Next I
c
c
'Almacenamos los nuevos datos en el arreglo. Para esto incrementamos en 1 el total
c
agenda(NoÑlementos + 1, 1) = Text1.Text 'Almacenamos el nombre.
agenda(NoÑlementos
c + 1, 2) = Text2.Text 'Almacenamos el apellido.
agenda(NoÑlementos
c + 1, 3) = Text3.Text 'Almacenamos el teléfono.
agenda(NoÑlementos + 1, 4) = Text4.Text 'Almacenamos la dirección.
c
c
'Limpia las cajas.
c
Text1.Text = ""
Text2.Text
c = ""
Text3.Text
c = ""
Text4.Text = ""
c
Text1.SetFocus
c
c
DsgBox ("Ñl registro ha sido agregado.")
c
Ñndc If
c
ó Dentro del evento Click del botón Geer arrelo escriba:
c
c
List1.Clear 'Limpia el ListBox.
Dimc I As Long
For I = 1 To UBound(agenda) 'Lee todos los registros del Arreglo.
c
If Len(Trim(agenda(I, 1))) > 0 Then
c
c'Agrega los elementos leídos al control ListBox.
cList1.AddItem agenda(I, 1) & " " & agenda(I, 2) & " " & agenda(I, 3) & " " & agenda(1, 4)
cÑnd If
c
Next I
c
c
ó Corra la aplicación.
c
c
ó Ñscriba los datos de varias personas. Cuando escriba los datos de cada persona haga clic en el
c ardar para almacenar los datos en el arreglo.
botón
c
ó Después
c que haya agregado los registros, haga clic en el botón Geer arrelo. Podrá notar que
todos los datos se encuentran almacenados en el arreglo.
c
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio11-4 para el formularioc
c
y Ñjercicio11-4 para el proyecto.
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció al Ge aje Basicc


Capílo 4
c c
- 4À6À1À2À4
c Ñjercicios propesos
c

m 1.mc Hacer un programa que sume los elementos de dos tablas o matrices. La primera matriz
llamada D1 y la segunda matriz llamada D2 se sumarán y sus resultados serán almacenados sen
c tercera matriz llamada DR.
una
c
c Hacer un programa que multiplique los elementos de dos matrices. La primera matriz llamada
2.m
c la segunda matriz llamada D2 y la matriz producto DP.
D1,
c
3.m Ñscribir un programa que copie todos los elementos de una tabla en otra tabla.
c
c Ñscribir un programa que cambien los elementos de dos matrices. Todos los elementos de la
4.m
c
primera matriz pasarán a la segunda matriz y todos los elementos de la segunda matriz pasarán a
la
c primera matriz.
c
5.m Ñscribir un programa que multiplique por cuatro todos los elementos de dos matrices. Luego
c ser multiplicados por cuatro deben ser sumadas y almacenados en otra matriz su resultado.
de
c
c Ñscribir un programa que divida entre dos todos los elementos de dos matrices. Luego de ser
6.m
divididos
c deben ser sumadas y almacenados en otra matriz su resultado.
c
7.m Ñscribir un programa que divida dos matrices. La primera matriz llamada    que tendrá
c números a dividir y la segunda matriz llamada    cque tendrá los números que dividirán
los
c elementos de la primera matriz. Los cocientes o resultados serán almacenados en otra matriz
los
c
llamada  .
c
4À7c PRÑ UTA PARA CTÑTARc
c
c 1. ¿Qué es un array?
c
c 2. ¿Qué es un arreglo unidimensional?
c
3. ¿Qué s un arreglo multidimencional?
c
c 4. ¿Cómo recorremos las filas de un array unidimensional?
c
c 5. ¿Cómo recorremos las filas de un array multidmensional?
c
6. ¿Qué se debe tomar en cuanta cuando recorremos las filas de un array multidimensional?
c
c 7. ¿Qué tipo de datos pueden almacenar los arrays?
c
c 8. ¿Cuánta celdas tiene un array 5x5?
c
9. ¿Cuántas filas tiene un array 10x3?
c
c 10. ¿Qué se especifica en el primer indice de un array multidimensional?
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos me s
c
Capílo 5
c
CTÑë3
c
c c
5À4 ¿Q
so los me s?
5À5c Ñleme os de los me sÀ
5À6c Ñl Ñdior de Me  (Me  Ñdior)À
c 5.3.1 Descripción de los elementos del Ñditor de Denús.
c 5.3.2 Creación de menús en Visual Basic 6.0.
5.3.3 Creación de submenús.
c
5À4 Ñve os sobre los me sÀ
5À5c Ñjercicios propesosÀ
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos me sc
Capílo 5
c c
5À1c ¿QUÉ  G MÑÚ?
c c
c Al conjunto de opciones presentadas al usuario para su
c selección en una zona determinada de la pantalla se les
c llaman me s. La gran mayoría de las aplicaciones de
c Windows poseen menús que contienen todas las
c herramientas necesarias que hacen posible la utilidad de la
aplicación.
c
c Los programas tales como Word, Ñxcel, WordPad, incluyen
c Barras de Me s y dentro de estas    se encuentran los
c menús y dentro de los menús las opcionescpara cada menú.
c c
Porc ejemplo, el menú Archivo (File) de Dicrosoft Word incluye opciones o comandos tales como:
c
Nuevo, Abrir, Cerrar, Guardar, Guardar como, Imprimir, etc.
c
Los menús presentan sobre los demás  c la ventaja de que ocupan menos espacio en
c
pantalla, pero tienen la limitante de que las opciones o comandos de los menús no están visibles
c que se despliega totalmente el menú.
hasta
c
c
5À2c ÑGÑMÑT 3Ñ G MÑÚ
c c
c los elementos principales de los menús tenemos los c   , c  c c
Ñntre
c c c   («), el  c c P (Ź), las  c     y c P. Todos
c elementos permiten una mejor legibilidad al trabajar con los menús.
estos
c
Ɣ ,c c  a son aquellos que mediante combinaciones de teclas nos permiten acceder
c menú o a una opción de un menú. Por ejemplo, para desplegar el menú Archivo (File) de
a un
c
Dicrosoft Word basta con pulsar las combinaciones de teclas Al + A (en español) ó Al + F (en
c
inglés), o para activar la   cc cAbrir se pulsan las teclas Crl + A (en español) ó Crl +
 c(en inglés).
c
Ɣ ,c  c c  c c  c :: Ñstos están representados por c c
c
  («) que indican que al seleccionar esta opción se mostrará una ventana de dialogo
c se requerirá de algún  proporcionado por el usuario.
dónde
c
Ɣ c
c  c c Pc <a Ñl indicador de submenú esta representado por una    c c c
 
c , que indica que el elemento de ese menú posee otras opciones de menú llamado
submenú.
c
Ɣ ,c c  c    ac Así como su nombre lo indica, son  c     que dividen entre un
c
conjunto de opciones y otro conjunto de opciones dentro de un mismo menú. Las líneas divisoras
noc tienen ninguna función especial dentro de un menú, solo indican la división entre un conjunto de
opciones
c dentro de un mismo menú.

Ɣ cLas imágenes: Las P en los menús juegan un papel muy importante, ya que ilustran
c
gráficamente la función de un elemento dentro de ese menú. Por ejemplo, la opción ëmprimir del
c
menú Archivo de Dicrosoft Word posee la imagen de una impresora , que indica que es la
c
opción de imprimir.
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

Gos me sc
Capílo 5
c c
5À3c ÑG Ñ3ëTR 3Ñ MÑÚ (MÑU Ñ3ëTR)
c c
c Basic posee una potente herramienta para la creación de menús y todos los elementos que
Visual
c los componen. Ñl Ñdior de Me  (Me  Ñdior) es la herramienta que permite la creación
estos
de estos. Para activar o mostrar la ventan del Me  Ñdior, haga clic en la opcion Me  Ñdior del
c
c Tools ( P  ) o bien, haga clic en el botón
menú correspondiente al Me  Ñdior de la
  cc P  c . Al seleccionar esta opción se mostrará la siguiente ventana:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c Figura 5.1. Denú Ñditor de Visual Basic 6.0
c
c 3escripció de los eleme os del Ñdior de Me s
- 5À3À1
c
Ñnc la fira 5À1 se muestra la ventana del  c c c que posee todas las herramientas
necesarias
c para la creación de estos. A continuación se describen cada uno de los elementos del
 ccc
c c
Ɣ( c  c a Ñn esta  cc
 se escribe el nombre del menú o elemento de un menú o
c
submenú. Ñn esta  c c 
 el carácter (&) ampersa d tiene un significado especial, ya que
indica
c que el carácter o la letra a la derecha de él será el acceso directo a ese menú o elemento de
unc menú o submenú. Por ejemplo, si un menú denominado Archivo tiene el carácter (&)
ampersa d posicionado a la izquierda, es decir, delante de la letra A significa que sólo basta con
c las combinaciones de las teclas Al + A para tener acceso a ese menú, elemento de un
pulsar
c o submenú.
menú
c
Ɣ× c Pc×Pa Ñn esta  cc
cse especifica el nombre del menú, elemento de un menú o
submenú,
c que se utiliza para referenciar a ese menú en el  cc  .
c
Ɣ /
c= a La  cc
 Í dice hace referencia a la posibilidad de crear   de menús.
c
c
Ɣ '(c. c  a Permite asignar acceso directo a los elementos de cada menú. Ñn esta
lista
c se muestran una serie de combinaciones, el cual el usuario puede seleccionar la más
adecuada para ese elemento de menú.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos me sc
Capílo 5
c c
Ɣ ( *c
c  a Permite agregar un cotejo de verificación (¿) a un elemento de un menú.
c
¨c   c $   a Indica si el menú o elemento del menú responderá a los eventos del
c
usuario.
c
Ɣ c   c   a Indica si el menú o elemento del menú estará visible o no.
c
Las demás opciones $ (
/0, ×     y Î ,  son pocas usadas, por tal
c
razón sean limitado su descripción. Para más información acerca de estás opciones, consulte la
c (help) de Visual Basic.
ayuda
c
c
A continuación, describiremos cada uno de los botones del menú editor:
c
cccccccccc
c
cccccccccÑl botón    c   se utiliza para eliminar cuatro puntos suspensivos a la izquierda, que
c
indican si ese elemento es un comando de un menú o submenú.
c
c Ñl botón    c  agrega cuatro puntos suspensivos («À) a la izquierda de un elemento
dec un menú o submenú. Si este botón se pulsa dos veces se agregan ocho puntos suspensivos
(««ÀÀ)
c a la izquierda de un elemento, indicando que es un elemento de un submenú. Puede pulsar
este botón las veces que se necesario siempre y cuando sepa establecer el orden jerárquico entre
c
los elementos del menú.
c
c
c Los botones    c   c c    c   se utilizan para desplazarse entre los menús,
elementos
c de menú o submenú.
c
c Ñl botón ×
c   se utiliza para agregar un menú, un elemento de menú o
c
submenú. Al pulsar este botón sobre un elemento ya agregado se inserta otra nueva línea en el
c de menú con el mismo formato de la línea interior, es decir, si el elemento sobre el cual se
editor
pulsa
c este botón es un elemento de un menú, entonces la línea que se agrega también será un
elemento de menú para ese mismo menú.
c
c
c Ñl botón   se utiliza para insertar un elemento o ítem en la posición de un
c
elemento seleccionado quedando este debajo del nuevo elemento.
c
c Ñl botón 1-c .  c guarda todas las modificaciones echas en el  c c
c .
c
c
c Ñl botón (   (    omite cualquier modificación echa en el  c c
 y al mismo tiempo cierra la ventana del editor.
c
c
c
5À3À2
c Creació de me s e Visal Basic 6À0
c c
Como dijimos anteriormente, para crear un menú utilizaremos el Denú Ñditor localizado en la barra
c
de herramientas del ÑID de Visual Basic y representado por la siguiente imagen . Crear un menú
esc un proceso práctico y por tal razón vamos a crear el menú que se muestra en la siguiente
c
página:
c c
c
c ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos me sc
Capílo 5
c c
c
c
c
c
c
c
c
c
c
c
c
c
Creació del me  Archivo
c
c
Pasos a seir:
c
1.mc Abra un nuevo proyecto desde el menú File.
c
2.mc Haga clic en el icono del Ñditor de Denús .
c
3.m Ñn la  c c 
c Capio (ílo) escriba &Archivo y en la  c c 
 ame ( ombre)
c
escriba me Archivo.
c
4.mc Haga clic en el botón ex (siie e)À
c
5.m Haga clic en el botón    c  (ĺ) para agregar cuatro puntos suspensivos («À).
c
6.mc Haga clic en la caja de texto Capio (ílo) y escriba &evo y en la caja de texto ame
c
( ombre) escriba eleme oevoMe Archivo. Ñn la  c P   de horc seleccione
c + , y a continuación, haga clic en el botón ex (iie e).
Crl
c
7.m Ñn la  c c 
 Capio (ílo) escriba &Abrir« y en la  c c 
c ame ( ombre)
c
escriba eleme oAbrirMe Archivo. Ñn la  c P   de horc seleccione Crl + A, y a
c
continuación, haga clic en el botón ex (iie e).
c
8.mc Ñn la  c c 
c Capio (ílo) escriba & ardar y en la  c c 
c ame ( ombre)
escriba
c eleme o ardarMe Archivo. Ñn la  c P   de horc seleccione Crl + , y
a continuación, haga clic en el botón ex (iie e).
c
9.mc Ñn la  c c 
c Capio (ílo) escriba & ardar como« y en la  c c 
c ame
c
( ombre) escriba eleme o ardarComoMe Archivo, y a continuación, haga clic en el botón
c (iie e).
ex
c
10.m Ñn la  cc
cCapio (ílo) escriba un guión o el símbolo de resta ³-³ y en la  cc
c

came ( ombre) escriba Gi ea1Me Archivo, y a continuación, haga clic en el botón ex
c
(iie e).
c
c Ñn la  cc
cCapio (ílo) escriba &Co firar pái a« y en la  cc
came
11.m
( ombre)
c escriba eleme oCo firarPai aMe Archivo, y a continuación, haga clic en el
botón ex (iie e).
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos me sc
Capílo 5
c c
c Ñn la  cc
 Capio (ílo) escriba &ëmprimir« y en la  cc
came ( ombre)
12.m
escriba eleme oëmprimirMe Archivo. Ñn la  c P   de horc seleccione Crl + P, y
c
a continuación, haga clic en el botón ex (iie e).
c
c Ñn la  cc
cCapio (ílo) escriba un guión o el símbolo de resta ³-³ y en la  cc
13.m
c

came ( ombre) escriba Gi ea2Me Archivo, y a continuación, haga clic en el botón ex
(iie
c e).
c
14.m Ñn la  c c 
c Capio (ílo) escriba a&lir y en la  c c 
c ame ( ombre)
c
escriba eleme oalirMe Archivo, y a continuación, haga clic en el botón ex (iie e).
c
c
Creació
c del me  Ñdició
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Pasos a seir:
c
1.mHaga
c clic en el botón    c   (w) para eliminar los cuatro puntos suspensivos a la
izquierda.
c
2.mc Ñn la  c c 
 Capio (ílo) escriba &Ñdició y en la  c c 
c ame ( ombre)
c
escriba Me Ñdicio , y a continuación, haga clic en el botón ex (iie e).
c
3.mHaga clic en el botón    c   (ĺ) para agregar los cuatro puntos suspensivos a la
c
izquierda.
c
4.mc Ñn la  c c 
c Capio (ílo) escriba un guión o el símbolo de resta ³-³ y en la  c c
c

came ( ombre) escriba Gi ea1Me Ñdicio , y a continuación, haga clic en el botón ex
(iie
c e).
c
5.m Ñn la  c c 
 Capio (ílo) escriba &3eshacer y en la  c c
c ame ( ombre)
c
escriba eleme o3eshacerMe Ñdició . Ñn la  c P   de horc seleccione Crl + Z,
y ac continuación, haga clic en el botón ex (iie e).
c
6.mc Ñn la  c c 
c Capio (ílo) escriba un guión o el símbolo de resta ³-³ y en la  c c

came ( ombre) escriba Gi ea2Me Ñdicio , y a continuación, haga clic en el botón ex
c
(iie e).
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos me sc
Capílo 5
c c
7.mc Ñn la  c c 
 Capio (ílo) escriba &Corar y en la  c c 
c ame ( ombre)
escriba eleme oCorarMe Ñdició . Ñn la  c P   de horc seleccione Crl + , y a
c
continuación, haga clic en el botón ex (iie e).
c
8.mc Ñn la  c c 
 Capio (ílo) escriba C&opiar y en la  c c 
c ame ( ombre)
c
escriba eleme oCopiarMe Ñdició . Ñn la  c P   de horc seleccione Crl + C, y a
continuación,
c haga clic en el botón ex (iie e).
c
9.m Ñn la  c c 
 Capio (ílo) escriba &Pear y en la  c c 
c ame ( ombre)
c
escriba eleme oPearMe Ñdició . Ñn la  c P   de horc seleccione Crl + V, y a
c
continuación, haga clic en el botón ex (iie e).
c
c Ñn la  c c
 Capio (ílo) escriba &Ñlimi ar y en la  c c 
c ame ( ombre)
10.m
escriba eleme oÑlimi arMe Ñdició . Ñn la  c P   de horc seleccione 3el ó pr,
c
y a continuación, haga clic en el botón ex (iie e).
c
c Ñn la  cc
cCapio (ílo) escriba un guión o el símbolo de resta ³-³ y en la  cc
11.m
c

came ( ombre) escriba Gi ea3Me Ñdicio , y a continuación, haga clic en el botón ex
(iie
c e).
c
12.m Ñn la  cc
 Capio (ílo) escriba &Bscar« y en la  cc
came ( ombre)
c
escriba eleme oBscarMe Ñdició . Ñn la  c P   de horc seleccione Crl + B, y a
c
continuación, haga clic en el botón ex (iie e).
c
c Ñn la  c c 
 Capio (ílo) escriba B&scar siie e y en la  c c 
c ame
13.m
( ombre) escriba eleme oBscariie eMe Ñdició . Ñn la  c P   de horc
c
seleccione F3, y a continuación, haga clic en el botón ex (iie e).
c
c Ñn la  cc
 Capio (ílo) escriba Re&mplazar y en la  cc
came ( ombre)
14.m
c
escriba eleme oRemplazarMe Ñdició . Ñn la  c P   de horc seleccione Crl + R,
y ac continuación, haga clic en el botón ex (iie e).
c
15.m Ñn la  c c 
 Capio (ílo) escriba &ër a« y en la  c c 
c ame ( ombre)
c
escriba eleme oërAiie eMe Ñdició . Ñn la  c P   de horc seleccione Crl +
T, c y a continuación, haga clic en el botón ex (iie e).
c
c Ñn la  cc
cCapio (ílo) escriba un guión o el símbolo de resta ³-³ y en la  cc
16.m

came ( ombre) escriba Gi ea4Me Ñdicio , y a continuación, haga clic en el botón ex
c
(iie e).
c
c Ñn la  c c 
 Capio (ílo) escriba eleccio ar &odo y en la  c c 
c ame
17.m
c
( ombre) escriba eleme oeleccio arTodoMe Ñdició . Ñn la  c P   de horc
seleccione
c Crl + Ñ, y a continuación, haga clic en el botón ex (iie e).
c
18.m Ñn la  c c 
 Capio (ílo) escriba &Hora y fecha y en la  c c 
c ame
c
( ombre) escriba eleme oHoraFechaMe Ñdició . Ñn la  c P   de horc
c
seleccione F5, y a continuación, haga clic en el botón ex (iie e).
c
c
Creació del me  Formao
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

Gos me sc
Capílo 5
c c
Pasos
c a seir:
c
1.mHaga clic en el botón    c   (w) para eliminar los cuatro puntos suspensivos a la
c
izquierda.
c
2.mc Ñn la  c c 
 Capio (ílo) escriba &Formao y en la  c c 
c ame ( ombre)
escriba
c Me Formao, y a continuación, haga clic en el botón ex (iie e).
c
3.mHaga clic en el botón    c   (ĺ) para agregar los cuatro puntos suspensivos a la
c
izquierda.
c
4.mc Ñn la  c c 
c Capio (ílo) escriba Ajs&e de lí ea y en la  c c 
c ame
( ombre)
c escriba Ñleme oAjse3eGi eaMe Formao, y a continuación, haga clic en el botón
ex (iie e).
c
5.mc Ñn la  c c 
c Capio (ílo) escriba &Fe e y en la  c c 
c ame ( ombre)
c
escriba Ñleme oFe eMe Formao, y a continuación, haga clic en el botón ex (iie e).
c
c
Creació del me  Ver
c
c
c
c
c
Pasos
c a seir:
c
1.mHaga clic en el botón    c   (w) para eliminar los cuatro puntos suspensivos a la
c
izquierda.
c
2.mc Ñn la  cc
 Capio (ílo) escriba &Ver y en la  cc
came ( ombre) escriba
Mec Ver, y a continuación, haga clic en el botón ex (iie e).
c
3.mHaga clic en el botón    c   (ĺ) para agregar los cuatro puntos suspensivos a la
c
izquierda.
c
4.mc Ñn la  c c 
c Capio (ílo) escriba Barra &de esado y en la  c c 
c ame
( ombre)
c escriba Ñleme oBarraÑsadoMe Ver, y a continuación, haga clic en el botón ex
(iie e).
c
c
c
Creació del me  Ayda
c
c
c
c
c
c
Pasos a seir:
c
c
1.mHaga clic en el botón    c   (w) para eliminar los cuatro puntos suspensivos a la
c
izquierda.
c
2.m Ñn la  c c 
 Capio (ílo) escriba Ay&da y en la  c c 
c ame ( ombre)
escriba Me Ayda, y a continuación, haga clic en el botón ex (iie e).

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

Gos me sc
Capílo 5
c c
3.mHaga
c clic en el botón    c   (ĺ) para agregar los cuatro puntos suspensivos a la
izquierda.
c
4.mc Ñn la  c c 
c Capio (ílo) escriba &Temas de Ayda y en la  c c 
c ame
c
( ombre) escriba Ñleme oTemas3eAydaMe Ayda, y a continuación, haga clic en el botón
c (iie e).
ex
c
5.m Ñn la  c c 
c Capio (ílo) escriba un guión o el símbolo de resta ³-³ y en la  c c
c

c ame ( ombre) escriba Gi ea1Me Ayda, y a continuación, haga clic en el botón ex
c
(iie e).
c
6.mc Ñn la  c c
c Capio (ílo) escriba &Acerca del Bloc de oas y en la  c c 
c
ame
c ( ombre) escriba Ñleme oAcercaMe Ayda, y a continuación, haga clic en el botón
ex (iie e).
c
7.mc Haga clic en el botón K para finalizar.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
TA: Ñn caso de algún error, verifique si ha escrito correctamente los nombres (ame) de los
c
menús, elementos de los menús y submenús propuestos. También verifique si ha establecido el
orden
c jerárquico adecuado entre los ítems o elementos de menús y submenús. Si el problema
persiste consulte con su maestro, o bien, envié un ÑmDail a [email protected] explicando
c
el problema.
c
c
Después de haber realizados todos estos pasos, corra la aplicación pulsando la tecla F5 y
c
desplácese por todos los menús ya creado.
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio1-5 para el formulariocy
c
Ñjercicio1-5 para el proyecto.
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

Gos me sc
Capílo 5
c c
- 5À3À3
c Creació de sbme s
c
Los submenús representan a los menús que se encuentran dentro de un menú, es decir, dentro de
unc elemento de un menú o un elemento de un submenú. Un submenú esta representado por medio
dec una flecha a la derecha (Ź). A continuación se muestra un submenú típico en un menú:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Sec puede observar en la que el menú Fe e contiene un  P o P con el título Tamaño y
este elemento esta precedido por una ! c    (Ź), que indica que existe un submenú
c
dentro de ese elemento.
c
Lac creación de submenús consiste en establecer un orden jerárquico de menor a mayor, dónde el
c
elemento que contendrá el submenú debe tener cuatro puntos suspensivos menos a la izquierda,
como
c se muestra a continuación:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

Gos me sc
Capílo 5
c c
Ñl crecuadro resaltado es la zona donde se especifica el menú Fe e con sus elementos. Se puede
observar que el elemento Tamaño posee cuatro c c menos que los  P
c
12, 14, 16, 18. Ñsto indica que estos elementos pertenecen al elemento Tamaño que esta dentro
delc menú Fe e.
c
5À4c ÑVÑT BRÑ G MÑÚc
c
c
Ñs lógico, que Visal Basic 6À0 permita agregar líneas de código a cada uno de los elementos de
losc menús y submenús que se agreguen a una aplicación. Ñsto lo hace mediante el   c
dec los menús, el  Click.
c
Para
c agregar código a algún elemento de un menú o submenú, sólo tiene que hacer clic sobre el
menú en modo de diseño y luego hacer otro clic sobre el elemento al cual quiere agregar el código.
c
Ñl c Click debe parecerse a esto:
c
c
Privae b ÑlementoX Click ( )
c
Sentencias«
c
Ñ cd b
c
c activar o desactivar una opción de algún menú mediante la propiedad Ñ abled. Por ejemplo,
Podrá
si c al cargar una aplicación usted desea que algunas opciones de los menús aparezcan
deshabilitada, entonces, dentro del evento Goad del formulario deberá escribir el nombre de la
c
opción del menú con la propiedad Ñ abled establecida a False:
c
c
Private Sub Form Load()
c
c miOpcion1.Ñnabled = False µDesactiva una opción que tiene el nombre DiOpcion1.
DiOpcion2.Ñnabled = False µDesactiva una opción que tiene el nombre DIOpcion2.
c
Ñndc If
c
c activar cualquier opción desactivada desde cualquier procedimiento, estableciendo el valor
Podrá
Tre
c en la propiedad Ñ abled de dicha opción.
c
c
5À5 ÑJÑRCëCë PRPUÑTc
c
c
1.mc Ñjecute la aplicación  c  y diseñe los menús y las opciones de cada menú que
contiene el programa. Para ejecutar elc , haga clic en el menú / c¼c  P c¼c.  c
c
¼c .
c
2.mc Ñjecute la aplicación  cÎ  y diseñe los menús y las opciones de cada menú que
c
contiene el programa. Para ejecutar el Î , haga clic en el menú / c ¼c  P c ¼c
. 
c c¼cÎ .
c
3.m Ñjecute la aplicación  c Î y diseñe los menús y las opciones de cada menú que
c
contiene el programa.
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

Ga i erfaz del sarioc


c
Capílo 6
c
CTÑë3
c
c c
6À1 Gos formlariosÀ
c m 6.1.1 Concepto de formulario.
c m 6.1.2 Propiedades de los formularios.
c m 6.1.3 Ñventos de los formularios.
c m 6.1.4 Trabajando con múltiples formularios.
m 6.1.4.1 Descargar un formulario.
c
m 6.1.4.2 Cargar un formulario.
c m 6.1.4.3 Interactuar con controles de distintos formularios.
6À2c Co roles com es de ve a asÀ
c m 6.2.1 Ñl control ImageList (Lista de Imágenes).
c m 6.2.1.1 Configurando el control ImageList.
m 6.2.1.2 Ñxtraer las imágenes de un ImageList.
c
m 6.2.1.3 Ñjercicio práctico.
c m 6.2.2 Control TreeView.
c m 6.2.2.1 Configurar el control TreeView en tiempo de diseño.
c m 6.2.2.2 Propiedades más importantes del control TreeView.
c m 6.2.2.3 Cómo añadir objetos Node (Nodos).
m 6.2.2.4 Cómo leer el texto del Nodo seleccionado.
c
m 6.2.2.5 Ñliminar uno o todos los elementos del control TreeView.
c m 6.2.2.6 Ñjercicios práctico.
c m 6.2.3 Control ListView.
c m 6.2.3.1 Configurar el control ListView en tiempo de diseño.
c m 6.2.3.2 Cómo añadir encabezados en modo de diseño.
m 6.2.3.3 Cómo añadir encabezados en modo de ejecución.
c
m 6.2.3.4 Cómo añadir objetos ListItem (Filas).
c m 6.2.3.5 Leer los datos de una o varias columnas.
c m 6.2.3.6 Ordenar el contenido de las columnas.
c m 6.2.3.7 Búsqueda de elementos.
c m 6.2.3.8 Ñjercicios práctico.
m 6.2.4 Control ToolBar.
c
m 6.2.4.1 Configurar el control ToolBar en tiempo de diseño.
c m 6.2.4.2 Cómo reaccionar ante las acciones del usuario.
c m 6.2.4.3 Crear menús dentro de los botones (ButtonDenu).
c m 6.2.5 Control TabStrip.
c m 6.2.5.1 Configurando el control TabStrip en tiempo de diseño.
m 6.2.5.2 Agregar objetos Tab.
c
m 6.2.5.3 Cómo determinar la ficha pulsada por el usuario.
c m 6.2.5.4 Preparación de los contenedores.
c m 6.2.6 Ñjercicios propuestos.
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


V
c

Ga i erfaz del sarioc


Capílo 6
c c
6À1c G FRMUGARë
c c
Hasta ahora hemos creado aplicaciones haciendo uso del contenedor principal de una aplicación
quec son los P  , pero no nos hemos detenido a analizar la forma en como están
c
construidos, las propiedades, los métodos y los objetos que estos poseen. Ñn el presente capitulo
c
estudiaremos trataremos detalladamente cada una de sus propiedades, eventos y métodos.
También
c analizaremos un gran número de controles comunes que utilizaremos frecuentemente
sobre los formularios, exceptuando los ya vistos en los capítulos anteriores de este libro.
c
c Co cepo de formlario
- 6À1À1
c
c
Un ) es un contenedor donde se colocan
c todos los controles que componen una aplicación.
c Ñn el paradigma de la programación orientada a
c objetos, un formulario esta compuesto por un
c     y un  '. Los
c  ! cson módulos integrados en el entorno
de Visual Basic que permiten a los programadores
c diseñar visualmente ciertas características de los
c objetos que se instanciarán en tiempo de
c ejecución.
c c
c
c
c
Ñl c diseñador de formulario le permite definir el aspecto de su formulario en tiempo de diseño
colocando los controles hijos en su superficie y definiendo sus propiedades. Ñs obvio que estamos
c
hablando de una parte del ÑID (Ñntorno Integrado de Desarrollo) de Visual Basic. Cuando se
c
ejecuta la aplicación, el ejecutable de Visual Basic convierte estas piezas de información en un
c
conjunto de llamadas a las funciones API de Windows que crearán la ventana principal y,
posteriormente,
c todos sus controles hijos.
c
Ñn conclusión, un formulario es considerado como un objeto especial compuesto por una interfaz
dec usuario y están compuestos por un gran conjunto de propiedades, métodos y eventos al igual
quec los objetos normales.
c
- 6À1À2
c Propiedades de los formlarios
c
Los formularios poseen las propiedades comunes de los controles ya vistos anteriormente, y podrá
c
acceder a cada una de ellas de igual forma como lo hacia con un objeto normal. Antes de comenzar
c
a definir las propiedades más importantes de un formulario abra un nuevo proyecto.
c
cPropiedad 3escripció
ame
c Al igual que en los controles vistos anteriormente, se utiliza para asignarle el
nombre al . Ñste nombre va a permitir identificar un formulario de los
c demás formularios que contenga una aplicación.
c
c
BackColor Devuelve o establece el color de fondo del formulario. Podrá especificar un
c color de la paleta de colores disponible en modo de diseño, o bien, asignar un
c color desde código especificando una constante de color o un color expresado
en forma hexadecimal. La propiedad BackColor en un formulario tiene el
c
mismo efecto que en los controles ya estudiados en este libro.
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

Ga i erfaz del sarioc


Capílo 6
c c
Pc ropiedad 3escripció
Borderyle
c Devuelve o establece el estilo de borde del formulario. Puede tomar los valores 0-
o e (si borde), 1-Fixedi le(imple fijo), 2-izable(Tamaño ajsable), 3-
c Fixed 3ialo (3ialoo fijo), 4-Fixed ToolWi dow (Ve a a fija) y 5-izable
c ToolWi dow (Ve a a de amaño ajsable)À
c
c Para que tenga claro el efecto que causa cada uno de estos valores, asígnelo uno
c por uno en la propiedad Borderyle del formulario a medida que se van
definiendo cada uno de ellos:
c
c 0-o e: Ñlimina los bordes del formulario, como consecuencia, no podrá
c modificar su tamaño y no verá la barra de título de la ventana. Ñste valor es muy
c utilizado en las aplicaciones para mostrar una pequeña ventana inicial con
c información acerca del programa. Por ejemplo, cuando inicia Dicrosoft Word
aparece una ventana con el nombre del programa, el nombre de la compañía, la
c versión, y algunas imágenes decorativas, como el logo del programa o la
c compañía. Aunque no aparezcan los bordes de la ventana, la barra de título y los
c botones de control Mi imizar, Maximizar y Cerrar, sigue siendo de todos modos
c un formulario.
c
1-Fixedi le: Define un borde simple en el formulario. Incluye la barra de título y
c el botón de Cerrar. No podrá modificar el tamaño del formulario.
c
c 2-izable: Ñs el valor por defecto de esta propiedad. Incluye la barra de título, el
c botón de Mi imizar, el botón de Maximizar y el botón de Cerrar. Puede modificar
c el tamaño del formulario por los bordes.
c 3-Fixed 3ialo: Similar al valor 1-Fixedi le. Puede incluir una barra de título,
c el botón de Cerrar, pero no los botones de Maximizar ni Mi imizar. No permite
c modificar el tamaño del formulario.
c
c 4-Fixed ToolWi dow: Ventana fija. Duestra una ventana a la que no le puede
cambiar el tamaño con un botón Cerrar y el texto de la barra de título aparece con
c un tamaño de fuente reducido.
c
c 5-izable ToolWi dow: Similar al anterior. Se diferencia del valor 4-Fixed
c ToolWi dow en que permite modificar el tamaño del formulario.
c
Capio Devuelve o establece el texto que aparece en la barra de título del formulario.
c
c
TA: Ñl valor asignado en la propiedad Capio de un formulario no podrá ser apreciado, si
c esta establecido el valor 0-o e en la propiedad Borderyle de dicho formulario.
c
Coc rolBox Duestra o oculta los botones de control Mi imizar, Maximizar y Cerrar. Puede
c tomar los valores Tre o False. Cuando es Tre (valor por defecto) se muestran
c los tres botones de control, cuando es False se ocultan.
c
TA: Cuando el valor de la propiedad Co rolBox es Tre, podrá mostrar los botones de
c control Mi imizar, Maximizar y Cerrar siempre y cuando el valor establecido en la propiedad
c Borderyle permita mostrar la barra de título de la ventana.

c
ëcoc Ñstablece un archivo de imagen con extensión (Àico) o (Àcr) en la barra de título
c de la ventana. La primera representa los archivos de icono y la segunda los
archivos de tipo cursores. Ñxisten mucho de estos en la carpeta
Wi dow\Crsores. Ñsta imagen aparece a la izquierda del texto especificado en

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

Ga i erfaz del sarioc


Capílo 6
c c
la cpropiedad Capio del formulario. Puede observar en la barra de título de Visual Basic aparece el
icono
c  esta imagen identifica el programa Visual Basic de los demás programas creados para
Windows.
c Ñstos iconos están registrados y tienen derecho de autor. Duchos de estos iconos están
disponibles en Internet de forma gratuita y no tendrá ningún problema en agregarlo a sus
c
aplicaciones.
c
c
CMÑTARë: Ñs recomendable que usted mismo diseñe iconos propios para sus aplicaciones, esto le da un valor
significativo a los programas. Ñxisten cientos de programas en Internet que permite crearlos. Podrá dibujarlos
cfácilmente con una aplicación destinada para tal fin, de igual forma como usted diseña una simple imagen en Pai . Si
noc esta muy ligado al diseño gráfico o no quiere perder tiempo en esos detalles, puede contratar un diseñador gráfico
para que diseñe su icono.
c
c Ñjercicio:
c
c
ó Seleccione la propiedad ëco del formulario.
c
ó Haga clic en el botón con los tres puntos
c Aparecerá una ventana que le permitirá buscar el
c que desea poner en el programa:
icono
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Haga clic sobre la caja combinada para desplegarla y, a continuación, seleccione el disco local
c o más bien su unidad principal de disco duro.
(C:),
c
ó Busque la carpeta Wë3W y haga doble clic sobre esta. Cuando este dentro de la carpeta
c
Wë3W, busque la carpeta Crsores y haga doble clic sobre esta.
c
c
ó Seleccione cualquiera de los iconos que parecen en la carpeta y haga clic en el botón Abrir.
c
ó Ahora observe en la barra de titulo el icono que usted seleccionó.
c
c
KeyPreview Devuelve o establece un valor que determina si los eventos de teclado de los
c formularios se invocan antes que los eventos de teclado de los controles. Los
c eventos de teclado son Key3ow , KeyUp y KeyPress. Ñsta propiedad puede
tomar los valores Tre o False (Valor por defecto). Cuando esta propiedad esta
c establecida a Tre el código escrito en los eventos Key3ow , KeyUp y
c KeyPress del formulario se ejecutará primero que el código escrito en los
eventos del teclado de los controles colocados sobre este. Cuando esta a False
el código escrito en los eventos del teclado del formulario no ocurren.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

Ga i erfaz del sarioc


Capílo 6
c c
c Ñjercicio:
c
ó Busque la propiedad KeyPress y establezca el valor Tre.
c
ó Haga
c doble clic sobre el formulario.
c
ó Seleccione el evento Key3ow del formulario y escriba el siguiente bloque de código:
c
'Duestra
c un mensaje cuando se pulsa la tecla F1.
If KeyCode = vbKeyF1 Then
c DsgBox ("Usted presiono la tecla F1.")
c If
Ñnd
c
'Sale
c del programa si se pulsa la tecla S.
Ifc KeyCode = vbKeyS Then
Ñnd
c If
Ñnd
c
c
ó Corra
c la aplicación.
c
ó Pulse la tecla F1. Podrá observar que aparece un cuadro de mensaje diciendo que se ha pulsado
la ctecla F1. Cierre el cuadro de mensaje. Si pulsa la tecla S saldrá automáticamente de la
aplicación.
c
c
ó Detenga la aplicación.
c
c
MaxBo Determina si el botón de Maximizar del formulario estará desactivado o
c activado. Puede tomar los valores Tre (valor por defecto) o False.
c
c
CMÑTARë: Algunas programadores deshabilitan este botón para evitar que los usuarios
c maximicen alguna ventana de su aplicación.
c
c
M3ëChild Determina si un formulario es mostrado como un formulario hijo. Los formularios
c hijos se utilizan en aplicaciones que requieren de una  c c P   c
c  P (DDI). Ñste tipo de interfaz no es tratada en este libro, debido a que
la mayoría de las aplicaciones son diseñadas utilizando una  c c
c  Pc   (SDI). Para mayor información acerca de estos tipos de
c interfaces consulte la ayuda digital M3 Gibrary de Visual Basic.
c
Mic Bo Determina si el botón de Mi imizar del formulario estará desactivado o
c activado. Puede tomar los valores Tre (valor por defecto) o False.
c
Moseëco Algunas aplicaciones establecen un icono personalizado para el puntero del
c Douse que se mostrará sobre toda la aplicación. Dediante la propiedad
c Moseëco podrá seleccionar un archivo de extensión (Àico) o (Àcr) que se
c mostrará como el puntero del Douse sobre todo el formulario y los controles
c colocados en este. Para que el icono especificado en esta propiedad sea
mostrado en la aplicación, debe especificar el valor 99-Csom en la propiedad
c MosePoi er del formulario.
c Ñjercicio:
c
c
ó Seleccione la propiedad MosePoi er del formulario y, a continuación, establezca el valor 99-
Csom.
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

Ga i erfaz del sarioc


Capílo 6
c c
ó Seleccione
c la propiedad Moseëco y, a continuación, haga doble clic sobre los tres puntos («)
suspensivos.
c
c
ó Busque la carpeta WINDOWS en su disco principal. Dentro de la carpeta WINDOWS localice la
c
carpeta Cursores.
c
c
ó Seleccione el icono llamado harrow , y haga clic sobre el botón Abrir.
c
ó Corra la aplicación.
c
ó Podrá observar que el puntero predeterminado de su sistema no se muestra sobre el formulario,
c
sino, el icono seleccionado en la propiedad Moseëco .
c
c
ó Detenga la aplicación.
c
c
Moveable Determina si el formulario se podrá mover sobre la pantalla. Puede tomar los
c valores Tre (se puede mover)co False (no se puede mover).
c
c
Picre Ñspecifica una imagen que se muestra en el fondo del formulario. Ñste archivo de
c imagen puede ser del tipo BDP, JPG, GIF, ICO, CUR, etc.
c
c TA: Ñl archivo de imagen se muestra del mismo tamaño en que esta se encuentra diseñada.
Si la imagen que tiene colocada sobre el formulario no lo cubre a totalidad, tendrá que utilizar un
c programa de edición grafica como el Pai  para alterar el tamaño original de la imagen y
c adaptarlo al tamaño deseado.
c
c CMÑTARë: Si desea colocar una imagen de fondo sobre todo el formulario, recomiendo
utilizar el control ëmae. Ñsta permite alterar el tamaño original de la imagen al tamaño deseado.
c Tendrá que tener en cuenta que el valor Tre este establecido en la propiedad rech del
c control ëmae.

c
c Ñjercicio:
c
ó Seleccione
c la propiedad Picture del formulario y, a continuación, haga doble clic sobre los tres
puntos («) suspensivos.
c
c
ó Busque la carpeta ëMA ÑÑ que se distribuye con este libro. Dentro de esta carpeta se
c
encuentra una carpeta llamada F3. Ñntre a esta carpeta y seleccione la imagen llamada
fo c do15.
c
ó Haga clic sobre el botón Abrir.
c
c
ó Corra la aplicación para que pueda ver claramente la imagen, es decir, si la maya de puntos.
c
ó Observe
c que la imagen seleccionada se establece como fondo sobre todo el formulario. TA: Si
modifica
c el tamaño del formulario podrá ver la imagen completamente.
c
ó Detenga la aplicación.
c
c
howë Taskbar Determina si la aplicación se muestra en la barra de tareas de Windows cuando
c esta se esta ejecutando o cuando es minimizada. Puede tomar los valores Tre
c (se muestra en la barra de tarea) o False (No se muestra en la barra de tareas).
Ñl valor por defecto de esta propiedad es TreÀ Por eso, cuando usted corre la
c aplicación se muestra el nombre del programa y el icono seleccionado en la
propiedad ëco del formulario sobre la barra de tarea de Windows.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

Ga i erfaz del sarioc


Capílo 6
c c
arUpPosiio
c Determina la posición inicial del formulario cuando este es mostrado en la
c pantalla. Puede tomar los siguientes valores:
c ó 0-Ma al: Al establecer este valor en la propiedad arUpPosiio la
c posición del formulario en la pantalla dependerá de los valores establecidos
c en las propiedades Top y Gef.
c
c ó 1-Ce erw er: Ñl formulario aparece en el centro de la ventana a la que
pertenece.
c
c ó 2-Ce ercree : Ñl formulario se muestra en el centro de la pantalla.
c
c ó 3-Wi dows 3efal: Ñste es el valor por defecto. Ñl formulario se muestra
c en la esquina superior izquierda de la pantalla.
c Ñstablezca cada uno de estos valores en la propiedad arUpPosiio del
c formulario. A medida que valla estableciendo los valores corra la aplicación.
c De esta forma podrá observar las diferencias entre cada uno de ellos.
c
c TA: Ñl valor 1-Ce erw er tendrá el mismo efecto que el valor 2-Ce ercree si el
formulario no es mostrado de forma modal. Ñl valor 1-Ce erw er tendrá efecto, solo si el
c formulario mostrado es cargado sobre otro formulario en forma modal. Las distintas formas
c modales son tratadas en este capítulo más adelante.
c
Wic dowae Indica el estado del formulario cuando este es mostrado en la pantalla. Puede
c tomar los siguientes valores:
c ó 0-ormal: Ñl formulario aparece en la pantalla de forma normal.
c
c ó 1-Mi imized: Ñl formulario aparece minimizado en la barra de tarea de
c Windows.
c
ó 2-Maximized: Ñl formulario aparece maximizado, es decir, cubre todo el
c tamaño de la pantalla.
c
c Ñve os de los formlarios
- 6À1À3
c
Unc formulario posee los eventos estándar de los controles (Click, 3blClick, Mose3ow ,
MoseMove, MoseUp, KeyUp, Key3ow , KeyPress, oFocs, GosFocs). Además de estos,
c
los formularios poseen eventos que son muy propios de ellos que corresponde al ciclo de vida de
uncformulario.
c
c
ë iialize Ñste es el primer evento del ciclo de vida de cualquier formulario. Ñste evento
c ocurre tan pronto como haga referencia desde código al nombre del formulario,
incluso antes de que Visual Basic cree la ventana y los controles colocados en su
c
superficie. Podrá escribir código en este evento para iniciar correctamente las
c variables del formulario.
c
c
Goad Ñste es el segundo evento que ocurre antes de que un formulario se muestre en la
c pantalla. Ñste evento ocurre cuando Visual Basic crea el formulario y los controles
c hijos, pero aun no son visibles. Podrá hacer referencia a las propiedades de los
objetos colocados sobre el formulario desde este evento, incluso, la mayoría de
c los programadores inician sus variables desde este evento. Algunos métodos de
c los controles no pueden ser ejecutados para objetos que son invisibles. Por
ejemplo, el método eFocs no lo podrá utilizar desde el evento Goad.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
c Ñjercicio:
c
Ñn el siguiente ejercicio mostramos como programar el evento Load para hacer referencias a los
c
controles colocados sobre un formulario.
c
c un nuevo proyecto.
ó Abra
c
ó Coloque un control GisBox sobre el formulario.
c
ó Dentro del evento Load del formulario escriba:
c
c
'Agrega una lista de países al ListBox.
c
c
List1.AddItem "República Dominicana"
List1.AddItem
c "Puerto Rico"
List1.AddItem "Perú"
c
List1.AddItem "Ñstado Unidos"
c
List1.AddItem "Argentina"
c
List1.AddItem "Ñspaña"
c
List1.AddItem "Venezuela"
c
c
ó Corra la aplicación.
c
ó Podrá observar, que la lista de países se agrega al GisBox antes de que la aplicación sea
c
mostrada en la pantalla.
c
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio1-6 para el formulariocy
c
Ñjercicio1-6 para el proyecto.
c
c
Resize Ocurre un instante antes de mostrarse el formulario. Cuando ocurre este evento el
c formulario ya esta listo para ser mostrado y los controles sobre su superficie. Podrá
c utilizar este evento para posicionar los controles contenidos en el formulario con el
c fin de que llenen el espacio disponible con una buena disposición.
c
Ñl evento Resize también ocurre cuando modifica manualmente o mediante código
c
el tamaño del formulario.
c Ñjercicio:
c
Ñl c siguiente ejercicio muestra como utilizar el evento Resize para mostrar el tamaño de un
formulario
c cuando el usuario modifique su tamaño.
c
ó Abra un nuevo proyecto.
c
ó Coloque
c dos etiquetas y dos cajas de texto, tal y como se muestra en la siguiente figura:
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
ó Haga
c doble clic sobre el formulario y de la lista de eventos seleccione el evento Resize.
c
ó Dentro del evento Resize escriba:
c
'Coloca la anchura del formulario en la primera caja de texto.
c
Text1.Text = Form1.Width & " Pixeles."
c
'Coloca la altura del formulario en la segunda caja de texto.
c
Text2.Text = Form1.Height & " Pixeles."
c
c
ó Corra
c la aplicación.
c
ó Observe que la altura y la anchura del formulario se escriben en las cajas de texto. Ñsto es porque
c de mostrarse el formulario en la pantalla ocurre el evento Resize.
antes
c
ó Dodifique el tamaño del formulario por los bordes izquierdo e inferior. Podrá observar, que a
c
medida que módica el tamaño del formulario la caja de texto muestra el tamaño actual y la altura
c del formulario. Ñsto es, porque cada vez que modificamos el tamaño de un formulario ocurre
actual
unc evento Resize.
c
ó Detenga
c la aplicación y guarde el ejercicio con los nombres FormÑjercicio2-6 para el formulariocy
Ñjercicio2-6 para el proyecto.
c
c
Acivae Ñste evento ocurre inmediatamente termina el evento Resize. Ñste evento ocurre
c también cuando el formulario recibe el enfoque. Ñl evento Acivae es útil cuando
c necesite actualizar el contenido del formulario con los datos que se hayan podido
c modificar en otro formulario.
c
Pai  Ocurre cuando el formulario se esta dibujando en la pantalla o cuando el
c formulario una parte del mismo es cubierta por otra ventana. También ocurre
c cuando otra ventana o formulario se mueve sobre él.
c
c
3eacivae Ocurre cuando el formulario pierde el enfoque, es decir, cuando se muestra otro
formulario sobre el formulario inicial. Podrá utilizar este evento para identificar si
c
un formulario esta perdiendo el enfoque.
c
c
QeryU load Ñste evento ocurre cuando el formulario se esta cerrando. Ñste evento posee un
c P llamado U loadMode. Ñste P permite identificar la fuente por
c la que se esta cerrando el formulario.
c
Ñjercicio:
c
Ñl csiguiente ejercicio muestra una aplicación que informa al usuario la causa por la que se esta
c
cerrando la ventana.
c
ó Abra
c un nuevo proyecto.
c
ó Haga doble clic sobre el formulario y seleccione el evento QeryU load.
c
ó Dentro de este evento escriba:
cIf UnloadDode = vbFormControlDenu Then
c
DsgBox ("Usted esta cerrando el formulario por el botón de Cerrar de la ventana.")
c
Ñnd If
c
If UnloadDode = vbFormCode Then
c
DsgBox ("Usted esta cerrando la ventana utilizando código de Visual Basic.")
Ñnd If

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
If UnloadDode
c = vbAppWindows Then
DsgBox
c ("La sección de Windows se esta cerrando y a causado que se cierre esta ventana.")
Ñnd If
c
c
If UnloadDode = vbAppTaskDanager Then
c
DsgBox ("Ñl administrador de tareas esta cerrando la ventana.")
Ñndc If
c
If UnloadDode = vbFormDDIForm Then
c
DsgBox ("Ñl formulario padre DDI esta cerrando la ventana.")
Ñndc If
c
If UnloadDode
c = vbFormOwner Then
DsgBox
c ("Ñl formulario propietario se esta cerrando.")
Ñnd If
c
c
c
ó Agregue un botón de comando sobre el formulario. Dentro del evento Click del botón de comando
escriba:
c
c
Unload Form1 µCierra el formulario.
c
c
ó Corra la aplicación.
c
ó Haga clic sobre el botón de comando. Podrá observar un mensaje diciendo que el formulario se
c cerrando desde código. Ñsto es, porque el argumento U loadMode devuelve el valor
esta
c
vbFormCode cuando el formulario se esta cerrando desde código.
c
ó Corra
c nuevamente la aplicación. Cierra la aplicación desde el botón Cerrar de la ventana. Podrá
observar ahora otro mensaje diciendo que la ventana se esta cerrando desde el botón Cerrar de la
c
ventana. Ñsto es, porque el argumento U loadMode devuelve el valor vbFormCo rolMe 
c
cuando el usuario cierra la ventana desde el botón de Cerrar.
c
Sí cobserva el código escrito anteriormente, notará que existen muchas causas por las cuales un
formulario
c o ventana esta siendo cerrada. Cada situación es leída desde el argumento
U loadMode utilizando las estructuras de control selectiva, tal y como vimos en el código escrito en
el cevento QeryU load del formulario.
c
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio3-6 para el formulariocy
c
Ñjercicio3-6 para el proyecto.
c
U cload Ñste evento ocurre antes de que Visual Basic haga los últimos ajustes para cerrar
c el formulario. Ñs la última oportunidad que el programador tiene para cancelar que
c se cierre el formulario.
c Ñste evento posee un argumento llamado Ca cel que permite evitar que se cierre
c el formulario, o bien, notificar al formulario que se va a cerrar el formulario. La
c diferencia que existe entre el evento QeryU load y el evento Ca cel, es que el
c primero solo permite identificar la fuente por la que se cierra el formulario. Sin
c embargo, el P Ca cel aunque no permite saber la fuente por la que se
esta cerrando el formulario, permite cancelar el cierre del formulario.
c Ñjercicio:
c
c un nuevo proyecto.
ó Abra
ó Haga doble clic sobre el formulario y, a continuación, seleccione el evento U load.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
ó Dentro
c del evento U load escriba:
c
'Almacena la respuesta del usuario.
c
respuesta = DsgBox("¿Ñstá seguro que desea salir?", vbYesNo)
c
'Si el usuario responde que esta seguro se concluye cerrando la aplicación.
c
If respuesta = vbYes Then
c Cancel = False 'Confirma el cierre de la aplicación.
c
Ñlse
c 'Si el usuario responde que No, se cancela el cierre de la aplicación.
c Cancel = True 'Cancela el cierre de la aplicación.
Ñnd If
c
c
ó Corra
c la aplicación.
c
ó Cierre la aplicación desde el botón cerrar de la ventana. Aparecerá un cuadro de mensaje
solicitando
c la confirmación del cierre de la aplicación. Si usted responde ³Sí´ la aplicación se
cerrará, y si contesta que ³No´ el cierre abortará.
c
c
Cuando asignamos el valor False en el argumento Ca cel del evento U load, el formulario
c
continua con el proceso de cierre, pero si asigna el valor Tre cancelará el cierre del formulario.
c
c
- 6À1À4 Trabaja do co mliples formlarios
c
Lac mayoría de las aplicaciones integran múltiples formularios dentro de una misma interfaz de
c
usuario. Cuando en una aplicación ejecutamos una opción de un menú, comúnmente se muestra
una c nueva ventana dentro de la misma aplicación. Ñsta es la única opción que tenemos para
mostrar
c al usuario el resto de toda la aplicación, o más bien, todas las opciones disponibles en esta.
c
Para agregar un nuevo formulario en una aplicación hacemos clic en la opción Projec (Proyeco)
dec la barra de menús de Visual Basic, y luego, hacemos clic sobre la opción Add Form (Arear
c
Formlario). Ñl formulario se agrega en el 
  cc  con el nombre de Form seguido
dec un valor que representa el número de ese formulario dentro de la aplicación.
c
Después de haber agregado un nuevo formulario en la aplicación, el siguiente paso es mostrarlo
c
utilizando el método how de los formularios. Para mostrar el formulario deberá escribir el nombre
dec este, seguido del método how, la forma en que desea mostrarlo y el formulario propietario.
c
c
Formao:
c
×PrP  how 6 , 6rP      
c
3oc de:
c
c ×PrP  c Ñs un identificador valido que indica el nombre del formulario dentro
c de la aplicación.
c
c Opcional. Un entero que determina si el formulario es modal o no
c modal. Si   es 0, el formulario es  ; si   es 1, el
c formulario es . Cuando un formulario es   podrá
c trabajar con el P  c    y el formulario que se muestra al
c mismo tiempo. Si es , tendrá que cerrar el formulario 
para luego trabajar con el P  c   .
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

Ga i erfaz del sarioc


Capílo 6
c c
Parac que tenga idea de lo que es un formulario o modal, ejecute Dicrosoft Word y, a continuación,
haga clic en el menú Ñdició y luego en Bscar«
c
Hagac clic sobre la página y escriba algo. Podrá observar que la ventana de búsqueda se queda
c
abierta, permitiendo trabajar con la ventana principal   c     y la ventana de
c
búsqueda.
c
Por otro lado, un formulario modal no permite la interacción con la   c   y la ventana
c
modal. Para ver esto, haga clic en el menú Formao de Dicrosoft Word y ejecute la opción Fe e.
c
Ahora, trate de escribir algo. Podrá observar, que la   c   se inhabilita hasta que se
c la ventana modal.
cierre
c
c
rP      a Ñs un identificador valido que indica el nombre del P  c   ,
c
es decir, el nombre de la ventana sobre la que se muestra el formulario.
c
c
Ñjercicio:
c
ó Abra
c un nuevo proyecto.
c
ó Inserte tres botones de comando, tal y como se muestra en la siguiente figura:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Ñnc la propiedad Capio del primer botón escriba rP  cP , en la propiedad Capio del
segundo
c botón de comando escriba rP   c P y, en la propiedad Capio del tercer
botón de comando escriba rP  cP .
c
c
ó Agregue un nuevo formulario desde el menú Projec/Add Form.
c
ó Dentro
c del evento Click del primer botón de comando escriba:
c
µDuestra en forma modal en segundo formulario.
c
Form2.Show 1, Form1 µÑs lo mismo escribir: Form2.Show 1, De
c
c
ó Dentro del evento Click del segundo botón de comando escriba:
c
µDuestra
c en forma no modal en segundo formulario.
Form2.Show
c 0, Form1 µÑs lo mismo escribir: Form2.Show 0, De

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
ó Dentro
c del evento Click del tercer botón de comando escriba:
c
µDuestra de forma normal en segundo formulario.
c
Form2.Show
c
c
ó Corra la aplicación.
c
ó Haga clic sobre el primer botón de comando. Ahora, trate de hacer clic sobre el primer formulario.
c observar que no puede interactuar con el formulario propietario hasta que cierre el formulario
Podrá
c
modal.
c
ó Cierre el formulario modal.
c
c
ó Haga clic sobre el segundo botón de comando. Ahora, haga clic sobre el primer formulario. Podrá
c
observar que puede interactuar con el formulario propietario aun estando el formulario modal sobre
c
este.
c
ó Cierre el formulario modal.
c
c
ó Haga clic sobre el tercer botón de comando. Ahora, haga clic sobre el primer formulario y luego
c el segundo. Podrá observar, que hará tiene la posibilidad de decidir con el formulario que
sobre
c interactuar. Ñn este caso ambos formularios son propietarios.
desea
c
ó Detenga la aplicación y guarde el ejercicio con los nombres Form1Ñjercicio4-6 para el primer
c
formulario, Form2Ñjercicio4-6 para el segundo formulario y Ñjercicio4-6 para el proyecto.
c
c
- 6À1À4À1 3escarar  formlario
c
Descargar
c un formulario consiste en descargar de la memoria un formulario y todas las variables
cargados en este. Para cerrar o descargar un formulario utilice la sentencia U load seguido del
c
nombre del formulario.
c
c
Ñjemplo:
c
c U load Form1 µDescarga un formulario llamado Form1.
U load FormCliente µDescarga un formulario llamado FormCliente.
c U load De µDescarga el formulario actual.
c
Si cno desea descargar el formulario y solo quiere hacerlo invisible ante la vista del usuario, ya sea
c utilizar los valores asignados en algunos controles de este o para otro fin, entonces la mejor
para
opción
c es establecer el valor False en la propiedad Visible del formulario. De esta manera el
formulario estará invisible, pero podrá acceder a los controles colocados sobre él.
c
c
Ñjemplo:
c
c Form1.Visible = False µOculta un formulario llamado Form1.
c FormCliente.Visible = False µOculta un formulario llamado FormCliente.
De.Visible = False µOculta el formulario actual.
c
c
- 6À1À4À2 Carar  formlario
c
Ñnc muchas ocasiones queremos ejecutar un formulario sin que el usuario pueda apreciar su
apariencia
c física, es decir, solo cargarlo pero no mostrarlo en la pantalla. Para esto utilizamos la
sentencia Goad seguido del formulario que desea cargar. Ñjemplo: Goad FormCliente.
c
Cuando cargamos un formulario podemos utilizar todos sus controles desde otro formulario y
modificar cualquiera de sus propiedades.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
- 6À1À4À3
c ë eracar co co roles de disi os formlarios
c
Una de las características más potentes de Visual Basic es que permite interactuar desde un
c
formulario con los controles colocados sobre otro formulario. Para tal fin, el usuario deberá
c
especificar el nombre del formulario que contiene el control, seguido del nombre del control y la
c
propiedad, evento o método que ejecutar.
c
Ñjemplo:
c
c µAsigna la cadena Visual Basic en una caja de texto llamada Text1 del formulario Form1.
c Form1.Text1.Text = ³Visual Basic´
c
c µBorra el contenido de una caja de texto llamada txtImporte del formulario FormCliente.
FormCliente.txtImporte.Text = ³´
c
c µOculta un cuadro de imagen llamado Picture1 del formulario FormCliente.
c FormCliente.Picture1.Visible = False
c
c
Ñjercicio:
c
Ñl siguiente ejercicio muestra como interactuar con los controles de distintos formulario con una
c
aplicación que permite cambiar el color de una caja de texto desde otro formulario.
c
c un nuevo proyecto.
ó Abra
c
ó Inserte una caja de texto sobre el formulario y debajo un botón de comando:
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Agregue en nuevo formulario. Sobre este formulario coloca cinco botones de opción uno debajo
delc otro, tal y como se muestra en la siguiente figura:
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
c
ó Ñstablezca los siguientes valores los siguientes valores en las propiedades de los controles
colocados en el primero formulario:
c
c
u  
c
 c      c
c
c c  c
c * c
c
u $ c  c
c  c  c
cc
c
ó Ñstablezca los siguientes valores los siguientes valores en las propiedades de los controles
colocados en el segundo formulario:
c
c
c u  
c  2c    c
c
c  cccccccc    c
c u  c
c
 2c    c
c u c
c  &c    c
c u  c
c  "c     c
c u  c
c V $ c  'c
 c 'c
c
cc
c
ó Dentro del evento Click del botón de comando escriba:
c
c
formColores.Show 1, De µDuestra el formulario de los colores en forma modal.
c
c
ó Dentro del evento Click del primer OptionButton escriba:
c
c
µAsigna el color blanco al fondo de la caja contenido del formulario principal.
c
formPrincipal.txtContenido.BackColor = vbWhite
c
c
ó Dentro del evento Click del segundo OptionButton escriba:
c
c
µAsigna el color azul al fondo de la caja contenido del formulario principal.
formPrincipal.txtContenido.BackColor
c = vbBlue
c
c
ó Dentro del evento Click del tercer OptionButton escriba:
c
µAsigna el color verde al fondo de la caja contenido del formulario principal.
c
formPrincipal.txtContenido.BackColor = vbGreen
c
c
ó Dentro del evento Click del cuarto OptionButton escriba:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
µAsigna
c el color amarillo al fondo de la caja contenido del formulario principal.
formPrincipal.txtContenido.BackColor
c = vbYellow
c
ó Dentro
c del evento Click del quinto OptionButton escriba:
c
µAsigna el color rojo al fondo de la caja contenido del formulario principal.
c
formPrincipal.txtContenido.BackColor = vbRed
c
c
ó Corra la aplicación.
c
ó Haga clic en el botón ( . Aparecerá la ventana de colores.
c
ó Seleccione
c cada uno de los colores y podrá observar como estos se le aplican a la caja de texto
que se encuentra en el formulario principal.
c
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio5-6 para el formulario,
c
y Ñjercicio5-6 para el proyecto.
c
c
Ñxplicació :
c
c aplicación consta de dos formularios uno llamado P    cy el otro llamado P( .
Ñsta
Ñnc el primer formulario tenemos una caja de texto y un botón de comando que permite mostrar el
c
segundo formulario. Ñl segundo formulario esta compuesto por cinco botones de opción que son
utilizados
c para cambiar el color de fondo de la caja de texto del primer formulario.
c
Ñl objetivo principal del ejercicio anterior, es mostrar la forma en que el programador puede acceder
c objeto colocado en otro formulario. Si observa dentro del código escrito en el evento Click de
a un
c botón de opción, podrá observar primero el nombre del formulario que contiene el objeto,
cada
c
seguido del nombre del objeto y la propiedad que será afectada. De esta manera, el usuario podrá
acceder
c a cualquier control de otro formulario.
c
6À2c CTRGÑ CMUÑ 3Ñ VÑTAAc
c
c
Además de los controles vistos en el Capílo 3, Visual Basic proporciona un gran conjunto de
controles
c que comúnmente vemos en la mayoría de las aplicaciones de Windows. Ñstos controles
son bastante utilizados por los usuarios debido a estos se sienten familiarizados con ellos, además,
c
estos controles contribuyen a crear el aspecto típico de Windows más que cualquier otro grupo de
c
controles. Ñste conjunto de controles comunes esta compuesto por los controles TabString,
c
ToolBar, StatusBar, ProgressBar, TreeView, ListView, ImageList, Slider, ImageCombo, Animation,
c
UpDown, DonthView, DateTimePicker, FlatScrollBar y CoolBar.
c
Ñstos controles no están disponibles desde un principio en la   c c   de Visual Basic.
c
Ñstos se encuentran en los archivos DsComCt2.ocx y ComCt232.ocx localizados en la carpeta de
c
Windows\System32. Para agregar estos controles y poder comenzar a utilizarlo solo tendrá que
c clic en el menú &  y ejecutar la opción #  ;, o bien, presionar la combinación
hacer
dec tecla Ctrl+T. Ñn la ventana Componentes localice active los siguientes controles:
c
Ƒc Dicrosoft Windows Common Controls 6.0 (VB6).
c
Ƒc Dicrosoft Windows Common Controlsm2 6.0 (VB4).
c
Ƒ Dicrosoft Windows Common Controlsm3 6.0 (VB5).

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

Ga i erfaz del sarioc


Capílo 6
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Nuestra barra de controles tendrá en la parte inferior los nuevos controles agregados:
c
c TabStrip
c
ToolBar StatusBar
c
c ProgressBar TreeView
c
c ListView ImageList
c Slider ImageCombo
c Animation UpDown
c
c DonthView DataTimePicker
c
c FlatScrollBar CoolBar
c
c
- 6À2À1
c Ñl co rol ëmaeGis (Gisa de ëmáe es)
c
Ñste es el primer control que debe conocer antes de cualquier otro control, debido a que la mayoría
dec los demás controles lo utilizan como contenedor de imágenes. Ñste control permite almacenar
lasc imágenes e iconos empleados por otros controles, tales como TreeView, ListView, TabStrip e
c
ImageCombo. Ñl control ëmaeGis es invisible en tiempo de ejecución y para mostrar las imágenes
quec contiene deberá introducirlo en un formulario, un PictureBox o un control Image o asociarlo con
otro control.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

Ga i erfaz del sarioc


Capílo 6
c c
Utilizar
c este control como un almacén para las imágenes que utilizarán otros controles tiene muchas
ventajas. Si no utiliza este control tendría que cargar las imágenes desde su disco duro utilizando
c
una función GoadPicre que ralentizaría la ejecución y aumentaría el número de archivos que
c
tendría que distribuir con su programa. Además, si el usuario borra uno de estos archivos de
c
imagen accidentalmente, entonces, su aplicación daría un error en tipo de ejecución. Ñs mucho
másc sencillo y más eficiente utilizar un control ëmaeGis y, posteriormente, hacer referencia a los
mismos
c desde otros controles o desde el código fuente.
c
c
- 6À2À1À1 Co fira do el co rol ëmaeGis
c
Ñl cprimer paso después de haber insertado el control ëmaeGis en el formulario es configurarlo.
Para
c esto deberá acceder a la ventana propiedades del mismo desde la ventana propiedades
Csom (Perso alizado), o bien, haciendo clic derecho sobre el control y seleccionando la opción
c
Properies (Propiedades). Aparecerá la ventana de propiedades:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Ñnc la ficha general debemos seleccionar el tamaño que deberán tener las imágenes que
cargaremos. Las medidas disponibles son 16 x 16, 32 x 32, 48 x 48, y la opción Csom
c
(Perso alizado) que le permitirá agregar manualmente el tamaño en píxeles de la imagen. Para
c de herramientas utilizamos comúnmente los tamaños 16 x 16 o 32 x 32. Cuando seleccione el
barra
c
tamaño de las imágenes no podrá cambiarlo una vez ha agregado imágenes a la lista de imágenes.
Deberá
c tener claro el tamaño que tendrán las imágenes que cargaremos antes de agregarlas.
Como
c dije anteriormente si va a cargar las imágenes en barra de herramientas, en menús o en
botones de comando, recomiendo que las imágenes no excedan los tamaños 16 x 16 o 32 x 32.
c
Unac vez configurado el tamaño de las imágenes, el siguiente paso es agregar las imágenes que
c
cargaremos en los controles. Para esto, debemos hacer clic en la ficha Imágenes de la ventana
propiedades.
c Ñn esta ventana veremos tres cajas de texto, una lista de imágenes y dos botones de
comando.
c Ñn la primera caja de texto /
c =  se agrega automáticamente un número en
orden ascendente que será útil para cargar la imagen desde código. Ñste valor usted no tiene que
c
modificarlo aunque puede hacerlo, solo debe saberlo cuando vaya a cargar una imagen. Para saber
c valor una vez agregadas las imágenes solo debe seleccionar la imagen de la lista de imágenes
este
y observar la caja de texto. Ñn la segunda caja de texto -c(  escribirá una cadena de texto
para identificar cada una de las imágenes que ha agregado.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Noc se preocupe por escribir en la tercera caja de texto, esta no es a menudo utilizada. Para agregar
lasc imágenes que utilizará, debe hacer clic en el botón (ë ser Picre«) / c/P , y luego
buscar
c la imagen que desea cargar en su disco duro. Si desea eliminar una imagen, solo debe
seleccionarla y hacer clic en el botón Remove Picre  P  c/P .
c
c agregar imágenes en modo de ejecución utilizando el método Add del objeto ëmaeGis.
Podrá
c método tiene el siguiente formato:
Ñste
c
Addc 6/
c6(  c6/P 
c
Ñl parámetro /
lo puede omitir para agregar la imagen al final de la colección. Ñste es un
c
ejemplo de cómo agregar una imagen desde código a un control ëmaeGis.
c
c
Dimc Imagen As ListImage
Set Imagen =ImageList1.ListImages.Add(, ³Guardar´, LoadPicture(³c:\guardar.bmp´))
c
c
c eliminarla en tiempo de ejecución solo deberá utilizar el método Remove seguido del índice
Para
c
(Index) o la clave (Key):
c
µÑliminar el que agregamos anteriormente.
c
ImageList1.ListImages.Remove Guardar
c
c
Si cdesea eliminarlas todas en una única operación puede utilizar el método Clear:
c
ImageList1.ListImages.Clear
c
c
c guardar en un ImageList la imagen cargada en un PictureBox:
Podrá
c
ImageList1.ListImages.Add , , Picture1.Picture

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

Ga i erfaz del sarioc


Capílo 6
c c
- 6À2À1À2
c Ñxraer las imáe es de  ëmaeGis
c
Para extraer las imágenes y colocarlas en otros controles como un PictureBox o Image deberá
c
indicar el número del índice /
 o la clave - de dicha imagen:
c
c
µCarga en el PictureBox la imagen que tiene el valor 1 como Index.
Pictuer1.Picture
c = ImageList1.ListImages(1).Picture
c
Ñste otro código haría lo mismo si la clave de la imagen es ³Guardar´:
c
c
Pictuer1.Picture = ImageList1.ListImages(³Guardar´).Picture
c
c
- 6À2À1À3 Ñjercicio prácico
c
Ñnc el siguiente ejercicio se muestra una aplicación que permite cargar en un control ëmaeGis las
c
imágenes que usted tenga en su disco duro. Luego puede posteriormente visualizarlas una por una
c
seleccionándolas de una lista. También podrá eliminar las imágenes cargadas en el control
ëmaeGis.
c
c
ó Abra un nuevo proyecto.
c
ó Precione
c la combinación de tecla Ctrl+T. Ñn la ventana componente active los controles  c
(PPc0 c( cc' 4 y  cÎ c(PPc( cc' .
c
c
ó Inserte en el formulario un control Commo 3ialo de la barra de controles.
c
ó Inserte
c en el formulario un control ëmaeGis .
c
ó Inserte dos etiquetas, una ListBox, un control Image y dos botones de comando:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c la propiedad Capio de la primera etiqueta escriba ³,  c c Pa . Ñn la propiedad
ó Ñn
Capio de la segunda etiqueta escriba ³/P cP  a .

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

Ga i erfaz del sarioc


Capílo 6
c c
ó Ñnc la propiedad Borderyle del control ëmae seleccione )c >c r
c '   y en la propiedad
rech el valor .
c
ó Ñnc la propiedad Capio del primer botón de comando escriba 8. , en el segundo botón de
c
comando 8  y en el tercer botón de comando 8' .
c
c
ó Haga doble clic en cualquier parte del formulario y en el evento Goad escriba:
c
c
'Configuramos el tamaño de las imágenes que será cargadas.
ImageList1.ImageHeight
c = 100
ImageList1.ImageWidth
c = 100
c
c
ó Ñn el evento Click del control ListBox escriba:
c
Onc Ñrror Resume Next 'Ñn caso de cualquier error.
c
'Dostramos en el PictureBox la imagen que seleccionamos en el ListBox.
c
Image1.Picture = ImageList1.ListImages(List1.Text).Picture
c
c
ó Ñnc el evento Click del botón . :
c
'Ñstablecer CancelÑrror a True.
cCommonDialog1.CancelÑrror = True
c
cOn Ñrror GoTo NoSeleccion
c'Ñstablecer los indicadores.
CommonDialog1.Flags = cdlOFNHideReadOnly
c'Ñstablecer los filtros.
cCommonDialog1.Filter = "Archivos de imagenes (*.JPG, *.BDP)|*.jpg||*.bmp|"
c'Ñspecificar el filtro predeterminado.
cCommonDialog1.FilterIndex = 2
c'Presentar el cuadro de diálogo Abrir.
CommonDialog1.ShowOpen
c'Agrega al listbox el nombre del archivo seleccionado.
cList1.AddItem CommonDialog1.FileTitle
c'Lo agregamos al control ImageList.
cImageList1.ListImages.Add , CommonDialog1.FileTitle,
c LoadPicture(CommonDialog1.FileName)
Ñxit Sub
c
NoSeleccion:
c'Ñl usuario ha hecho clic en el botón Cancelar.
cÑxit Sub
c
ó Ñnc el evento Click del botón P  :
c
'Verificamos que halla algún elemento seleccionado.
If List1.Text
c = "" Then
cDsgBox ("Debe seleccionar la imagen que desea eliminar.")
Ñlse
cImageList1.ListImages.Remove (List1.Text) 'Ñliminamos la imagen del control ImageList.
c
c
'Ñliminamos la imagen de la lista.
List1.RemoveItem (List1.ListIndex)
Ñnd If

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  V


c

Ga i erfaz del sarioc


Capílo 6
c c
c el evento Click del botón ' cescriba:
ó Ñn
c
'Salimos de la aplicación.
Ñndc
c
c
ó Corra la aplicación.
c
Para agregar imágenes a la lista solo debe hacer clic en el botón . cy buscarlas en su disco
c
duro. Luego para verlas haga clic sobre la imagen que desea de la lista. Para eliminar una imagen
dec la lista selecciónela y, a continuación, haga clic en el botón  .
c
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio6-6 para el formulario,
y Ñjercicio6-6
c para el proyecto.
c
c
Ñjercicio prácico 2:
c
Ñnc el siguiente ejercicio mostraremos como crear una pequeña animación utilizando varias
imágenes
c cargadas de nuestro disco duro. Las imágenes la he preparado exclusivamente para este
ejercicio y se encuentran en la carpeta ëMA ÑÑ que se distribuye con este libro.
c
c un nuevo proyecto.
ó Abra
c
ó Agregue el componente  cÎ c(PPc( cc' .
c
ó Inserte
c un control /P , cy un control  Pcen formulario.
c
ó Inserte un control PictureBox en el formulario. Ñn la propiedad BackColor del 

c
establezca el color blanco.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Haga clic derecho sobre el control ImageList y, a continuación, haga clic en la opción Propiedades
c
(Properties).
c
ó Seleccione
c la ficha Imágenes (Images) de la ventana propiedades. Haga clic en el botón / c
/P c/c .
c
ó cBusque la carpeta IDÁGÑNÑS que se distribuye con este libro y cargue las imágenes
c
Corazon1Cap6, Corazon2Cap6, Corazon3Cap6, Corazon4Cap6, Corazon5Cap6,
Corazon6Cap6, Corazon7Cap6, Corazon8Cap6. Agregue las imágenes en este mismo orden.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

Ga i erfaz del sarioc


Capílo 6
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Después de haber cargado las ocho imágenes haga clic en el botón .  .
c
ó Seleccione el control Timer y en la propiedad ë erval escriba el valor ).
c
ó Ñn el evento Click del control Timer escriba:
c
c
'Declaramos la variable que almacenara el Índice de cada imagen del control ImageList.
Static
c IndiceImagen
c
'Incrementamos el Índice.
c
IndiceImagen = IndiceImagen + 1
c
c
'Cargamos en el PictureBox la imagen correspondiente al Índice incrementado.
Picture1.Picture
c = ImageList1.ListImages(IndiceImagen).Picture
c
'Cuando el Índice de la imagen sea igual al último (8), empezamos nuevamente.
c hace que el ciclo repetitivo vuelva a iniciar.
'Ñsto
c
If IndiceImagen = 8 Then
c IndiceImagen = 0
Ñnd c If
c
ó Corra
c la aplicación.
c
Podrá ver como las 8 imágenes combinadas crea un corazón en 3D en movimiento. Ñsto es
c
posible, porque cada transición de la imagen esta cargada en el control ImageList y mediante el
c de cada una de esas imágenes la hemos cargado en el PictureBox.
índice
c
ó Detenga
c la aplicación y guarde el ejercicio con los nombres FormÑjercicio7-6 para el formulario,
y Ñjercicio7-6 para el proyecto.
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

Ga i erfaz del sarioc


Capílo 6
c c
- 6À2À2
c Co rol TreeView
c
Ñl control TreeView de formularios muestra una jerarquía de nodos similar al modo en que se
c
muestran los archivos y las carpetas en el panel izquierdo de la característica Ñxplorador de
c
Windows del sistema operativo Windows. Ñste esta compuesto a su vez por elemento llamados
c y subnodos c   . Con el control TreeView, puede mostrar una jerarquía de
nodos
nodos
c a usuarios, del modo en que se muestran los archivos y carpetas en el Ñxplorador de
Windows. Cada nodo de la vista de árbol podría contener otros nodos, llamados nodos
c
secundarios. Puede mostrar nodos primarios o nodos que contienen nodos secundarios, como
c
expandidos o contraídos. A continuación, se muestra una imagen con un control TreeView con sus
c y subnodos:
nodos
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c elemento con el símbolo (+) indica un nodo o subnodo principal que a su vez contiene otros
Cada
subnodos.
c Los elementos con el signo (m) indica que un nodo esta expandido o ramificado.
c
- 6À2À2À1 Co firar el co rol TreeView e iempo de diseño
c
Unac vez usted haya insertado un control TreeView en el formulario, deberá configurar su aspecto
c
grafico desde su ventana de diálogo Propiedades. Para esto, deberá pulsar el botón derecho del
Douse
c sobre el control y seleccionar la opción   . Las propiedades que aparecen en esta
pantalla también podrán cambiarlas en tiempo de ejecución, pero en contadas ocasiones necesitará
modificar el aspecto de un control TreeView después de habérselo presentado al usuario.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
La propiedad  cafecta a los elementos gráficos que se utilizarán dentro del control. Un control
c
TreeView puede mostrar cuatro elementos gráficos: el texto asociado con cada objeto Nodo, la
c
imagen asociada con cada objeto Nodo, un signo más (+) o menos (m) al lado de cada objeto Nodo
c líneas que van desde cada objeto Nodo a sus objetos hijo. Para la propiedad '  podrá
y las
seleccionar
c entre ocho valores posibles, cada uno de los cuales representa una combinación de los
cuatros elementos gráficos. Ñn la mayoría de los casos, utilizará el valor predeterminado ?
c
    
, que muestra todos los elementos gráficos.
c
Lac propiedad     es la propiedad común en la mayoría de los controles de Visual Basic,
c afecta el puntero del Douse sobre un control. No deberá preocuparse por el momento en
que
modificar
c el valor por defecto de esta propiedad.
c
La propiedad G  cespecifica si se mostraran o no se mostraran las líneas entre los Nodos del
c
control TreeView. Ñl valor , c  c c   no muestra líneas entre los objetos
c
Nodos raíces, mientras que el valor 1mtvwRootLines si muestra líneas entre todos los Nodos raíces.
Lac propiedad /   define la distancia en   que existe entre las líneas punteadas verticales.
c
La propiedad G   afecta la forma en que los usuarios modifican el texto de cada Nodo en
c
modo de ejecución. Ñl valor .P  c cc , le permitirá al usuario modificar el
c de cada Nodo con el simple hecho de hacer clic sobre este. Ñl valor )  , permitirá
texto
c
modificar el texto de cada Nodo sólo si se llama desde código el método G   del control
c
TreeView.
c
La propiedad ë G  muestra todos los controles ImageList insertados en el formulario, donde
c
solo podrá seleccionar uno el cual utilizará el control TreeView para cargar las imágenes que este
c
asignará a los objetos Nodos individuales.
c
Lac Propiedad     determina si el objeto Nodo seleccionado continuará estando
resaltado cuando el control TreeView pierda el foco.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

Ga i erfaz del sarioc


Capílo 6
c c
Lac propiedad   define si los Nodos en el control se ordenarán alfabéticamente de manera
automatica. Ñsta propiedad solo afecta a los nodos raices, no tiene ningun efecto sobre los objetos
c
Nodos hijos a niveles inferiores. Si desea ordenar todas las ramas del árbol, deberá definir como
Trec la propiedad ored de todos los Nodos individuales.
c
Lac propiedad r*   determina la forma en que se seleccionan los Nodos del control
TreeView.
c Cuando esta propiedad es Tre, hará que se seleccione un Nodo del control si el usuario
pulsa en cualquier lugar de su fila. Si es False (valor predeterminado), sólo se puede seleccionar un
c
determinado elemento cuando se pulse con el Douse sobre él o sobre su símbolo más (+) o menos
(m).c
c
Lac propiedad  ( determina si al lado de cada Nodo aparecerá una casilla de verificación.
Ñstac propiedad puede tomar los valores Tre  c   y False  c P  c  c
 .
c
Lac propiedad SingleSel determina el modo en que se expanden los Nodos del control. Cuando el
c  cc  el usuario tendrá que realizar una doble pulsación sobre los Nodos para
False
c
expandir o contraer su contenido o pulsar sobre el signo más o menos si estos se encuentran
presentes.
c Pero si define esta propiedad como Tre, podrá expandir y contraer las ramas con una
sola pulsación, es decir, tan pronto como las seleccione. Además, cuando expanda un Nodo, el
c
elemento que se expandió previamente se contraerá automáticamente.
c
Lac propiedad  determina si el control TreeView mostrará una barra horizontal y vertical
c
cuando sea necesario. Ñl valor predeterminado es Tre, aunque pude establecerlo a False  c
 c .
c
Por último, la propiedad HoTracki  le permitirá crear una interfaz de usuario de aspecto Web. Si
c esta propiedad como Tre, el puntero del Douse se transformará en una mano cuando el
define
c
Douse sobrepase el objeto Nodo y el control TreeView subrayará la propiedad  (del Nodo.
c
- 6À2À2À2
c Propiedades más impora es del co rol TreeView
c
Las propiedades principales del control TreeView son odes y elecedode. La propiedad
c
 ccontiene la lista de nodos del nivel superior de la vista de árbol. La propiedad    
c
establece el nodo actualmente seleccionado. Otra propiedad importante es ëmaeë dex que
c
establece la imagen predeterminada para los nodos en la vista de árbol.
c
- 6À2À2À3 Como añadir objeos ode (odos)
c
Una c de las principales desventajas del control TreeView es que no podrá añadir elementos en
c
tiempo de diseño como lo hacia con los controles ListBox y ComboBox. Sólo podrá añadir objetos
Nodec en tiempo de ejecución mediante código con el método Add. La sintaxis del método Add es
la csiguiente:
c
Add 6-   c6-  c6(  c6
 c6/P  c6/P '    ) As Node
c
Los c atributos -   es la clave del Nodo donde se insertará el nuevo elemento, si se omite se
c
asume que el elemento insertado es un Nodo raíz. - cindican el lugar en el que se insertará
el cNodo, puede tomar los valores 0-vwFirs (el Nodo se convierte en el primer elemento del nivel
de su nodo relacionado); 1-vwGas (Ñl nuevo Nodo se convierte en el último pariente del Nodo
c
relativo); 2-vwex (valor predeterminado, el nuevo Nodo se añade inmediatamente después del
Nodoc relativo); 3-vwPrevios (Ñl Nodo se inserta inmediatamente antes del Nodo relativo, al
c
mismo nivel dentro de la jerarquía) o 4-vwChild (Ñl Nodo se convierte en un hijo del Nodo relativo).
( c  es su clave de cadena en la colección Nodes. 
ces el rótulo que aparecerá en el control e
/P  es el índice o la clave de cadena del control ImageList que acompaña a la imagen y que
aparecerá al lado del Nodo. /P '    es el índice o la clave de la imagen que se

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

Ga i erfaz del sarioc


Capílo 6
c c
utilizará
c cuando se seleccione el Nodo. A continuación, veremos como crear un árbol compuesto
por varios Nodos raíz y varios nodos hijos. Ñste ejercicio pretende enseñarle a crear un árbol similar
c
al que se muestra en la siguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c crear el árbol anterior siga los siguientes pasos:
Para
c
ó Abra
c un nuevo proyecto.
c
ó Haga clic derecho en la barra de controles y seleccione (Pc (P del menú
quec aparece. Ñn la ventana componentes active el control  cÎ c(PPc( cc
' .
c
c
ó Dibuje un control TreeView en el formulario. Tal y como se muestra en la siguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
ó Haga
c clic derecho sobre el control TreeView y seleccione la opción  c    del
menú contextual que aparece. Ñn esta ventana busque la propiedad Gi eyle y establezca el valor
c
1-vwRooGi es y, a continuación, haga clic en el botón .  . Ñsto es para que los Nodos
c
tengan el símbolo de más (+) y menos (m).
c
c
ó Haga doble clic en cualquier parte del formulario y en el evento Goad escriba el siguiente bloque
dec código:
c NodosPrincipales As Node
Dim
c NodosHijos As Node
Dim
c
'Agregamos
c los Nodos Principales.
Set
c NodosPrincipales = TreeView1.Nodes.Add(, , "cantantes", "Cantantes")
Set NodosPrincipales = TreeView1.Nodes.Add(, , "libros", "Libros")
c NodosPrincipales = TreeView1.Nodes.Add(, , "computadora", "Computadora")
Set
c
c
'Agregamos
c los Nodos hijos de cada Nodo Principal.
'Nodos
c hijos para el Nodo principal de Cantantes.
Set NodosPrincipales = TreeView1.Nodes.Add("cantantes", tvwChild, "luismiguel",
c
"Luis Diguel")
c
c NodosPrincipales = TreeView1.Nodes.Add("cantantes", tvwChild, "pedrofernandez",
Set
"Pedro
c Fernandez")
c
Set NodosPrincipales = TreeView1.Nodes.Add("cantantes", tvwChild, "marcanthony",
c
"Darc Anthony")
c
c NodosPrincipales = TreeView1.Nodes.Add("cantantes", tvwChild, "fernandovillalona",
Set
"Fernando
c Villalona")
c
'Nodos hijos para el Nodo principal de Libros.
c NodosPrincipales = TreeView1.Nodes.Add("libros", tvwChild, "redesdecomputadora",
Set
c
"Redes de Computadora")
c
Set
c NodosPrincipales = TreeView1.Nodes.Add("libros", tvwChild, "visualbasic",
"Visual
c Basic el libro de oro")
c NodosPrincipales = TreeView1.Nodes.Add("libros", tvwChild, "photoshop",
Set
c
"Introducción a PhotoShop CS 9.0")
c
'Nodos
c hijo para el Nodo principal de computadora.
Set
c NodosPrincipales = TreeView1.Nodes.Add("computadora", tvwChild, "monitor", "Donitor")
c NodosPrincipales = TreeView1.Nodes.Add("computadora", tvwChild, "memoria",
Set
c
"Demoria Ram")
c
Set
c NodosPrincipales = TreeView1.Nodes.Add("computadora", tvwChild, "impresora",
"Impresora")
c
c NodosPrincipales = TreeView1.Nodes.Add("computadora", tvwChild, "mouse", "Douse")
Set
c
c NodosPrincipales = TreeView1.Nodes.Add("computadora", tvwChild, "teclado", "Teclado")
Set
c
Set NodosPrincipales = TreeView1.Nodes.Add("computadora", tvwChild, "discoduro",
"Disco Duro")

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
ó Corra
c la aplicación. Haga clic en los signos de más (+) para expandir el árbol y en los signos de
menos (m) para contraer el árbol.
c
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio8-6 para el formulario,
c
y Ñjercicio8-6 para el proyecto.
c
c
Ñxplicació del códio:
c
Dim NodosPrincipales As Node
Dimc NodosHijos As Node
c
c
Declaramos las variables que nos servirán luego para crear los Nodos y para realizar cualquier
operación
c con estos. Por ejemplo, podrá cambiar independientemente el color de fondo de un Nodo
principales colocando sobre este el código: NodosPrincipales.BackColor = vbRed. Puede definir
c
una variable para cada Nodo principal y realizar operaciones independientes para cada uno. De
c manera podrá cambiar el color del texto de un Nodo hijo con el siguiente código:
igual
c
NodosHijos.ForeColor = vbBlue.
c
Setc NodosPrincipales = TreeView1.Nodes.Add(, , "cantantes", "Cantantes")
Set NodosPrincipales = TreeView1.Nodes.Add(, , "libros", "Libros")
c
Set NodosPrincipales = TreeView1.Nodes.Add(, , "computadora", "Computadora")
c
c tres líneas nos permiten agregar los Nodos principales. Cada Nodo principal tiene asignada
Ñstas
unac clave que luego servirá para poder agregar Nodos hijos. Por ejemplo, la primera línea de estas
tres
c tiene como clave  cque es la clave que diferencia a este Nodo de todos los demás. No
confunda la clave con el texto que se mostrará al lado del Nodo. Aunque en este ejercicio he escrito
c
lo mismo en ambos parámetros no es lo mismo.
c
Setc NodosPrincipales = TreeView1.Nodes.Add("cantantes", tvwChild, "luismiguel",
c Diguel")
"Luis
c
Set NodosPrincipales = TreeView1.Nodes.Add("cantantes", tvwChild, "pedrofernandez",
c
"Pedro Fernandez")
c
Setc NodosPrincipales = TreeView1.Nodes.Add("cantantes", tvwChild, "marcanthony",
c Anthony")
"Darc
c
Set NodosPrincipales = TreeView1.Nodes.Add("cantantes", tvwChild, "fernandovillalona",
c
"Fernando Villalona")
c
Ñnc este bloque de código hemos agregado los Nodos hijos para el Nodo principal de los cantantes.
c observar, que hemos especificado para cada Nodo hijo, en el primer parámetro del método
Podrá
Addc la clave cantantes, esto es, para que los elementos se agreguen dentro de este Nodo. Ñn el
segundo parámetro escribimos el valor vwChild que indica que es un Nodo hijo. Ñn el tercer
c
parámetro escribimos una clave para este Nodo hijo que luego puede ser utilizada para agregar
c
Nodos hijos dentro de este. Por último, escribimos el texto que tendrá el Nodo Hijo. Ñsto mismo
c
hemos hecho para los Nodos hijos de los Nodos principales libros y computadora, con la única
c
diferencia de la clave en el parámetro -  .
c
- 6À2À2À4 Cómo leer el exo del odo seleccio ado
c
c leer el texto de un Nodo seleccionado sólo tendrá que consultar la propiedad Tex de la
Para
c
propiedad elecedëem del control TreeView. Ñl siguiente ejemplo muestra en un cuadro de
c
mensaje cualquier elemento seleccionado en el árbol:

DsgBox (TreeView1.SelectedItem.Text)

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
Si cescribe la línea de código anterior dentro del evento Click del control TreeView, se mostrará un
cuadro de mensaje con el texto del elemento seleccionado cada vez que haga clic sobre uno de los
c
Nodos.
c
c recorrer todos los elementos del control TreeView asignando un valor a la propiedad ëem:
Podrá
c
Dimc i As Long
c
For i = 1 To TreeView1.Nodes.Count
c
cPrint TreeView1.Nodes.Item(i)
c
Next
c i
c
Los elementos se mostrarán en el mismo orden que lo ha agregado al control TreeView.
c
c
- 6À2À2À5 Ñlimi ar  o o odos los eleme os del co rol TreeView
c
c eliminar uno o varios elementos del control TreeView deberá llamar el método Remove. Ñste
Para
método requiere como argumento el valor del elemento o Nodo que desea borrar. También podrá
c
especificar como argumento la clave del Nodo que desea eliminar de árbol. Ñl siguiente ejemplo
c
muestra como eliminar un elemento seleccionado:
c
c
µÑliminamos el Nodo seleccionado.
TreeView1.Nodes.Remove
c (TreeView1.SelectedItem.Index)
c
Puede eliminar un Nodo por su clave de la siguiente manera:
c
c
µÑliminamos el Nodo cantantes.
c
TreeView1.Nodes.Remove(³cantantes´)
c
c
Si desea eliminar todos los elementos del árbol sólo deberá llamar el método Clear:
c
c
TreeView1.Nodes.Clear µÑlimina todos los elementos del control TreeView.
c
- 6À2À2À6
c Ñjercicios prácicos
c
ó Abra nuestro primer ejercicio del control TreeView. A la derecha del control agregue seis botones
dec comando.
c
c la propiedad Capio del primer botón de comando escriba 8 c
.
ó Ñn
c la propiedad Capio del segundo botón de comando escriba 8 P  .
ó Ñn
c
ó Ñn la propiedad Capio del tercer botón de comando escriba 8 c.
c
c la propiedad Capio del cuarto botón de comando escriba 8( P c  .
ó Ñn
c la propiedad Capio del quinto botón de comando escriba 8 c  
ó Ñn
c la propiedad Capio del sexto botón de comando escriba 8' .
ó Ñn
c
ó Haga clic derecho sobre el control TreeView y ejecute la opción  c     del
c que aparece. Ñn la propiedad GabelÑdi establezca el valor 1-vwMa el cc  cc
menú
c
cc c P c c
cc c×ccPcc  . Active la caja de verificación de
la cpropiedad HoTracki   c c   c c  c  c  c  c  c c Î. La
aplicación deberá tener un aspecto similar al que se muestra en la imagen de la siguiente página«

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Dentro del evento Click del primer botón de comando escriba:
c
'Duestra
c en un cuadro de mensaje el texto del elemento seleccionado.
c
DsgBox (TreeView1.SelectedItem.Text)
c
c
ó Dentro del evento Click del segundo botón de comando escriba:
c
c
'Verificamos si la lista tiene elementos.
If TreeView1.Nodes.Count
c > 0 Then
'Ñliminamos el elemento seleccionado.
c
TreeView1.Nodes.Remove (TreeView1.SelectedItem.Index)
c
Ñlse
cDsgBox ("No hay elementos que borrar.")
Ñndc If
c
ó Dentro del evento Click del tercer botón de comando escriba:
c
c
'Borramos todos los elementos del TreeView.
c
TreeView1.Nodes.Clear
c
c
ó Dentro del evento Click del cuarto botón de comando escriba:
c
c
'Cambiamos el color de todos los elementos del TreeView.
Dimc i As Long
c
For i = 1 To TreeView1.Nodes.Count
c
c'Ponemos en azul todos los elementos del TreeView.
cTreeView1.Nodes.Item(i).ForeColor = vbBlue
c
Next
c i

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

Ga i erfaz del sarioc


Capílo 6
c c
ó Dentro
c del evento Click del quinto botón de comando escriba:
c
'Asignando formato de negrita a todos los elementos del TreeView.
Dimc i As Long
c
For i = 1 To TreeView1.Nodes.Count
c
c'Ponemos en negrita todos los elementos del TreeView.
cTreeView1.Nodes.Item(i).ForeColor = vbBlue
c
Next
c i
c
ó Dentro
c del evento Click del sexto botón de comando escriba:
c
'Salimos de la aplicación.
Ñndc
c
c
ó Corra la aplicación. Pruebe cada uno de los botones de comando.
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio9-6 para el formulario,
c
y Ñjercicio9-6 para el proyecto.
c
c
Ñjercicio prácico #2:
c
cc c c  c Pc Pc   c c  c c c  c  c   c  c
P c c c  cc
c
c
c un nuevo proyecto.
ó Abra
c
ó Agregue el componente  cÎ c(PPc( cc' ca su proyecto.
c
ó Dibuje
c un control TreeView, una caja de texto y un botón de comando:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
ó Haga
c clic derecho sobre el control TreeView y ejecute la opción  c    . Ñn la
propiedad Gi eyle seleccione el valor 1mtvwRootLines. Ñn la propiedad GabelÑdi seleccione 1m
c
tvwDanual y active la casilla HockTracki .
c
c el evento Goad del formulario escriba:
ó Ñn
c
Dim Ñfectos As Node
Dimc Colores As Node
Dimc Tamaños As Node
c
'Definimos
c el Nodo principal de los efectos.
Set Ñfectos = TreeView1.Nodes.Add(, , "efectos", "Ñfectos")
c
c'Ñlementos del Nodo Ñfectos.
c TreeView1.Nodes.Add "efectos", tvwChild, "negrita", "Negrita"
c TreeView1.Nodes.Add "efectos", tvwChild, "cursiva", "Cursiva"
c TreeView1.Nodes.Add "efectos", tvwChild, "subrayado", "Subrayado"
TreeView1.Nodes.Add "efectos", tvwChild, "tachado", "Tachado"
c
c
'Definimos el Nodo principal de los Colores.
Setc Colores = TreeView1.Nodes.Add(, , "colores", "Colores")
c
c'Ñlementos del Nodo Colores.
TreeView1.Nodes.Add "colores", tvwChild, "azul", "Azul"
c TreeView1.Nodes.Add "colores", tvwChild, "verde", "Verde"
c TreeView1.Nodes.Add "colores", tvwChild, "rojo", "Rojo"
c TreeView1.Nodes.Add "colores", tvwChild, "amarillo", "Amarillo"
c TreeView1.Nodes.Add "colores", tvwChild, "cyan", "Cyan"
c TreeView1.Nodes.Add "colores", tvwChild, "negro", "Negro"
c
'Definimos el Nodo principal de los tamaño.
Setc Tamaños = TreeView1.Nodes.Add(, , "tamaños", "Tamaños")
c
c'Ñlementos del Nodo Tamaños.
c TreeView1.Nodes.Add "tamaños", tvwChild, "tm12", "12"
TreeView1.Nodes.Add "tamaños", tvwChild, "tm14", "14"
c TreeView1.Nodes.Add "tamaños", tvwChild, "tm16", "16"
c TreeView1.Nodes.Add "tamaños", tvwChild, "tm18", "18"
c TreeView1.Nodes.Add "tamaños", tvwChild, "tm20", "20"
c
c
ó Dentro del evento Click del control TreeView escriba:
c
c
'Determinamos el elemento seleccionado y aplicamos los efectos a la caja de texto.
c
Select Case LCase(TreeView1.SelectedItem.Text)
c
c
Case "negrita": Text1.FontBold = True
c
Case "cursiva": Text1.FontItalic = True
c
c
Case "subrayado": Text1.FontUnderline = True
c
c
Case "tachado": Text1.FontStrikethru = True
c
Case "azul": Text1.ForeColor = vbBlue
c
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
Case
c "verde": Text1.ForeColor = vbGreen
c
Case "rojo": Text1.ForeColor = vbRed
c
c "amarillo": Text1.ForeColor = vbYellow
Case
c
Case
c "cyan": Text1.ForeColor = vbCyan
c
Case "negro": Text1.ForeColor = vbBlack
c
c "12": Text1.FontSize = 12
Case
c
Case
c "14": Text1.FontSize = 14
c
Case "16": Text1.FontSize = 16
c
c "18": Text1.FontSize = 18
Case
c c
c "20": Text1.FontSize = 20
Case
c
Ñndc Select
c
c el evento Click del botón Salir escriba:
ó Ñn
c
µSale de la aplicación.
Ñndc
c
c
ó Corra la aplicación.
c
Haga
c clic sobre los signos de más para expandir el árbol. Haga clic sobre los efectos, colores y
tamaños
c disponibles en el árbol y verá como estos se aplican a la caja de texto.
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio10-6 para el formulario,
c
y Ñjercicio10-6 para el proyecto.
c
c
- 6À2À3 Co rol GisView
c
Ñl ccontrol GisView es aquel que podemos ver a la derecha del control TreeView del Ñxplorador de
c
Windows. Ñn el Ñxplorador de Windows este muestra gráficamente el contenido de las carpetas y
unidades
c seleccionadas en el control TreeView. Ñn Visual Basic podrá utilizarlo para mostrar
elementos
c gráficos como carpetas, iconos, imágenes, texto, etc. También podrá utilizarlo para
mostrar reportes e información de forma organizada.
c
Ñl ccontrol ListView cuenta con cuatro modo de visualización: Icon, SmallIcon, List y Report. Para ver
la cdiferencia entre cada modo ejecute el Ñxplorador de Windows y pruebe las opciones contenidas
enc el menú Ver (el modo Report se corresponde con el mandato Detalles).
c
- 6À2À2À1 Co firar el co rol GisView e iempo de diseño
c
Al cigual que el control TreeView usted necesitará personalizar el control ListView desde su cuadro
dec diálogo   c  . Para abrir el cuadro de dialogo propiedades ejecute los mismo
pasos
c que realizaba con el control TreeView. Aunque podrá utilizar la ventana normal de
   para definir la mayor parte de las propiedades del control ListView, es preferible utilizar
el cuadro de diálogo   . Ñsta ventana es similar a la del control TreeView a diferencia de

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
algunas
c propiedades.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Lac propiedad View nos permite seleccionar el tipo de vista del control, esta puede tomar los
c
valores: 0mlvwIcon, 1mlvwSmallIcon, 2mlvwList o 3mlvwReport. Ñsta propiedad la podrá modificar en
tipo
c de ejecución para ofrecerles a los usuarios la posibilidad de cambiar de tipo de vista,
normalmente en un menú Ver. La propiedad Arra e le permitirá establecer el tipo de alineación de
c
los iconos, permitiendo seleccionar tres valores posibles: 1mlvwAutoLeft (alineación automática a la
c
izquierda, 2mlvwAutoTop (alineación automática en la parte superior) o 0mlvwNone (valor por defecto,
c
ninguna alineación). Ñsta propiedad sólo tiene efecto cuando el control se encuentra en el modo de
c
visualización Icon o SamllIcon (Iconos grandes o pequeños).
c
La propiedad GabelÑdi determina si el usuario podrá modificar el texto asociado a un elemento del
c
control. Si esta propiedad tiene el valor 0mlvwAutomatic, sólo se podrá iniciar la operación de edición
c
mediante código utilizado el método arGabelÑdi. La propiedad GabelWrap especifica si las
c
etiquetas de gran tamaño se dividirán en varias líneas de texto cuando la visualización este en
c Icon. La propiedad HideColm Headers determina si los encabezados de las columnas son
modo
visibles
c en el modo Report (el valor por defecto es False, valor que hace visible los encabezados).
La propiedad Mlielec determina si el usuario podrá seleccionar varios elementos (el valor por
c
defecto es False, solo podrá seleccionar un elemento a la vez).
c
Lac propiedad AllowColm Reorder determina si el usuario podrá reordenar las columnas cuando
sec encuentre en modo Report. Si define como True la propiedad ridli es el control ListView se
visualizará
c con líneas verticales y horizontales. La propiedad FlacrollBar determina si el control
tendrá barras de desplazamiento (cuando es False, valor por defecto, el control visualizará barras
c
de desplazamiento). Las propiedades Checkboxes, FllRowelec y HoTracki  tienen el mismo
c
comportamiento que en el control TreeView. La propiedad Hovereleccio , si es True, le permitirá
c
seleccionar un elemento con solo colocar el puntero del Douse sobre él.
c
Ñn la ficha /P c , c podrá apreciar cuadro cajas combinadas que le permitirá asociar tres
controles ImageList al control ListView. La primera caja combinada se utilizará para establecer un

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
control
c ImageList para cuando se encuentre en modo Icono, el segundo se empleará cuando el
control se encuentre en cualquier otro modo de visualización y el tercero se utilizará para iconos en
c
las columnas.
c
c
- 6À2À3À2 Cómo añadir e cabezados e modo de diseño
c
Para
c añadir encabezados (ColumnHeader) en tiempo de diseño tendrá que utilizar la ficha
Ñncabezados (Column Headers) del cuadro de diálogo propiedades. Sólo tendrá que hacer clic en
c
el botón /c ( Pc / c ( P  y escribir el texto que tendrá el encabezado. Podrá
c
alinear el contenido de cada columna individualmente mediante el atributo . P. De igual
c
manera podrá especificar manualmente la anchura en   mediante el atributo Î . También
c especificar un valor para las propiedades Key y Ta y definir el índice del icono que se va a
podrá
utilizar
c en ese encabezado. Ñste índice debe estar definido en el control ImagList asociado a los
encabezados. Debe tener en cuenta que sólo en modo Report estarán visibles los encabezados.
c
c
Vamos a ver todo esto dicho anteriormente con un pequeño ejercicio práctico:
c
c un nuevo proyecto.
ó Abra
c
ó Agregue el componente  cÎ c(PPc( cc'  de la ventana de diálogo
c
(P.
c
ó Dibuje
c un control ListView en el formulario. Haga clic derecho sobre el control y del menú que
aparece ejecute la opción  c    . Ñn la ventana de diálogo Propiedades
c
establezca el valor 3mlvwReport en la propiedad View y active la casilla de la propiedad Gridlines.
c
c
ó Haga clic en la ficha ( Pc$  y, a continuación, haga clic en el botón /c( P. Ñn el
atributo
c Text escriba Nombre. Nuevamente haga clic en el botón /c ( P para agregar el
encabezado.
c Ñscriba ahora a hora en el atributo Text el encabezado Apellido vuelva a hacer clic en
el botón /c ( P. Agregue tres encabezados más: Teléfono, Dirección y Correo. Debe de
c clic en el botón /c( P cada vez que escriba un encabezado (excepto cuando agregue
hacer
el cúltimo). Después de tener los cinco encabezados haga clic en el botón Aceptar.
c
c
ó Corra la aplicación y tendrá el siguiente resultado:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

Ga i erfaz del sarioc


Capílo 6
c c
ó Detenga
c la aplicación y guarde el ejercicio con los nombres FormÑjercicio11-6 para el formulario,
y Ñjercicio11-6 para el proyecto
c
c
- 6À2À3À3 Cómo añadir e cabezados e modo de ejecció
c
Con c frecuencia no sabrá en tiempo de diseño la cantidad de columnas o encabezados que deberá
mostrar
c en un control ListView. Por ejemplo, puede que desee mostrar el resultado de una consulta
al usuario donde usted no conoce de antemano los campos implicados en dicha consulta, para este
c
caso tendrá que agregar las columnas en tiempo de ejecución utilizando el método Add mediante la
c
siguiente sintaxis:
c
Add c (6/
c6- c6
 c6Î  c6. P c6/  ) As ColumnHeader
c
Ñstos son los mismos atributos que aparecen en la ventana de diálogo propiedades en la ficha
c
Column Headers. /
ces el la posición dentro de la colección, -c(  es una clave opcional,
Textc es la cadena de texto que se mostrará en el encabezado y Î  es la anchura en   de la
c
columna. Ñl atributo . Pc determina el tipo de alineación que tendrán los valores de esa
c
columna; puede ser una de las siguientes constantes: 0mlvwColumnLeft (valor por defecto,
alineación
c a la izquierda), 1mlvwColumnRight (alineación a la derecha), o 2mlvwColumnCenter
(alineación al centro). /  es un índice o una clave en el control ListImage al que se hará
c
referencia mediante la propiedad ColumnHeaderIcons. Ñl siguiente ejemplo muestra como agregar
losc campos Nombre, Apellido, Teléfono, Dirección y Correo mediante código en tiempo de
c
ejecución:
c
µPrimero
c borramos cualquier encabezado de columna existente.
ListView1.ColumnHeaders.Clear
c
c
µAgregamos los encabezados.
c
ListView1.ColumnHeaders.Add , , ³Nombre´, 2000, lvwColumnLeft
c
ListView1.ColumnHeaders.Add , , ³Apellido´, 2000, lvwColumnLeft
ListView1.ColumnHeaders.Add
c , , ³Teléfono´, 1440, lvwColumnLeft
ListView1.ColumnHeaders.Add , , ³Dirección´, 2500, lvwColumnLeft
c
ListView1.ColumnHeaders.Add , , ³Correo´, 1500, lvwColumnLeft
c
c
- 6À2À3À4 Cómo añadir objeos Gisëem (Filas)
c
Utilizará
c el mismo método Add para agregar objetos ListItem al control ListView. Ñste método lo
deberá ejecutar desde la colección ListItem del control mediante la siguiente sintaxis:
c
Add c (6=  c6(  c6
 c6/  c6/  ! ) As ListItem
c
=c c /
c es la posición donde se quiere agregar el nuevo elemento (si se omite este
c
parámetro, el elemento se agregará al final del la colección), ( c - es la clave opcional del
c
elemento insertado dentro de la colección ListItems, 
c 
 es la cadena de texto que se
c
mostrará en el control, Icono (Icon) es un índice o una clave en el control ImageList apuntado por la
propiedad
c ëco s, y 'P /  es un índice o una clave en el control ImageList apuntado por la
propiedad mallëco .
c
Ñl csiguiente ejemplo muestra como escribir en las cinco columnas de nuestro primer ejemplo:
c
Dim c li As ListItem
µLlenamos
c la primera fila.
Set li = ListView1.ListItems.Add(, , "Carlos") 'Ponemos el nombre.
c
li.ListSubItems.Add , , "Rodríguez" 'Ponemos el apellido.
li.ListSubItems.Add , , "809m597m4720" 'Ponemos el teléfono.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
li.ListSubItems.Add
c , , "Calle #5, Lomisa" µPonemos la dirección.
li.ListSubItems.Add , , "[email protected]" 'Ponemos el correo.
c
Los c valores de la primera columna son agregados mediante el objeto ListItem y son agregados con
el cmétodo Add. Las demás columnas pertenecen a la colección ListSumItems y son agregadas
c
también con el método Add.
c
A continuación, haremos un ejercicio que le permitirá ver con más claridad la manera de agregar
c
nuevos elementos a un control ListView. Ñn este ejercicio mostraremos como cargar los valores de
c cajas de texto en el ListView. También verá, cómo eliminar un elemento seleccionado o
varias
c los elementos de la lista.
todos
c
ó Abra
c un nuevo proyecto.
c
ó Agregue a su proyecto el componente  c Î c (PPc ( c c '  de la
ventana
c de diálogo (P.
c
ó Dibuje cinco cajas de texto, cinco botones de comando y un control ListView en el formulario, tal y
c
como se ve en la siguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Haga clic derecho sobre el control ListView y del menú que aparece ejecute la opción  c
c  . Ñn el cuadro de diálogo    establezca el valor 3mlvwReport en la
 
propiedad
c View. Ñn la propiedad GabelÑdi establezca el valor 1m lvwDanual. Active las casillas de
las propiedades FllRowelec y ridli es. Haga clic en la ficha ( Pc $  de la ventana
propiedades y agregue los encabezados: Nombre, Apellido, Teléfono, Dirección y Correo.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
ó Cuando
c haya agregado los cinco encabezados, haga clic en el botónc .   del cuadro de
diálogo   .
c
c el evento Click del botón de comando . cescriba:
ó Ñn
c
'Verificamos
c que se escriba el nombre, el apellido y la dirección.
If Len(Trim(Text1.Text)) = 0 Then
cDsgBox ("Debe escribir el nombre.")
cText1.SetFocus
c
c Len(Trim(Text2.Text)) = 0 Then
ÑlseIf
cDsgBox ("Debe escribir el apellido.")
cText2.SetFocus
c Len(Trim(Text4.Text)) = 0 Then
ÑlseIf
cDsgBox ("Debe escribir la dirección.")
cText4.SetFocus
c
Ñlse
c
cDim li As ListItem
c
cSet li = ListView1.ListItems.Add(, , Text1.Text) 'Ponemos el nombre.
c
cli.ListSubItems.Add , , Text2.Text 'Ponemos el apellido.
li.ListSubItems.Add , , Text3.Text 'Ponemos el teléfono.
cli.ListSubItems.Add , , Text4.Text 'Ponemos la dirección.
cli.ListSubItems.Add , , Text5.Text 'Ponemos el correo.
c
Ñndc If
c
ó Ñn el evento Click del botón de comando × escriba:
c
c
'Limpiamos todas las cajas de texto.
c
Text1.Text = ""
c
Text2.Text = ""
Text3.Text
c = ""
Text4.Text = ""
c
Text5.Text = ""
c
c el evento Click del botón de comando P  cescriba:
ó Ñn
c
'Verificamos si hay elementos en la lista.
c
If ListView1.ListItems.Count > 0 Then
c'Ñliminamos la fila seleccionada.
cListView1.ListItems.Remove (ListView1.SelectedItem.Index)
c
Ñlse
cDsgBox ("La lista esta vacía.")
Ñnd If
c
c
c el evento Click del botón de comando P  ccescriba:
ó Ñn
c
'Limpiamos la lista.
c
ListView1.ListItems.Clear

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
c el evento Click del botón de comando ' cescriba:
ó Ñn
c
'Salimos de la aplicación.
Ñndc
c
c
ó Corra la aplicación. Ñscriba en las cajas de texto y, a continuación, haga clic en el botón . .
Repita
c esto varias veces y verá como se agregan las filas al control ListView. Si desea eliminar un
elemento, selecciónelo y haga clic en el botón P  . Si desea eliminar todos los elementos que
c
ha agregado, entonces, haga clic en el botón P  c.
c
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio12-6 para el formulario,
c
y Ñjercicio12-6 para el proyecto.
c
- 6À2À3À5 Geer los daos de  a o varias colm as
c
c recorrer los datos de una o varias columnas usted deberá consultar el objeto Gisëem y la
Para
c
colección bëems del mismo objeto. Por ejemplo, si queremos leer todos los valores de la
c
primera columna de un ListView y cargarlos en una caja de texto (con la propiedad MliGi e a
True):
c
c
Text1.Text = "" 'Limpiamos la caja de texto.
c
Dimc i As Long
Forc i = 1 To ListView1.ListItems.Count 'Repetimos hasta la cantidad de elementos del ListView.
c 'Cargamos los datos de la primera columna a la caja de texto.
cText1.Text = Text1.Text & ListView1.ListItems(i).Text & Chr(13) & Chr(10)
c i
Next
c
c leer todas las columnas deberá recorrer la colección bëems y Gisëem respectivamente:
Para
c
Text1.Text = "" 'Limpiamos la caja.
c
Dim i As Long
Dimc columna1, columna2, columna3, columna4, columna5
c
Forc i = 1 To ListView1.ListItems.Count 'Repetimos hasta la cantidad de elementos del ListView.
c
ccolumna1 = ListView1.ListItems(i).Text 'Columna de los nombres.
columna2 = ListView1.ListItems(i).SubItems(1) 'Columna de los apellidos.
ccolumna3 = ListView1.ListItems(i).SubItems(2) 'Columna de los teléfonos.
ccolumna4 = ListView1.ListItems(i).SubItems(3) 'Columna de las direcciones.
ccolumna5 = ListView1.ListItems(i).SubItems(4) 'Columna de los correos.
c
c'Ponemos los datos leído en la caja de texto.
Text1.Text = Text1.Text & columna1 & " " & columna2 & " "
c & columna3 & " " & columna4 & " " & columna5
c
c i
Next
c
Los datos de la primera columna siempre se almacenaran en el objeto ListItems, las demás
c
columnas se almacenan en la colección SubItems. Si observa el ejemplo anterior, verá que los
c
valores de la primera columna son obtenidos del objeto ListItems. También podrá ver que los
c
valores de las demás columnas son obtenidos de la colección SubItems. La primera columna de la
c
colección SubItems siempre comenzará desde uno (1) sin importar la cantidad de columna que
contenga el control ListView. Por ejemplo, si usted tiene en su aplicación un ListView con diez
columnas, entonces, la colección SubItems tendrá nueve elementos comenzando desde uno (1).

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
- 6À2À3À6
c rde ar el co e ido de las colm as
c
Podrá ordenar el contenido de las columnas de un control ListView utilizando las propiedades
c
ored, orKey y orrder. Si quiere ordenar los valores de una columna cuando el usuario
c clic sobre el encabezado, entonces, dentro del evento Colm Click del control ListView
haga
c
escriba:
c
ListView1.SortKey
c = ColumnHeader.Index ± 1 µDeterminamos la columna que se va a ordenar.
ListView1.Sorted = True µOrdenamos el contenido de la columna que se hizo clic.
c
Ñl cejemplo anterior ordena de forma ascendente los valores de las columnas, pero si desea ofrecer
la cposibilidad al usuario de ordenar tanto de forma ascendente así como descendente tendrá que
escribir
c un código como este:
c
'Con esta línea verificamos si la columna ya esta ordenada.
c
If ListView1.Sorted = True And ColumnHeader.Index m 1 = ListView1.SortKey Then
c'Si esta ordenada, invertimos la ordenación.
cListView1.SortOrder = 1 m ListView1.SortOrder
c
Ñlse
c'Si no estaba ordenada la ordenamos de forma ascendente.
ListView1.SortOrder = lvwAscending
cListView1.SortKey = ColumnHeader.Index m 1
Ñndc If
cListView1.Sorted = True
c
c
- 6À2À3À7 Bsqeda de eleme os
c
c buscar con rapidez una cadena de texto en un control ListView utilizando el método Fi dëem
Podrá
mediante la siguiente sintaxis:
c
Fi c dëem '  c6Î c6'  c6    As ListItem
c
'c     es la cadena que se va a buscar. Îccespecifica en que propiedad se
buscará
c la cadena especificada: 0mlvwText para la propiedad  ( de los objetos ListItem, 1m
lvwSubItem para la propiedad  ( de los objetos ListSubItem o 2mlvwTag para la propiedad de
losc objetos ListItem. ' c/  es el índice o la clave del objeto ListItem desde el que comenzará
la cbúsqueda.  cestablece si se buscará por una palabra completa o por una parte de la cadena.
c parámetro puede tomar los valores 0mlvwWholeWord (Palabra completa) o 1mlvwPartial (parte
Ñste
dec una cadena). Sólo se puede utilizar Datch cuando el parámetro Îces igual a 0mlvwText.
c
Podrá realizar manualmente búsquedas en una columna individual recorriendo con un bucle el
c ListItem o la colección SubItems y comparando los valores leídos con la sentencia ëf.
objeto
c
c
- 6À2À3À8 Ñjercicios prácico
c
Ñnc el siguiente ejercicio crearemos una pequeña pantalla de facturación donde podrá agregar
productos y eliminarlos. También podrá buscar un elemento de la lista. oa: este ejercicio no
c
contiene bases de datos, es simplemente una simulación de un sistema de facturación para
c
ingresar los productos.
c
c un nuevo proyecto.
ó Abra
c
ó Agregue a su proyecto el componente  c Î c (PPc ( c c '  de la
c
ventana de diálogo (P.

ó Dibuje tres etiquetas, tres cajas de texto, un control ListView y cuatro botones de comando.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

Ga i erfaz del sarioc


Capílo 6
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó cCuando todos los controles estén en el formulario, entonces, modifique las propiedades
c
necesarias para que tengan la apariencia que se muestra en la imagen anterior.
c
ó Haga
c clic derecho sobre el control ListView y del menú que aparece seleccione la opción
Properties (Propiedades). Ñn la ventana de diálogo    establezca el valor 3mlvwReport en
c
la propiedad View. Ñn la propiedad GabelÑdi seleccione 1mlvwDanual. Active las casillas de las
c
propiedades FllRowelec y ridli es.
c
c
ó Haga clic en la ficha ( Pc $  de la ventana de diálogo   . Agregue los
siguientes
c encabezados con las características que se indican:
c
m Primer encabezado:
c o Text = Código
c o Alignment = 0mlvwColumnLeft
c o Width = 1000
c
c m Segundo encabezado:
o Text = Descripción
c o Alignment = 0mlvwColumnLeft
c o Width = 3500
c
c m Tercer encabezado:
o Text = Precio
c
o Alignment = 0mlvwColumnLeft
c o Width = 1200
c
c vez echo esto, haga clic en el botón .   de la ventana de diálogo   .
ó Una

ó Ñn el evento Click del botón de comando . cescriba:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
'Verificamos
c que no se dejen vacías las cajas de texto.
If Len(Trim(Text1.Text))
c = 0 Then
cDsgBox ("Debe especificar el código.")
cText1.SetFocus
ÑlseIf Len(Trim(Text2.Text)) = 0 Then
c
cDsgBox ("Debe especificar la descripción del producto.")
cText2.SetFocus
ÑlseIf Len(Trim(Text3.Text)) = 0 Then
c
cDsgBox ("Debe especificar el precio del producto.")
cText3.SetFocus
c
Ñlse
c
'Agregamos al control ListView los datos del articulo.
cDim li As ListItem
c
cSet li = ListView1.ListItems.Add(, , Text1.Text)
cli.ListSubItems.Add , , Text2.Text
cli.ListSubItems.Add , , Text3.Text
c'Limpiamos las cajas.
cText1.Text = ""
cText2.Text = ""
cText3.Text = ""
c
Ñnd If
c
c
ó Ñn el evento Click del botón de comando P  cescriba:
c
Onc Ñrror GoTo noSeleccion
c
'Ñliminamos el elemento seleccionado.
c
ListView1.ListItems.Remove (ListView1.SelectedItem.Index)
c
c
Ñxit Sub
c
noSeleccion:
c
DsgBox ("No hay elemento seleccionado.")
c
c el evento Click del botón de comando   escriba:
ó Ñn
c
Dim cadena As String
c
cadena
c = InputBox("Introduzca el texto a buscar:", "Buscar texto")
Dim resultado As ListItem
c
'Buscamos
c en la colección SubItems.
Set resultado = ListView1.FindItem(cadena, lvwSubItem, , lvwPartial)
c
'Verificamos
c si la búsqueda tubo o no éxito.
If resultado
c Is Nothing Then
DsgBox ("No se ha encontrado ninguna coincidencia.")
c
Ñlse
c
resultado.Selected = True 'Seleccionamos el elemento encontrado.
cListView1.SetFocus 'Hacemos que el control reciba el enfoque.

Ñnd If
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
c el evento Click del botón de comandoc'  escriba:
ó Ñn
c
µSalimos de la aplicación.
Ñndc
c
c
ó Corra la aplicación. Ahora, complete las cajas de texto y haga clic en el botón . . Podrá
observar
c los datos de los productos se agregan al control ListView. Agregue por los menos cinco
productos y luego utilice el botón  cpara localizar un producto determinado dentro de la lista.
c
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio13-6 para el formulario,
c
y Ñjercicio13-6 para el proyecto.
c
c Co rol ToolBar
- 6À2À4
c
c
Dediante el control ToolBar   c c $ P   podemos agregar a nuestra aplicación una o
másc barras de herramientas. Una   c c  P  es aquella que típicamente se coloca
debajo de la barra de menús de una aplicación que contiene los mandatos más habituales que el
c
usuario puede ejecutar con una simple pulsación del Douse. Ñste control viene incluido también en
el ccomponente  cÎ c(PPc( cc' .
c
Unac ToolBar (barra de herramientas) tiene el siguiente aspecto gráfico:
c
c
c
c
c es una barra típica de un editor de texto que contiene los mandatos: Nuevo, Abrir, Guardar,
Ñsta
Imprimir,
c Vista previa, Buscar, Cortar, Copiar, Pegar, Deshacer e Insertar fecha y hora. Ñstos
mandatos
c son estándar en la mayoría de las aplicaciones pero no obligatorias, es decir, su
aplicación no debe incluir exactamente todos los mandatos de una barra de herramienta estándar,
c dependerá del tipo de aplicación que usted se encuentre diseñando. Usted debe de ser capaz
esto
dec incluir las opciones más relevantes que usted considere en su aplicación para incluirla en su
c de herramientas.
barra
c
- 6À2À4À1 Co firar el co rol ToolBar e iempo de diseño
c
c
Después de crear una barra de herramientas, podrá configurarla accediendo a sus páginas de
c
propiedades haciendo clic derecho sobre ella y seleccionando la opción   . Ñl cuadro de
c
diálogo   c del control ToolBar posee tres fichas: La ficha @ donde se encuentran
lasc propiedades para modificar el aspecto y características en sentido general de la barra de
herramientas,
c como por ejemplo, el ancho y alto de todos los botones de la barra, la alineación del
texto de los botones, la apariencia gráfica y el estilo. La ficha  (Botones) permite añadir,
c
eliminar, establecer un estilo y otras opciones sólo para los botones de la barra de herramientas.
Porc último, la ficha  (Imagen) que permite especificar la apariencia que tendrá el puntero del
c
Douse cuando el usuario lo coloque sobre los botones.
c
Vamos a aprender a configurar un control ToolBar de forma práctica con un ejercicio:
c
c un nuevo proyecto.
ó Abra
c
c
ó Agregue a su proyecto el componente  c Î c (PPc ( c c '  de la
ventana
c de diálogo (P.
c
ó Inserte el control ToolBar en el formulario. Ñste se ubica automáticamente en la parte superior
del formulario.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
ó cHaga clic derecho sobre el control ToolBar y del menú que aparece ejecute la opción
  . Aparecerá la ventana de diálogo   :
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Vamos a explicar las propiedades que usted debe de conocer:
c
c
ëmaeGis especifica el control ImageList que usted asociará para leer las imágenes que mostrará
enc la barra de herramientas. 3isabledëmaeGis especifica el control ImageList que usted utilizará
c
cuando los botones de la barra de herramientas estén deshabilitados, es decir, cuando su
propiedad
c Ñ abled este False. HoëmaeGis especifica el control ImageList que utilizará cuando
los botones estén seleccionados. Bo Heih y Bo Widh especifica la altura y la anchura de
c
los botones. TexAli me  especifica el tipo de alineación del texto asociado a cada botón. yle
c  permite establecer el estilo que tendrán los botones de la barra, puede tener uno de estos
 
dosc valores: 1mtbrStandard (las opciones de la barra tendrán el aspecto de un botón de comando) y
c
2mtbrFlat (las opciones tendrán un aspecto plano, similar a los de Dicrosoft Word y la mayoría de los
programas).
c
c
ó Después de conocer las propiedades cierre la ventana de diálogo. Ahora, inserte un control
c
ImageList en el formulario. Haga clic derecho sobre el control ImageList y ejecute la opción
c
 c    . Seleccione la fichac /P  y agregue las imágenes 001.ico, 002.ico,
c
003.ico, 004.ico, 005.ico, 007.ico, 008.ico y 009.ico. Ñstas imágenes se encuentran dentro de la
subcarpeta
c llamada BarraHerramie as en la carpeta ëmae es que se distribuye con este libro.
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Ga i erfaz del sarioc


Capílo 6
c c
ó Haga
c clic en el botón Aceptar del cuadro de diálogo Propiedades del control ImageList. Ahora
asociaremos el control ImageList con el control ToolBar. Para esto, haga clic derecho sobre el
c
control ToolBar y ejecute la opción Propiedades. Ñn la propiedad ëmaeGis seleccione el control
c
ImageList que usted inserto en el formulario llamado /P , ). Ñn la propiedad yle establezca
c
el valor 1mtbrFlat.
c
ó Ahora,
c agregaremos los botones a la barra de herramientas. Para esto, haga clic en la ficha
 (Botones) de la ventana de diálogo propiedades. Aparecerá la siguiente ventana:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Antes
c de continuar con nuestro ejercicio explicare las propiedades más importantes:
c
ë dex (Índice) es un valor numérico que se le asigna automaticamente a cada botón de la barra
c poder diferenciarlos de los demas dentro de la colección. Ñste número también es utilizado
para
c determinar desde código cual fue el botón que el usuario ha pulsado. Capio (Título) es la
para
c
cadena de texto que mostrará el botón en la barra de herramientas. Ñsta propiedad no suele ser
muyc utilizada. Key (Clave) es una cadena de texto que se le asigna al botón para diferenciarlos de
los demás botones, es similar a la propiedadc /
con la única diferencia que es usted quien
c
especifica este valor. ToolTipText es la cadena de texto que aparecerá cuando el usuario coloque el
c
puntero del Douse sobre el botón. Debe escribir un pequeño texto que indique la función de un
c
determinado botón en esta propiedad, y mucho más cuando sólo muestre una imagen o no escriba
c en la propiedad (  . Por último, la propiedad más importante ëmae donde se especifica
nada
el cnúmero de la imagen correspondiente al control ImageList que utilizará ese botón.
c
ó Para insertar nuestro primer botón en la barra de herramientas, haga clic en el botón de comando
c  (Insertar Botón). Ñn la propiedad Key escriba Nuevo y escriba lo mismo en la
/c
c
propiedad ToolTipText. Ñn la propiedad Image escriba el valor 1 (este número representa la imagen
c evo en el control ImageList). Ahora, haga clic en el botón Aplicar. Podrá observar como se
agregan nuestro primer botón a la barra de herramientas.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V

Ga i erfaz del sarioc


Capílo 6
c c
ó Agreguemos
c los demás botones de la barra de herramientas. Para esto, haga clic nuevamente en
el botón /c . Ñn la propiedad Key escriba .  y escriba lo mismo en la propiedad
c
ToolTipText. Ñn la propiedad Image escriba el valor 2. Haga clic en el botón Aplicar.
c
c
ó Repita esto mismo para los seis botones restantes:
c
c m Tercer botón:
o Key = Guardar
c
o ToolTipText = Guardar
c o Imagen = 3
c m Cuarto botón:
c o Key = Imprimir
c o ToolTipText = Imprimir
o Imagen = 4
c
m Quinto botón:
c o Key = Vista previa
c o ToolTipText = Vista previa
c o Imagen = 5
c m Sexto botón:
o Key = Cortar
c
o ToolTipText = Cortar
c o Imagen = 6
c m Séptimo botón:
c o Key = Copiar
c o ToolTipText = Copiar
o Imagen = 7
c
m Octavo botón:
c o Key = Pegar
c o ToolTipText = Pegar
c o Imagen = 3
c
ó Después de haber agregado los demás botones, haga clic en el botón .  .
c
c
ó Corra la aplicación.
c
Podrá ver que tiene una barra de herramientas similar a la de la mayoría de las aplicaciones de
c
Windows. Si hace clic sobre cada una de las opciones no pasará nada debido a que no hemos
c
programado el evento Bo Click del control ToolBar. Ñn la siguiente sección usted aprenderá a
c
determinar los botones que ha pulsado el usuario sobre la barra y ejecutar acciones según esas
c
pulsaciones.
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio14-6 para el formulario,
c
y Ñjercicio14-6 para el proyecto.
c
c
- 6À2À4À2 Cómo reaccio ar a e las accio es del sario
c
Cuando
c el usuario pulse sobre un botón de la barra de herramientas, ocurre un evento o suceso
Bo Click. Ñste suceso tiene un argumento llamado Bo que contenido la clave del botón que
secha pulsado, lo único que tendrá que hacer es determinar con una sentencia ëf o Case el valor de
c argumento, ejemplo:
este
c
c código lo escribimos dentro del evento ButtonClick del control ToolBar:
µÑste
c Case Button.Key µDetermina el botón que se pulsa.
Select
c
Case ³Nuevo´
µAquí llamamos el evento Click de la opción Nuevo de la barra de menús.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

Ga i erfaz del sarioc


Capílo 6
c c
c Case ³Abrir´
µAquí llamamos el evento Click del botón Abrir de la barra de menús.
c
µÑjemplo: Call optAbrir Click
c
c Case ³Guardar´
c µAquí llamamos el evento Click del botón Guardar de la barra de menús.
c µÑjemplo: Call optGuardar Click
c
Ñnd Select
c
c
- 6À2À4À3 Crear me s de ro de los boo es (Bo Me )
c
Ñl c control ToolBar dispone de la colección Bo Me  que le permitirá agregar un menú
desplegable a los botones de la barra de herramientas, tal y como se muestra en la siguiente
c
imagen:
c
c
c
c
c
c
c
Hacer esto es bastante sencillo, lo podemos hacer tanto en modo de diseño, así como en modo de
c
ejecución. Ñxplicaré como hacer esto en modo de diseño con nuestro primer ejercicio.
c
c
ó Haga clic derecho sobre la barra de herramientas que diseñamos anteriormente. Ñn el menú que
aparece
c ejecute la opción  c   .
c
ó Haga clic en la ficha c . Aparecerá nuestro primer botón seleccionado, que en
c
nuestro caso es el botón Nuevo de nuestra barra de herramientas. A este botón le agregaremos un
c con las opciones Documento, Imagen e Informe. Para que este botón pueda tener un menú
menú
c debe establecer el valor 5mtbrDropdown en la propiedad yle de dicho botón. Ahora, para
usted
agregar
c las opciones haga clic en el botón de más abajo /c y escriba Documento
en la propiedad 
, escriba lo mismo en la propiedad Key. Para crear nuestra segunda opción,
c
haga clic nuevamente en el botón /cc y en la propiedad 
 escriba Imagen igual
enc la propiedad Key. Inserte otro botón de menú y escriba Informe en la propiedad 
clo mismo
enc la propiedad Key. Por último, haga clic en el botón Aceptar.
c
ó Corra
c la aplicación.
c
Podrá observar que ahora aparece una fecha a la derecha del botón Nuevo de la barra de
c
herramientas. Si hace clic sobre esa flecha aparecerán las opciones que usted agrego mediante la
c
colección ButtonDenu. Para determinar la opción pulsada dentro de un menú desplegable, el
c
control ToolBar dispone del suceso Bo Me Click y se programa de forma similar al evento
Bo
c Click:
c
Select Case ButtonDenu.Key
c
c Case ³Documento´
µÑscribimos aquí el código o llamamos el evento nuevo documento.
c µÑjemplo: Call optNuevoDocumento
c Case ³Imagen´
c µCall optNuevaImagen
c Case ³Informe´
µCall optNuevoInforme
Ñnd Select

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

Ga i erfaz del sarioc


Capílo 6
c c
c Co rol Tabrip
- 6À2À5
c
Los cuadros de diálogo que contienen varias fichas o solapas de opciones se denominan Tabrip.
c
Visual Basic dispone de dos controles para diseñarlos que son: el control común TabStrip y el
c
control SSTab. Ñn este libro describiremos sólo el control TabStrip.
c
Ñsc importante que conozca una característica de los controles TabStrip que en muchas ocasiones
confunde
c a los programadores. Ñsto es, que un control TabStrip no es un contenedor, es decir, no
contiene secciones donde usted puede colocar los elementos para cada opción, sino, que es un
c
conjunto de fichas o solapas que deben ser asociadas a contenedores como PictureBox y Frame.
Ñnc este caso, usted debe asociar un contenedor (PictureBox o Frame) a cada opción y visualizarla
c la opción que el usuario haya pulsado. Ñsto es sencillo de hacer, sólo debe poner visible el
según
c
contenedor correspondiente a la opción pulsada y poner invisible los contenedores de las demás
opciones.
c
c
Un objeto TabStrip en una aplicación tiene la siguiente apariencia:
c
c
c
c Fichas o
c Solapas
c
c
c
c
c
c
c
c
c
c Contenedor
c
c
c
c
c
c
c
c
c
c
c
- 6À2À5À1 Co fira do el co rol Tabrip e iempo de diseño
c
c configurar un control TabStrip deberá acceder a sus páginas de propiedades, haciendo clic
Para
c
derecho sobre el control y seleccionando la opción  c   . Podrá definir todas las
c
propiedades generales utilizando la ficha @ del cuadro de diálogo  c   .
Ñnc la ficha   podrá agregar todas las solapas o fichas que tendrá el control TabStrip. También
podrá cambiar el tipo de fuente del texto que estará asociado a cada ficha mediante la solapa rc
c
r. De igual forma que el control ToolBar, podrá definir la apariencia del puntero del Douse
cuando el usuario lo coloque sobre una de las fichas mediante la solapa .

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

Ga i erfaz del sarioc


Capílo 6
c c
Lac ficha @ c del cuadro de diálogo   c c   c del control TabStrip contiene las
siguientes propiedades:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Lac primera propiedad que debe definir es la propiedad yle que le permitirá modificar el aspecto
del control. Ñn la mayoría de los casos lo dejará con su valor predeterminado 0mtabTabs (las fichas
c
se muestran como una colección de páginas etiquetadas), pero también podrá asignarle el valor 1m
c
tabButtons (las fichas se sustituyen por botones y no se muestran los bordes) o 2mtabFlatButtons
c fichas se sustituyen por botones planos y no se muestran los bordes). Si desea separar los
(las
c
botones utilizando separadores deberá definir como True la propiedad eparaors (esto es valido
para
c los dos últimos estilos).
c
La propiedad TabWidhyle define el tipo de alineación para las fichas, esta puede tomar los
c
valores 0mtabJustified, 1mtabNonJustified o 2mtabFixed. La propiedad ëmaeGis permite especificar
el ccontrol ImageList que asociara a las fichas. La propiedad Placeme  le permite especificar donde
c
quiere que aparezcan las fichas. Ñn la parte superior 0mtabPlacementTop (valor predeterminado),
enc la parte inferior 1mtabPlacementBottom, a la izquierda 2mtabPlacementLeft o a la derecha 3m
tabPlacementRight. La propiedad TabStyle afecta al comportamiento en tiempo de ejecución de los
c
controles TabStrip que cuenten con varias filas. Cuando asigne a esta propiedad el valor 1m
c
tabTabOpposite, todas las filas que preceden a la actual se mostrarán en el lado opuesto del
c
control.
c
- 6À2À5À2
c Arear objeos Tab
c
Una vez haya definido todas las propiedades más importantes podrá crear fichas en la ficha Tabs
delc cuadro de diálogo   cc  . Ñn esta ficha encontraras propiedades similares a
lasc ya vistas en el control ToolBar. La propiedad ë dex (Índice) es un valor numérico que identifica
c ficha dentro de la colección. Dediante la propiedad Capio (Título) se especifica el texto que
cada
tendrá
c la ficha. La propiedad Key (Clave) es la típica en los controles ya estudiados. ToolTipTex
es el texto que usted quiere que aparezca cuando el usuario coloque el puntero del Douse sobre
c
las fichas. Ñn la propiedad ëmae especifica el número de la imagen correspondiente al control
c
ImageList que utilizará esa ficha. Ñsta propiedad estará habilitada, sólo si se encuentra un control
c
ImageList asociado al control TabStrip mediante su propiedad ëmaeGis.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

Ga i erfaz del sarioc


Capílo 6
c c
Hagamos
c nuestro primer ejercicio con el control TabStrip. Ñn este ejercicio usted creará un control
TabStrip similar al que se muestre en la siguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c un nuevo proyecto.
ó Abra
c
ó Agregue a su proyecto el componente  c Î c (PPc ( c c '  de la
c
ventana de diálogo (P.
c
ó Dibuje
c un control TabStrip en el formulario.
c
ó Haga clic derecho sobre el control TabStrip y ejecute la opción  c    . Ñn la
ventana
c de diálogo   cc   seleccione la ficha Tabs (Fichas). Para agregar nuestra
primera ficha escriba General en la propiedad Caption (Título) y escriba lo mismo en la propiedad
c
Key (Clave). Para insertar la segunda ficha, haga clic en el botón Insert Tab (Insertar Ficha) y
c
escriba Fuente en la propiedad Caption y en la propiedad Key. Agregue las fichas Ñstilos, Colores,
c
Ñfectos e Imágenes de la misma manera que agrego las dos primeras. Cuando haya terminado,
c clic en el botón .  .
haga
c
ó Corra la aplicación.
c
c clic sobre cada una de las fichas. Podrá ver que no aparece nada cuando hacemos clic sobre
Haga
lasc fichas. Ñsto es, porque no hemos creados los contenedores para cada ficha. Ñn la siguiente
c
sección aprenderá a determinar cada una de las fichas pulsadas por el usuario y luego mostrar los
contenedores
c correspondientes a cada una de ellas.
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio15-6 para el formulario,
c
y Ñjercicio15-6 para el proyecto.
c
c
- 6À2À5À3 Cómo deermi ar la ficha plsada por el sario
c
Para saber qué ficha ha sido pulsada por el usuario usted debe consultar la propiedad
c
elecedëem del control TabStrip. Ñsto debe hacerlo en el evento Click del control TabStrip:
c
c
Private Sub TabStript1 Click( )
c
c If TabStrip1.SelectedItem.Index = 1 Then µSe hizo clic en la primera ficha.
If TabStrip1.SelectedItem.Index = 2 Then µSe hizo clic en la segunda ficha.
c
If TabStrip1.SelectedItem.Index = 3 Then µSe hizo clic en la tercera ficha.

Ñnd Sub
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 VV


c

Ga i erfaz del sarioc


Capílo 6
c c
También
c podrá determinar la ficha pulsada leyendo la propiedad Capio del la ficha seleccionada:
c
Private Sub TabStript1 Click( )
c
c If TabStrip1.SelectedItem.Caption = ³General´ Then µSe hizo clic en la ficha general.
If TabStrip1.SelectedItem.Caption = ³Fuente´ Then µSe hizo clic en la ficha Fuente.
c
Ñndc Sub
c
- 6À2À5À4 Preparació de los co e edores
c
c el control TabStrip no es un contenedor no podrá introducir en su superficie otros controles
Como
c Ñsta es una de las limitaciones más importantes de este control. Usted deberá crear
hijos.
contenedores
c (Picture o Frame) dentro del formulario. No es importante el lugar en el que
introduzca estos contenedores dentro del formulario porque tendrá que desplazarlos y modificar su
c
tamaño en tiempo de ejecución.
c
c
Supongamos que desea mostrar distintas secciones para cada ficha de nuestro ejercicio anterior
c vez que el usuario haga clic sobre una de ellas. Para esto, dibuje en el formulario seis
cada
contenedores
c Picture, teniendo en cuenta no dibujarlos uno dentro del otro, tal y como se muestra
en la siguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Seleccione el primer control PictureBox (el que esta en el fondo) y en la propiedad Name escriba
c
General. Seleccione el segundo PictureBox y en la propiedad Name escriba Fuente, en la del tercer
PictureBox
c escriba Ñstilo, en la del cuarto PictureBox escriba Colores, en la del quinto Ñfectos y en
la cdel sexto Imagenes.
c
ó Ahora seleccione cada uno de los controles Picture y busque su propiedad Visible y póngala a
c Ñsto es para que estén invisibles cuando la aplicación se encuentre en ejecución.
False.
c
ó Asigne
c un color diferente a cada Picture en su propiedad BackColor para que note cuando se
cambia
c de un Picture a otro al hacer clic sobre las fichas. Ñsto lo hago, no porque todos los
contenedores deben tener colores distintos (todos deben ser siempre del mismo color), sino, para
sec de cuenta como cambiamos de un contenedor a otro al hacer clic en cada una de las fichas.
Podrá colocar todo tipo de controles dentro de cada Picture.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

Ga i erfaz del sarioc


Capílo 6
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Dentro del evento Goad del formulario escriba:
c
c
'Ñste bloque de código hace que todos los Picture se posiciones adecuadamente,
c
'dentro del control TabStrip.
c es un código estándar, lo podrá copiar en sus proyectos sin ningún problema.
'Ñste
c
Dimc ctlControl As Object
Onc Ñrror Resume Next
c
For Ñach ctlControl In De.Controls 'Recorremos todos los controles del formulario.
c
c'Determinamos si el control leído es un Picture.
If TypeOf ctlControl Is PictureBox Then
c
c 'Asignamos el tamaño y la posición adecuada al Picture leído.
c ctlControl.Dove TabStrip1.ClientLeft, TabStrip1.ClientTop,
c TabStrip1.ClientWidth, TabStrip1.ClientHeight
c
'Quitamos los bordes del Picture.
c ctlControl.BorderStyle = 0
c
cÑnd If
c
c ctlControl.ListIndex = m1
DoÑvents
c
Next
c ctlControl
c
'Hacemos que el primer Picture sea el que aparezca cada vez que cargue el formulario.
c
General.Visible
c = True
c
c
ó Dentro del evento Click del control TabStrip escriba:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

Ga i erfaz del sarioc


Capílo 6
c c
'Ñste
c es un truco para no tener que crear un array de controles.
'Ñlc siguiente bloque de código determina la ficha que es pulsada,
'y muestra el PictureBox correspondiente a esa ficha.
c
Dimc ctlControl As Object
On Ñrror Resume Next
c
Forc Ñach ctlControl In De.Controls 'Recorremos todos los controles del formulario.
c
'Verificamos si el control leído es un PictureBox.
cIf TypeOf ctlControl Is PictureBox Then
c
c 'Verificamos si el nombre del Picture leído corresponde al Caption de la ficha.
c If ctlControl.Name = TabStrip1.SelectedItem.Caption Then
c 'Si es verdadera la comparación anterior ponemos el PictureBox Visible.
ctlControl.Visible = True
c Ñlse
c µSi es falsa la comparación ponemos el Picture invisible.
c ctlControl.Visible = False
c Ñnd If
c
Ñnd If
c
c ctlControl.ListIndex = m1
DoÑvents
c
Next
c ctlControl
c
ó Corra la aplicación.
c
c clic en cada ficha. Podrá ver como cambiamos los contenedores cuando hacemos clic en
Haga
c una de las fichas. Ñl código utilizado para hacer esto es un truco que consiste en poner en la
cada
propiedad
c ame de cada Picture el mismo título que tienen las fichas en su propiedad Capio . Si
hace
c esto para los controles TabStrip que utilice en sus aplicaciones, podrá copiar el bloque de
código anterior y obtendrá el mismo resultado sin importar la cantidad de fichas y Picture que
c
agregue a su formulario.
c
ó cDetenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio16-6 para el
formulario,
c y Ñjercicio16-6 para el proyecto.
c
- 6À2À6 Ñjercicios propesos
c
1.mc Crear una aplicación que tenga un control TreeView con varios países. Cada vez que el usuario
c clic sobre uno de los países contenidos en el TreeView se debe mostrar la capital en un
haga
c
DsgBox.
c
2.m Crear una aplicación que mediante un control TreeView cambiemos el color de fondo de un
c
control PictureBox.
c
3.mc Crear una aplicación que mediante un control TreeView cambiemos la imagen de un control
PictureBox.
c Ñl control TreeView debe tener diez opciones de imágenes para aplicarla al control
PictureBox.
c
4.mc Crear un control ListView con tres columnas. La primera y la segunda columna deben tener diez
c
números y en la tercera columna mostrar la suma de las dos primeras.
c
5.m Crear una pantalla que simule un pequeño punto de venta donde se pueda agregar el código del
articulo, la descripción, el precio y la cantidad comprada de cada articulo. Ñl programa debe

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

Ga i erfaz del sarioc


Capílo 6
c c
debe
c sumar la columna de los precios y mostrar en una etiqueta el total a pagar por el cliente.
c
6.m Utilizando el control ToolBar crear la siguiente barra de herramientas:
c
c
c
c
7.m Utilizar el control TabStrip para crear la siguiente pantalla:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

Gos Archivos
c
Capílo 7
c
CTÑë3
c
c c
7À1 Co cepo de ArchivoÀ
7À2c Caracerísica de los ArchivosÀ
7À3c Creació de  archivo aleaorio (si formao) desde Visal Basic 6À0À
7À4c Almace amie o de i formació  archivo de exoÀ
7À5c Gecra de  archivo aleaorio (si formao)À
m 7.5.1 Lectura de un archivo utilizando un bucle.
c
m 7.5.2 Creación de un editor sencillo.
7À7c Archivos co esrcra de base de daosÀ
7À8c Crear  archivo co esrcra de base de daos e Visal Basic 6À0À
7À9c Ñjercicios propesosÀ
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

Gos Archivosc
Capílo 7
c c
7À1c CCÑPT 3Ñ ARCHëV
c c
Un archivo o fichero (file) es una estructura de datos que reside en memoria secundaria,
c
consistente en un conjunto de informaciones estructuradas en unidades de acceso denominadas
c
registros, todos del mismo tipo y en número indeterminado.
c
Dentro
c de un archivo es posible almacenar cualquier tipo de información, ya sea    por
el usuario ó de modo aleatorio (sin formato). Cuando hablamos de    nos referimos a
c
que el usuario tiene la posibilidad de almacenar los datos de acuerdo a sus necesidades, ya sea
c
agregando caracteres especiales, símbolos, etc., para facilitar su lectura.
c
Ñl c terminoc Pc   c  c formato) se refiere al almacenamiento de los datos sin
especificaciones
c especiales, es decir, sin aplicar ninguna alteración a la estructura de los datos. Por
ejemplo, el almacenamiento del contenido de una caja de texto en un archivo de texto. Los archivos
c
que poseen cierto tipo de estructuras especiales se les denomina archivos de bases de datos. Ñste
c el caso de estudio del siguiente capítulo.
será
c
Unc archivo puede estar en cualquier parte de un disco ya sea en una carpeta o en una subcarpeta.
Comúnmente
c vienen representados por un icono y un nombre que permite diferenciarlos de los
demás archivos del disco.
c
c
7À2c CARACTÑRÍTëCA 3Ñ G ARCHëVc
c
c
Un archivo se podría representar gráficamente de la siguiente manera:
c
c
c
c ombreArchivoÀÑxe sió
c
c
c
ombreArchivo: Puede ser cualquier cadena de caracteres especificada por el usuario
c
(programador).
c
c sió : Una extensión en un archivo se representa por tres letras que hacen referencia al tipo
Ñxe
de archivo. Por ejemplo, la extensión para un archivo de texto sería (.TXT), para un archivo de
c
datos (.DAT), para un archivo de documento (.DOC), para un archivo por lotes (.BAT), para un
c
archivo ejecutable (.ÑXÑ), etc.
c
Unc archivo en Windows se representa por un ICONO y debajo de este, el nombre del archivo sin la
extensión.
c Cuando Windows conoce el tipo de archivo entonces muestra un ICONO que hace
referencia al tipo de archivo y omite la presentación de la extensión y cuando no conoce el tipo de
c
archivo agrega un ICONO blanco que representa una aplicación ó archivo desconocido.
c
c
c entender lo explicado anteriormente visualizare el contenido del directorio de Windows en mi
Para
disco
c duro para por observar la característica de los archivos que contiene esta carpeta.
c c
Ñjemplo:
c
Al cvisualizar mi carpeta de Windows aparecen los siguientes archivos y carpetas:
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Si cobserva detenidamente que cada tipo de archivo posee un tipo de ICONO (imagen) distinto y que
los archivos que Windows no conoce se presentan con un ICONO blanco con una ventana .
c
c
7À3c CRÑACë 3Ñ U ARCHëV AGÑATRë (ë FRMAT) 3Ñ3Ñ VëUAG BAëC 6À0c
c
c crear un archivo desde Visual Basic disponemos de la sentencia PÑ seguida del modo
Para
UTPUT. Ñxisten otros modos como APPÑ3 e ëPUT que veremos más adelante.
c
Ñl cformato de esta sentencia es la siguiente:
c
c Unidad.Carpeta.NombredelArchivo FR M3 A #numero archivo abierto
PÑ
c
Donde:
c
c
PÑ: Ñs la sentencia de Visual Basic utilizada para crear un archivo cualquiera.
U cidadÀCarpeaÀombredelArchivo: Todo esto representa un archivo con su unidad y su carpeta,
escdecir, el PATH completo.
c
Por ejemplo:
c
c A) Un archivo llamado CARLOS.DOC que se encuentre en el disco ³C:´ entonces su PATH
c sería el siguiente:
c
c C:\ CARGÀ3C
c
B) Un archivo llamado JOSÑ.DOC que se encuentra en el disco ³C:´ en una carpeta llamada
DOCUDÑNTOS entonces su PATH sería el siguiente:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
c C:\3CUMÑT\JÑÀ3C
c
c C) Un archivo llamado DATOS.TXT que se encuentre en el disco ³C:´ en una subcarpeta
c llamada INFORDACION que se encuentra en la carpeta PROGRADA entonces su PATH
c sería el siguiente:
c
C:\PR RAMA\ëFRMACë\3ATÀT T
c
c
FRc M3: Ñn este se especifica el tipo de acceso al archivo, es decir, si es para lectura, para
c
escritura o para la creación de un archivo nuevo.
c
Los modos disponibles en Visual Basic son los siguientes:
c
c à OUTPUT: este modo es utilizado para crear un archivo nuevo si este no existe, y si existe
c entonces lo sustituye por el nuevo archivo.
c
c à APPÑND: este modo es utilizado para agregar información al final de un archivo existente,
c si no existe entonces se crea.
c à INPUT: este modo es utilizado para leer el contenido de un archivo almacenado en un
c disco.
c
# cmero_archivo_abiero: Ñn este se especifica un valor que representa el número del archivo
abierto
c en la aplicación. Ñsto es porque usted puede abrir o crear dos o más archivo y se
necesitaría un valor que permita llevar el control de estos archivos abiertos. Por ejemplo, si usted va
c
a crear un archivo llamado CARTA.DOC en el disco ³C:´ y otro llamado ARCHIVOS.TXT
c
necesariamente usted tendría que usar dos veces la sentencia OPÑN e identificar cada unas de
c
ellas:
c
PÑ
c ³C:\CARTAÀ3C´ FR UTPUT A #1
c
PÑ ³C:\ARCHëVÀT T´ FR UTPUT A #2
c
c
CGÑ #1
c
CGÑ #2
c
c primera línea crea el archivo CARTA.DOC en el disco ³C:´
m La
c
m La
c segunda línea crea el archivo ARCHIVOS.TXT en el disco ³C:´
c tercera línea cierra el primer archivo abierto, en este caso CARTA.DOC. Cada vez que se abra
m La
unc archivo con OPÑN este debe ser cerrado con la sentencia CLOSÑ #numeroarchivo.
c
m La
c cuarta línea cierra el segundo archivo abierto, en este caso ARCHIVOS.TXT.
c
7À4c AGMACÑAMëÑT 3Ñ ëFRMACë U ARCHëV 3Ñ TÑ T
c c
Ñsc lógico que al abrir un archivo para escritura debe de existir una sentencia que permita escribir en
el,c o más bien, llenar el archivo de datos. Para esto existe la sentencia PRëT que permite escribir
datos
c línea por línea en el archivo.
 formao es:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
c PRëT # meroarchivo
c
Ñjemplo:
c
c ³C:\CARTA.DOC´ For Output As #1
Open
c Print #1, ³Querido Padre:´
c Print #1, ³Le escribo para decirle que lo extraño mucho y que espero verlo pronto.´
Print #1, ³He hecho todo lo que me dijo y estoy estudiando muchísimo.´
c
Print #1, ³De despido y saludos a todos por allá.´
c Print #1, ³Att: Ñrnesto Pérez´
c #1
Close
c
c
Ñl bloque de código anterior permite crear un archivo llamado CARTA.DOC en el disco ³C:´ con
c
cinco líneas de información que se especifican con la sentencia Pri .
c
c
Ñjercicio:
c
Lac siguiente aplicación almacena el contenido de una caja de texto en un archivo.
c
Para crear esta aplicación vamos a utilizar una caja de texto y un dos botones de comando, uno
c guardar los datos de la caja de texto y otro para salir de la aplicación.
para
c
c un nuevo proyecto.
ó Abra
c
ó Diseñe la siguiente pantalla:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Haga clic en la caja de texto y en la ventana propiedades establezca los siguientes valores:
c
a) Ñn la propiedad MliGi e establezca Tre.
b) Ñn la propiedad crollBars establezca el valor 2 ± Verical.
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
c el evento Click del botón ardar escriba:
ó Ñn
Onc Ñrror GoTo ÑrrorDesconocido
c
Open
c "C:\DATOS.DOC" For Output As #1
c
Print #1, Text1.Text
c
c #1
Close
c
c
DsgBox ("Los datos han sido guardado.")
c
Ñxit Sub
c
ÑrrorDesconocido:
cDsgBox ("Ha ocurrido un error al intentar guardar el archivo.")
c
c el evento Click del botón alir escriba:
ó Ñn
c
Ñndc
c
c
ó Corra la aplicación.
c
ó Después que la aplicación este corriendo escriba algo en la caja de texto.
c
c
ó Cuando halla escrito algo en la caja, haga clic en el botón guardar, y a continuación, aparecerá
unac ventana diciendo que ³Los datos han sido guardado.´, esto es sino ocurre un error.
c
ó Al
c hacer clic en el botón guardar, automáticamente se creará un archivo llamado DATOS.DOC en
el disco ³C:´.
c
c
PARA VÑR SI ÑL ARCHIVO SÑ HA CRÑADO RÑALDÑNTÑ ÑN ÑL DISCO ³C:´ HAGA LO
c
SIGUIÑNTÑ:
c
c A) Haga doble clic en DY PC.
B) Haga doble clic en Disco C:\
c C) Ñxplore todos los archivos que aparecen en el disco ³C:\´ y verá que entre todos esos
c archivos se encuentra el que creamos desde Visual Basic llamado DATOS.DOC.
c
TA:
c Ñl archivo aparecerá como documento de WORD porque lo hemos creado con la extensión
³.DOC´
c que representan los archivos de WORD.
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio1-7 para el formulario,
c
y Ñjercicio1-7 para el proyecto.
c
c
Ñxplicació del prorama lí ea por lí ea:
c
- Ga primera lí ea:
c
Onc Ñrror GoTo ÑrrorDesconocido
c
c línea de código permite controlar cualquier error que ocurra a partir desde donde se escribe.
Ñsta
Ñnc este caso la hemos utilizado para verificar si al grabar los datos ocurre algún error.
c
Traducida al castellano esta línea de código quiere decir lo siguiente:
SI OCURRÑ UN ÑRROR SALTA A LA LINÑA LLADADA ÑrrorDesconocido

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

Gos Archivosc
Capílo 7
c c
- Ga
c se da lí ea:
c
Open "C:\DATOS.DOC" For Output As #1
c
c línea permite crear el archivo llamado DATOS.DOC en el disco ³C:´.
Ñsta
c
Sec ha utilizado el modo p porque se sobreentiende que el archivo no existe, pero si este
existe, entonces es remplazado con los nuevos datos.
c
c
Traducida al castellano esta línea quiere decir:
c
c
CRÑA ÑL ARCHIVO DATOS.DOC ÑN ÑL DISCO ³C:´ PARA ÑSCRITURA Y ASIGNALÑ AL
ARCHIVO
c ÑL NUDÑRO UNO ÑN DI APLICACIÓN.
c
- Ga ercera lí ea:
c
c #1, Text1.Text
Print
c
Yac se ha explicado que la sentencia Pri  se utiliza para escribir en el archivo. Ñn este caso se ha
utilizado para escribir el contenido de la caja de texto en el archivo.
c
c
Traducida al castellano esta línea quiere decir:
c
c
ÑSCRIBÑ ÑN ÑL ARCHIVO NUDÑRO UNO ÑL CONTÑNIDO DÑ LA CAJA DÑ TÑXTO.
c
- Ga cara lí ea:
c
c Close #1
c
c línea cierra un archivo abierto. Recuerde que cada vez que se abre un archivo ya sea para
Ñsta
lectura
c o escritura este debe ser cerrado.
c
Traducida al castellano esta línea quiere decir:
c
c
CIÑRRA ÑL ARCHIVO NUDÑRO UNO.
c
- Ga
c qi a lí ea:
c
DsgBox (³Los datos han sido guardado.´)
c
c línea muestra una ventana con el mensaje escrito entre los paréntesis y la comilla. Ñn este
Ñsta
c hemos especificado un mensaje que informa al usuario si los datos se han grabado
caso
correctamente.
c
c
- Ga sexa lí ea:
c
c Sub
Ñxit
c
c línea de código permite separar un bloque de código con otro bloque de código. Se ha
Ñsta
utilizado para separar las últimas dos líneas de código que muestran el mensaje de error en caso
c
de que este ocurra.
c
Si cesta línea de código no se escribe, entonces el mensaje de error aparecería aun los datos se
c guardado correctamente, esto es, porque no habría nada que separe el código principal que
hallan
almacena los datos, del código que muestra el error en caso de que ocurra.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
Ñsc lógico que el error solamente deba aparecer si ocurre algún error. Y debe de existir algo que
separe un bloque de código de otro código y para esto se utiliza Ñxi b.
c
c s
pima lí ea:
- Ga
c
c
ÑrrorDesconocido:
c
Ñsta línea de código se ha declarado como una etiqueta que va a permitir desde el punto de vista
c
lógico asignarle un nombre a una línea.
c
Al cestablecer la etiqueta ³ÑrrorDesconocido:´ en una línea, es posible acceder al bloque de código
quec se encuentra después de la etiqueta utilizando la sentencia oo como se especifico en la
primera
c línea.
c
Ñsto es, porque es la única forma de acceder a la codificación que reside después de la sexta línea
dec código que corresponde a la codificación Ñxi b.
c
c ocava lí ea:
- Ga
c
Dsgbox(³Ha ocurrido un error al intentar guardar el archivo.´)
c
c
Duestra un mensaje diciendo que ha ocurrido un error al intentar guardar el archivo en el disco.
c
c
7À5c GÑCTURA 3Ñ U ARCHëV AGÑATRë (ë FRMAT)
c c
Ñsc lógico que después de haber creado un archivo debe de existir una forma para leerlo.
c
Para leer un archivo que haya sido creado anteriormente se debe utilizar el método ëi p en vez
c
de p y utilizar la sentencia Gi e ë p que permite leer línea por línea un archivo.
c
c formao es:
c
Line
c Input #numeroarchivo, Variable
3oc de:
c
# cmeroarchivo: Ñs el número del archivo abierto como ya se había explicado anteriormente.
c
Variable:
c Representa una variable tipo cadena (String) o variante (Variant), declarada de antemano
para almacenar el contenido de una línea del archivo abierto.
c
c
Ñjemplo:
c
Sinc se quiere leer las primeras ocho líneas de un archivo de texto llamado CaraÀ3oc que se
encuentre
c en el disco duro y luego almacenarla en una caja de texto con la propiedad MliGi e
establecida a Tre, se haría de la siguiente manera:
c
Dimc Linea1, Linea2, Linea3, Linea4, Linea5, Linea6, Linea7, Linea8 As String
c
c ³C:\CARTA.DOC´ For Input As #1
Open
Line
c Input #1, Linea1
Line Input #1, Linea2
c
Line Input #1, Linea3
Line Input #1, Linea4

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
Line
c Input #1, Linea6
Line Input #1, Linea7
c
Line Input #1, Linea8
c #1
Close
c
c
Text1.Text = Linea1 & CHR(10) & CHR(13) & Linea2 & CHR(10) & CHR(13) & Linea3 & CHR(10)
& CHR(13)
c & Linea4 & CHR(10) & CHR(13) & Linea5 & CHR(10) & CHR(13) & Linea6 & CHR(10)
& CHR(13) & Linea7 & CHR(10) & CHR(13) & Linea8
c
c
c TA: esas rayitas llamadas U dercore deben de ponerse. Se
c utilizan para seguir una línea de código en Visual Basic cuando esta
c es demasiado grade. Si no utiliza el U dercore entonces deberá
de escribir la línea de código completa pero en una sola línea. Ñsto
c no es recomendable porque se haría incomodo leerla cuando sea
c necesario. Los U dercore se ponen con un espacio en blanco, es
c decir, no pegado al texto que le queda al lado.
c
c
Ñxplicació del prorama a erior lí ea por lí eaÀ
c
c
- Primera lí ea:
c
Dimc Linea1, Linea2, Linea3, Linea4, Linea5, Linea6, Linea7, Linea8 As String
c
Ñsta línea de código permite declarar ocho variables que luego serán utilizadas para almacenar las
c
ocho primeras líneas del archivo.
c
3imc es una sentencia utilizada para declarar variables como se puedo notar en la línea de código.
Asc ri  indica el tipo de datos que almacenarán cada variable, en este caso, se declararon como
tipo
c CADÑNA.
c
As String significa: ³CODO CADÑNA DÑ TÑXTO O CARACTÑRÑS´.
c
c
- e da Gí ea:
c
Open
c ³C:\CARTA.DOC´ For Input As #1
c
Ñsta línea de código permite abrir el archive CARTA.DOC en modo de lectura, por tal razón se
c el modo ë p como se había explicado anteriormente.
utilizo
c
Sec había dicho que ë p permite abrir el archivo en modo de lectura, es decir, para leer del archivo
y no
c para escribir en él.
c
TA: el archivo debe de existir en el disco, de lo contrario daría un error al tratar de abrir un
c
archivo que no existe. Con el modo p y Apee d no ocurre este problema, porque si el archivo
noc existe el mismo se crea, pero con ë p no ocurre lo mismo, sino que el archivo debe de existir o
le cdaría un error.
c
m 4a, 5a, 6a, 7ma, 8va, 9 a, 10ma, 11va Gí ea:
c
c Input #1, Linea1
Line
c Input #1, Linea2
Line
c Input #1, Linea3
Line
Line Input #1, Linea4
Line Input #1, Linea5

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
Line
c Input #1, Linea6
Line Input #1, Linea7
c
Line Input #1, Linea8
c
c se puede apreciar cada una de las líneas permite leer una línea de texto del archivo y se
Como
c
almacenan en la variable correspondiente.
c
- 3
cima se da lí ea (12):
c
c #1
Close
c
c
Permite cerrar el archivo. Recuerde que cada vez que se abre un archivo este debe de ser cerrado.
c
- Ulimas lí eas:
c
c
Text1.Text = Linea1 & CHR(10) & CHR(13) & Linea2 & CHR(10) & CHR(13) & Linea3 & CHR(10)
c
& CHR(13) & Linea4 & CHR(10) & CHR(13) & Linea5 & CHR(10) & CHR(13) & Linea6 & CHR(10)
c
& CHR(13) & Linea7 & CHR(10) & CHR(13) & Linea8
c
Permite
c almacenar el contenido de cada línea en la caja de texto.

Ñl c& Ampersa d se utiliza para unir cada una de la línea.


c
c
CHR(10) & CHR(13) es una combinación especial que se utiliza para hacer un salto de línea cada
vezc que se pone una línea en la caja de texto. Si no se utiliza esta combinación entonces el
contenido del archivo aparecería en una sola línea de la caja de texto y esto no es normal.
c
c Gecra de  archivo iliza do  bcle
- 7À5À1
c
Ñnc ocasiones será muy necesario leer el archivo utilizando un bucle que permitirá leer a totalidad el
archivo.
c Ñsto es porque no se conoce de antemano el total de líneas del archivo y aun conociéndola
a veces
c son demasiadas líneas y seria anormal declarar tantas variables para leer el archivo.
c
Supóngase un archivo con 1000 mil líneas habría que declarar mil variables para almacenar cada
c del archivo, por tal razón de ahora en adelante solo utilizaremos bucles para la lectura de
línea
c
nuestros archivos de texto.
c
Si tenemos un archivo en el disco duro llamado CARTA.DOC la forma correcta de leerlo seria de la
c
siguiente manera:
c
Dimc Linea As String
c
Open
c "C:\CARTA.DOC" For Input As #1
c
While Not ÑOF(1)
c
c Line Input #1, Linea
c
c Text1.Text = Text1.Text & Linea & Chr(13) & Chr(10)
c
Wend
c #1
Close
c
c
Ñxplicació del códio a erior lí ea por lí ea:

- Primera lí ea:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
Dimc Linea As String
c
Ñsta línea declara una variable llamada ³Linea´ como tipo cadena. Ñn esta variable se almacenará
c una de las líneas del archivo a medida que el bucle se repita.
cada
c
c
- e da lí ea:
c
Open ³C:\CARTA.DOC´ For Input As #1
c
c línea abre el archivo ³CARTA.DOC´ ubicado en el disco ³C:´ para modo de lectura.
Ñsta
c
c
- Tercera lí ea:
c
While Not ÑOF(1)
c
Si custed nunca ha trabajado con bucle esta línea de código le parecerá muy extraña. De todos
c
modos tratare de explicarla.
c
Unc bucle es una sentencia especial que permite repetir una determinada porción de código hasta
que se cumpla una determinada condición. Ñxisten dos tipos de bucles en Visual Basic que son
c
muy utilizados el bucle For y el bucle While que es el utilizado en este caso.
c
Lac sentencia While permite repetir una porción de código ³   no se cumpla una condición,
escdecir, hasta que la condición sea falsa.
c
Ñl significado de la línea de código anterior es el siguiente:
c
Miec ras o  )    ÿ % Repie
c
c
c
c
While Not ÑOF (1)
c
c
c
While: significa en español €   .
c
o: significa en español ³NO´
c
c (Ñnd Of File) significa en español ³Fin Del Archivo´.
ÑF:
c
(1):c Ñs el número asignado cada vez que usted abre un archivo. Recuerde este número lo
especifica
c usted y puede ser cualquier número entero.
c c
c
c
- Cara lí ea:
c
c Input #1, Linea
Line
c
c línea permite leer cada línea del archivo cada vez que se repite el bucle. La variable ³Linea´
Ñsta
cambia su valor cada vez que el bucle se repite. Cuando el bucle inicia en esta variable se
c
almacena la primera línea del archivo, cuando el bucle se repite otra vez o sea a la segunda vez,
c
entonces en esta variable se almacena la segunda línea del archivo y así sucesivamente hasta el
fincdel archivo.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

Gos Archivosc
Capílo 7
c c
- Qi
c a lí ea:
c
Text1.Text = Text1.Text & Linea & CHR(13) & CHR(10)
c
c línea de código almacena en una caja de texto el contenido de cada línea del archivo. Se
Ñsta
c
especifico dos veces ³Text1.Text = Text1.Text´ para que se mantenga el contenido actual de la caja
dec texto.
c
Ñl significado de la línea anterior es el siguiente:
c
c
c
CONTÑNIDO DÑ LA CAJA UNO = CONTÑNIDO DÑ LA CAJA UNO cÑL CONTÑNIDO
c Tex1ÀTex Tex1ÀTex &
c
DÑc LA VARIABLÑ LINÑA SALTA A LA OTRA LINÑA DÑ LA CAJA DÑ TÑXTO.
c Gi ea & CHR(13) & CHR(10)
c
c
- exa
c lí ea:
c
Wend
c
c línea de código le pertenece al bucle y es el que indica el fin del bucle. Lo que se encuentre
Ñsta
c While y Wend es lo que se va a repetir. Ñn conclusión cuando un bucle se inicia se debe de
entre
finalizar
c o debe de haber algo que indique hasta donde se va a repetir una porción de código. Para
esto existe la sentencia Wend.
c
c
c
- 
pima lí ea:
c
Close
c #1
c
Cierra el archivo abierto que tiene el número uno.
c
c
- 7À5À2
c Creació de  edior se cillo
c
Vamos a crear una aplicación que permite guardar y abrir un documento escrito en una caja de
c Utilizaremos el control  c(PPc0  para guardar y abrir los archivos.
texto.
c
c crear nuestra aplicación siga los siguientes pasos:
Para
c
ó Inicie
c un nuevo proyecto en Visual Basic.
c
ó Agregue el control  c(PPc0  a la barra de controles. Para esto haga clic derecho
enc la barra de controles y de la ventana de Componentes seleccione  c (PPc 0 c
c
( cc' 4 y, a continuación, haga clic en el botón .  .
c
c
ó Inserte el control Common Dialog en cualquier parte del Formulario.
c
ó Dibuje
c una caja de texto y cuatro botones de comando en la parte inferior de la caja. Tal y como
se muestra en la imagen de la siguiente página«
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó  ccc ccc  ccc  c;
c
u
c  
 c
c u  c
c #   ccc
c '&( (")/c
c )( +)&(c
c c
c
c *  c
,   c
c
$#+ 2 c  c
c '&( "2(c
c )( +2(c
c  2/c
c " 2/c
c c c
 c u   c
c c
c
 2c u #  c
c c
c
 &c u $c
c
c
u  c  c
c c
c
c el evento Click del botón .  escriba el siguiente bloque de código:
ó Ñn
c
Text1.Text = ""
Onc Ñrror GoTo NoSeleccionoArchivo:
c
CommonDialog1.Filter = "Archivos de texto (TXT)" & Chr(32) & Chr(124) & "*.txt"
CommonDialog1.ShowOpen

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
Dimc Linea As String
c
Open CommonDialog1.FileName For Input As #1
c
cWhile Not ÑOF(1)
c Line Input #1, Linea
c Text1.Text = Text1.Text & Linea & Chr(13) & Chr(10)
cWend
c #1
Close
c
c Sub
Ñxit
NoSeleccionoArchivo:
c
c
c
Ñxplicació del códio a erior:
c
c
- Primera lí ea:
c
Text1.Text
c = ³´
c
Permite limpiar la caja de texto. Ñsto es en caso de que anteriormente se encontrará algún archivo
c
abierto. Ñs normal que si se va a mostrar el contenido de algún archivo el lugar donde se mostrará
c de estar limpio.
debe
c
- e da lí ea:
c
Onc Ñrror GoTo NoSeleccionoArchivo
c
c línea se ha declarado en caso de que ocurra un error al intentar abrir el archivo.
Ñsta
c
Ñsto es muy importante porque en ocasiones pueden ocurrir errores desconocidos y estos errores
c
deben ser controlados desde la aplicación. Ñsta línea la he declarado principalmente porque
c
siempre que no se selecciona algún archivo en el cuadro de dialogo abrir ocurrirá un error, es decir,
c
cuando se haga clic en el botón Cancelar del cuadro de dialogo Abrir. No intente averiguar porque
c error ocurre, simplemente especifique siempre esta línea de código cuando intente abrir un
este
archivo.
c
c
- Tercera lí ea:
c
c
CommonDialog1.Filter = "Archivos de texto (TXT)" & Chr(32) & Chr(124) & "*.txt"
c
c línea es muy importante. Permite especificar el tipo de archivo que permitirá visualizar el
Ñsta
cuadro de dialogo abrir.
c
Lac propiedad Filter te permite especificar el tipo de archivo que el cuadro de dialogo podrá
c
visualizar a la ahora que este sea activado.
c
c
Ñstructura de la línea anterior:
c
CommonDialog1.Filter = "Archivos de texto (TXT)" & Chr(32) & Chr(124) & "*.txt"
c
c
Ñntre comillas se especifica el texto que Ñsta combinación Ñxtensión de los
c aparecerá en  cc    del cuadro permite obtener el archivos que se
de diálogo Abrir. carácter ¦. mostrarán.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
Ñnc este caso se ha especificado que el cuadro de dialogo Abrir solo visualice los tipos de archivos
de texto. Si corre la aplicación y hace clic en el botón Abrir aparecerá la pantalla de Abrir con la
c
siguiente configuración:
c
c cc
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Puede
c observar que en la caja r cc (Tipo de archivos) aparece el texto que especificamos
enc la propiedad Filter de control Common Dialog. Se pueden especificar más tipos de archivos pero
esto lo veremos más adelante.
c
c
- Cara lí ea:
c
CommonDialog1.ShowOpen
c
c
Ñsta línea de código no tiene mucha novedad simplemente muestra el cuadro de dialogo abrir.
Ñl cmétodo ShowOpen significar ³Dostrar Abrir´, es decir, ³Dostrar el cuadro Abrir´.
c
c
Ñxisten otros métodos como: ShowPrinter, ShowColor, ShowSave, ShowFont, ShowHelp, etc.
c
Ñstos otros métodos los veremos más adelante.
c
c
c a lí ea:
- Qi
c
Dimc Linea As String
c
c línea de código declara una variable llamada ³Linea´ donde se almacenará cada línea de datos
Ñsta
del archivo abierto.
c
c
* 01
c
c
 c  
$ c c c cc

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
Lac única novedad que vemos en esta línea de código es ³CommonDialog1.FileName´. Antes
especificábamos el archivo directamente pero en esta ocasión dejamos que la ventana de diálogo
c
Abrir tome el control del nombre del archivo.
c
Ñl carchivo que se seleccione en la ventana de dialogo Abrir, este será el archivo que se muestre en
el cÑditor.
c
La propiedad FileName almacena el PATH o la ruta completa del archivo seleccionado.
c
c
- Ulimas lí eas:
c
c Not ÑOF(1)
While
c Line Input #1, Linea
Text1.Text = Text1.Text & Linea & Chr(13) & Chr(10)
c
Wend
c #1
Close
c
c Sub
Ñxit
NoSeleccionoArchivo:
c
c
Ñstas ultimas líneas las hemos visto ya anteriormente que se utilizan para la lectura de un archivo
c
completo utilizando un bucle. Dás arriba ya habíamos trabajado con esto. La sentencia de bloqueo
c b también la vimos anteriormente.
Ñxi
c
c el vento Click del botónc@   escriba:
ó Ñn
Onc Ñrror GoTo NoSeleccionoArchivo:
c
CommonDialog1.Filter = "Archivos de texto (TXT)" & Chr(32) & Chr(124) & "*.txt"
c
CommonDialog1.ShowSave
c
c CommonDialog1.FileName For Output As #1
Open
c
Print #1, Text1.Text
c
Close
c #1
c
DsgBox ("Archivo Guardado.")
c
c Sub
Ñxit
c
NoSeleccionoArchivo:
c
c
c
Ñxplicació del códio a erior:
c
Lo único nuevo que vemos en este bloque de código es el método ShowSave que permite mostrar
el ccuadro de dialogo Guardar.
c
Ñnc esta ocasión utilizamos este método para guardar el archivo en el disco duro. ShowSave
significa
c ³Dostrar Guardar´, es decir, ³Dostrar el cuadro de diálogo Guardar´.
c
Lo demás lo hemos visto anteriormente. Por ejemplo, utilizamos en esta ocasión el método Output
c guardar y especificamos CommonDialog1.FileName en vez de especificar un nombre fijo o un
para
c
nombre constante. Ya explique eso anteriormente.
c
ó Ñn el evento Click del botón de comandoc× escriba:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

Gos Archivosc
Capílo 7
c c
Text1.Text
c = ""
Text1.SetFocus
c
c c
Ñxplicació
c del códio a erior:
c
- Primera lí ea:
c
Lac primera línea quita cualquier texto que se halla mostrado o escrito en la caja de texto.
c
- e
c da lí ea:
c que la caja de texto reciba el enfoque, es decir, que el cursor se posiciones en la caja.
Hace
c
c el evento Click del botón de comando ' cescriba:
ó Ñn
c
µSale de la aplicación.
Ñnd
c
c c
c
ó Corra la aplicación y verá que tiene un pequeño Ñditor. Puede perfeccionarlo agregando negrita,
c
cursiva, subrayado, tipo de letra, justificaciones de texto, etc.
c
ó Detenga
c la aplicación y guarde el ejercicio con los nombres FormÑjercicio2-7 para el formulario,
y Ñjercicio2-7 para el proyecto.
c
c
7À7c ARCHëV C ÑTRUCTURA 3Ñ BAÑ 3Ñ 3ATc
Unac base de datos es un conjunta de datos organizados y relacionados lógicamente entre si. Una
base
c de datos se podría considerar como el almacenamiento organizado de los datos
proporcionados por el programa.
c
Losc archivos con estructura de bases de datos sirven para almacenar de forma personalizada datos
dec un programa que luego lo podrá utilizar para ejecutar operaciones internas en su aplicación, por
c
ejemplo, podrá utilizar un archivo con estructura de base de datos para almacenar la configuración
dec su programa con el objetivo de que esta quede almacenada cada vez que cierre el programa y
posteriormente leer este archivo cuando la aplicación vuelva a ser ejecutada. No pretenda
c
almacenar en un archivo de texto datos importantes de una empresa, para esto cree bases de
c con sistemas SGBD profesionales como SQL, ORACLÑ, ACCÑSS, etc. Ñn el siguiente
datos
c
capítulo tratamos este asunto.
c
Unac base de datos esta compuesta de filas y columnas que físicamente representa una tabla.
Cada columna representa un Campo en la base de datos y cada Fila un Reisro. Un campo se
c
define como la unidad de información más pequeña de la base de datos que tiene significado y un
c
Reisro se define como la colección de todos los campos de una base de datos. Toda lo que se
c
escribe en dicha base de datos se denomina 3aos y juegan un papel muy importante en la base
dec datos.
c
La estructura de una base de datos es la siguiente:
c
c Campos
c

c  2" $$-
 c ' 5c -/. ).. (-(-c   cc1c-ccc c
c Reisrosc
c   
c -/. (-( )&2(c , 
c' 
cc(c
c
$c 6 c -/. +(( 2&(2c , 
cc
c'
cc

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
Lac base de datos anterior se podría considerar como una estructura que representa una agenda
telefónica donde los datos a almacenar son: Nombre, Apellido, Teléfono y Dirección.
c
c estos datos son de un mismo tipo y deben ser almacenados en un mismo archivo siguiendo
Todos
unac estructura organizada tal y como se muestra en la tabla anterior. Por ejemplo, en este caso el
c
primer registro ³Carlos Rodríguez 809m699m5858 Carretera Della KD 8 ½ (Dandinga)´ sería la
primera
c línea del archivo de la base de datos, el segundo registro sería la segunda línea del
archivo, el tercer registro sería la tercera línea del archivo y así sucesivamente.
c
Si calmacenamos estos datos en un archivo deberíamos de almacenarlo de la siguiente forma:
c
c Carlos Rodríguez 809m699m5858 Carretera Della KD 8 ½ (Dandinga)
c Pablo Bucarelly 809m585m6325 Urb. Ralma. Calle #5
Nelson Pérez 809m755m2352 Urb. Los Dina. Res. Catanga
c
c
Sec ha utilizado un punto y coma (;) para separar cada uno de los campos de la base de datos.
Cuando almacenemos los registros en una base de datos deberemos agregar al final de cada
c
campo un punto y coma (;) que nos va a permitir el final de cada campo de la base de datos. Se
c utilizar otro carácter pero el más utilizado siempre ha sido el punto y coma (;).
puede
c
c
7À8 CRÑAR U ARCHëV C ÑTRUCTURA 3Ñ BAÑ 3Ñ 3AT Ñ VëUAG BAëC 6À0c
c
c una base de datos en Visual Basic no implica utilizar sentencias especiales para el
Crear
c
almacenamiento de los datos, sino, que implica utilizar otros métodos y algoritmos para almacenar
c los datos.
y leer
c
Vamos
c a utilizar las mismas sentencias Open, Line Input, Print, Output, Input y Append ya vistas
anteriormente. Ahora crearemos una pequeña agenda telefónica que le permitirá aprender a crear
c
archivos con estructura de base de datos.
c
c
ó Cree una carpeta llamada Ae da en el disco duro para almacenar nuestro proyecto y nuestra
c
base de datos.
c
ó Abra un nuevo proyecto y dibuje el siguiente entorno:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
c à Ñl primer botón servirá para agregar un nuevo contacto o una nueva persona.
c à Ñl segundo botón permitirá buscar algún contacto, ya sea por nombre o por el número de
teléfono.
c
à Ñl tercer botón será utilizado para eliminar un contacto de la base de datos.
c à Ñl cuarto botón se utilizará para obtener una lista de todos los contactos que han sido
c agregado a la base de datos.
c à Ñl quinto botón será utilizado para salir de la aplicación.
c
ó Ñstablezca
c los siguientes valores a los controles del formulario anterior para que quede como se
muestra en la imagen anterior:
c
c rol
Co Propiedad Valor
c
Form1 Capio Agenda
c Borderyle 1m Fixed Single
c Heih 4545
c Widh 5430
arUpPosiio 1 ± CenterOwner
c
BackColor
c
Label1
c Capio DÑNU PRINCIPAL
Aoize True
c Gef 1635
c Top 240
c Fo  Tamaño 10 y Negrita.
c BackColor
Command1
c Capio &Agregar un nuevo contacto
Heih 375
c Widh 3015
c Gef 1080
c Top 720
c yle 1m Graphical
c BackColor
c
Command2 Capio &Buscar contacto
c Heih 375
Widh 3015
c
Gef 1080
c Top 1320
c yle 1m Graphical
c BackColor
c
Command3 Capio &Ñliminar contacto
c Heih 375
c Widh 3015
c Gef 1080
Top 1920
c yle 1m Graphical
c BackColor
c
Comma d4 Caption &Reporte
c Height 375
c Width 3015
c Left 1080
c Top 2520
c Style 1m Graphical
BackColor

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
c
Command4 Caption &Repore
c Height 375
Width 3015
c Left 1080
c Top 2520
c Style 1- raphical
c BackColor Ñl primer verdeÀ
c
Comma
c d5 Caption &Salir
Height 375
c Width 3015
c Left 1080
c Top 3120
c Style 1m Graphical
c BackColor Ñl primer verde.
c
c
ó Ahora vamos a agregar un nuevo formulario (Form2) para la primera opción del menú principal.
c
c
ó Haga clic en el menú Projec y luego haga clic en la opción Add Form. Ñn el cuadro de dialogo
quec aparece haga clic en el botón Open (abrir).
c
ó Ahora aparecerá un formulario en blanco. Ñn este formulario pondremos todo lo necesario para
c
agregar un nuevo contacto en la base de datos.
c
c
ó Ahora dibuje el siguiente entorno en el nuevo formulario (Form2):
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c à Ñl primer botón será utilizado para guardar los datos del nuevo contacto.
c
c à Ñl segundo botón será utilizado para limpiar las cajas de texto y permitir agregar un nuevo
contacto.
c
c à Ñl tercer botón cerrará la ventana de Agregar nuevo contacto.
c
c
ó Ñstablezca los siguientes valores en los controles del nuevo formulario:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
c
CTRG PRPëÑ3A3 VAGR
c
Form2 Capio Agregar nuevo contacto
c BackColor Ñl primer amarillo.
Borderyle 1 ± Fixed Single
c howë TaskBar False
c Heih 4005
c Widh 5445
c arUpPosiio 1 m CenterOwner
c
Label1 Aoize True
c Capio INTRODUZCA LOS DATOS DÑL NUÑVO CONTACTO
c BackColor Ñl primer verde.
c Gef 120
Top 240
c Fo  Tamaño 8 y Negrita.
c
Label2 Aoize True
c Capio Nombre
c Backyle 0 ± Transparent
c Fo  Tamaño 8 y Negrita.
c Gef 120
c Top 720
c
Label3 Aoize True
c Capio Apellido
Backyle 0 ± Transparent
c
Fo  Tamaño 8 y Negrita.
c Gef 120
c Top 1200
c
Label4 Aoize True
c Capio Teléfono
c Backyle 0 ± Transparent
c Fo  Tamaño 8 y Negrita.
c Gef 120
Top 1680
c
Label5
c Aoize True
Capio Dirección
c
Backyle 0 ± Transparent
c Fo  Tamaño 8 y Negrita.
c Gef 120
c Top 2160
c
Tex1 Tex (Vació)
c
Appeara ce 0 ± Flat
c Heih 285
c Widh 3615
c Gef 1080
c Top 720
c
Tex2 Text (Vació)
c Appearance 0 ± Flat
c Height 285
Width 3615
c Left 1080
c Top 1200

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

Gos Archivosc
Capílo 7
c c
c
Text3 Text (Vació)
c Appearance 0 ± Fla
Height 285
c Width 2055
c Left 1080
c Top 1680
c
Text4 Tex (Vació)
c Appeara ce 0 ± Flat
c Heih 285
Widh 3975
c Gef 1080
c Top 2160
c
c
Command1 Capio &Guardar
c Heih 375
Widh 855
c Gef 240
c Top 3000
c
Command2 Capio &Nuevo
c Heih 375
c Widh 855
Gef 1320
c Top 3000
c
Comma d3 Caption &Cancelar
c Height 375
c Width 855
c Left 4200
Top 3000
c
c
c
ó Active o seleccione el primer formulario (Form1) de la ventana de Proyectos (Project) haciendo
c clic sobre el mismo.
doble
c
c
ó Ahora haga clic en el primer botón ³Agregar un nuevo contacto´ y escriba en el evento Click la
siguiente
c línea de código:
c
Form2.Show 1, De
c
c
Lac línea de código anterior permite mostrar el segundo formulario. Ñl método Show permite mostrar
unc formulario en la pantalla. Ñl ³1, De´ es un método utilizado para que el formulario que se muestra
sea el único activo en la pantalla, es decir, hasta que este no sea cerrado no se podrá activar
c
ninguna otra opción del menú principal.
c
c
ó Active el segundo formulario (Form2) de la ventana de Proyecto (Project) haciendo doble clic
c el mismo.
sobre
c
ó Ahora vamos a codificar el botón de Guardar:
c
c el evento Click del botón @   escriba lo siguiente:
ó Ñn
cOpen "C:\AGÑNDA\Agenda.dat" For Append As #1
c Print #1, Text1.Text & ";" & Text2.Text & ";" & Text3.Text & ";" & Text4.Text
c
cClose #1
Text1.Text = ""
Text2.Text = ""
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

Gos Archivosc
Capílo 7
c c
Text3.Text
c = ""
Text4.Text
c = ""
c
Text1.SetFocus
c
DsgBox ("Ñl nuevo contacto ha sido agregado.")
c c
c
Ñxplicació del códio a erior:
c
c
- Primera lí ea:
c
Openc "C:\AGÑNDA\Agenda.dat" For Append As #1
c
Ñn esta línea de código la única novedad es el método Appe d que permite agregar información al
c
final del archivo y si este no existe entonces se crea. No utilizamos el método p por la razón
dec que este método crea nuevamente el archivo y elimina los datos que tenia anteriormente para
c
sustituirlo con los nuevos datos.
c
- e
c da lí ea:
c
Print #1, Text1.Text & ";" & Text2.Text & ";" & Text3.Text & ";" & Text4.Text
c
Ñstac línea permite escribir en una línea del archivo el contenido de cada unas de las cajas de texto
c
separado con un punto y coma (;), como habíamos explicamos anteriormente.
c
- Ulimas lí eas:
c
c Close #1
c
cText1.Text = ""
cText2.Text = ""
cText3.Text = ""
Text4.Text = ""
c
cText1.SetFocus
cDsgBox ("Ñl nuevo contacto ha sido agregado.")
c
Ñn estas últimas líneas no hay nada nuevo. Se cierra el archivo, se limpian cada unas de las cajas
c
de texto, se hace que el cursor se posicione en la primera caja de texto y se muestra un mensaje.
c
c
ó Corra la aplicación y, a continuación, haga clic en el botón . ccc  .
c
Debec de aparecer el segundo formulario (Form2). Bien agregue un contacto y haga clic en el botón
Guardar. Inmediatamente este registro se agrega en la base de datos. Dás adelante veremos como
c
leer estos registros.
c
c
ó Detenga la aplicación.
c
ó Haga
c doble clic en el botónc× del segundo formulario (Form2) y escriba lo siguiente:
cccccText1.Text = ""
cText2.Text = ""
cText3.Text = ""
cText4.Text = ""
Text1.SetFocus

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
c
Ñxplicació del códio a erior:
c
Ninguna novedad. Limpia todas las cajas de texto y hace que el cursor se posicione en la primera
c
caja.
c
c el evento Click del botón (   cescriba:
ó Ñn
c
Unload De
c
c
Ñxplicació del códio a erior:
c
c
Unload De
c
Ñsta línea de código permite cerrar el formulario y no la aplicación completa.
c
Ñl csignificado de esta línea al castellano es: ³DÑSCARGADDÑ´.
c
c
ó Active el primer formulario desde la ventana de Proyectos (Project) haciendo doble clic sobre el
mismo.
c
c
ó Ahora vamos a crear un nuevo formulario que será el formulario de la segunda opción del menú
c
principal. Ñn este formulario agregaremos todo lo necesario para buscar un contacto, ya sea por
c
número telefónico o por nombre.
c
ó Agregue
c un nuevo formulario haciendo clic en el menú Project y a continuación, en Add Form. Ñn
el cuadro de dialogo que aparece haga clic en el botón Open.
c
c
ó Aparecerá un nuevo formulario (Form3).
c
c
ó Dibuje un entorno similar al que se muestra en la imagen siguiente en un tercer formulario
(Form3).
c Hágalo tal y como se ve, no daré los valores de los controles como lo había echo
anteriormente.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c el evento Click del botón de comandoc  escriba el siguiente bloque de código:
ó Ñn
c If Len(Trim(Text1.Text)) = 0 Then
c DsgBox ("Debe escribir algo en la caja de texto.")
c Text1.SetFocus
ÑlseIf Option1.Value = False And Option2.Value = False Then
c
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

Gos Archivosc
Capílo 7
c c
c DsgBox ("Debe seleccionar el tipo de búsqueda.")
cÑlse
cOn Ñrror GoTo NOarchivo:
cDim Linea As String
cDim Campo1, Campo2, Campo3, Campo4 As String
cDim Posicion1, Posicion2, Posicion3 As Integer
cDim Ñncontro As Integer
Ñncontro = 0
c
cOpen "C:\AGÑNDA\Agenda.dat" For Input As #1
c While Not ÑOF(1)
c Line Input #1, Linea
c
Posicion1 = InStr(1, Linea, ";", vbTextCompare)
c Posicion2 = InStr(Posicion1 + 1, Linea, ";", vbTextCompare)
c Posicion3 = InStr(Posicion2 + 1, Linea, ";", vbTextCompare)
c Campo1 = Did(Linea, 1, Posicion1 m 1)
c Campo2 = Did(Linea, Posicion1 + 1, Posicion2 m 1 m Posicion1)
Campo3 = Did(Linea, Posicion2 + 1, Posicion3 m 1 m Posicion2)
c
Campo4 = Did(Linea, Posicion3 + 1, Len(Linea))
c
c If UCase(Campo1) = UCase(Text1.Text) And Option1.Value = True Then
c DsgBox ("Nombre: " & Campo1 & " Apellido: " &
c Campo2 & " Teléfono: " & Campo3 & " Dirección: " & Campo4)
c Ñncontro = 1
c Ñnd If
c
c If Campo3 = Text1.Text And Option2.Value = True Then
c
DsgBox ("Nombre: " & Campo1 & " Apellido: " &
c
Campo2 & " Teléfono: " & Campo3 & " Dirección: " & Campo4)
c Ñncontro = 1
c
c Ñnd If
c
c Wend
c If Ñncontro = 0 Then
c DsgBox ("No se ha encontrado el contacto especificado.")
c Ñnd If
c
cClose #1
cÑnd If
c
c Sub
Ñxit
c
NOarchivo:
c
c
DsgBox ("La base de datos no existe.")
c c
Ñxplicació del bloqe de códio a erior:
c
- Gas primeras res lí eas:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

Gos Archivosc
Capílo 7
c c
cIf Len(Trim(Text1.Text)) = 0 Then
DsgBox ("Debe escribir algo en la caja de texto.")
c
Text1.SetFocus
c
c bloque de código permite verificar si la caja de texto se deja vacía, en caso de que se deje
Ñste
c entonces se muestra un mensaje y el cursor se envía a la caja de texto.
vacía
c
La sentencia Ge permite obtener la longitud de una cadena de caracteres, en este caso la longitud
c
de la caja de texto. La sentencia Trim permite eliminar los espacios en blanco que posiblemente se
c
escriban al final de la caja de texto.
c
Lac traducción del código anterior sería la siguiente:
SI cLA LONGITUD DÑ LA CAJA DÑ TÑXTO ÑS IGUAL A CÑRO ÑNTONCÑS
DUÑSTRA ÑL DÑNSAJÑ (³Debe escribir algo en la caja de texto´)
c
HAS QUÑ LA CAJA DÑ TÑXTO RÑSIVA ÑL ÑNFOQUÑ
c
- Gíc ea 4, 5 y 6:
c
c ÑlseIf Option1.Value = False And Option2.Value = False Then
c
DsgBox ("Debe seleccionar el tipo de búsqueda.")
c
c Ñlse
c
c bloque de código permite verificar si se selecciona una de las opciones del tipo de búsqueda.
Ñste
La propiedad Vale permite verificar si el botón de opción esta seleccionado o no. Cando tiene el
c
valor r  indica que el botón no esta seleccionado.
c
Lac traducción del bloque anterior es la siguiente:
c
SIc PRIDÑRA OPCION = no seleccionada Y SÑGUNDA OPCION = no seleccionada ÑNTONCÑS
c
DUÑSTRA ÑL DÑNSAJÑ (³Debe seleccionar el tipo de búsqueda.´)
c
DÑc LO CONTRARIO
c
Ñl c operador lógico And permite enlazar dos expresiones. Si ambas expresiones se cumplen,
entonces, se ejecutan las líneas de códigos de más abajo.
c
Lac cláusula Ñlse (De lo contrario) se ha utilizado para tomar una decisión en caso de que no se
c
cumpla la condición, es decir, en caso de que se seleccione alguna de las opciones. Si una da las
c
opciones se selecciona, entonces, toda la codificación que se encuentra debajo de la cláusula Ñlse
secejecutará.
c
- Gí ea 7:
c
Onc Ñrror GoTo NOarchivo:
c
c línea de código activa el detector de errores. Si ocurre algún error en la apertura del archivo,
Ñsta
entonces, se ejecuta la codificación que se encuentra debajo en la etiqueta NOarchivo.
c
- Gíc eas 8, 9, 10, 11 y 12:
c
cDim Linea As String
Dim Campo1, Campo2, Campo3, Campo4 As String
Dim Posicion1, Posicion2, Posicion3 As Integer
cccc
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  V


c

Gos Archivosc
Capílo 7
c c
cDim Ñncontro As Integer
cÑncontro = 0
Ñnc esta sección se declararon todas las variables necesarias para proceder con la codificación.
c
Lac primera variable Linea se utilizará para almacenar cada unas de las líneas de texto del
documento.
c Las variables Campo1, Campo2, Campo3, Campo4 son variables de tipo cadena
donde se almacenarán temporalmente el contenido de cada campo de la base de datos. Las
c
variables Posicion1, Posicion2, Posicion3 son variables de tipo entero, donde se almacenarán las
c
posiciones de cada uno de los punto y coma (;) que utilizamos para separar los campos. Tres
c
posiciones porque utilizamos solamente tres punto y coma.
c
Lac variable Ñncontro como tipo entero, donde se almacenará un valor que indicará si se encontró o
no la búsqueda realizada. Si la variable tiene el valor cero entonces no se encontró ningún
c
elemento y si tiene el valor uno entonces se encontró el elemento.
c
c
Ñncontro = 0 se ha especificado para darle un valor inicial a la variable.
c
- Gíc eas 13, 14, 15:
c
Open "C:\AGÑNDA\Agenda.dat" For Input As #1
c
c While Not ÑOF(1)
c
c Line Input #1, Linea
c
Nada que no haya visto. Primero se abre el archivo para modo de lectura, segundo se inicia el
c y por ultimo se lee cada línea del archivo y se almacena en la variable Linea.
bucle
c
- Gíc eas 16, 17, 18:
c
Posicion1 = InStr(1, Linea, ";", vbTextCompare)
c
c Posicion2 = InStr(Posicion1 + 1, Linea, ";", vbTextCompare)
c
c Posicion3 = InStr(Posicion2 + 1, Linea, ";", vbTextCompare)
c
Posiblemente aquí encuentre muchas cosas extrañas pero trataré de explicarlo con algunos
c
ejemplos.
c
c
Primeramente empezaré definiendo la función de la sentencia ë r. Ñsta sentencia permite obtener
la cposición de un carácter especificado en la cadena de caracteres, es decir, te devuelve el número
dec la posición donde se encuentra ese carácter en la cadena de texto.
c
Ñjemplo:
c
c
Carlos Ma el 809-589-5858 UrbÀ Ralma, Calle #4
c
c
Puede observar que utilicé tres punto y coma (;) para separar los tres campos (nombre, apellido,
teléfono
c y dirección). Ñsas posiciones de esos tres punto y coma lo almacenaré en cada una de las
variables ya vistas anteriormente.
c
Porc ejemplo, la posición del primer punto y coma (;) lo almacenaré en la variable Posicion1, al
c
posición del segundo punto y coma (;) lo almacenaré en la variable Posicion2 y la posición del
tercer punto y coma (;) lo almacenaré en la variable Posicion3.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

Gos Archivosc
Capílo 7
c c
Ñnc el ejemplo anterior las posiciones que se almacenarían en las variables son los siguientes:
c
Posicion1 = 7
c
Posicion2 = 14
c
Posicion3 = 27
c
Ñstoc es por lo siguiente:
c
c
C ca r l o s M a  e l 8 0 9 ± 5 8 9 ± 5 8 5 8 U r b À R a l m a , C a l l e # 4
cccc2cc&cc"ccc(ccc)cccccc-ccc.cc/ccc2c&cc(c)c+c-c.c2/c2c22c2&c2"c2(c2)c c2-c2.c&/c&c&2c&&c&"c&(c&)c&+c7777777

cc
c c
Cadac carácter tiene una posición en la cadena. Ñstas posiciones que hemos leído serán de mucha
c
utilidad a la hora de leer los campos de la base de datos. Ñso lo veremos a continuación.
c
Ñl formato de la sentencia ë r es el siguiente:
c
c
ë r(Valor_ë icial, Cade a_Pri cipal, Cade a_a_Bscar, Tipo_de_bsqeda)
c
c
Donde:
c
Valor_ë icial: Ñs un número de una posición de algún carácter de la cadena de texto principal. Por
c
ejemplo, si el valor inicial es 1 entonces la búsqueda comienza desde el principio de la cadena, es
c desde el primer carácter.
decir,
c
Cadec a_Pri cipal: Representa la cadena de caracteres en donde se realizará la búsqueda.
c
Cade a_a_Bscar: Representa la cadena a buscar.
c
c
Tipo_de_bsqeda: Ñs una constante que representa el tipo de búsqueda. Se ha especificado la
c
constante vbTexCompare que indica que la búsqueda que se realizará es de tipo texto.
c
c
a) Posicion1 = InStr(1, Linea, ";", vbTextCompare)
c
Ñstac línea busca el primer punto y coma que aparece en el registro. La búsqueda se realiza a partir
delc primer carácter, por eso se especifica el número 1.
c
b) cPosicion2 = InStr(Posicion1 + 1, Linea, ";", vbTextCompare)
c
Ñsta línea busca el segundo punto y coma que aparece en el registro. La búsqueda se realiza a
c de la posición del primer punto y coma, por eso se especifica Posicio 1 + 1.
partir
c
c) cPosicion3 = InStr(Posicion2 + 1, Linea, ";", vbTextCompare)
c
Ñsta línea busca el tercer punto y coma que aparece en el registro. La búsqueda se realiza a partir
dec la posición del segundo punto y coma, por eso se especifica Posicio 2 + 1.
c
- Gíc eas 19, 20, 21 y 22:
c
c Campo1 = Did(Linea, 1, Posicion1 m 1)
c Campo2 = Did(Linea, Posicion1 + 1, Posicion2 m 1 m Posicion1)
c
c Campo3 = Did(Linea, Posicion2 + 1, Posicion3 m 1 m Posicion2)

Campo4 = Did(Linea, Posicion3 + 1, Len(Linea))


ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

Gos Archivosc
Capílo 7
c c
c cuatro líneas de código permiten leer cada uno de los campos de la base de datos.
Ñstas
c
Antes de explicar cada línea de código, vamos a definir la sentencia Mid.
c
Lac sentencia Mid permite copiar una cadena de caracteres de otra cadena de caracteres, llamada
c
cadena principal. Ñn esta función se debe especificar la cadena de donde se hará la copia que es la
cadena
c principal. Se debe especificar también la posición en la cadena desde donde se quiere
iniciar
c la copia y por ultimo, se debe especificar la cantidad de caracteres a copiar.

Suc formato es:


c
Did c (  %   c %  c   %%  % %  )
c
c
a) Campo1 = Did(Linea, 1, Posicion1 m 1)
c
Ñstac línea de código lee el campo ³Nombre´. La variable ,  es la variable que tiene el registro
c
completo, o más bien, la cadena principal. Ñl número uno, indica que la copia iniciará desde el
primer
c carácter de la cadena principal. Posicio 1 ± 1 indica la cantidad de caracteres a copiar, es
decir,
c se copiarán todos los caracteres hasta el primer punto y coma (;). Recuerde que la variable
Posicio 1 tiene la posición del primer punto y coma. Ñl menos uno m1 se especifico para que en la
c no se incluya el punto y coma.
copia
c
c
b) cCampo2 = Did(Linea, Posicion1 + 1, Posicion2 m 1 m Posicion1)
c
Ñsta línea de código lee el campo ³Apellido´. Posicio 1 + 1 indica que la copia iniciará después del
c
primer punto y coma (;), es decir, a partir de la posición del primer punto y coma (;). Posicio 2 ± 1
c
± Posicio 1 indica la cantidad de caracteres a copiar. Se lo explicaré gráficamente:
c c
C ca r l o s M a  e l 8 0 9 ± 5 8 9 ± 5 8 5 8 U r b À R a l m a , C a l l e # 4
c
cccc2cc&cc"ccc(ccc)cccccc-ccc.cc/ccc2c&cc(c)c+c-c.c2/c2c22c2&c2"c2(c2)c c2-c2.c&/c&c&2c&&c&"c&(c&)c&+c7777777

cc

c
Campo2 = Did(Linea, 8, 14 ± 1 ± 7)
c
Ñl c8 es por Posicion1 + 1 que es la posición del primer punto y coma (;).
Ñl c14 es por Posicion2 que es la posición del segundo punto y coma (;).
Ñl cm1 es para que en la copia no se incluya el primer punto y coma (;).
c
mPosicion1 es la posición del primer punto y coma que se le resta a la segunda posición menos uno,
estoc le dará la cantidad de caracteres del segundo campo. 14 ± 1 ± 7 = 6 que es la longitud del
c
campo Apellido.
c
c) cCampo3 = Did(Linea, Posicion2 + 1, Posicion3 m 1 m Posicion2)

Ñstac línea lee el campo ³Teléfono´. Se aplica lo mismo que al campo anterior pero iniciando desde
la cposición2.
c
d) cCampo4 = Did(Linea, Posicion3 + 1, Len(Linea))
c
Ñsta línea lee el campo ³Dirección´. Se aplica lo mismo que el campo anterior pero iniciando desde
c
la posición3. Len(Linea) es lo único diferente y se especifica porque no existe una ultima posición
que c indique la longitud del último campo. Siempre tendrá que utilizar esta sentencia para leer el
c campo, pero todo lo demás es igual.
último

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
- Gíc ea 23, 24, 25, 26 y 27:
c
If UCase(Campo1) = UCase(Text1.Text) And Option1.Value = True Then
c DsgBox ("Nombre: " & Campo1 & " Apellido: " &
c Campo2 & " Teléfono: " & Campo3 & " Dirección: " & Campo4)
c Ñncontro = 1
c Ñnd If
c
Ñste bloque de código permite verificar si el contenido del campo nombre es igual al contenido de la
c de texto para luego mostrar el registro completo en una caja de mensaje.
caja
c
Lac sentencia Ucase permite convertir un texto en mayúscula. Ñsta sentencia se utilizo para que no
exista
c problema de mayúscula y minúscula, es decir, si el usuario escribe el nombre en mayúscula
y en la base de datos esta en minúscula entonces habrá un problema, porque no sería el mismo
c
texto aunque dijera lo mismo, por esa razón se ha convertido el valor del campo y el valor de la caja
dec texto en mayúscula.
c
Lac traducción del bloque anterior es la siguiente:
c
ë el campo ombre e mayscla = al co e ido de la caja de exo e mayscla Y la
c
primera opció esa seleccio ada (la opció bsqeda por ombre) Ñ o ces
c
c Mesra (Ñl ombre, el apellido, el el
fo o y la direcció )
c Asi a el valor  o a la variable Ñ co ró para saber qe se e co ró el reisro
c
Fi aliza el ë
c
- Gíc eas 28, 29, 30, 31 y 32:
c
c If Campo3 = Text1.Text And Option2.Value = True Then
c
DsgBox ("Nombre: " & Campo1 & " Apellido: " &
c
Campo2 & " Teléfono: " & Campo3 & " Dirección: " & Campo4)
c Ñncontro = 1
c
c Ñnd If
c
Lo mismo que el bloque de código anterior. La única diferencia es que la comparación se hace con
c
el Campo3, es decir, con el campo teléfono. Ñsto es en caso de que se seleccione la segunda
c
opción que es buscar por teléfono.
c
Lac traducción del bloque anterior es:
c
ë el campo ombre e mayscla = al co e ido de la caja de exo e mayscla Y la
c
primera opció esa seleccio ada (la opció bsqeda por ombre) Ñ o ces
c
c Mesra (Ñl ombre, el apellido, el el
fo o y la direcció )
c Asi a el valor  o a la variable Ñ co ró para saber qe se e co ró el reisro
c
Fi aliza el ë
c
- Gíc eas 28, 29, 30, 31 y 32:
c
c If Campo3 = Text1.Text And Option2.Value = True Then
DsgBox ("Nombre: " & Campo1 & " Apellido: " &
Campo2 & " Teléfono: " & Campo3 & " Dirección: " & Campo4)
c
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

Gos Archivosc
Capílo 7
c c
c
Ñncontro =1
c
Ñnd If
c
Loc mismo que el bloque de código anterior. La única diferencia es que la comparación se hace con
el cCampo3, es decir, con el campo teléfono. Ñsto es en caso de que se seleccione la segunda
opción
c que es buscar por teléfono.
c
La traducción del bloque anterior es:
c
ë cel campo el
fo o = al co e ido de la caja de exo Y la se da opció esa
c
seleccio ada (la opció bsqeda por ombre) Ñ o ces
c
Mesra (Ñl ombre, el apellido, el el
fo o y la direcció )
c Asi a el valor  o a la variable Ñ co ró para saber qe se e co ró el reisro
c
Fi c aliza el ë
c
Ñnc este bloque no se utilizo la sentencia Ucase por la razón de que los números no se escriben ni
en mayúscula ni en minúscula.
c
m Gíc ea 33:
c
c Wend
c
Ñsta sentencia ya la he explicado anteriormente y se utiliza para indicar el final del bucle, o bien,
c
hasta donde se repetirá el bucle.
c
- Gíc eas 34, 35 y 36:
c
c If Ñncontro = 0 Then
DsgBox ("No se ha encontrado el contacto especificado.")
c
Ñnd If
c
c bloque de código permite mostrar un mensaje en caso de que no se encuentre el registro
Ñste
c
especificado. Cuando el valor de la variable Ñ co ro es igual a cero entonces no se encontró
ningún
c registro y si el valor es uno entonces se encontró el registro.
c
- Ulimas lí eas:
c
c #1
Close
c
cÑnd If
c
Ñxit Sub
c
c
NOarchivo:
c
DsgBox ("La base de datos no existe.")
Close
c #1
Close #2
c
c
c el evento Click del botón (   cescriba:
ó Ñn
c
µDescarga
c el formulario.
Unload De

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

Gos Archivosc
Capílo 7
c c
ó Corra
c la aplicación. Haga clic en el botón . ccc   y, a continuación, agregue
un nuevo contacto.
c
c
ó Cierre la ventana de Agregar un nuevo contacto, y a continuación, haga clic en el botón  c
c .
c
c
ó Ñscriba el nombre del contacto y seleccione la opción  ccP, y a continuación, haga
clic en el botón  .
c
c vamos a darle función a la tercera opción del menú principal (Ñliminar contacto):
Ahora
c c
c
Agregue un nuevo formulario y dibuje el siguiente entorno:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Ñn el evento Click del botón  cescriba:
c
Ifc Len(Trim(Text1.Text)) = 0 Then
c
c DsgBox ("Debe escribir algo en la caja de texto.")
c Text1.SetFocus
cÑlseIf Option1.Value = False And Option2.Value = False Then
c
c DsgBox ("Debe seleccionar el tipo de búsqueda.")
Ñlse
c
Onc Ñrror GoTo NOarchivo:
c
cDim Linea As String
cDim I As Integer
Dim Campo1, Campo2, Campo3, Campo4 As String
cDim Posicion1, Posicion2, Posicion3 As Integer
cDim Ñncontro As Integer
cÑncontro = 0
c
cDim posicionRegistro As Integer
Dim LineasdelArchivo(1000000) As String
cDim NumeroLinea As Integer
cDim registroBorrar As Integer
cposicionRegistro = 0
NumeroLinea = 0

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
cOpen "C:\AGÑNDA\agenda.dat" For Input As #1
c While Not ÑOF(1)
NumeroLinea = NumeroLinea + 1
c Line Input #1, LineasdelArchivo(NumeroLinea)
c Wend
cClose #1
c
Open
c "C:\AGÑNDA\Agenda.dat" For Input As #1
c While Not ÑOF(1)
c posicionRegistro = posicionRegistro + 1
c Line Input #1, Linea
c
c Posicion1 = InStr(1, Linea, ";", vbTextCompare)
c
c Posicion2 = InStr(Posicion1 + 1, Linea, ";", vbTextCompare)
c Posicion3 = InStr(Posicion2 + 1, Linea, ";", vbTextCompare)
c
c Campo1 = Did(Linea, 1, Posicion1 m 1)
c
c Campo2 = Did(Linea, Posicion1 + 1, Posicion2 m 1 m Posicion1)
c Campo3 = Did(Linea, Posicion2 + 1, Posicion3 m 1 m Posicion2)
c
c Campo4 = Did(Linea, Posicion3 + 1, Len(Linea))
c
c
Dim Respuesta
c
c If UCase(Campo1) = UCase(Text1.Text) And Option1.Value = True Then
c
c registroBorrar = posicionRegistro
c
Respuesta = DsgBox("¿Desea eliminar el registro " & "'" &
c Campo1 & Chr(32) & Campo2 & "' ?", vbYesNo)
c
c If Respuesta = vbYes Then
c
c 'SÑ DODIFICA ÑL ARRÑGLO
' mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
c
c For I = 1 To NumeroLinea
c If I = registroBorrar Then
c LineasdelArchivo(I) = ""
c Ñnd If
Next I
c
c Ñnd If
c Ñncontro = Ñncontro + 1
Ñnd If
c
cccccccccccc
cccccIf UCase(Campo3) = UCase(Text1.Text) And Option2.Value = True Then
c
Respuesta = DsgBox("¿Desea eliminar el registro " & "'" &
Campo1 & Chr(32) & Campo2 & "' ?", vbYesNo)
cccccccccccc
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
If Respuesta
c = vbYes Then
c 'SÑ DODIFICA ÑL ARRÑGLO
c ' mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
c For I = 1 To NumeroLinea
c If I = registroBorrar Then
c LineasdelArchivo(I) = ""
c Ñnd If
c Next I
c
Ñnd If
c
c Ñncontro = Ñncontro + 1
Ñndc If
c Wend
c Close #1
cIf Ñncontro = 0 Then
c DsgBox ("No se ha encontrado el contacto especificado.")
cÑnd If
c
cIf Ñncontro > 0 And Respuesta = vbYes Then
c Open "C:\AGÑNDA\TemporalArchivo.Dat" For Output As #2
c For I = 1 To NumeroLinea
c
If Len(Trim(LineasdelArchivo(I))) > 0 Then
c
c Print #2, LineasdelArchivo(I)
c Ñnd If
c Next I
c Close #2
c 'SÑ ÑLIDINA LA BASÑ DÑ DATOS ORIGINAL
c ' mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
c Kill "C:\AGÑNDA\agenda.dat"
c
c 'SÑ LÑ PONÑ ÑL NODBRÑ ORIGINAL A LA BASÑ DÑ DATOS TÑDPORAL
' mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
c
c Name "C:\AGÑNDA\TemporalArchivo.Dat" As "C:\AGÑNDA\agenda.dat"
c DsgBox (Ñncontro & " registro eliminados.")
c
cText1.Text = ""
cÑnd If
c
c Ñnd If
Ñxit Sub
c
NOarchivo:
c
c
DsgBox ("La base de datos no existe.")
c #1
Close
c
Close #2

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
c
Ñxplicació del bloqe de códio a erior:
c
1À- Gí eas desde la 1 hasa la 12:
c
Ñsc la misma codificación que se escribió en el botón buscar del formulario  c  .
c
2À-c Gí eas 13, 14, 15, 16, 17 y 18:
c
Dim posicionRegistro As Integer
cDim LineasdelArchivo(1000000) As String
cDim NumeroLinea As Integer
cDim registroBorrar As Integer
c
cposicionRegistro = 0
NumeroLinea = 0
c
Ñnc la línea 13 de declara una variable llamada  - cde tipo entero. Ñn esta variable se
c
almacenará el registro actual que se esta leyendo de la base de datos, para saber cual es el
número
c del registro que se esta leyendo.
c
Ñn la línea 14 se declara un arreglo llamado ,   .  cde tipo cadena Ñste arreglo permitirá
c
almacenar un millón de registros de la base de datos en caso de que existan. Ñste arreglo es muy
c
importante, ya que va a permitir almacenar temporalmente cada registro de la base de datos.
c
Ñnc la línea 15 se declara una variable llamada ×P,  de tipo entero. Ñn esta variable se
almacenará el total de registros de la base de datos, es decir, el número de líneas que tiene la base
c
de datos.
c
Ñnc la línea 16 se declara una variable llamada -   de tipo entero. Ñn esta variable se
c
almacenará el número de la línea que se va a borrar, es decir, el número del registro que se va a
borrar
c de la base de datos.
c
Las otras dos líneas establecen un valor inicial en las variables  - cc×P,  c
c c
3À-c Gí eas 19, 20, 21, 22, 23 y 24:
cOpen "C:\AGÑNDA\agenda.dat" For Input As #1
c While Not ÑOF(1)
c NumeroLinea = NumeroLinea + 1
c Line Input #1, LineasdelArchivo(NumeroLinea)
c Wend
Close #1
c
c bloque de código permite almacenar en el arreglo cada uno de los registro de la base de
Ñste
c
datos. Lo único nuevo es el bloque de código ,   .  ×P,   que explicaré a
c
continuación:
c c
La variable ×P,  se incrementará cada vez que se repite el bucle. Gracias a esto es
c
posible almacenar en posiciones diferentes del arreglo cada registro leído de la base de datos.
c
c vez que se repite el bucle sucede lo siguiente:
Cada
c Input #1, LineasdelArchivo(1)
Line Cuando inicia el bucle
Line
c Input #1, LineasdelArchivo(2) La segunda repetición
Line Input #1, LineasdelArchivo(3) La tercera repetición
c
Line Input #1, LineasdelArchivo(4) La cuarta repetición
«« Ñsto se repite hasta el fin del archivo.
c
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
- Gíc eas desde la 25 a la 35:
c
Open "C:\AGÑNDA\Agenda.dat" For Input As #1
c
c While Not ÑOF(1)
c posicionRegistro = posicionRegistro + 1
c
c Line Input #1, Linea
c
c Posicion1 = InStr(1, Linea, ";", vbTextCompare)
c Posicion2 = InStr(Posicion1 + 1, Linea, ";", vbTextCompare)
c
c Posicion3 = InStr(Posicion2 + 1, Linea, ";", vbTextCompare)
c
c Campo1 = Did(Linea, 1, Posicion1 m 1)
c Campo2 = Did(Linea, Posicion1 + 1, Posicion2 m 1 m Posicion1)
c
c Campo3 = Did(Linea, Posicion2 + 1, Posicion3 m 1 m Posicion2)
c
c Campo4 = Did(Linea, Posicion3 + 1, Len(Linea))
c
c codificación se explica en el botón  cde la ventana  c  .
Ñsta
c
Sec ha agregado una nueva línea de código posicio Reisro = posicio Reisro + 1À Ñsta
variable
c se incrementa cada vez que se lee un registro. Ñn pocas palabras esta variable almacena
el número del registro que se lee de la base de datos.
c
c
- Gíc eas desde la 36 a la 51:
c
Dimc Respuesta
c If UCase(Campo1) = UCase(Text1.Text) And Option1.Value = True Then
c
registroBorrar = posicionRegistro
c
c Respuesta = DsgBox("¿Desea eliminar el registro " & "'" &
c Campo1 & Chr(32) & Campo2 & "' ?", vbYesNo)
c
If Respuesta = vbYes Then
c
c 'SÑ DODIFICA ÑL ARRÑGLO
c ' mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
For I = 1 To NumeroLinea
c
c If I = registroBorrar Then
LineasdelArchivo(I) = ""
c
Ñnd If
c
c Next I
c
c Ñnd If
c
Ñncontro = Ñncontro + 1

Ñnd If
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

Gos Archivosc
Capílo 7
c c
Ñnc la primera línea del bloque anterior se declara una variable donde se almacena la respuesta
proporcionada por el usuario, cuando se le hace la pregunta ³¿Desea borrar el registro?´.
c
Si el usuario hace clic en el botón YÑS o SI, entonces en la variable se almacena un valor
c
constante que es vbYÑS. Si hace clic en el botón NO, entonces en la variable se almacena un valor
c
constante que es vbNO.
c
Lac segunda línea del código anterior se explicó en el botón  .
c
La línea 38 que es la tercera línea del código anterior, permite almacenar en la variable
- c   el número del registro que se va a borrar, que es el registro actual leído de la base
dec datos.
c
Respuesta
c = DsgBox("¿Desea eliminar el registro " & "'" &
Campo1 & Chr(32) & Campo2 & "' ?", vbYesNo)
c
Loc nuevo en esta línea de código es la variable - cdelante de la sentencia DsgBox. Ñsta
c
variable permite almacenar la respuesta proporcionada por el usuario.
c
If Respuesta
c = vbYes Then
c
'SÑ DODIFICA ÑL ARRÑGLO
c ' mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
c
For I = 1 To NumeroLinea
c If I = registroBorrar Then
c LineasdelArchivo(I) = ""
c Ñnd If
c
c Next I
c Ñnd If
c
Ñncontro = Ñncontro + 1
c
Ñnd If
c
Ñnc este bloque se comprueba cual fue la respuesta proporcionada por el usuario, si la respuesta es
si, cse hace una modificación en el arreglo.
c
La traducción del bloque anterior es la siguiente:
c
ë cRespuesta = Si Ñ o ces
c
c µSÑ DODIFICA ÑL ARRÑGLO
c µ mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
c
Para I = 1 Hasa Ñl número de líneas que tiene el archivo
c Si I = Al registro a Borrar Ñntonces
c Limpia el elemento correspondiente al valor de I en el arreglo LineasdelArchivo
c Fin Si
c Próximo I
c
Fin Si
c
c Incrementa la variable Ñncontró, para saber cuantos contactos encontró.
c
 

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
- Gíc eas desde la 52 hasa la 65
c
If UCase(Campo3) = UCase(Text1.Text) And Option2.Value = True Then
c
c Respuesta = DsgBox("¿Desea eliminar el registro " & "'" &
c Campo1 & Chr(32) & Campo2 & "' ?", vbYesNo)
c
If Respuesta = vbYes Then
c
c 'SÑ DODIFICA ÑL ARRÑGLO
c ' mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
For I = 1 To NumeroLinea
c
c If I = registroBorrar Then
LineasdelArchivo(I) = ""
c
Ñnd If
c
c Next I
c Ñnd If
c Ñncontro = Ñncontro + 1
c
Ñnd If
c
Lac misma codificación del bloque de código anterior. La única diferencia es que se hace cuando se
c
selecciona la opción búsqueda por teléfono en vez de búsqueda por nombre.
c
- Gí eas desde la 66 hasa la 70:
c
c
Wend
c
cClose #1
c
cIf Ñncontro = 0 Then
DsgBox ("No se ha encontrado el contacto especificado.")
cÑnd If
c
c bloque de código se entiende claramente. Indica primero el fin del bucle, cierra el archivo y
Ñste
verifica
c si no se encontró el contacto especificado para luego mostrar un mensaje al usuario.
c
-Gí eas desde la 71 hasa la 94:
c
c
If Ñncontro > 0 And Respuesta = vbYes Then
c Open "C:\AGÑNDA\TemporalArchivo.Dat" For Output As #2
c For I = 1 To NumeroLinea
c
If Len(Trim(LineasdelArchivo(I))) > 0 Then
c Print #2, LineasdelArchivo(I)
c Ñnd If
c Next I
c Close #2
c
'SÑ ÑLIDINA LA BASÑ DÑ DATOS ORIGINAL
c ' mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
c Kill "C:\AGÑNDA\agenda.dat"
c 'SÑ LÑ PONÑ ÑL NODBRÑ ORIGINAL A LA BASÑ DÑ DATOS TÑDPORAL
' mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
Name "C:\AGÑNDA\TemporalArchivo.Dat" As "C:\AGÑNDA\agenda.dat"
cccccc ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
c DsgBox (Ñncontro & " registro eliminados.")
Text1.Text = ""
c
c Ñnd If
cÑnd If
c Sub
Ñxit
NOarchivo:
c
c
DsgBox ("La base de datos no existe.")
c
Close #1
c #2
Close
c
Lac primera línea del bloque anterior permite verificar si se ha encontrado algún elemento para
borrar y verifica también si el usuario proporciona la respuesta Si, es decir, si el desea que el
c
registro sea borrado. Ñs lógico que en la búsqueda se puede encontrar el contacto, pero esto no es
c
suficiente, también se requiere saber si el usuario quiere borrar el contacto de la base de datos. Por
talcrazón se verifica ambas cosas.
c
c 'SÑ CRÑA UN ARCHIVO TÑDPORAL
c Open "C:\AGÑNDA\TemporalArchivo.Dat" For Output As #2
For I = 1 To NumeroLinea m Ñncontro
c Print #2, LineasdelArchivo(I)
c Next I
c Close #2
c
Ñste bloque de código crea un archivo temporal con los datos que contiene el arreglo. Ñs muy
c
importante crear un archivo temporal con los datos de la base de datos original porque no
c
trabajaríamos directamente con la base de datos y se envidarían muchos problemas futuros.
c
Ñl ccódigo se entiende claramente: Se abre el archivo para modo de escritura, se inicia un bucle que
sec repetirá hasta el total de líneas del archivo menos el total de registros borrados, se almacena
cada uno de los elementos del arreglo y se cierra el archivo.
c
c Kill "C:\AGÑNDA\agenda.dat"
c
c línea de código elimina la base de datos general, pero esto no importa, porque ya tenemos
Ñsta
unac copia de la base de datos original.
c
Name "C:\AGÑNDA\TemporalArchivo.Dat" As "C:\AGÑNDA\agenda.dat"
c
c línea de código cambia el nombre de la base de datos temporal y le pone el nombre de la base
Ñsta
dec datos original. Ñsto se debe de entender claramente.
c
c DsgBox (Ñncontro & " registro eliminados.")
Text1.Text = ""
c
Lac primera muestra el total de registros eliminados y la segunda limpia la caja de texto donde se
c
escribió el nombre o el teléfono del contacto. Las demás líneas las hemos visto anteriormente.
c
ó Ñn el evento Click del botón (    escriba:
c
Unload
c DÑ
c
c el evento Click del tercer botón del menú Principal de nuestra aplicación escriba:
ó Ñn
Form3.Show 1, De

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
ó Corra
c la aplicación.
c
ó Haga clic en el botón P  c  , introduzca el nombre del contacto que desea eliminar y a
c
continuación, haga clic en el botón  . Si el contacto no existe agréguelo.
c
c
ó Ahora daremos función a la cuarta opción del menú principal, al botón -.
c
ó Agregue un nuevo formulario.
c
c
ó Antes de proseguir debemos agregar un nuevo control a la barra de controles. Ñste control se
c GisView que estudiamos en el capítulo anterior.
llama
c
ó Haga
c clic derecho sobre la barra de controles y seleccione la opción (Pc #.
c
ó Ñn el cuadro de diálogo Componente, busque y active el componente  c Î c
c
(PPc( cy haga clic en el botón .  .
c
c
ó Dibuje un control ListView en el formulario y dos botones de comando, tal y como se muestra
enc la siguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Haga
c un solo clic sobre el control ListView y busque la propiedad View. Ñstablezca el valor 3 ±
lvwRepor.
c Ñste valor permitirá mostrar los registros como un reporte.
c
c
ó Ñn el evento Goad del formulario escriba:
c
Dimc dato As ListItem
c
ListView1.ColumnHeaders.Add(1) = "Nombre"
c
ListView1.ColumnHeaders.Add(2) = "Apellido"
c
ListView1.ColumnHeaders.Add(3) = "Telefono"
ListView1.ColumnHeaders.Add(4)
c = "Direccion"
c c
Ñl cbloque de código anterior permite agregar los encabezados al control ListView. Los encabezados
serán los campos de la base de datos.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Gos Archivosc
Capílo 7
c c
ó Ñnc el evento Click del botón  cescriba:
Onc Ñrror GoTo Noarchivo:
cDim Linea As String
cDim campo1, campo2, campo3, campo4 As String
cDim Posicion1, Posicion2, Posicion3 As Integer
cDim dato
cDim Ñncontro As Integer
Ñncontro = 0
c
cOpen "C:\AGÑNDA\Agenda.dat" For Input As #1
c While Not ÑOF(1)
c Line Input #1, Linea
c
c If Len(Trim(Linea)) > 0 Then
c Posicion1 = InStr(1, Linea, ";", vbTextCompare)
c
Posicion2 = InStr(Posicion1 + 1, Linea, ";", vbTextCompare)
c
c Posicion3 = InStr(Posicion2 + 1, Linea, ";", vbTextCompare)
c campo1 = Did(Linea, 1, Posicion1 m 1)
c campo2 = Did(Linea, Posicion1 + 1, Posicion2 m 1 m Posicion1)
c
campo3 = Did(Linea, Posicion2 + 1, Posicion3 m 1 m Posicion2)
c
c campo4 = Did(Linea, Posicion3 + 1, Len(Linea))
c Set dato = ListView1.ListItems.Add(, , campo1)
c dato.SubItems(1) = campo2
dato.SubItems(2) = campo3
c
dato.SubItems(3) = campo4
c
c Ñncontro = 1
c Ñnd If
cWend
cClose #1
c
cccccccc
c If Ñncontro = 0 Then
DsgBox ("La base de datos esta vacía")
c Ñnd If
c
Ñxitc Sub
c
Noarchivo:
DsgBox
c ("La base de datos no se encuentra.")

Nadac nuevo en el bloque de código anterior.


c
ó Ñnc el evento Click del botón ( cescriba:
c
Unload De
c
c
ó Corra la aplicación.
c
ó Haga clic en el botón ³Reporte´. Si hay datos se mostrarán de forma organizada en el control
c
ListView.

ó Detenga la aplicación y guárdela en la carpeta ³C:\AGÑNDA´.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

Gos Archivosc
Capílo 7
c c
7À9c ÑJÑRCëCë PRPUÑTc
c
1.m Hacer una aplicación que permita abrir un archivo de texto y mostrarlo en una caja de texto. La
c
aplicación debe permitir seleccionar el archivo de la unidad de disco mediante el cuadro de diálogo
c
Abrir.
c
2.mc Hacer una aplicación que permita almacenar en un archivo con estructura de base de datos los
campos:
c Nombre, Apellido, Ñdad y lugar de nacimiento. Ñl programa debe permitir visualizar los
registros agregados en un control ListView. También debe permitir borrar un registro almacenado
enc el archivo de base de datos.
c
3.mc Hacer una aplicación que permita borrar un archivo de una unidad de disco. Ñl nombre de este
archivo
c y la unidad donde este se encuentra debe ser especificado en una caja de texto y mediante
un botón de Borrar el programa debe permitir borrarlo. Si el archivo no se encuentra se debe
c
mostrar un mensaje informando al usuario que ese archivo no existe.
c
4.mc Hacer una aplicación que permita almacenar en un archivo el texto escrito en una caja de texto.
Ñl c programa debe permitir al usuario escribir el nombre del archivo y la unidad donde desea
guardarlo.
c Para esto, usted debe utilizar el cuadro de diálogo @   del control Common Dialog.
c
5.m Hacer una aplicación similar al   cc  de Windows. Debe dar funciones a las opciones
delc primer menú (Archivo) y del tercer menú (Fuente). Utilice para esto el control Common Dialog.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

ë rodcció a las Bases de daos


c
Capílo 8
c
CTÑë3
c
c c
8À1 ë rodcció a los co cepos de base de daosÀ
c m 8.1.1 Concepto de base de datos.
c m 8.1.2 Ñlementos de una base de datos.
c m 8.1.3 Ñstructura de una base de datos.
c m 8.1.4 Sistema de Gestión de Base de datos (SGBD).
m 8.1.5 Administrador de base de datos (ABD).
c
m 8.1.6 Diseñador de base de datos (DBD).
8À2c Creació de  a base de daosÀ
8À3c Co ecar  a base de daos co Visal Basic 6À0À
c m 8.3.1 Ñl Dodelo de datos ODBC (Open Database Connectivity).
c m 8.3.2 Ñl modelo de objetos DAO (Data Access Object).
m 8.3.3 Ñl modelo de objetos RDO (Remote Data Object).
c
m 8.3.4 Ñl modelo de objetos ODBCDirect.
c m 8.3.5 Ñl modelo de objetos OLÑ DB.
c m 8.3.6 Ñl modelo de objetos ADO (ActiveX Data Object).
8À4c Prepara do la co exió a la base de daosÀ
c m 8.4.1 Objeto Recordset.
m 8.4.1.1 Propiedades del objeto Recordset.
c
m 8.4.1.2 Danejo de cursores.
c m 8.4.1.3 Control de concurrencia.
c m 8.4.1.4 Lectura de los campos de un Recordset.
c m 8.4.1.5 Doverse por los registros de un Recordset.
c m 8.4.1.6 Dodificación de registros en un Recordset.
m 8.4.1.7 Ñliminar el registro activo del Recordset.
c
m 8.4.1.8 Inserción de registros en el Recordset.
c m 8.4.1.8 Ñstablecer y leer la posición de un registro en el Recordset.
c m 8.4.1.9 Ordenación de los registros de un Recordset.
c m 8.4.1.10 Búsqueda de registros.
c m 8.4.1.11 Verificar el estado del Recordset.
m 8.4.2 Ñventos del objeto Recordset.
c
m 8.4.2.1 Sucesos de recuperación de datos.
c m 8.4.2.2 Sucesos de navegación.
c m 8.4.2.3 Sucesos de modificación de datos.
c m 8.4.3 Generación de reportes.
8À5c Ñjercicios propesosÀ
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
8À1c ëTR3UCCë A G CCÑPT 3Ñ BAÑ 3Ñ 3ATc
c
c
Cuando hablamos de base de datos nos estamos refiriendo a un lugar donde se almacena
cualquier
c tipo de información que de alguna forma están relacionadas y organizadas. Para que
entienda esto, imaginase cualquier empresa, como por ejemplo, un banco o una universidad.
c
Ambas son empresas con propósitos muy diferentes pero tienen una necesidad en común y es
c
almacenar y recuperar la información recolectada. Por un lado un banco requiere almacenar los
c de sus clientes, las transacciones realizadas por los clientes, los datos de sus empleados,
datos
etc.c Por otro lado, una universidad tiene la necesidad de almacenar los datos de sus estudiantes,
lasc calificaciones, las facturas de pagos, etc. Ñsto nos da a entender que existe un lugar donde toda
empresa almacena y recupera la información. Ñste lugar recibe el nombre de base de datos.
c
Una c aplicación profesional debe ser capaz de c P  (permitir que el usuario
c
introduzca algún tipo de datos),   c P  (transformar la información introducida),
Pc  c P  (mantener la información en un dispositivo de almacenamiento), leer
P
c c P   (permitir que el usuario consulte los datos almacenados) y P c c
   (presentar por pantalla u otro dispositivo de salida la información requerida). Ñstas
c
características son las que un sistema de información computarizado debe ser capaz de realizar
parac que sea realmente profesional y potente. Pero para lograr que una aplicación cumpla con esos
c
requerimientos es necesario utilizar sistemas de bases de datos y no archivos convencionales
comoc hemos estado viendo hasta ahora.
c
La información en una base de datos esta organizada y relacionada, esto facilita en gran manera
lasc operaciones de consultas y almacenamiento. Además, una base de datos no depende de la
c
aplicación, sino que utilizaremos  P c c  c c  c c   (SGBD) para crear y
c
modificar la estructura de la base de datos.
c
Si custed no tiene conocimientos amplio de la importancia y beneficios de una base de datos, no se
preocupe porque en este capitulo hablaremos lo necesario acerca de esta para que este más o
c
menos relacionados con los conceptos básicos concernientes a estas.
c
c 3efi ició de base de daos
- 8À1À1
c
Una c base de datos consiste en un conjunto de datos relacionados y organizados lógicamente en un
dispositivo de almacenamiento (archivero, disco duro, cintas magnéticas, discos ópticos, etc). Ñn
c
nuestro caso estamos hablando de bases de datos computarizadas donde el principal dispositivo de
c
almacenamiento será el disco duro.
c
- 8À1À2
c Ñleme os de  a base de daos
c
Una c base de datos esta compuesta por los siguientes elementos: dato, campo, registro, tabla y
archivo. Un dao es la parte esencial de la información, es decir, la información que llega a la base
c
de datos. Los datos pueden ser de distintos tipos como: 
c P  c  P  c  c
c
PPc .
c
Unc campo es la unidad más pequeña de datos. Ñstos los representan las columnas de las tablas.
c
c
Reisro es un conjunto de campos o atributos relacionados entre sí. Representan las filas de las
tablas.
c
c
Tabla: Ñs el lugar donde la base de datos organiza la información. Ñsta esa compuesta por
c
filas(registros) y columnas (campos).
c
Archivo: es un conjunto de registros relacionados.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
- 8À1À3
c Ñsrcra de  a base de daos
c
Ñxplicamos anteriormente que una base de datos esta compuesta por datos, campos, registros,
c y archivo. Todos estos elementos se encuentran unidos lógicamente en un elemento grafico
tabla
c
llamado tabla, tal y como se muestra en la siguiente figura:
c
Base
c 3e daos: VÑNTAS
Tabla: CLIÑNTÑS
c
c ombre Apellido 3irecció Tel
fo o Cellar
c
José Pérez Calle Terminal #5 809m598m1252 809m598m5631
c
Pedro Rodríguez Urb. Alma Rosa #2 809m563m5985 809m563m5485
c
Carlos Bucarelly Av. Charles de Gaulle 809m596m5485 829m458m5695
c
Losc campos de la tabla están representados por las columnas, que en este caso son cinco
ombre, Apellido, 3irecció , Tel
fo o y Cellar.
c
Losc registros están compuestos por el nombre, apellido, dirección, teléfono y celular de cada
c
persona. La tabla anterior esta compuesta por tres registros.
c
Los datos son la mínima información que contiene cada campo, por ejemplo, José es un dato,
c
Pérez es otro dato, etc. La combinación de todos los datos o campos de una fila de la tabla se le
c  .
llama
c
Ñl carchivo esta representado por el nombre de la base de datos, que en este caso es VÑNTAS.
c archivo contiene una tabla cuyo nombre es CLIÑNTÑS. La tabla que hemos puesto de ejemplo
Ñste
contiene
c información personal acerca de los clientes de una empresa.
c isema de esió de Base de daos ( B3)
- 8À1À4
c
Unc isema esor de base de daos ( B3) es un conjunto de programas que permiten crear y
c
mantener una Base de datos, asegurando su integridad, confidencialidad y seguridad. Ñste sistema
debe
c permitir lo siguiente:
c
a) cDefinir una base de datos: especificar tipos, estructuras y restricciones de datos.
b) cConstruir la base de datos: guardar los datos en algún medio controlado por el mismo SGBD
c) cDanipular la base de datos: realizar consultas, actualizarla, generar informes.
c
c los principales SGBD tenemos: Dicrosoft Access, SQL Server, Oracle y DySQL. Ñn este libro
Ñntre
utilizaremos
c Dicrosoft Access para crear nuestras bases de datos, debido a que es uno de lo más
sencillo y el más económico. Ñs importante que tenga un poco de conocimiento en el manejo de
c
Access para que tenga una mejor visión de las aplicaciones que se realicen en este capítulo.
c
c Admi isrador de base de daos (AB3)
- 8À1À5
c
Ñsc la persona o equipo de personas profesionales responsables del control y manejo del sistema de
base
c de datos, generalmente tiene(n) experiencia en DBDS, diseño de bases de datos, sistemas
operativos, comunicación de datos, hardware y programación. Ñntre las principales
c
responsabilidades que desempeña un ABD tenemos: repperabilidad (capacidad para recuperar
c perdidos en la base de datos, i eridad (verificar ó ayudar a la verificación en la integridad
datos
dec datos), seridad (definir y/o implementar controles de acceso a los datos), dispo ibilidad (los
usuarios
c autorizados tengan acceso a los datos cuando lo necesiten para atender a las
necesidades del negocio) y desempeño (asegurarse del máximo desempeño incluso con las
limitaciones).

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
- 8À1À6
c 3iseñador de base de daos (3B3)
c
Ñs la persona encargada del diseño de la base de datos. Ñl diseñador de bases de datos se
c
encarga de identificar los datos que se almacenarán en la base de datos y elegir las estructuras
c
apropiadas para la misma. Ñsta tarea suele realizarse antes de que se implemente y se llene de
c la base de datos, aunque muchas veces un diseñador debe trabajar sobre la misma cuando
datos
yacesta en funcionamiento.
c
Ñl/los diseñadote(s) de base de datos se encargan de determinar los requerimientos de los usuarios
quec usarán la base de datos. A partir de estos requerimientos, diseñarán y crearán la base de
c
datos.
c
8À2c CRÑACë 3Ñ UA BAÑ 3Ñ 3ATc
c
c una base de datos es realmente un proceso creativo. Se requiere de una buena planeación
Crear
c de crear la base de datos. Si en un principio no se identifican realmente los datos que se
antes
c
almacenarán en la base de datos podrían enfrentarse a muchos problemas en el futuro después de
haber
c creado la aplicación. Uno de estos inconvenientes es, que la base de datos no esta
almacenando realmente los datos requeridos por la empresa y al momento de generar una consulta
c
no existe la forma de obtenerla, debido a que usted no previó el almacenamiento de un dato
c
importante. Por ejemplo, si usted diseño una aplicación para una tienda que permite registrar todos
losc productos que llegan al almacén, entre los cuales el sistema solitita al usuario los siguientes
c del artículo: código del artículo, descripción, precio unitario y cantidad entrante. Después que
datos
la cempresa a utilizado el sistema por alrededor de dos meses el gerente de almacén requiere un
reporte de todos los artículos de la tienda por proveedor. Como su sistema no solicito del usuario el
c
nombre del proveedor al momento de registrarlo no es posible obtener una consulta de este tipo.
Porc tal razón, su sistema no seria realmente eficiente.
c
c de diseñar una base de datos tenga bien en cuenta que todos los datos requeridos se están
Antes
almacenando
c en la base de datos. Para diseñar una base de datos realmente consistente siga los
siguientes pasos:
c
1À-c eleccio e adecadame e el  B3 qe ilizará para crear la base de daos. Ñl SGBD
c
dependerá del tipo de aplicación. Una empresa pequeña como un colegio, un instituto, un almacén,
unac distribuidora, entre otras, no requieren de una base de datos tan potente. Podrá utilizar un
SGBD
c como Dicrosoft Access para almacenar los datos de dicha empresa. Además, de que el
costo de licencia para este sistema es muy bajo. Para empresas que requieren almacenar enormes
c
cantidades de datos tendrá que utilizar SGBD más potentes como QG erver y racle. Ñjemplos
dec estas empresas serían un banco o una universidad.
c
2À-c ëde ifiqe cidadosame e los daos qe será almace ados e la base de daosÀ Antes
dec diseñar una base de datos debe tener bien claro cuales son los campos requeridos para cada
tabla para satisfacer las necesidades del sistema.
c
3À-c Haa  boceo del diseño de la base de daosÀ Ñs recomendable escribir en hoja de papel la
c
estructura que tendrá la base de datos, esto es los  c c  c Pc  c
c c c

c c
4À- Uilice el  B3 crear la base de daosÀ Después de haber hecho el boceto de su base de
c
datos, utilice el SGBD seleccionado para crear la base de datos.
c
5À-c ëde ifiqe la fe e de alime ació de la base de daosÀ Después de haber diseñado la
c de datos es necesario introducir, modificar y actualizar los datos en ella mediante algún
base
medio, esto puede ser desde el propio SGBD o desde una aplicación externa.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


V
c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
8À3c CÑCTAR UA BAÑ 3Ñ 3AT C VëUAG BAëC 6À0c
c
Ñxisten varias formas para conectar una base de datos ha una aplicación de Visual Basic, entre las
c
cuales cabe mencionar la utilización de tecnologías 3BC, 3A, R3, 3BC3irec, GÑ 3B y
c Aunque en este libro me centraré en la tecnología A3 (Acive 3aa bjec) explicaré
A3.
c
brevemente cada una de las interfaces de conexión a bases de datos mencionadas anteriormente,
debido
c a que cada una de estas están íntimamente relacionadas.
c
- 8À3À1 Ñl modelo de daos 3BC (pe 3aabase Co eciviy)
c
c
3BC son las siglas de (    cc cc c    1c0   c(    y
escun conjunto de funciones que le permitirá conectarse a una base de datos local o remota. Ñs una
tecnología
c que permite acceder a distintas bases de datos en diferentes formatos como Dicrosoft
Visual FoxPro, Dicrosoft Access, Dicrosoft SQL Server, dBASÑ, Oracle y archivos de texto
c
separados por comas. La máquina sobre la que se ejecuta la aplicación se conecta en un DLL
c
denominado 3BC 3river Ma er @c c  c10(cque, a su vez es el encargado
dec mandar y recibir los datos a un controlador ODBC específico para la base de datos particular
quec desee utilizar. Ñxisten ciento de controladores ODBC para las distintas bases de datos actuales
delc mercado, incluso para bases de datos descontinuadas.
c
Ñl objetivo de ODBC es proporcionar una interfaz común para todas las bases de datos existentes.
c
Teóricamente, podrá preparar una aplicación que utilice OBDC para hablar con una base de datos
dec Access y, posteriormente, adaptar el programa para una base de datos SQL Server cambiando
c
simplemente el controlador ODBC e introduciendo unas pocas instrucciones en el código fuente.
c
ODBC tiene muchas ventajas en comparación con otros métodos de acceso a bases de datos, sin
c
embargo, utilizar ODBC no resulta muy sencillo, especialmente para los programadores de Visual
c
Basic. Trabajar con ODBC implicar manejar los conceptos API de Windows que son bastante
c
complejos y si comete un error se suele interrumpir la ejecución de la aplicación con un error fatal.
Porc este motivo, son pocos los programadores de Visual Basic que escriben aplicaciones que
llamen
c directamente a las funciones ODBC. Increíblemente, la mayoría de las otras técnicas de
acceso a datos disponibles para Visual Basic pueden utilizar controladores ODBC como capas
c
intermedias por lo que, en ocasiones, podrá potenciar las otras técnicas con llamadas directas a los
c principalmente con aquellas basadas en RDO. Por desgracia, no podrá mezclar código ODBC
API,
APIc con ADO aun que este utiliza internamente un controlador ODBC.
c
- 8À3À2
c Ñl modelo de objeos 3A (3aa Access bjec)
c
3A 1c c c c   es una técnica de acceso a base de datos de Dicrosoft Access
c
basado en el motor Microsof Je que es el que propulsa a Access. Los diseñadores pueden
c
diseñar una base de datos DDB utilizando Access y, posteriormente, utilizar DAO desde una
c
aplicación de Visual Basic para abrir la base de datos, agregar y recuperar registros y gestionar
transacciones.
c Aunque DAO se diseño pensando en Access, este no limita la conexión a otras
bases de datos para la que exista un controlador ODBC.
c
Unac de las desventajas de DAO es que aunque no utilice bases de datos de Access tendrá que
c
cargar completamente el motor Dicrosoft Jet y distribuirlo en sus aplicaciones. Otra importante
c
desventaja es que, DAO no cuenta con muchas de las funciones que podría utilizar si trabaja
directamente
c con funciones ODBC API. Por ejemplo, no podrá realizar consultas asíncronas o
conexiones utilizando DAO, ni tampoco podrá trabajar con conjuntos múltiples de resultados.
c
DAOc fue una de las herramientas de acceso a datos para los primeros programadores de Visual
c 3. Actualmente este método de acceso no es utilizado por los programadores de Visual Basic
Basic
c debido a que su sucesor ADO es mucha más potente que DAO y es el objeto de estudio y
6.0,
desarrollo de la Dicrosoft para acceso a datos.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
- 8À3À3
c Ñl modelo de objeos R3 (Remoe 3aa bjec)
c
R3 1c c 0 c -P es el primer intento que realizó Dicrosoft para combinar la
c
sencillez del DAO con la potencia de la programación directa del ODBC API. RDO es un modelo de
c
objetos vagamente diseñado a partir de DAO, pero deshecha el Jet Ñngine y el DAO DLL y trabaja
c
directamente con los controladores ODBC subyacentes. Las aplicaciones basadas en RDO cargan
sólo
c un pequeño DLL en lugar del motor Jet que consumía gran cantidad de recursos. Lo más
importante es que RDO fue específicamente diseñado para trabajar con los orígenes ODBC, por lo
c
que cuenta con funciones que no pueden ser utilizadas desde DAO. Sin embargo, RDO es una
c
tecnología de 32 bits, por lo que no podrá utilizarla en las versiones 2 y 3 de Visual Basic. RDO fue
c
implementado por primera vez en la versión 4 de Visual Basic y, posteriormente fue mejorado en la
c
versión 5.
c
- 8À3À4 Ñl modelo de objeos 3BC3irec
c
c
Además del RDO mejorado que incluía Visual Basic 5, este incluía otra tecnología de acceso a
c denominada 3BC3irec, que permitía a los programadores emplear RDO utilizando una
datos,
c
sintaxis DAO. ODBCDirect fue concebido como una técnica de transición que ayudaría a los
programadores
c en Visual Basic a transformar sus aplicaciones DAO/Jet a arquitecturas
cliente/servidor de mayor potencia. ODBCDirect no es una tecnología propiamente dicha. Ñs
c
únicamente un conjunto de trucos que puede utilizar para ahorrarse tiempo durante la conversión
dec aplicaciones.
c
c Ñl modelo de objeos GÑ 3B
- 8À3À5
c
GÑ 3B es una tecnología de acceso a datos de bajo nivel con la que Dicrosoft pretende sustituir a
c
ODBC como el medio principal de conexión con bases de datos. Aunque OLÑ DB es una nueva
c
tecnología, podrá encontrar proveedores de OLÑ DB para las bases de datos más populares, y
c serán comercializadas rápidamente. A pesar de sus aparentes similitudes, las tecnologías
otras
c
ODBC y OLÑ DB son profundamente distintas. Ñn primer lugar, OLÑ DB esta basada en COD, que
escuna arquitectura suficientemente robusta diseñada para mover grandes cantidades de datos por
la cred. Ñn segundo lugar, OLÑ DB pretende realizar la tarea de conectar a cualquier fuente de
datos, no sólo las bases de datos relacionales e ISAD (modo de acceso secuencial indexado), sino,
quec forma parte de la estrategia denominada Acceso universal de datos (UDA) de Dicrosoft, que le
c
permitirá leer y procesar los datos allá donde se encuentren, sin necesidad de convertirlos en
c
primer lugar y de tener que importarlos a una base de datos más tradicional. Utilizando los
proveedores
c OLÑD DB, podrá procesar los datos contenidos en los mensajes de correo electrónico,
páginas HTDL, hojas de cálculo y documentos de texto, entre otras fuentes de datos.
c
c Ñl modelo de objeos A3 (Acive 3aa bjec)
- 8À3À6
c
A3c es una interfaz de alto nivel con OLÑ DB. Al igual que los API de ODBC, OLÑ DB es una
interfaz
c de bajo nivel a la que no se puede acceder con facilidad utilizando lenguajes de alto nivel
como
c Visual Basic. ADO está construido sobre un OLÑ DB para proporcionar funciones que no se
encuentran disponibles directamente en OLÑ DB o que exigirían profundos conocimientos y
c
habilidades de codificación a los programadores.
c
Ñl cmodelo de objetos ADO es considerablemente menos complicada que los modelos DAO y RDO.
ADOc contiene mucho menos objetos y colecciones que DAO y RDO, pero los elementos que
contiene son, con frecuencia, más complejos que sus equivalentes DAO y RDO porque dispone
c
muchos más métodos y propiedades.
c
Lasc principales ventajas de ADO son su facilidad de uso, su gran velocidad, su escasa utilización
dec memoria y el poco espacio que ocupa en disco. ADO proporciona un acceso a los datos
constante y de alto rendimiento para crear un cliente de base de datos para el usuario o un objeto
empresarial del nivel medio con una aplicación, una herramienta, un lenguaje o un explorador.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
8À4c PRÑPARA3 GA CÑ ë A GA BAÑ 3Ñ 3AT
c c
Al principio de este capítulo mencione que la principal herramienta tecnológica que utilizaríamos en
c libro para conectar a una base de datos sería ADO. Ñsto es, porque considero que es la
este
c
herramienta más completa y potente de la que dispone Visual Basic para conectar a un origen de
c
datos.
c
Ñl modelo de datos ADO dispone de un objeto llamado CÑCTë que permite establecer una
c
conexión a un origen de datos que puede ser una base de datos, un origen ODBC o cualquier otro
c
origen que disponga un proveedor OLÑ. Ñl objeto Co ecio le permitirá especificar todos los
c
parámetros necesarios antes de abrir una base de datos.
c
Cómo
c esablecer la co exió
c
Para establecer la conexión el objeto Co ecio dispone del método pe , seguida de los
c
parámetros necesarios para la conexión.
c
c si axis es:
c
pe c6(  '  c6/0 c6   61 
c
Ñl c primer argumento (  ' c representa una serie de parámetros necesarios para
c
establecer la conexión a la base de datos. Ñstos parámetros son por ejemplo, el proveedor ODBC,
el cnombre de la base de datos, el nombre de usuario, la contraseña y el nombre del servidor.
c
Ñjemplo 1:
c
c Dim cn As New ADODB.Connection µLinea necesaria para establecer la conexión.
c
cn.Open ³Provider=Dicrosoft.Jet.OLÑDB.4.0;´ & ³Data Source=c:\clientes.mdb´
c
Ñl ccódigo del ejemplo anterior abre una base de datos llamada clientes.mdb que se encuentra en el
c local C, mediante el proveedor ODBC MicrosofÀJeÀGÑ3BÀ4À0 que permite conectar a
disco
c de datos de Access 2000 y Access 97 sin ningún problema.
bases
c
Ñjemplo 2:
c
c Dim cn As New ADODB.Connection
c
cn.Open ³Provider=SQLOLÑDB;´ & ³Server=ServerNT;´ & ³User ID=jose;Password=abc;´
c & ³Data Source=empleados´
c
Ñl ccódigo del ejemplo anterior abre una base de datos llamada empleados que se encuentra en un
servidor
c denominado ³ServerNT´. También especificamos el nombre y la contraseña de usuario.
c
Los argumentos /0 y  son opcionales. Ñstos no deben especificarse si lo escribe
c
directamente en el argumento (  ' , tal y como lo vemos en el segundo ejemplo. Ñl
c
argumento opcional 1  determina si este método debe volver después o antes de que la
c
conexión se establezca. Ñste argumento puede tomar los valores -1-adCo ecU specified  c
c
c , que abre una 
c  con la base de datos y el valor 16-adAsy cCo ec
abre una 
   ccon la base de datos. Una 
c  indica que Visual Basic
c
no ejecutará la instrucción que sigue al método pe hasta que se establezca la conexión, en
c
consecuencia la aplicación no responderá a los eventos del usuario. Por otro lado, unac 
c
c
  , permite que el usuario trabaje con el programa aun la conexión no se halla establecido.
Y clo mejor de todo, permite informar el estado en que se encuentra la conexión. Ñste tipo de
conexión será el caso de estudio en otra sección de este mismo capitulo, mientras tanto,
trabajaremos con 
c  .

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
c son algunos de los argumentos que podrá utilizar en el atributo (  ' cal momento
Ñste
de abrir una conexión.
c
c Arme o 3escripció
c 3aa orce Ñl nombre del servidor SQL o el nombre de la base de datos DDB a la
c que se desee conectar. Cuando se conecte a un origen ODBC, este
c argumento puede ser también el nombre de un origen de datos (DSN).
c
3 Nombre del origen ODBC registrado en la máquina actual; este
c
argumento puede sustituir al argumento Data Source.
c
c Fileame Archivo que contiene información sobre la conexión; este argumento
c puede ser un archivo ODBC DSN o un archivo Dicrosoft Data Link
c (UDL).
c
ë iial Caalo Nombre de la base de datos predeterminada sobre la conexión.
c Cuando se conecte a un origen de datos ODBC, también podrá utilizar
c el argumento Database.
c
c Password Contraseña del usuario. Cuando se conecte a un origen ODBC, podrá
c utilizar el argumento PWD. No tendrá que pasar su ID y contraseña de
usuario si se está conectando a un servidor SQL y utiliza seguridad
c
integrada.
c
c
Persis ecriy ë fo True si ADO almacena el ID y la contraseña de usuario en el vínculo de
c datos.
c
c Provider Nombre de un proveedor OLÑ; el valor predeterminado es DSDASQL,
el proveedor para orígenes ODBC.
c
c User ë3 Nombre del usuario. Cuando se conecte a un origen ODBC, podrá
c utilizar en su lugar el argumento UID.
c
c
Hasta
c ahora usted esta en la capacidad de realizar una conexión a una base de datos y nada más.
Necesita ahora conocer la forma en que puede obtener los datos que se encuentran en la base de
c y mostrarlos en cajas de texto, en un DataGrid o en otro control en la que se puede mostrar
datos
c Ñn la siguiente sección veremos la forma de hacer esto y al finalizarla crearemos nuestra
datos.
c
primera aplicación de base de datos.
c
- 8À4À1
c bjeo Recordse
c
Además del objeto Co ecio , ADO posee un objeto denominado Recordse, que contiene todos
losc datos que se leerá de una base de datos o que enviará a la misma. Un Recordset puede incluir
c filas y columnas de datos. Cada fila es un registro y cada columna es un campo del registro.
varias
Sólo
c podrá acceder simultáneamente a una fila, la denominada fila actual o registro actual. Podrá
examinar
c un Recordset modificando el registro actual.
c
- 8À4À1À1 Propiedades del objeo Recordse
c
c
Posiblemente la propiedad más importante del objeto Recordset es la propiedad orce que
contiene
c el nombre de la tabla, el nombre del procedimiento almacenado o el texto de una consulta
SQLc utilizada para llenar el Recordset.

Para cargar un Recordset usted debe realizar tres pasos que son realmente necesarios, el primero,

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 



c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
esc crear el objeto Recordset, lo segundo es, indicar la fuente de datos que alimentará al objeto
Recordset, tercero, abrir el Recordset con el método pe y llenar el Recordset con un texto de
c
una consulta SQL.
c
c
A continuación, se muestran algunos ejemplos de cómo abrir una base de datos y un Recordset.
c
c
Ñjemplo 1:
c
Dim cn As New ADODB.Connection µCreamos el objeto Connection.
Dimc rs As New ADODB.Recordset µCreamos el objeto Recordset.
c
c
µAbrimos la base de datos ³ventas.mdb´.
cn.Open
c ³Provider=Dicrosoft.Jet.OLÑDB.4.0;´ & ³Data Source=c:\ventas.mdb´
c
rs.Source = ³clientes´ µÑspecificamos la fuente de datos. Ñn este caso la tabla ³clientes´.
c
rs.Open
c ³select * from clientes´, cn µAbrimos el Recordset y lo llenamos con la consulta SQL.
c
Ñnc este ejemplo creamos el objeto Connection y luego creamos el objeto Recordset. Luego abrimos
la base de datos utilizando el método pe del objeto Connection, tal y como vimos anteriormente.
c
Ñn la cuarta línea de código especificamos el origen de los datos, que en este caso es la tabla
c
³clientes´ de la base de datos ³ventas.mdb´. Por último, utilizamos el método pe del objeto
c
Recordset para abrirlo. Ñl texto €  cAcPc  ces una consulta SQL que permite seleccionar
c los registros de la tabla. Ñn este caso el Recordset se llenará con todos los registros de la
todos
tabla
c clientes.
c
c
Ñjemplo 2: (ra forma de abrir el Recordse)
c
Dim cn As New ADODB.Connection µCreamos el objeto Connection.
c
Dim rs As New ADODB.Recordset µCreamos el objeto Recordset.
c
c
µAbrimos la base de datos ³ventas.mdb´.
c
cn.Open ³Provider=Dicrosoft.Jet.OLÑDB.4.0;´ & ³Data Source=c:\ventas.mdb´
c
rs.Source = ³clientes´ µÑspecificamos la fuente de datos. Ñn este caso la tabla ³clientes´.
c
rs.ActiveConnection
c = cn µActiva la conexión asociándolo a la conexión existente.
c
rs.Open ³select * from clientes´ µAbrimos el Recordset y lo llenamos con la consulta SQL.
c
c
Ñn este ejemplo se omite el parámetro de conexión en el método pe por la propiedad
c
AciveCo ecio del objeto Recordset.
c
c
Ñjemplo 3: (ra forma es abrir la base de daos de forma implícia)
c
Dimc rs As New ADODB.Recordset µCreamos el objeto Recordset.
c
µActivamos
c y especificamos lo parámetros de la conexión en el objeto Recordset.
c
rs.ActiveConnection = ³Provider=Dicrosoft.Jet.OLÑDB.4.0;´ & ³Data Source=c:\ventas.mdb´
c
rs.Source = ³clientes´ µÑspecificamos la fuente de datos. Ñn este caso la tabla ³clientes´.
c
rs.Open ³select * from clientes´ µAbrimos el Recordset y lo llenamos con la consulta SQL.
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció a las Bases de 3aosc


Capílo 8
c c
- 8À4À1À2
c Ma ejo de crsores
c
Un crsor es un conjunto de registros que constituyen el resultado de una consulta. Los cursores
sonc necesarios definirlo para indicar el comportamiento y la funcionalidad disponibles de los
c
registros en el Recordset. Para definir el tipo de cursor debe indicar donde se debe almacenar los
c
cursores, en la estación de trabajo (cliente) o en el servidor. También debe especificar el tipo del
cursor
c y la opción de bloqueo.
c
La propiedad CrsorGocaio del objeto Recordset permite definir el lugar donde se almacenarán
losc cursores. Ñsta propiedad puede tomar los valores 2-adUseerver  c c   o 3-
c
adUseClie . Ñl valor 2madUseServer es el predeterminado para cuando este trabajando con el
c
Proveedor OLÑ DB para controladores ODBC y para SQL Server, es un cursor de  c   
creado
c en el servidor. Ñste tipo de cursor del lado del servidor es el más eficaz debido a que
ofrecen un mejor rendimiento y más tipos de cursores. Los cursores del lado del cliente son
c
frecuentemente utilizados cuando tiene un control DataGrid u otro control complejo que esté unido
al cRecordset.
c
Al cdefinir un cursor, también deberá especificar el tipo de cursor con la propiedad CrsorType que
comunica
c el tipo de cursor que debería crearse en el servidor o en el cliente. Los distintos tipos que
se puede crear son:
c
c
ó ForwardOnly (Sólo hacia delante).
c
ó Static (Ñstático).
c
ó Keyset (Conjunto de clave).
ó Dynamic
c (Dinámico).
c
Ñl crsor Forward ly (ólo hacia dela e):
c
Unc cursor Forward ly ' c   cesta disponible solo del lado del servidor. Ñs el cursor más
c
simple que existe. Sólo permite desplazamiento hacia delante y al abandonar un registro éste deja
dec estar disponible, esto hace que sea el cursor más rápido e ideal para operaciones dónde
debemos
c abrir un conjunto de registros e ir haciendo una lectura secuencial hasta llegar al final. Un
ejemplo típico es llenar una lista de opciones con los valores de una tabla.
c
Al cabrir un cursor de este tipo se leen un numero de registros y se pasan a la caché (en función del
c de la propiedad CacheSize), y a medida que se va avanzando por el cursor, ADO recupera el
valor
c
conjunto siguiente de registros. Ñste tipo de cursor es realmente eficiente si define la propiedad
c
GockType a - 1  y Cacheize igual a ). Ñste tipo de cursor se define con el valor 0-
adpe
c Forward ly en la propiedad CrsorType del Recordset.
c
Ñl crsor aic (Ñsáico):
c
Unc crsor esáico es muy similar a un cursor sólo hacia delante, con la salvedad de que admite
c
desplazamiento en todas las direcciones (DoveFirst, DovePrevious, DoveNext, DoveLast y Dove),
el cpropio motor de ADO recuperará en la caché los registros que necesite al desplazarnos por el
mismo.
c
c
Ñl ccomportamiento de este cursor no muestra los cambios realizados por otros usuarios a los datos
de los registros del cursor, de la misma forma que no muestra los registros añadidos ni eliminados,
escpor ello que se denomina estático. Ñste es el único cursor posible del lado del cliente y no tendrá
quec definirlo si pasa el valor " (  a la propiedad CrsorGocaio . Aunque estos cursores
sonc menos eficaces que los cursores de  c    y aumentan la carga de trabajo del sistema en
el cque residen, su rendimiento es razonable y suelen ser una buena opción, especialmente cuando
el Recordset no incluye demasiados registros. Los cursores estáticos suelen ser la mejor opción
para recuperar datos de un procedimiento almacenado. Utilice este tipo de cursores cuando la

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
estación
c de trabajo cliente cuente con suficiente memoria. Ñste tipo de cursor crea asignando el
valor 4 1'  en la propiedad CrsorType del objeto Recordset.
c
Ñl ccrsor Keyse (Co j o de clave):
c
Losc crsores Keyse  c c  son los cursores más potentes y más complejos de la
dispone
c un programador. Básicamente su comportamiento permite tanto actualizar los datos como
ver los cambios que los otros usuarios puedan hacer en los registros del cursor, pero se provocará
c
un error si accede a un registro que otro usuario haya borrado. Lo que no permite ver son registros
c
añadidos por otros usuarios a la base de datos. Ñl cursor Keyset  c c  sólo está
c
disponible como cursor del lado del servidor. Ñste tipo de cursor se crea asignando el valor 1m
c
1- en la propiedad CrsorType del objeto Recordset.
c
Ñl crsor 3y amic (3i ámico):
c
c
Ñl cursor dinámico es muy parecido a cursor de conjunto de claves. La diferencia está en que cada
vezc que el cliente solicita otro conjunto de registros el conjunto de claves se vuelve a crear antes de
c
devolver estos registros. Ñsto provoca que si abrimos un conjunto de registros dinámico y contamos
el cnúmero de registros, luego nos desplazamos secuencialmente hasta el final y volvemos a contar
el cnúmero de registros, no tiene por que ser el mismo ya que otros usuarios pueden haber insertado
registros.
c
c
No resulta sorprendente que estos cursores sean los más exigentes desde el punto de vista del
c
rendimiento y del tráfico en la LAN porque, cada vez que se desplaza a otro registro, se necesita
c
realizar un viaje hasta el servidor para recuperar los valores actuales. Ñste tipo de cursor sólo se
c
encuentra disponible del lado del servidor.
c
Preba de re dimie o
c
A ccontinuación, se muestra una prueba de rendimiento encontrada en la Web donde se puede
c
apreciar la potencia de cada tipo de cursor:
c
Gac preba se hizo e  a maqi a co las siie es caracerísicas:
c
à Pentium 4 a 2,8 GHz con 512 Db RAD
c à Windows 2000 PRO + SP 4
c à SQL Server 2000 + SP 3
c à VB 6.0 + SP 5
c à DDAC 2.7
c
Gac co sla fe la siie e:
c
SÑLÑCT * FROD Historico (selecciona todos los registros de la tabla Historico de 22 columnas con
c principal INT IDÑNTITY, con 567.430 registros).
clave
c
Al cabrir el RecordSet y leerlo hasta el final utilizando cada cursor obtuvimos los siguientes datos:
c
3ració de la
c Tipo de crsor co sla (e se dos)
c
ForwardOnly 6,02
c
Static 65,48
c
KeySet 90,13
c
Dynamic 89,84
Static (extremo cliente) 39,00

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
- 8À4À1À3
c Co rol de co crre cia
c
Ñl control de concurrencia consiste en un conjunto de estrategias de bloqueo que utilizan los
c
programadores para evitar que varios usuarios que acceden simultáneamente a una base de datos
c
modifiquen al mismo tiempo un determinado registro. Los bloqueos son extremadamente
c
necesarios para no crear bases de datos inconsistentes. Dependiendo de la forma en que
desarrolle
c sus aplicaciones, un bloqueo puede disminuir de forma significativa el rendimiento de su
aplicación, y puede, incluso, provocar errores fatales si no genera una buena estrategia de
c
resolución de bloqueo. Cuando se bloquea un registro que esta siendo modificado ningún usuario
c acceder a dicho registro.
podrá
c
c
Dediante la propiedad GockType  cc cdel objeto RecordSet usted podrá indicar el tipo
dec bloqueo que se va a utilizar sobre los datos de la base de datos. Ñsta propiedad puede tomar los
siguientes valores: 1-adGockRead ly, 2-adGockPessimisc, 3-adGockpimisic y 4-
c
adGockBachpimisic.
c
Ñl cvalor x6G £   c c  c    es el predeterminado por ADO, que crea
c
arreglos no actualizables. Ñs la opción más eficaz porque no impone sobre los datos un bloqueo de
escritura.
c Ñl valor 26G    c  P  , ADO bloquea el registro
inmediatamente
c un usuario lo este modificando. Ñl registro estará bloqueado hasta que se ponga
en marcha el método Updae del objeto Recordset. Dientras el registro este bloqueado ningún otro
c
usuario podrá acceder al mismo para escribir en él, lo que reduce severamente la posibilidad de
c
escalar la aplicación. Ñl valor 3-adGockpimisic  c  P  c tiene un mejor
c
comportamiento que el bloqueo pesimista, pero requiere que el programador este más atento. Con
el cbloqueo optimista, ADO bloquea el registro actual sólo cuando esté siendo actualizado lo que,
normalmente, tardará sólo un pequeño intervalo de tiempo. Ñl valor 4-adGockBachpimisic
c
 c  P  c   c es un modo especial de bloqueo que sólo esta disponible para los
c
cursores estáticos del lado del cliente. Ñn los bloqueos optimistas diferidos, descargará todos los
c en la máquina cliente, permitirá que el usuario realice todas las modificaciones necesarias y,
datos
c
posteriormente, enviará todos los cambios en una única operación. Los bloqueos optimistas son la
mejor
c opción si decide trabajar con cursores del lado del cliente debido a que disminuyen el tráfico
enc la red. Ñl único problema de este tipo de bloqueo es que los usuarios podrán acceder a un
mismo registro que esta siendo usado, lo que obligará a que usted desarrolle una estrategia para
c este y otros tipos de conflictos.
evitar
c
c
- 8À4À1À4 Gecra de los campos de  Recordse
c
Los nombres de los campos y los valores de cada capo del registro actual se almacenan en la
c
colección Fields del objeto Recordset. Para leer uno o varios campos del registro actual deberá
c un índice numérico o el nombre del campo, tal y como se muestra en el siguiente ejemplo:
pasar
c
c
' c c Pc  c  c c  c P  c  c c c c  c Pc  c   c
P
c  c  c, c  c  c c P cc c PcPc  c cc
  c  c c  ccc c Pc c c  c cc- c   Pcc
c
 c P c cccP c c   ac
c
Dimc cn As New ADODB.Connection 'Creamos el objeto Connection.
Dimc rs As New ADODB.Recordset 'Creamos el objeto Recordset.
c
'Abrimos la base de datos "agenda.mdb".
c
cn.Open "Provider=Dicrosoft.Jet.OLÑDB.4.0;" & "Data Source=c:\agenda.mdb"
c
rs.Source = "contactos" 'Ñspecificamos la fuente de datos. Ñn este caso la tabla "contactos".
c
rs.CursorType = adOpenKeyset 'Definimos el tipo de cursor.
c
rs.LockType = adLockOptimistic 'Definimos el tipo de bloqueo.

rs.Open "select * from contactos", cn 'Abrimos el Recordset y lo llenamos con una consulta SQL.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
µAgregamos
c los campos del registro actual al control ListBox.
List1.AddItem rs.Fields(0) & ³ ³ & rs.Fields(1) & ³ ³ & rs.Fields(2) & ³ ³ & rs.Fields(3)
c
Ñnc el ejemplo anterior agregamos el primer registro del Recordset al control ListBox, debido a que
esc el primer registro seleccionado cuando cargamos por primera vez el Recordset. Los valores
c
dentro de los paréntesis representan los campos o los valores de cada campo de la tabla. Ñn la
colección
c Fields el orden de los campos comienzan por cero. Ñn nuestro caso, el valor 0 representa
el primer campo, es decir, el nombre, el valor 2 el apellido, y así sucesivamente.
c
c forma de leer los valores de cada campo es especificando el nombre del campo en vez de un
Otra
c
número, por ejemplo:
c
List1.AddItem
c rs.Fields(³nombre´) & ³ ³ & rs.Fields(³apellido´) & ³ ³ & rs.Fields(³telefono´) & ³ ³
& rs.Fields(³direccion´)
c
Losc valores de cada campo del registro seleccionado se almacena en la propiedad Vale de la
c
colección Fields, aunque este no es necesario especificarlo debido a que es el valor
c
predeterminado por ADO. Por ejemplo, el código explicito para leer los valores de cada campo
sería:
c
c
List1.AddItem rs.Fields(³nombre´).Value & ³ ³ & rs.Fields(³apellido´).Value & ³ ³ &
c
rs.Fields(³telefono´).Value & ³ ³ & rs.Fields(³direccion´).Value
c
Lac colección Fields también permite leer el nombre de cada campo del registro actual. Ñsto es
posible
c mediante la propiedad ame. Por ejemplo, si se quiere agregar al ListBox el nombre del
campo y su valor al lado hacemos lo siguiente:
c
c
List1.AddItem rs.Fields(0).Name & ³=´ & rs.Fields(0).Value & ³ ³ & rs.Fields(1).Name & ³=´ &
c
rs.Fields(1).Value & ³ ³ & rs.Fields(2).Name & ³=´ & rs.Fields(2).Value & ³ ³ & rs.Fields(3).Name &
³=´c & rs.Fields(3).Value
c
Si no conoce el número de campos que contiene el registro puede utilizar la propiedad Count para
c
leer cada uno de los campos, ejemplo:
c
Dimc i As Long
c
Forc i = 0 To rs.Fields.Count m 1
c
List1.AddItem rs.Fields(i).Name & "=" & rs.Fields(i).Value
c
c i
Next
c
Si c queremos leer todos los registros hasta el final del Recordset tendremos que consultar la
propiedad ÑF  c  c    y asociarla a un bucle para repetir hasta que se lean todos los
c
registros, ejemplo:
c
c
rs.DoveFirst 'Nos posicionamos en el primer registro del Recordset.
Doc Until rs.ÑOF 'Repite hasta que se lea todo el Recordset.
c
cList1.AddItem rs.Fields(0) & " " & rs.Fields(1) & " " & rs.Fields(2) & " " & rs.Fields(3)
crs.DoveNext 'Nos movemos al siguiente registro.
c
c
Loop

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
Después
c de haber visto las distintas formas de cómo abrir una base de datos y la forma de explorar
los registros de un Recordset estamos lista para hacer nuestros primeros ejercicios con ADO.
c
c
cc Pc c  Pc c cc cc'c. cc P  Pc c
c
Pc  c cc  ccc  c, c cc c  ccPc
c
 c c c   c c P c  c  c   c c  c Pc c   c 'c
. c
c c c c  c c  P c  c c c '@0c 
  c
  Pc c c  c  c c cc c
c
c
ó Iniciemos Access haciendo clic en el menú Inicio ¼ Programas ¼ Dicrosoft Office ¼ Dicrosoft
c
Access. Ñn algunas maquinas solo tendremos que realizar tres pasos: Inicio ¼ Programas ¼
c
Dicrosoft Access.
c
ó Al iniciar Access aparecerá la siguiente pantalla:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Haga clic en Base de datos en blanco.
c
ó Aparecerá una ventana solicitando el nombre de la base de datos. Ñl nombre por defecto es bd1,
c ese nombre y escriba c:\ae da. Ñscribimos c:\ para que la base de datos se almacene en el
borre
c
  c  c .
c
ó Aparecerá una ventana con tres opciones: ( c  c   c c   c c  !c ( c  c   c
c
  c  c  c c ( c  c   c  c  c De estas tres opciones las que nos
interesa es la primera. Haga clic sobre la primera opción ( c c  cc  cc !

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
ó Aparecerá
c la ventana que nos permitirá crear la tabla de la base de datos. Ñsta ventana esta
compuesta por tres columnas y la sección de propiedades de los campos. Ñn la primera columna
c
especificaremos el nombre de los campos de la tabla y en la segunda columna el tipo de datos para
c campo. Ñn la columna descripción no especificaremos nada.
cada
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Ñnc la primera columna escriba:
c
ombre del campo
c
ombre
c
Apellido
c
Telefo o
c
3ireccio
c
Correo
c
Ñnc la segunda columna seleccione los siguientes tipos de datos:
c
Tipo de daos
c
Texo
c
Texo
c
Texo
c
Texo
c
Texo
c
Algunas
c versiones de Access agregan automáticamente el tipo de dato Texo a los campos
agregados a la tabla. Si la versión de Access agrega el tipo de datos Texo no tendrá que
c
especificarlo. Si no esta familiarizado con lo que estamos haciendo les recomiendo un curso básico
dec base de datos. De todos modos les explico:  Pc  c c   c c c  c c  c
  c c Pcc c cc c  c  c P.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
Ahora
c estamos listos para almacenar la tabla en la base de datos. Haga clic en el botón guardar de
la barra de herramientas estándar. Aparecerá un cuadro solicitando el nombre de la tabla:
c
c
c
c
c
c
c
c
c el texto Tabla1 y escriba Co acos. Luego haga clic en el botón .  . Access les
Borre
preguntará
c si desea crear una clave principal. Conteste que o.
c
La tabla se agregará en la ventana de objetos:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Haga
c doble clic en la tabla Contactos. Access les mostrará la tabla para que usted agregue
registros a la misma. Ñn nuestro caso agregaremos cuatro registros a la tabla para que pueda ver
c podemos visualizarlos y modificarlos desde Visual Basic. No piense que utilizaremos Access
cómo
c agregar información a la tabla, esto lo haremos desde nuestra aplicación en Visual Basic. Ñn
para
c
nuestro caso hemos agregado información (registros) para que observe como se puede navegar
porc la base de datos desde una aplicación en Visual Basic.
c
Complete la tabla con los siguientes registros:
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
Ahora
c que hemos agregado información en la tabla, haga clic en el botón Guardar. Los datos serán
almacenados en la tabla. Después de esto, cierre el programa Access.
c
c
Diseñemos ahora nuestra aplicación en Visual Basic para leer nuestra base de datos.
c
c un nuevo proyecto.
ó Abra
c
ó Haga clic en el menú Projec (Proyeco). Seleccione la opción Refere ces« (Refere cias).
c
Aparecerá la ventana de referencias:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Busque la referencia Acive 3aa bjecs 6À0 Gibrary y selecciónela. A continuación, haga clic
enc el botón K. Ñsto que estamos haciendo es necesario para poder utilizar ADO desde nuestra
aplicación.
c Si no tiene la versión Acive 3aa bjecs 6À0 Gibrary seleccione la versión más
actual o la mayor.
c
c
ó Inserte una ListBox y un botón de comando en el formulario:
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
c el evento Click del botón  c  escriba:
ó Ñn
c
Dim cn As New ADODB.Connection 'Creamos el objeto Connection.
c rs As New ADODB.Recordset
Dim 'Creamos el objeto Recordset.
c
c
'Abrimos la base de datos "agenda.mdb".
c
cn.Open "Provider=Dicrosoft.Jet.OLÑDB.4.0;" & "Data Source=c:\agenda.mdb"
c
rs.Source = "contactos" 'Ñspecificamos la fuente de datos. Ñn este caso la tabla "contactos".
c
rs.CursorType = adOpenKeyset 'Definimos el tipo de cursor.
c
c
rs.LockType = adLockOptimistic 'Definimos el tipo de bloqueo.
c
rs.Open "select * from contactos", cn 'Abrimos el Recordset y lo llenamos con una consulta SQL.
c
c
rs.DoveFirst 'Nos posicionamos en el primer registro del Recordset.
c
Doc Until rs.ÑOF 'Repite hasta que se lea todo el Recordset.
c List1.AddItem rs.Fields("nombre") & " " & rs.Fields("apellido") & " " & rs.Fields("telefono") & " "
c& rs.Fields("direccion") & " " & rs.Fields("correo")
c
c rs.DoveNext 'Nos movemos al siguiente registro.
Loop
c
c
c
ó Corra la aplicación.
c
ó Haga
c clic en el botón  c  . Si todo esta bien, se mostrarán en la ListBox todos los
registros que se agregaron en Access.
c
c
ó Detenga la aplicación y guárdela con los nombres FormÑjercicio1-8 para el P  c y
c
Ñjercicio1-8 para el proyecto.
c
- 8À4À1À5
c Moverse por los reisros de  Recordse
c
Una forma más elegante y profesional para visualizar los registros de un Recordset es moverse por
el cRecordset cada vez que sea necesario, es decir, avanzar o retroceder uno o varios registros.
c tal fin, el objeto Recordset dispone de los métodos MoveFirs (mueve al primer registro),
Para
MovePrevios
c (mueve al registro anterior), Moveex (mueve al siguiente registro) y MoveGas
(mueve
c al último registro).
c
Para que pueda entender el correcto funcionamiento de estos métodos crearemos una aplicación
quec contendrá cuatro botones de comando que permitirán desplazarse por cada uno de los
c
registros del Recordset. Para crear nuestra segunda aplicación haga lo siguiente:
c
ó Abra
c un nuevo proyecto.
c
ó Haga clic en el menú Projec (Proyeco) y ejecute la opción Refere ces« (Refere cias«). Ñn
el ccuadro que aparece busque la referencia Acive 3aa bjecs 6À0 Gibrary y selecciónela. A
continuación, haga clic en el botón K. Si no tiene la versión Acive 3aa bjecs 6À0 Gibrary
c
seleccione la versión más actual o la mayor.
c
c
ó Inserte cuatro etiquetas y al lado de cada etiqueta una caja de texto. También, inserte cinco
c
botones de comando en la parte inferior del formulario. Tal y como se muestra en la imagen de la
siguiente página«

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Ñstablezca
c los valores necesarios para que los controles tengan la misma apariencia que la
imagen anterior.
c
c
ó Haga doble en cualquier parte del formulario y en la sección general ( o e el eve o Goad)
c
escriba:
c
Dim
c cn As New ADODB.Connection 'Creamos el objeto Connection.
Private WithÑvents rs As ADODB.Recordset 'Creamos el Recordset con soporte de eventos.
c
c
c
ó Dentro del evento Goad del formulario escriba:
c
c rs = New ADODB.Recordset 'Activamos el Recordset.
Set
c
'Abrimos la base de datos "agenda.mdb"
c
cn.Open "Provider=Dicrosoft.Jet.OLÑDB.4.0;" & "Data Source=c:\agenda.mdb"
c
c
'Ñspecificamos la fuente de datos. Ñn este caso la tabla "contactos".
c
rs.Source = "contactos"
rs.CursorType
c = adOpenKeyset 'Definimos el tipo de cursor.
rs.LockType = adLockOptimistic 'Definimos el tipo de bloqueo.
c
c
'Abrimos el Recordset y lo llenamos con una consulta SQL.
c
rs.Open "select * from contactos", cn
c
rs.DoveFirst
c 'Nos movemos al principio del Recordset.
c
'Cargamos los datos en las cajas de texto.
c
Text1.Text = rs.Fields("Nombre") 'Ponemos el nombre del registro actual.
c
Text2.Text = rs.Fields("Apellido") 'Ponemos el apellido del registro actual.
c
Text3.Text = rs.Fields("Telefono") 'Ponemos el teléfono del registro actual.
Text4.Text
c = rs.Fields("Direccion") 'Ponemos la dirección del registro actual.
Text5.Text = rs.Fields("Correo") 'Ponemos el correo del registro actual.
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció a las Bases de 3aosc


Capílo 8
c c
ó Dentro
c del evento Click del botón  Pcescriba:
c
'Dovemos al primer registro del Recordset.
c
rs.DoveFirst
c
c
ó Dentro del evento Click del botón . cescriba:
c
'Verificamos
c si no estamos antes del principio del Recordset.
If rs.BOF = False Then
c rs.DovePrevious 'Dovemos al registro anterior.
c If
Ñnd
c
ó Dentro
c del evento Click del botón '  cescriba:
c
'Verificamos si no estamos después del último elemento del Recordset.
c
If rs.ÑOF = False Then
c rs.DoveNext 'Dovemos al siguiente registro.
c If
Ñnd
c
ó Dentro del evento Click del botón ;  Pcescriba:
c
c
'Dovemos al último registro del Recordset.
c
rs.DoveLast
c
c
ó Dentro del evento Click del botón ' cescriba:
c
c
rs.close
c µCerramos el Recordset.
cn.close
c µCerramos la conexión.
c
'Salimos de la aplicación.
c
Ñnd
c
c
c vamos a escribir el evento que ocurre cada vez que el usuario se mueve por el Recordset.
Ahora
c es el evento MoveComplee (Dovimiento completo). Ñste evento nos permite determinar si el
Ñste
usuario se movió a otro registro del Recordset para luego mostrarlo al usuario, ya sea en cajas de
c
textos, en un   o en un control ,  .
c
c
ó Para crear nuestro evento MoveComplee haga doble clic en cualquier parte del formulario para
c
cargar el editor de código. Luego desplácese al final del editor de código y haga clic en la zona
blanca
c para colocar el punto de inserción o indicador y escriba:
c
Private Sub rs DoveComplete(ByVal adReason As ADODB.ÑventReasonÑnum, ByVal pÑrror
c ADODB.Ñrror, adStatus As ADODB.ÑventStatusÑnum, ByVal pRecordset As
As
c
ADODB.Recordset)
c
'Si
c estamos antes del principio del Recordset.
If rs.BOF = True Then
c rs.DoveFirst 'Dovemos al principio del Recordset.
c
c estamos después del ultimo elemento del Recordset.
'Si
c
ÑlseIf rs.ÑOF = True Then
rs.DoveLast 'Dovemos al final del Recordset.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
c
Ñlse
'Sic se cambio del registro actual del Recordset a otro.
Text1.Text = rs.Fields("Nombre") 'Ponemos el nombre del registro actual.
c
Text2.Text = rs.Fields("Apellido") 'Ponemos el apellido del registro actual.
c
Text3.Text = rs.Fields("Telefono") 'Ponemos el teléfono del registro actual.
c
Text4.Text = rs.Fields("Direccion") 'Ponemos la dirección del registro actual.
Text5.Text
c = rs.Fields("Correo") 'Ponemos el correo del registro actual.
Ñndc If

Ñndc Sub
c
c
ó Corra
c la aplicación. Utilice los botones para desplazarse por los registros de la base de datos.
c
ó Detenga la aplicación y guárdela con los nombres FormÑjercicio2-8 para el P  c y
c
Ñjercicio2-8 para el proyecto.
c
c
- 8À4À1À6
c Modificació de reisros e  Recordse
c
La modificación de un registro consiste en la actualización de uno o más campos del registro que se
c
encuentra cargado en el Recordset. Ñsto es posible mediante el método Updae del objeto
c
Recordset que permite la actualización simultanea de varios registro, utilizando la siguiente sintaxis:
c
c
Updae 6( P  6 
c
( cPa Ñste argumento es un tipo Variant que contiene el nombre de un campo, un índice de
c
campo o un array de nombres de campo o índices.
c
 c a Ñste argumento es un tipo Variant que contiene un valor único o un array de valores. Ñn
este se deben especificar los nuevos valores que serán establecidos en el argumento ( P.
c
c
Ambos argumentos son opcionales, pero solo uno de ellos podrá omitir. Si incluye ambos
c
argumentos deberá especificar los mismos números de campos y valores en ambos argumentos.
Porc ejemplo, si va a modificar dos campos uno llamado ×P y otro .  deberá especificar
losc valores que tendrán ambos campos en el argumento  . Ñl siguiente ejemplo muestra la
forma en que usted puede actualizar varios campos utilizando la siguiente sintaxis:
c
c
µActualizar cinco campos en una sola operación.
c
c
rs.Update Array(³Nombre´, ³Apellido´, ³Telefono´, ³Direccion´, ³Correo´),
c Array(³Carlos´, ³Rodríguez´, ³809m598m3696´, ³Calle #6, Alma Rosa´, ´[email protected]´)
c
rs.move 0 µHace que el registro se actualice.
c
Al cutilizar el método Update el registro no se modifica inmediatamente hasta que se desplace a otro
c
registro del Recordset o hasta que se emplee un método como el utilizado en el ejemplo anterior.
c
ADO dispone del método Ca celUpdae para cancelar una operación de actualización que se halla
c
realizado sobre un registro y dejarlo como estaba al principio. Si utiliza conjuntamente el método
c
Updae con el método Ca celUpdae podrá ofrecer al usuario la posibilidad de confirmar o
c
cancelar las modificaciones realizadas sobre el registro activo:
c
µSi el registro aun no se ha modificado.
If rs.ÑditDode = adÑditInProgress Then

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
Dim c Respuesta
c
Respuesta = DsgBox("¿Desea guardar los cambios realizados?", vbYesNo)
c
c
If Respuesta = vbYes Then
c rs.Update µActualizamos el registro.
Ñlsec
rs.CancelUpdate µCancelamos la actualización.
c
Ñnd If
c
c
Practiquemos como actualizar un registro de nuestra base de datos agregando un botón de
c
comando a nuestra aplicación anterior. Ñscribe en la propiedad Capio el texto .   . Dentro
delc evento Click del nuevo botón escriba:
c
rs.Update Array("nombre", "apellido", "telefono", "direccion", "correo"),
c Array(Text1.Text, Text2.Text, Text3.Text, Text4.Text, Text5.Text)
c
c
rs.Update 'Actualizamos el registro.
cc
c
'Verificamos si no ocurrió ningún problema.
Ifc rs.State = 1 Or rs.State = 0 Then
DsgBox ("Ñl registro se ha actualizado con éxito.")
c
Ñlse
c DsgBox ("Ha ocurrido un error al actualizar el registro.")
c If
Ñnd
c
c
ó Ahora podrá modificar los datos de cada campo y luego actualizarlo haciendo clic sobre el botón
c
Actualizar.
c
- 8À4À1À7
c Ñlimi ar el reisro acivo del Recordse
c
Podrá eliminar el registro actual cargado en el Recordset utilizando el método 3elee mediante la
c
siguiente sintaxis:
c
c rs.Delete 6. -  c
c c
. -  (Registros afectados) es opcional, si este se omite se borrará el registro actual. Ñl
c
argumento . -  es utilizando cuando queremos borrar varios registros que resultan de
una c consulta realizada sobre la base de datos.
c
Parac borra el registro actual escriba:
c
rs.Delete
c
rs.DoveNext µNos movemos al siguiente registro para no provocar un error.
c
If rs.ÑOF Then rs.DoveLast µSi es el fin del archivo nos movemos al último registro.
c
c
- 8À4À1À8 ë serció de reisros e el Recordse
c
Para agregar nuevos registros al Recordset utilizamos el método Addew. Su empleo es bastante
c
sencillo, tal y como se muestra en el siguiente ejemplo:
c
c
rs.AddNew µLlamamos el método.
c
rs(³nombre´) = ³Juan´ µAgregamos un nombre en el campo nombre.
rs(³apellido´) = ³Rodríguez´ µAgregamos un apellido en el campo apellido.
rs.Update µActualizamos.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
Ñnc el ejemplo anterior hemos agregados los datos directamente para cada campo, pero puede
almacenar los datos contenidos en cajas de texto, una variable u otro objeto. Ñl siguiente ejemplo
c
muestra como agregar un nuevo registro con valores obtenidos desde cajas de texto.
c
c rs.AddNew
c rs(³nombre´) = txtNombre.Text
c rs(³apellido´) = txtApellido.Text
rs(³telefono´) = txtTelefono.Text
c
rs(³direccion´) = txtDireccion.Text
c rs(³correo´) = txtCorreo.Text
c rs.Update
c
Para
c el ejemplo anterior debe tener en cuenta que las cajas de texto estén etiquetadas en la
propiedad ame con los nombres especificados. Si agregamos un botón de comando en nuestra
c
aplicación donde las cajas de texto tienen los nombres por defecto el código entonces sería el
c
siguiente:
c
c rs.AddNew
c rs(³nombre´) = Text1.Text
rs(³apellido´) = Text2.Text
c
rs(³telefono´) = Text3.Text
c rs(³direccion´) = Text4.Text
c rs(³correo´) = Text5.Text
c rs.Update
c
- 8À4À1À8 Ñsablecer y leer la posició de  reisro e el Recordse
c
Ñl cobjeto Recordset dispone de algunas propiedades que les ayudarán a saber en que lugar del
c
Recordset se encuentra. Ñste es muy importante cuando quiera activar o desactivar ciertas
c
operaciones o definir marcadores con el propósito de volver rápidamente a un registro que haya
visitado.
c
c
La primera propiedad a analizar es la propiedad ÑF  cc cque devuelve un valor verdadero
c
cuando el puntero del registro actual se encuentra situado después del final del Recordset. Ñsta
c
propiedad es útil cuando recorra todos los registros del Recordse utilizando un bucle:
c
µContar
c todos los empleados que ganen mas de 15,000 pesos.
rs.DoveFirst µNos movemos al principio del Recordset.
c
Dim Contador As Long
c
Doc Until rs.ÑOF µRepetimos hasta el final del Recordset.
c µVerificamos el sueldo del registro actual.
c If rs(³sueldo´) > 15000 Then Contador = Contador + 1
rs.DoveNext µNos movemos al siguiente registro.
c
Loop
c
c
1cP ac
c
µContar todos los empleados contratados antes del 1 de enero de 1994.
c
rs.DoveFirst µNos movemos al principio del Recordset.
Dimc Contador As Long
c
Doc Until rs.ÑOF µRepetimos hasta el final del Recordset.
µVerificamos la fecha de contrato del registro actual.
c If rs(³FechaContrato´) ® #1/1/1994# Then Contador = Contador + 1
rs.DoveNext µNos movemos al siguiente registro.
Loop
ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
Ñl c objeto Recordset también dispone de la propiedad BF  c c   que es similar a la
propiedad ÑF. Ñsta devuelve un valor verdadero cuando el puntero del Recordset se encuentra
c
antes del primer registro. Con frecuencia es crucial conocer los valores de la propiedad ÑF y BF,
c
debido a que cuando una de ellas es  (verdadera), la mayoría de los métodos y propiedades
c
devuelven un error porque no existe un registro actual. Por ejemplo, si trata de leer el valor de un
c
campo de algún registro y no verifica primero si una de estas propiedades es Tre se provocará
entonces
c un error en tiempo de ejecución y la aplicación finalizará. Si las dos propiedades, BF y
ÑF, son Tre, entonces el Recordset estará vació.
c
c registro en el Recordset tiene un valor de tipoc   que usted podrá leer con la propiedad
Cada
c
Bookmark y luego usarlo para volver rápidamente a dicho registro. Solo debe reasignar el mismo
c a la propiedad Bookmark, tal y como se muestra en el siguiente código:
valor
c
Dim posicion As Variant
c
posicion = rs.Bookmark µLeemos la posición del registro actual.
c
rs.movelast µNos desplazamos al último registro. Puede ser a cualquier otro.
c
c
rs.Bookmark = posicion µVuelve al registro marcado.
c
- 8À4À1À9 rde ació de los reisros de  Recordse
c
c ordenar los registros contenidos en un Recordset utilizando la propiedad or. Para esto, se
Podrá
c indicar el nombre o los nombres de los campos por el cual se ordenará la columna, por
debe
c
ejemplo:
c
rs.Sort = ³nombre´ µOrdena el Recordset por el campo nombre.
c
c
Podemos indicar dos campos para ordenar los registros del Recordset como se muestra en el
c
siguiente ejemplo:
c
rs.Sort
c = ³nombre, apellido´ µOrdena el Recordset por el campo nombre y apellido.
c
Los registros se ordenan automáticamente de forma ascendente, pero podrá elegir un orden
c
descendente utilizando el calificador 3ÑC:
c
c
µOrdena el Recordset empezando con los empleados con mayores sueldos hasta los menores.
rs.Sort
c = ³Sueldo DÑSC´
c
- 8À4À1À10 Bsqeda de reisros
c
Ñl c objeto Recordset dispone de un método muy sencillo que permite localizar un registro que
c
cumpla un determinado criterio de selección. Ñste es el método Fi d que tiene la siguiente sintaxis:
c
Fi d (   , 6- 1P   , 60   , 6/ 
c
(c  es una cadena que contiene la condición de búsqueda, que constará de un
c
nombre de campo seguido de un operador y de un valor. Los operadores que podrá utilizar son =
c
(igual), ® (menor que), > (mayor que) y Gëš (Patrón de coincidencia). Ñl valor puede ser una
cadena
c encerrada entre comilla, un numero, el valor de una variable, el valor de un objeto o una
fecha encerrada entre caracteres #. - 1P   es un número opcional que indica la
c
cantidad de registros que se van a ignorar antes de comenzar la búsqueda. 0  
c
indica la dirección en la que se procesará la búsqueda; los valores admitidos son 1-
c
adearchForward  c  c  c  c P   o 1-adearchBackward
c
 c c . /  es un marcador opcional que especifica el registro desde el que se
debe comenzar la búsqueda, el valor predeterminado es el registro actual. Podrá omitir todos los
parámetros excepto el primero, en este caso la búsqueda iniciaría desde el registro actual.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  V


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
Si cla búsqueda tiene éxito, entonces, el registro que cumpla con el criterio establecido se convertirá
en el registro activo; si la búsqueda no tiene éxito, el registro actual se convertirá en el último
c
registro del Recordset. Deberá verificar el estado de las propiedades BF y ÑF antes de leer el
c de los campos del registro cuando realice una búsqueda, de lo contrario provocará un error y
valor
c
abortará la aplicación. Cuando la búsqueda tiene éxito ambas propiedades contienen el valor r .
c
Ñnc el siguiente ejercicio verá como utilizar el método Fi d para localizar uno o varios registros en el
Recordset.
c
ó cAbra un nuevo proyecto. Agregue la referencia a la base de datos en el menú
c
Projec\Refere ces«:  c.  Bc0  c1 c"3c,  . Puede agregar la más reciente.
c
ó Identifique
c los controles que se muestra en la siguiente imagen y establezca los valores
necesarios en las propiedades requeridas.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Seleccione la caja combinada (ComboBox). Ñn la propiedad Gis escriba los siguientes valores:
c
c
c
c
c
c
c
c
ó Seleccione la primera caja de texto y en la propiedad ame escriba: txtBuscarTexto
c
ó Seleccione la segunda caja de texto y en la propiedad ame escriba: txtNombre
c
ó Seleccione
c la tercera caja de texto y en la propiedad ame escriba: txtApellido
c
ó Seleccione la cuarta caja de texto y en la propiedad ame escriba: txtTelefono
c
ó Seleccione la quinta caja de texto y en la propiedad ame escriba: txtDireccion
ó Seleccione la sexta caja de texto y en la propiedad ame escriba: txtCorreo

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
ó Dentro
c del evento Click del botónc  escriba:
c
'Comprobamos que la caja combinada de la búsqueda no se este vacía.
c
If Len(Trim(Combo1.Text)) = 0 Then
cDsgBox ("Debe especificar el tipo de búsqueda")
Combo1.SetFocus
c
c
'Verificamos si la caja del texto a buscar esta vacía.
c Len(Trim(txtBuscarTexto.Text)) = 0 Then
ÑlseIf
cDsgBox ("Debe especificar el texto a buscar")
ctxtBuscarTexto.SetFocus
Ñlse
c
'Verificamos el tipo de búsqueda.
cIf LCase(Combo1.Text) = LCase("Apellido") Then
c rs.Find "Apellido = i" & txtBuscarTexto.Text & "i", , , 1 'Buscamos por el Apellido.
cÑnd If
c
cIf LCase(Combo1.Text) = LCase("Nombre") Then
rs.Find "Nombre =ci" & txtBuscarTexto.Text & "i", , , 1 'Buscamos por el Nombre.
cÑnd If
c
cIf LCase(Combo1.Text) = LCase("Telefono") Then
c rs.Find "Telefono = i" & txtBuscarTexto.Text & "i", , , 1 'Buscamos por el Teléfono.
cÑnd If
'Verificamos si la búsqueda tiene éxito y ponemos los datos en las cajas de texto.
cIf rs.BOF = False And rs.ÑOF = False Then
c txtNombre.Text = rs.Fields("Nombre") 'Ponemos el nombre del registro actual.
c txtApellido.Text = rs.Fields("Apellido") 'Ponemos el apellido del registro actual.
c txtTelefono.Text = rs.Fields("Telefono") 'Ponemos el teléfono del registro actual.
c txtDireccion.Text = rs.Fields("Direccion") 'Ponemos la dirección del registro actual.
txtCorreo.Text = rs.Fields("Correo") 'Ponemos el correo del registro actual.
cÑlse
c 'Dostramos un mensaje si la búsqueda no tiene éxito.
c DsgBox ("No se ha podido localizar el registro con el parámetro especificado")
cÑnd If
Ñndc if
c
ó Ñn la sección @ del formulario escriba:
c
c
Dim cn As New ADODB.Connection 'Creamos el objeto Connection.
c
Private WithÑvents rs As ADODB.Recordset 'Creamos el Recordset con soporte de eventos.
c
c
ó Ñscriba dentro del evento Goad del formulario el siguiente bloque de código:
c
Setc rs = New ADODB.Recordset
c
'Abrimos
c la base de datos "agenda.mdb".
cn.Open "Provider=Dicrosoft.Jet.OLÑDB.4.0;" & "Data Source=c:\agenda.mdb"
c
rs.Source = "contactos" 'Ñspecificamos la fuente de datos. Ñn este caso la tabla "contactos".
c
rs.CursorType = adOpenKeyset 'Definimos el tipo de cursor.
c
rs.LockType = adLockOptimistic 'Definimos el tipo de bloqueo.
rs.Open
c "select * from contactos", cn 'Abrimos el Recordset y lo llenamos con una consulta SQL.
c
'Cargamos los datos en las cajas de texto.
rs.DoveFirst 'Nos movemos al principio del Recordset.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
ó Dentro
c del evento Click del botón ' cescriba:
c de la aplicación.
'Sale
Ñndc
c
c
ó Corra la aplicación.
c
Ahora,
c para probar nuestra aplicación seleccione el tipo de búsqueda y el texto que desea buscar.
Debe tener en cuenta que los datos que especifique en la caja de texto deben estar en la base de
c que creamos al principio, de lo contrario la búsqueda no tendrá éxito. Recuerde los datos que
datos
c
contiene la base de datos son los que se muestran a continuación:
c
c
c
c
c
c
c
c
Si cen el tipo de búsqueda usted especificar Nombre, entonces, en la caja del texto a buscar podrá
escribir
c uno de los nombres de la primera columna. De igual manera podrá hacer con el Apellido y
el Teléfono.
c
Si cexisten más de un registro con el mismo parámetro de búsqueda especificado, solo el primero de
c será el que se active. Ñsto es, debido a que hemos especificado el valor 1c  c  Pc
ellos
c  c    c en el argumento / c del método Fi d. Si desea que la búsqueda continué a
c
partir
c del registro actual cada vez que hagamos clic en el botón  centonces, deberá omitir el
valor del argumento / cy especificar el valor 1 en el argumento - 1P  , ejemplo:
c
c
rs.Find "Apellido = i" & txtBuscarTexto.Text & "i", 1
c
c
rs.Find "Nombre = i" & txtBuscarTexto.Text & "i", 1
c
rs.Find "Telefono = i" & txtBuscarTexto.Text & "i", 1
c
c
ó Detenga la aplicación y guárdela con los nombres FormÑjercicio3-8 para el P  c y
c
Ñjercicio3-8 para el proyecto.
c
Podrá
c utilizar un bucle para recorrer todos los registros que cumplan un determinado criterio, tal y
como se muestra en el siguiente ejemplo:
c
c
µBuscar todos los empleados que hayan sido contratados después del 1 de enero de 2003.
c
c
rs.DoveFirst µNos colocamos al principio del Recordset.
rs.Find
c ³FechaContrato > #1/1/2003#´ µHacemos nuestra primera búsqueda.
c
Do Until rs.ÑOF
c µSi encontramos los registros los vamos agregando en una ListBox.
c List1.AddItem rs(³Nombre´), rs(³Apellido´), rs(³FechaContrato´)
c
c µBuscar el siguiente registro que cumpla el criterio de búsqueda pero ignoramos el actual.
rs.Find ³FechaContrato > #1/1/2003#´
c
Loop

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
Para
c realizar búsquedas más complejas puede utilizar el operador GëKÑ. Ñste operador acepta dos
símbolos comodines: el asterisco (*) equivale a ninguno o más caracteres y el subrayado ( )
c
equivale exactamente a un único carácter. A continuación algunos ejemplo:
c
c
rs.Find ³Nombre LIKÑ iC*i´ µBuscar registros cuyo nombre comience con la letra C.
c
rs.Find ³Nombre LIKÑ i*A*i³ µBuscar registros donde la segunda letra de los nombres sea la A.
c
- 8À4À1À11 Verificar el esado del Recordse
c
Ñnc muchas ocasiones necesitará verificar el estado del Recordset para mostrar los resultados a los
c
usuarios de alguna operación, o bien, para verificar si alguna operación tuvo o no éxito. Para
c
consultar el estado del Recordset verifique la propiedad as   c c cë)cc .
Ñnc esta propiedad puede tener uno de los siguientes valores:
c
Co sa e Valor 3escripció
c
adRecOK 0 Se ha actualizado el registro con éxito.
c
adRecNew
c 1 Ñl registro es nuevo.
c
adRecDodified 2 Se ha modificado el registro.
c
adRecDeleted 4 Se ha borrado el registro.
c
adRecUnmodified 8 Ñl registro no se ha modificado.
c
adRecInvalid
c &H10 No se ha guardado el registro porque su marcador no
es válido.
c
c
adRecDultipleChanges &H40 No se ha guardado el registro porque afecta a varios
c registros.
c
adRecPendingChanges &H80 No se ha modificado el registro porque hace referencia
c a una inserción pendiente.
c
adRecCanceled &H100 No se ha guardado el registro porque se ha cancelado
c la operación.
c
adRecCantRelease &H400 No se ha guardado el registro porque esta bloqueado.
c
adRecConcurrencyViolation
c &H800 No se ha guardado el registro porque se estaba usando
una concurrencia optimista.
c
adRecIntegrityViolation
c &H1000 No se ha guardado el registro porque violaría las
restricciones de integridad.
c
c
adRecDaxChangesÑxceeded &H2000 No se ha guardado el registro porque existen
c demasiados cambios pendientes.
c
adRecObjectOpen &H4000 No se ha guardado el registro porque existe un conflicto
c con un objeto de almacenamiento que se encuentra
c abierto.
c
adRecOutOfDemory &H8000 No se ha guardado el registro porque se ha producido
c un error del tipo fuera de memoria.
c
adRecPermissionDenied &H10000 No se ha guardado el registro porque el usuario no
c cuenta con los permisos necesarios.
c
adRecSchemaViolation &H20000 No se ha guardado el registro porque no cumple con la
c estructura de la base de datos.
c
adRecDBDeleted &H40000 Ñl registro ha sido borrado de la base de datos.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0  


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
Lac propiedad as solo proporciona valores que muestran el estado de las operaciones con los
registros del Recordset, sin embargo, el Recordset dispone de la propiedad ae que muestra el
c
estado general del Recordset antes o después de haber sido abierto. Ñstos son los valores para la
c
propiedad ae:
c
c
Valor 3escripció
0madStateClosed
c Ñl Recordset está cerrado.
c
1madStateOpen Ñl Recordset está abierto.
c
2madStateConnecting Ñl Recordset está conectado.
c
4madStateÑxecuting
c Ñl Recordset está ejecutando un mandato.
c
5madStateFetching Se esta extrayendo las filas del Recordset.
c
c Ñve os del objeo Recordse
- 8À4À2
c
Ñl cobjeto Recordset de ADO tiene un total de 11 eventos o sucesos. Ñstos sucesos le permitirán
tener
c un control total de lo que está sucediendo internamente. Al codificar estos eventos, podrá
potenciar las consultas asíncronas, atrapar el momento en el que se modifica un campo o un
c
registro, verificar si se ha movido de un registro a otro e, incluso, agregar datos cuando el usuario
c
alcance el final del Recordset. Para poder apreciar mejor los sucesos del Recordset lo he
c
clasificado en tres grandes grupos: ' c c   c c  c ' c c   c c
' ccP
c  cc c
c
c
- 8À4À2À1 cesos de recperació de daos
c
c sucesos ocurren durante una operación asíncrona cuando se están recuperando los datos. Ñl
Ñstos
c
suceso FechProress ocurre de forma constante durante una operación asíncrona de gran
longitud.
c Podrá utilizarlo para mostrar al usuario una barra de progreso que indique el porcentaje de
losc registros que han sido recuperados. Ñste suceso tiene la siguiente estructura:
c
Private Sub rs FetchProgress (ByVal Progress As Long, ByVal DaxProgress As Long,
c adStatus As ADODB.ÑventStatusÑnum, ByVal pRecordset As ADODB.Recordset)
c
c µAquí escriba su código«
c
Ñnd Sub
c
c
Ñl c parámetro c contiene el número de registros que se han extraído hasta el momento.
 c
c es el número total de registros que se esperan recuperar. '  es el parámetro
de estado. -  es una referencia al objeto Recordset que ha provocado el suceso (este
c
parámetro no tendrá que utilizarlo porque ya cuenta con una referencia al Recordset).
c
c
Cuando la operación asíncrona concluya, se pondrá en marcha el suceso FechComplee. Ñste
c
suceso tiene la siguiente estructura:
c
Private Sub rs FetchComplete(ByVal pÑrror As ADODB.error,
c
adStatus As ADODB.ÑventStatusÑnum, ByVal pRecordset As ADODB.Recordset)
c
c µAquí escriba su código.
c
Ñndc Sub
Utilice el parámetro   para consultar el si ha ocurrido algún error durante la transacción.

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

ë rodcció a las Bases de 3aosc


Capílo 8
c c
- 8À4À2À2
c cesos de aveació
c
Ñstos sucesos ocurren cuando se desplace de un registro ha otro o cuando modifique el registro
c
activo. Ñl suceso WillMove ocurre antes que ocurra una acción que provoque la modificación del
c
registro activo. Ñste suceso tiene la siguiente estructura:
c
Private
c Sub rs WillDove (ByVal adReason As ADODB.ÑventReasonÑnum,
adStatus As ADODB.ÑventStatusÑnum, ByVal pRecordset As ADODB.Recordset)
c
c
Ñndc Sub
c
Ñl cparámetro -  proporciona el motivo por el que se ha puesto en marcha este suceso.
Puede ser cualquiera de los valores que se muestran en la siguiente tabla:
c
c
Valor Co sa e Valor Co sa e
1 c adRsnAddNew 9 adRsnClose
2 c adRsnDelete 10 adRsnDove
3 c adRsnUpdate 11 adRsnFirstChange
4 c adRsnUndoUpdate 12 adRsnDoveFirst
5 c adRsnUndoAddNew 13 adRsnDoveNext
6 adRsnUndoDelete 14 adRsnDovePrevious
7
c adRsnRequery 15 adRsnDoveLast
8 c adRsnResynch
c
c
Después de ocurrir el suceso WillMove le sigue el suceso MoveComplee. Ñste ocurre cuando la
transacción
c ha sido completada o si ha sido cancelada. Ñste suceso tiene la siguiente estructura:
c
c
Private Sub rs DoveComplete (ByVal adReason As ADODB.ÑventReasonÑnum,
c ByVal pÑrror As ADODB.error, adStatus As DODB.ÑventStatusÑnum,
c ByVal pRecordset As ADODB.Recordset)
c
Ñndc Sub
Losc parámetros -  y ' c tienen el mismo significado en ambos sucesos. Si el
c
parámetro '  devuelve el valor adStatusÑrrorOcurred, el objeto   contendrá información
c el error ocurrido, de lo contrario   es Nothing.
sobre
c
c suceso de navegación que debe conocer es el suceso Ñ dfRecordse. Ñste suceso ocurre
Otro
cuando el puntero de registro activo se coloca después del último registro del Recordset. Ñste
c
suceso puede ocurrir como resultado de un método   (al colocarse sobre un registro que
noc existe. Ñste suceso tiene la siguiente estructura:
c
Private
c Sub rs ÑndOfRecordset (fDoreData As Boolean, adStatus As ADODB.ÑventStatusÑnum,
c ByVal pRecordset As ADODB.Recordset)

Ñndc Sub
c
Si cdesea aprovechar este evento, podrá agregar nuevos registros cuando este suceda. Para esto
tendrá
c que ejecutar el método
 * y rellenar con datos la colección r   y, a continuación,
definir
c el parámetro 0  como  para permitir que ADO sepa que ha añadido nuevos
registros.
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
- 8À4À2À3
c cesos de modificació de daos
c
Ñstos eventos ocurren cuando se modificar el valor de uno o varios campo de un registro o cuando
sec modifica uno o varios registros del Recordset. Cuando ejecute uno o más campos de un
c
Recordset, se pondrá en marcha el suceso WillCha eField. Ñste suceso tiene la siguiente
c
estructura:
c
Private Sub rs WillChangeField(ByVal cFields As Long, ByVal Fields As Variant,
c
adStatus As ADODB.ÑventStatusÑnum, ByVal pRecordset As ADODB.Recordset)
c
Ñndc Sub
c
rc  es el número de campos que se van a modificar.c r   es un array de tipo Variant que
contiene uno o más objetos r   con cambios pendientes. Podrá cancelar la operación de
c
actualizar los registros estableciendo el valor adStatusCancel en el parámetro ' .
c
c
Cuando la operación de actualización haya concluido, ADO pondrá en marcha el suceso
c
FieldCha eComplee. Ñste le permitirá investigar cualquier error que haya ocurrido durante la
operación.
c Ñste suceso tiene los mismos parámetros que el evento anterior más el parámetro
 :
c
c
Private Sub rs FieldChangeComplete(ByVal cFields As Long, ByVal Fields As Variant,
c pÑrror As ADODB.error, adStatus As ADODB.ÑventStatusÑnum,
ByVal
c
pRecordset As ADODB.Recordset)
c
Ñnd Sub
c
c
Cuando se haya modificado uno o más registros, ADO ejecuta el suceso WillCha eRecord:
c
c
Private Sub rs WillChangeRecord(ByVal adReason As ADODB.ÑventReasonÑnum,
c ByVal cRecords As Long, adStatus As ADODB.ÑventStatusÑnum,
ByVal pRecordset As ADODB.Recordset)
c
Ñndc Sub
c
Ñl cparámetro - c tiene el mismo resultado que en los eventos de navegación WillMove y
MoveComplee.
c -  es el número de registros que se van a modificar. ' c es el
parámetro que podrá utilizar para cancelar la operación asignando el valor adStatusCancel.
c
c
Inmediatamente ADO termine la actualización de los registros se pondrá en marcha el suceso
c
RecordCha eComplee:
c
Private
c Sub rs RecordChangeComplete(ByVal adReason As ADODB.ÑventReasonÑnum,
ByVal cRecords As Long, ByVal pÑrror As ADODB.error, adStatus As ADODB.ÑventStatusÑnum,
c
ByVal pRecordset As ADODB.Recordset)
c
Ñndc Sub
c
Todos
c los parámetros del suceso anterior tienen el mismo significado que en el caso del suceso
WillCha eRecord.
c
c
Cuando ejecute una operación que vaya a modificar el contenido de un Recordset como un todo (tal
c
como los métodos Open, Requerí y Resync) se pondrá en marcha un suceso
c
WillCha eRecordse y cuando haya completado la operación un suceso
RecordseCha eComplee. La estructura de estos sucesos se muestra en la siguiente página«

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
Private
c Sub rs WillChangeRecordset(ByVal adReason As ADODB.ÑventReasonÑnum,
adStatus As ADODB.ÑventStatusÑnum, ByVal pRecordset As ADODB.Recordset)
c
Ñndc Sub
c
Ñl csignificado de los parámetros es similar a los vistos en los sucesos anteriores.
c
Private Sub rs RecordsetChangeComplete(ByVal adReason As ADODB.ÑventReasonÑnum,
c
ByVal pÑrror As ADODB.error, adStatus As ADODB.ÑventSatusÑnum,
c ByVal pRecordset As ADODB.Recordset)
c
Ñndc Sub
c
c
- 8À4À3 e eració de repores
c
Lac  cc es una de las funciones más relevantes que puede tener un sistema que
c
manipule bases de datos. Ñsto consiste en presentar al usuario un conjunto de información de
forma
c organizada, ya sea por resultado de una consulta personalizada o una consulta ya definida
internamente
c en el programa. Ñjemplos de consultas podrían ser: mostrar al usuario todas las
ventas realizadas en la empresa en una fecha determinada, mostrar todos los empleados mayores
dec treinta años, mostrar todos los empleados con sueldos mayores de cinco mil pesos, etc.
c
Loc primero que se debe tener en cuenta antes de generar un reporte es el lugar donde se va a
mostrar
c dicho reporte, esto puede ser en cualquier control que contenga rejillas como un Grid o un
ListView. Después que los datos están cargados en un Recordset es muy sencillo mostrarlos en un
c
Gris o un ListView. Ñl siguiente ejercicio le enseñara a mostrar todos los registros que contiene
c
nuestra tabla agenda en un control ListView.
c
c un nuevo proyecto.
ó Abra
c
ó Haga clic derecho en la barra de controles y seleccione la opción (P. Ñn la ventana de
c
Componentes localice el control  cÎ c(PPc( cc'  y actívelo. Luego,
c clic en el botón .  .
haga
c
c
ó Haga clic en el menú &  ÿ  % y ejecute la opción  )    ÿ )   %. Ñn la
ventana
c Referencia localice el elemento  c.  Bc0  c1 c"c,   o una superior.
Para cerrar la ventana haga clic en el botón .  c1-.
c
c
ó Inserte en el formulario un control ListView y cuatro botones de comando.
c
c
ó Seleccione el control ListView y busque la propiedad View en la   c c   .
c
Ñstablezca el valor 3mlvwReport en esta propiedad.
c
ó Ñn la propiedad Caption del primer botón de comando escriba: Reporte 1.
c
c la propiedad Caption del segundo botón de comando escriba: Reporte 2.
ó Ñn
c
c la propiedad Caption del tercer botón de comando escriba: Reporte 3.
ó Ñn
c
ó Ñn la propiedad Caption del cuarto botón de comando escriba: &Salir.
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c el evento Goad del formulario escriba:
ó Ñn
c
ListView1.GridLines = True 'Hacemos que aparezcan las líneas del Grid.
c
'Agregamos
c los campos al ListView.
ListView1.ColumnHeaders.Add , , "Nombre", 1600
c
ListView1.ColumnHeaders.Add , , "Apellido", 1600
c
ListView1.ColumnHeaders.Add , , "Teléfono", 1400
c
ListView1.ColumnHeaders.Add , , "Dirección", 3000
ListView1.ColumnHeaders.Add
c , , "Correo", 1400
c
µActivamos los Recordset.
Setc rs = New ADODB.Recordset
Setc rs2 = New ADODB.Recordset
Set rs3 = New ADODB.Recordset
c
'Abrimos
c la base de datos "agenda.mdb".
cn.Open
c "Provider=Dicrosoft.Jet.OLÑDB.4.0;" & "Data Source=c:\agenda.mdb"
rs.Source = "contactos" µÑste Recordset es para el primer reporte.
c
rs.CursorType = adOpenKeyset
c
rs.LockType = adLockOptimistic
c
rs2.Source = "contactos" µÑste Recordset es para el segundo reporte.
c
rs2.CursorType = adOpenKeyset
c
rs2.LockType = adLockOptimistic
c
rs3.Source = "contactos" µÑste Recordset es para el tercer reporte.
c
rs3.CursorType = adOpenKeyset
rs3.LockType = adLockOptimistic

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
ó Ñnc el evento Click del botón -c) escriba:
c
'Limpiamos el ListView en caso de que este tenga información.
c
ListView1.ListItems.Clear
c
'Ñn esta primera consulta leemos todos los registros de la base de datos.
c
If rs.State = 0 Then
c rs.Open "select * from contactos", cn
Ñnd c If
c
'Agregamos los datos al ListView
c
rs.DoveFirst 'Nos movemos al primer registro.
c
Dim c li As ListItem
While
c rs.ÑOF = False
'Ponemos los datos de los campos leídos en el ListView.
cSet li = ListView1.ListItems.Add(, , rs("nombre"))
cli.ListSubItems.Add , , rs("apellido")
cli.ListSubItems.Add , , rs("telefono")
cli.ListSubItems.Add , , rs("direccion")
cli.ListSubItems.Add , , rs("correo")
rs.DoveNext 'Pasamos al siguiente registro.
Wendc
c
ó Ñnc el evento Click del botón -c" escriba:
c
'Limpiamos el ListView en caso de que este tenga información.
c
ListView1.ListItems.Clear
c
'Ñnc consulta leemos todos los campos nombre y apellido de la base de datos.
If rs2.State
c = 0 Then
rs2.Open "select nombre, apellido from contactos", cn
c
Ñnd If
c
c
'Agregamos los datos al ListView.
c
rs2.DoveFirst 'Nos movemos al primer registro.
Dim c li As ListItem
While rs2.ÑOF = False
c'Ponemos los datos de los campos leídos en el ListView.
cSet li = ListView1.ListItems.Add(, , rs2("nombre"))
cli.ListSubItems.Add , , rs2("apellido")
crs2.DoveNext 'Pasamos al siguiente registro.
Wendc
c
ó Ñn el evento Click del botón -c4 escriba:
c
c
'Limpiamos el ListView en caso de que este tenga información.
ListView1.ListItems.Clear
c
'Ñnc esta consulta leemos los nombre de los contactos que se apelliden Bucarelly.
c
If rs3.State = 0 Then
crs3.Open "select * from contactos where apellido = 'Bucarelly'", cn
Ñnd If
c
'Agregamos
c los datos al ListView
rs3.DoveFirst
c 'Nos movemos al primer registro.
Dim li As ListItem

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V


c

ë rodcció a las Bases de 3aosc


Capílo 8
c c
While
c rs3.ÑOF = False
c'Ponemos los datos de los campos leídos en el ListView.
cSet li = ListView1.ListItems.Add(, , rs3("nombre"))
cli.ListSubItems.Add , , rs3("apellido")
crs3.DoveNext 'Pasamos al siguiente registro.
c
Wend
c
c el evento Click del botón ' cescriba:
ó Ñn
c
c de la aplicación.
µSale
Ñndc
c
c
ó Corra la aplicación.
c
Haga clic sobre cada uno de los botones de Reporte. Podrá observar que cada botón de comando
c
extrae de la base de datos solo la información que hemos establecido en cada una de las
c
consultas. Ñn el primer botón de reporte especificamos una consulta que lee todos los registros de
la c base de datos, en el segundo botón de reporte especificamos una consulta que extrae
c
únicamente los nombres y apellidos de la base de datos omitiendo los demás campos (dirección,
teléfono
c y correo). Ñn el último botón de reporte especificamos una consulta personalizada que
extrae todos los nombres de las personas que tengan por apellido Bucarelly.
c
c
ó Detenga la aplicación y guárdela con los nombres FormÑjercicio3-9 para el P  c y
c
Ñjercicio3-9 para el proyecto.
c
8À5c ÑJÑRCëCë PRPUÑTc
c
1.mc Hacer una aplicación que permite registrar en una base de datos los datos de los empleados de
unac empresa. Los campos son: Nombre, Apellido, Ñdad, Cargo, Sueldo, Dirección, Teléfono y
c de contrato. Ñl programa debe permitir al usuario obtener distintos tipos de reporte, como por
Fecha
ejemplo:
c los empleados que ganen más de 10,000 pesos, los empleados mayores de 50 años de
edad, etc.
c
2.mc Hacer una aplicación que permita gestionar un almacén de un supermercado.
c
3.mc Hacer una aplicación que permita gestionar un sistema de inscripción de una universidad o un
colegio.
c
c
4.m Crear un pequeño punto de venta. Ñsto es un sistema que permita vender artículos, imprimir
c
facturas y generar reportes de ventas.
c
5.mc Crear una pequeña aplicación que permita gestionar el almacén de una farmacia.
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Trcos de la redc
c
c
CTÑë3
c
c
9.1 Abrir la ventana de quitar o agregar programas de Windows.
9.2c Obtener el directorio desde donde estemos ejecutando nuestro programa.
9.3c Verificar si un archivo existe o no.
9.4c Capturar la pantalla entera o la ventana activa.
9.5c Desplegar la lista de un ComboBox automáticamente.
9.6c Cambiar el fondo de Windows.
9.7 Comprobar si el sistema posee una tarjeta de sonido.
9.8c Apagar el equipo, reiniciar Windows y reiniciar el sistema.
9.9c Situar un ScrollBar horizontal en una ListBox.
c Centrar una ventana.
9.10
9.11
c Obtener el directorio de Windows y el directorio de Sistema.
9.12 Crear un efecto Shade al estilo de los sistemas de instalación.
c
9.13 Hacer sonar un fichero WAV o una secuencia DIDI.
c Ocultar y mostrar el cursor.
9.14
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Trcos de la redc
c
c
Ñnc el presente apartado he decidió colocar una pequeña colección de trucos recogidos de la red.
Ñstos códigos diseñados por aficionados a la programación visual le serán de mucha utilidad en sus
c
aplicaciones, y lo mejor de todo es, que están disponibles gratuitamente para ser usados cada vez
quec los necesite.
c
9À1c Abrir la ve a a de qiar o arear proramas de Wi dows
c
Ñste código le permitirá abrir la ventana . cc  c P cde Windows. Ñn un botón de
c
comando escriba:
c
Dim
c X
Xc = Shell("Rundll32.exe shell32.dll,Control RunDLL appwiz.cpl @0")
c
9À2 be er el direcorio desde do de esemos ejeca do esro prorama
c
c código es muy utilizado para leer el directorio o path desde donde se esta ejecutando la
Ñste
c
aplicación:
c
Dim
c Directorio As String µÑsta variable almacenará el directorio actual.
c
ChDir App.Path
c
ChDrive App.Path
Directorio
c = App.Path
Ifc Len(Directorio) > 3 Then
c Directorio = Directorio & "\"
c If
Ñnd

9À3c Verificar si  archivo exise o o


c
c código permite verificar si existe o no un archivo en una unidad de disco:
Ñste
c
µÑscriba este código en cualquier parte que quiera utilizarlo.
c Ñrror GoTo Fallo
On
c
xc = GetAttr("C:\Autoexec.bat") µAquí se escribe el fichero.
DsgBox ("Ñl fichero existe.")
c
c Sub
Ñxit
c
Fallo:
c
DsgBox ("Ñl fichero no existe.")
c
9À4c Caprar la pa alla e era o la ve a a aciva
c
c código le permitirá copiar al portapales de Windows la imagen de la pantalla completa o la
Ñste
ventana activa.
c
c la sección general del editor de código escriba:
ó Ñn
c
Private Declare Sub keybd event Lib "user32" (ByVal bVk As Byte,
c
ByVal bScan As Byte, ByVal dwFlags As Long,
c
ByVal dwÑxtraInfo As Long)
c
c un botón de comando escriba:
ó Ñn
c
'Captura la ventana activa.
keybd event 44, 0, 0&, 0&

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Trcos de la redc
c
c
c otro botón de comando escriba:
ó Ñn
c
'Captura toda la pantalla completa.
c
keybd event 44, 1, 0&, 0&
c
9À5c 3esplear la lisa de  ComboBox aomáicame e
c
Ñl csiguiente código le permitirá desplegar la lista de un ComboBox al hacer clic sobre un botón de
comando:
c
c la sección general del editor de código escriba:
ó Ñn
c
Private Declare Function SendDessageLong Lib "user32" Alias
c
"SendDessageA" (ByVal hwnd As Long, ByVal wDsg As Long,
c
ByVal wParam As Long, ByVal lParam As Long) As Long
c
c el evento Goad del formulario escriba:
ó Ñn
c
µAgregamos elementos al ComboBox.
c
Combo1.Clear
c
Combo1.AddItem "Objeto 1"
c
Combo1.AddItem "Objeto 2"
c
Combo1.AddItem "Objeto 3"
Combo1.AddItem
c "Objeto 4"
Combo1.AddItem "Objeto 5"
c
Combo1.AddItem "Objeto 6"
c
Combo1.AddItem "Objeto 7"
c
Combo1.Text = "Objeto 1"
c
c un botón de comando escriba:
ó Ñn
c
'Hacemos que la lista se despliegue.
c Resp As Long
Dim
c
Resp = SendDessageLong(Combo1.hwnd, &H14F, True, 0)
c
9À6c Cambiar el fo do de Wi dows
c
Podrá cambiar el fondo del escritorio de Windows mediante el siguiente código:
c
c la sección general escriba:
ó Ñn
c
Private
c Declare Function SystemParametersInfo Lib "user32" Alias
"SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As
c
Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long
c
c un botón de comando:
ó Ñn
c
Dim
c fallo As Integer
fallo = SystemParametersInfo(20, 0, "C:\WINDOWS\FONDO.BDP", 0)
c
c
9À7c Comprobar si el sisema posee  a arjea de so ido
c
Ñl csiguiente código le permitirá verificar si una computadora tiene o no instalada una tarjeta de
sonido:

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Trcos de la redc
c
c
c la sección general escriba:
ó Ñn
c
Private Declare Function waveOutGetNumDevs Lib "winmm.dll" () As Long
c
c un botón de comando escriba:
ó Ñn
c
Dim inf As Integer
c = waveOutGetNumDevs()
inf
c
Ifc inf > 0 Then
c DsgBox "Tarjeta de sonido soportada.", vbInformation, "Informacion: Tarjeta de sonido"
Ñlse
c DsgBox "Tarjeta de sonido no soportada.", vbInformation, "Informacion: Tarjeta de sonido"
c If
Ñnd
c
9À8c Apaar el eqipo, rei iciar Wi dows y rei iciar el sisema
c
Con el siguiente código podrá apagar y reiniciar el sistema. También podrá cerrar la sesión en
c
Windows.
c
c la sección general escriba:
ó Ñn
c
Private Declare Function ÑxitWindowsÑx& Lib "user32" (ByVal
c
uFlags&, ByVal dwReserved&)
c
c un botón de comando escriba:
ó Ñn
c
Dim i As Integer
ic = ÑxitWindowsÑx(1, 0&) 'Apaga el equipo.
c
c
ó Ñn un segundo botón de comando escriba:
c
Dim
c i As Integer
ic = ÑxitWindowsÑx(0, 0&) 'Reinicia Windows con nuevo usuario.
c
ó Ñn un tercer botón de comando escriba:
c
c i As Integer
Dim
ic = ÑxitWindowsÑx(2, 0&) 'Reinicia el Sistema.
c
9À9c iar  crollBar horizo al e  a GisBox
Losc ListBox no poseen una barra de desplazamiento horizontal, podrá agregar una mediante el
siguiente
c código:
c
ó Ñn la sección general escriba:
c
Private
c Declare Function ÑxitWindowsÑx& Lib "user32" (ByVal
uFlags&, ByVal dwReserved&)
c
c
ó Ñn el evento Goad del formulario escriba:
c
Dim
c x As Integer, i As Integer
For
c i = 1 To 20
List1.AddItem "Ñl número final de la selección es el " & i
c
Next i
x = SendDessage(List1.hwnd, &H194, 200, ByVal 0&)

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 

Trcos de la redc
c
c
9À10
c Ce rar  a ve a a
c
ó Ñn el evento Goad del formulario escriba:
c
c
Dove (Screen.Width m Width) \ 2, (Screen.Height m Height) \ 2
c
9À11
c be er el direcorio de Wi dows y el direcorio de isema
c
ó Ñn la sección general escriba:
c
Declare
c Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA"
(ByVal lpBuffer As String, ByVal nSize As Long) As Long
c
Declare Function GetWindowsDirectory Lib "kernel32" Alias
c
"GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
c
c
ó Inserte dos etiquetas y un botón de comando en el formulario.
c
c el evento Click del botón de comando escriba:
ó Ñn
c Car As String * 128
Dim
c Longitud, Ñs As Integer
Dim
c Camino As String
Dim
c
Longitud = 128
c
c = GetWindowsDirectory(Car, Longitud)
Ñs
c
Camino = RTrim$(LCase$(Left$(Car, Ñs)))
c
Label1.Caption = Camino
c
c = GetSystemDirectory(Car, Longitud)
Ñs
Camino = RTrim$(LCase$(Left$(Car, Ñs)))
c
Label2.Caption = Camino
c
c
9À12
c Crear  efeco hade al esilo de los sisemas de i salació
c el evento Goad del formulario escriba:
ó Ñn
c
Dim
c i As Long
Dim y As Long
c
Form1.Cls
c
Form1.AutoRedraw = True
c
Form1.DrawStyle =6
c
Form1.DrawDode = 13
Form1.DrawWidth
c =2
Form1.ScaleDode = 3
c
Form1.ScaleHeight = (256 * 2)
c
c i = 0 To 255
For
c Form1.Line (0, y)m(Form1.Width, y + 2), RGB(0, 0, i), BF
c y=y+2
Next i
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Trcos de la redc
c
c
9À13
c Hacer so ar  fichero WAV o  a sece cia Më3ë
c
ó Ñn un módulo escriba:
c
c
Declare Function mciÑxecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
cc
c un botón de comando escriba:
ó Ñn
c
Dim Sonido
c
Sonido = mciÑxecute("Play c:\windows\ringin.wav")
cc
c clar y mosrar el crsor
9À14
c
c un módulo escriba:
ó Ñn
c
Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long
cc
c
ó Agregue dos botones de comando al formulario. Ñn el primer botón escriba:
c
Dim
c result
result
c = ShowCursor(False)
cc
c el segundo botón de comando escriba:
ó Ñn
c result
Dim
c
result = ShowCursor(True)
cc
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

A exos

c
TABGA
c 3Ñ VAGRÑ ACëëc
c
c Códios ACëë ormales (códios 0 - 127)
c
c 000 (nul) 016 Ź (dle) 032 sp 048 0 064 @ 080 P 096 ` 112 p
001 ſ (soh) 017 Ż (dc1) 033 ! 049 1 065 A 081 Q 097 a 113 q
c 002 ƀ (stx) 018 Ľ (dc2) 034 " 050 2 066 B 082 R 098 b 114 r
c 003 Ɔ (etx) 019 ĵ (dc3) 035 # 051 3 067 C 083 S 099 c 115 s
c 004 Ƈ (eot) 020 ¶ (dc4) 036 $ 052 4 068 D 084 T 100 d 116 t
005 ƅ (enq) 021 § (nak) 037 % 053 5 069 E 085 U 101 e 117 u
c 006 Ƅ (ack) 022 ŷ (syn) 038 & 054 6 070 F 086 V 102 f 118 v
c 007 ‡ (bel) 023 ľ (etb) 039 ' 055 7 071 G 087 W 103 g 119 w
008 Ž (bs) 024 Ĺ (can) 040 ( 056 8 072 H 088 X 104 h 120 x
c 009 (tab) 025 Ļ (em) 041 ) 057 9 073 I 089 Y 105 i 121 y
c 010 (lf) 026 (eof) 042 * 058 : 074 J 090 Z 106 j 122 z
c 011 ƃ (vt) 027 ĸ (esc) 043 + 059 ; 075 K 091 [ 107 k 123 {
012 Ƃ (np) 028 Ŀ (fs) 044 , 060 < 076 L 092 \ 108 l 124 |
c 013 (cr) 029 ļ (gs) 045 - 061 = 077 M 093 ] 109 m 125 }
c 014 Ɖ (so) 030 Ÿ (rs) 046 . 062 > 078 N 094 ^ 110 n 126 ~
c 015 Ɓ (si) 031 ź (us) 047 / 063 ? 079 O 095 _ 111 o 127 ł
c
c Códios ACëë exe didos (códios 128 - 255)
c
c 128 129 ü
Ç 143 Å
144 É
158 ×
159 ƒ
172 ¼
173 ¡
186 Œ
187 Ř
200 ś
201 ŕ
214 Í
215 Î
228 õ
229 Õ
242 Ĵ
243 ¾
c 130 é 145 æ 160 á 174 « 188 Ş 202 Ū 216 Ï 230 µ 244 ¶
c 131 â 146 Æ 161 í 175 » 189 ¢ 203 ŧ 217 ŋ 231 þ 245 §
c 132 133 à
ä 147 ô
148 ö
162 ó
163 ú
176 ų
177 Ŵ
190 ¥
191 ʼn
204 š
205 ő
218 ň
219 Ű
232 Þ
233 Ú
246 ÷
247 ¸
c 134 å 149 ò 164 ñ 178 ŵ 192 Ŋ 206 ŭ 220 ů 234 Û 248 °
c 135 ç 150 û 165 Ñ 179 Ň 193 ŏ 207 ¤ 221 ¦ 235 Ù 249 ¨
136 ê 151 ù 166 ª 180 ō 194 Ŏ 208 ð 222 Ì 236 ý 250 ·
c 137 ë 152 ÿ 167 º 181 Á 195 Ō 209 Ð 223 Ů 237 Ý 251 ¹
c 138 è 153 Ö 168 ¿ 182 Â 196 ņ 210 Ê 224 Ó 238 ¯ 252 ³
c 139 ï 154 Ü 169 ® 183 À 197 Ő 211 Ë 225 ß 239 ´ 253 ²
140 î 155 ø 170 ¬ 184 © 198 ã 212 È 226 Ô 240 254 Ŷ
c
cccccccccccc"cccc()cccc+cccc-(cccc..c ccc2&c!ccc22+c"ccc2"c ccc2((ccccccc
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

A exos

c
CTRGÑ
c  TRABAJA3c
c
c
Ɣ hape: Ñs un control gráfico que se muestra como un rectángulo, un cuadrado, una elipse, un
c
círculo, un rectángulo redondeado o un cuadrado redondeado.
c
Ɣ cRichTexBox: Ñs un control que permite al usuario escribir y modificar texto al tiempo que
proporciona
c características de formato más avanzadas que el control TexBox convencional.
c
Ɣ 3aa rid
c (Co rol): Duestra y permite la manipulación de datos de una serie de filas y columnas
que corresponden a registros y campos de un objeto Recordse.
c
Ɣ cMFlex rid: Ñl control Dicrosoft FlexGrid (MFlex rid) muestra datos de tablas y efectúa
c
operaciones en ellos. Proporciona una flexibilidad completa para ordenar, combinar y aplicar
c
formato a tablas que contienen cadenas e imágenes. Cuando se enlaza a un control 3aa, el control
MFlex rid
c muestra datos de sólo lectura.
c
Ɣ cWi sock: Ñl control Wi sock, invisible para el usuario, proporciona un acceso sencillo a los
servicios de red TCP y UDP. Pueden usarlo los programadores de Dicrosoft Access, Visual Basic,
c
Visual C++ o Visual FoxPro. Para escribir aplicaciones de servidor o de cliente no necesita
c
comprender los detalles de TCP ni llamar a las API de Wi sock de nivel inferior. Si establece las
c
propiedades y llama a los métodos del control, podrá conectar fácilmente con un equipo remoto e
intercambiar
c datos en las dos direcciones.
c
Ɣ cCo rol Cale dar de Microsof: Ñs una control que permite introducir en una aplicación un
calendario personalizado.
c
c
Ɣ Co rol A imaio : Puede reproducir archivos AVI para que pueda añadir animaciones sencillas
c
a su programa. Ñste control es compatible con archivos AVI que no contengan sonido y que no se
c
encuentren en formato comprimido o que hayan sido comprimidos utilizando la tecnología Runm
c
Lenght Ñncoding (RLÑ).
c
Ɣ Co
c rol Up3ow : Ñl control UpDown ofrece una forma sencilla pero eficaz de crear esos botones
de incremento/decremento que muchas aplicaciones para Windows muestran a la derecha de los
c
campos numéricos y que permiten al usuario incrementar o decrementar el valor contenido en el
c
campo sin más que pulsar con el Douse sobre el control.
c
c rol FlascrollBar: Ñs un sustituto de los controles HcrollBar y VcrollBar. Ñste posee
Ɣ Co
distintos
c tipos de estilos gráficos que podrá cambiar en tiempo de diseño mediante su propiedad
Appearance.
c
c rol Mo hview y 3aeTimePicker: Ñl primero es un control estilo calendario y el segundo es
Ɣ Co
unc cuadro de texto en el que podrá introducir fechas y horas. Los dos están estrechamente
c
relacionados, ya que el control DateTimePicker utiliza un control DonthView cuando el usuario
despliega
c un calendario para seleccionar una fecha.
c c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 


c

Bibliorafía

c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c c M3 Gibrary Visal dio 6À0a Ż
c
c
c c Apre da Visal Basic 6À0 (Como si esviera e primero) Ż
c Javier arcía de Jaló * Jos
ë acio Rodríez * Alfo so Brazález
c
c
c c Capílo 7 (Gos archivos)À 3   $ Ż
c Carlos Casillo Perala
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c

ë À Carlos Ma el Rodríez Bcarelly

Visal Basic 6À0 V

También podría gustarte