Libro PET 223
Libro PET 223
Libro PET 223
FACULTAD DE INGENIERIA
PROGRAMA ANALITICO
I JUSTIFICACIÓN
Como consecuencia del avance tecnológico en todas las áreas de actividad del ser humano,
sobre todo en el área de la Informática, a tal punto que Alvin Tofler afirmara que estamos viviendo
la ola de la información, el conocimiento de este campo se ha convertido en un requisito
fundamental para completar la formación no solamente de un profesional de cualquiera de las
ramas, sino también del personal auxiliar y de servicios en todas las empresas. La Industria
Petrolera también está inmersa en este avance de modo que los conocimientos de computación se
requieren en todos los niveles del recurso humano, desde los principiantes hasta los ejecutivos.
Por tanto, con mayor razón, el Ingeniero Petrolero debe tener los conocimientos necesarios del
área de la informática a fin de mantenerse acorde con el avance tecnológico y poder utilizar esta
herramienta que facilitará su trabajo y le ayudará a resolver problemas, optimizando de esta
manera en alto grado su rendimiento y permitiendo una mejor toma de decisiones.
II OBJETIVOS
Página: 1
Conseguir que el alumno adquiera destreza en el uso de herramientas computacionales que le
sirvan como ayuda en el estudio de las diferentes asignaturas consideradas “troncales” en la
carrera. Desarrollar su creatividad. Ampliar su capacidad lógica y de raciocinio.
Alcanzar que los estudiantes conquisten los conocimientos y experiencia necesarios en
programación y uso del Visual Basic, uno de los lenguajes de programación más populares y más
utilizados actualmente en el mundo, diseñado especialmente para crear aplicaciones gráficas de
manera rápida y eficiente, dándoles la posibilidad de desarrollar programas computacionales que
les ayuden en el futuro a resolver problemas tanto en el resto de su vida estudiantil como en su
futuro trabajo al desenvolverse como profesionales en Ingeniería Petrolera.
A. CONTENIDO DE LA TEORIA
1.1. Introducción
1.2. Aplicación o Sistema Informático
1.3. Ciclo de Vida de la Aplicación
1.3.1 Etapas del Desarrollo de Aplicaciones
1.3.2 Documentación de loa Programas
1.3.3 Etapas de la Implantación y Explotación
1.4 Estructura de un Programa
1.4.1 Entrada de Datos
1.4.2 Proceso
1.4.3 Salida de Resultados
1.5 Lenguajes de Programación
1.5.1 Clasificación de los Lenguajes de Programación
1.5.2 Lenguaje de Máquina
1.5.3 Lenguaje Ensamblador
1.5.4 Lenguajes de Alto Nivel
1.6 Representación de Datos: Codificación Alfanumérica
1.7 Técnicas de Programación
1.7.1 Programación Convencional
1.7.2 Programación Modular
1.7.3 Programación Estructurada
1.7.4 Estructuras de Control
1.8 Programación Orientada a Objetos
1.9 Algoritmos
1.9.1 Importancia
1.9.2 Características de los Algoritmos
1.10 Métodos de Representación de los Algoritmos
1.10.1 Lenguaje Natural
1.10.2 Pseudocódigo
1.10.3 Lenguajes de Programación
1.10.4 Diagramas de Flujo
1.10.4.1 Símbolos
Página: 2
1.10.4.2 Tipos
1.11 Ejercicios de Diagramas de Flujo
2.1 Introducción
2.2 Archivos y Registros
2.2.1 Registro Lógico
2.2.2 Registro Físico o Bloque
2.3 Clasificación de los Archivos Según su Uso
2.3.1 Archivos Permanentes
2.3.1.1 Archivos de Constantes
2.3.1.2 Archivos Maestros
2.3.1.3 Archivos Históricos
2.3.2 Archivos de Movimientos
2.3.3 Archivos de Trabajo.
2.4 Organización de Archivos
2.4.1 Organización Secuencial
2.4.2 Organización Directa o Aleatoria
2.4.3 Organización Indexada
2.4.3.1 El Área Primaria
2.4.3.2 El Área de Índices
2.4.3.3 El Área de Excedentes
2.5 Métodos de Acceso
2.6 Bases de Datos
2.6.1 Modelos de Bases de Datos
2.6.1.1 Modelo Jerárquico
2.6.1.2 Modelo en Red
2.6.1.3 Modelo Relacional
2.6.2 Seguridad y Control de Datos
2.6.3 Seguridad Contra Fallos del Sistema o del Soporte
2.6.4 Seguridad Contra Usos Incorrectos o No Autorizados
Página: 3
3.4.6 Programación Controlada por Sucesos
3.4.7 Sentencia de Programa
3.4.8 Tiempo de Diseño
3.4.9 Tiempo de Ejecución
3.5 El Entorno de Programación de Visual Basic 6.0
3.5.1 La Barra de Menús
3.5.2 La Barra de Herramientas Estándar
3.5.3 El Cuadro de Herramientas
3.5.4 La Ventana de Propiedades
3.5.5 El Explorador de Proyectos
3.5.6 Ventana de Posición del Formulario
3.6 El Formulario
3.6.1 Propiedades
3.6.2 Sucesos
3.6.3 Métodos
3.7 Creación de una Aplicación
3.7.1 Diseño de la Interfaz de Usuario
3.7.2 Establecimiento de las Propiedades
3.7.3 Escritura del Código
3.8 Cómo Almacenar el Programa
3.9 Ejecución del Programa
3.10 Creación de un Archivo Ejecutable
Página: 4
4.8.1 Propiedades
4.8.2 Sucesos
4.8.3 Métodos
4.9 El Control Timer
4.10 Los Controles HScrollBar y VscrollBar
4.10.1 Propiedades
4.10.2 Sucesos
4.11 Creación de Menús
4.11.1 Opciones del Editor de Menús
4.11.2 Orden de la Tabulación de Controles
4.11.3 Cambiar el Orden de Tabulación de Controles
4.11.4 Quitar un Control del Orden de Tabulación
4.11.5 Tecla de Acceso Rápido a un Control
Página: 5
5.10.2.3 For Each…Next
5.10.3 Estructuras de Control Anidadas
5.10.4 Salida de una Estructura de Control
5.11 Procedimientos y Funciones
5.11.1 Creación de un Procedimiento General
5.11.2 Edición de un Procedimiento
5.11.3 Procedimiento Function
5.11.3.1 Llamada a una Función
5.11.4 Procedimiento Sub
5.11.5 Argumentos por Referencia y por Valor
5.11.6 Funciones Recursivas
5.12 Arrays
5.12.1 Arrays Unidimensionales
5.12.2 Declaración de un Array
5.12.3 Arrays Bidimensionales
5.12.4 Arrays Dinámicos
5.12.5 Arrays de Controles
Página: 6
7.3.2 El Método Pset
7.3.3 El Método Line
7.3.4 El Método Circle
7.4 Los Controles Line y Shape
Página: 7
o Programa con el control ImageBox – Manipulación de Imágenes
o Programa con Manipulación de Imágenes y Sensibilidad del Cursor
o Programa con Trazado de Gráficos de funciones mediante puntos
o Programa con Trazado de líneas, círculos y ovalos
o Programa con uso del MSFlexGrid – Confección de un Plan de Pagos
o Programa con edición de datos mediante el MSFlexGrid
V CRITERIOS DE EVALUACIÓN
Asistencia a clases 5%
Trabajos prácticos: 15 %
2 Exámenes parciales (15% c/u):30 %
Laboratorio de Computación: 20 %
Ayudantía: 15 %
Examen final: 15 %
Total: 100 %
VI CRONOGRAMA
PROGRAMA DE TRABAJO
Ca- Mes 1 Mes 2 Mes 3 Mes 4 Mes 5
pí- Tema Hs Semanas
tulo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 Conceptos de Programación 14
2 Conceptos de Archivos y Bases de Datos 4
3 Visual Basic - Conceptos Básicos 4
4 Visual Basic - Controles Básicos 12
1a4 Primer Examen Parcial 2
5 VS Basic - Herramientas de Programación 10
VS Basic - Uso de Archivos y Bases de
6 8
Datos
Página: 8
Cronograma de Laboratorios
1 Casillas de Verificación (CheckBox) 4
2 Selección de Opciones (OptionButton) 4
3 Lista Simple (Control ListBox) 4
4 Lista Combo (Control ComboBox) 4
5 Uso del Control Timer (Reloj Digital) 4
Barras de Desplazamiento (Mezcla de
6 Colores) 4
7 Confección de Menús (Menus y submenus) 4
8 Uso de Archivos Secuenciales (Texto) 4
9 Uso de Archivos Aleatorios (Alumnos) 4
10 Uso de Bases de Datos (Tabla Clientes) 4
Manipulación de Imágenes (Carga y
11 Descarga) 4
Imágenes en Movimiento (Sensibilidad al
12 Cursor) 4
13 Graficado de Funciones (PointSet) 4
Trazado de Líneas y Círculos (Line y
14 Circle) 4
15 MSFlexGrid Plan de Pagos (Prestamos) 4
16 MSFlexGrid Edición de Datos (Alumnos) 4
VII BIBLIOGRAFIA
1 E. Alcalde Informática Básica
2 George Jenkins Information Systems Policies and Procedures Manual
3 Lipschutz Matemáticas para Computación
4 IBM HIPO a Dessign Guide and Documentation Procedure
5 IBM Organizing the Data Processing Activity
6 IBM Systems Journal - Flowcharting Techniques
7 Albert C. Gardner Programación Estructurada
8 Ruben Luna V Programación en Visual Basic 6.0 Para Principiantes y Avanzados
9 Brian Siler / Jeff Spots Edición Especial Visual Basic 6
10 Hermas Herrera Callejas Pet223 Computación para Ingeniería I y Lab – Material de Estudio
Página: 9
COMPUTACION PARA INGENIERIA I Y LABORATORIO CONTENIDO DE LA ASIGNATURA
CAPITULO 1 CONCEPTOS DE PROGRAMACIÓN
1.1. Introducción
1.2. Aplicación o Sistema Informático
1.3. Ciclo de Vida de la Aplicación
1.3.1 Etapas del Desarrollo de Aplicaciones
1.3.2 Documentación de loa Programas
1.3.3 Etapas de la Implantación y Explotación
1.4 Estructura de un Programa
1.4.1 Entrada de Datos
1.4.2 Proceso
1.4.3 Salida de Resultados
1.5 Lenguajes de Programación
1.5.1 Clasificación de los Lenguajes de Programación
1.5.2 Lenguaje de Máquina
1.5.3 Lenguaje Ensamblador
1.5.4 Lenguajes de Alto Nivel
1.6 Representación de Datos: Codificación Alfanumérica
1.7 Técnicas de Programación
1.7.1 Programación Convencional
1.7.2 Programación Modular
1.7.3 Programación Estructurada
1.7.4 Estructuras de Control
1.8 Programación Orientada a Objetos
1.9 Algoritmos
1.9.1 Importancia
1.9.2 Características de los Algoritmos
1.10 Métodos de Representación de los Algoritmos
1.10.1 Lenguaje Natural
1.10.2 Pseudocódigo
1.10.3 Lenguajes de Programación
1.10.4 Diagramas de Flujo
1.10.4.1 Símbolos
1.10.4.2 Tipos
1.11 Ejercicios de Diagramas de Flujo
CAPÍTULO 2 CONCEPTOS DE ARCHIVOS Y BASES DE DATOS
2.1 Introducción
2.2 Archivos y Registros
2.2.1 Registro Lógico
2.2.2 Registro Físico o Bloque
2.3 Clasificación de los Archivos Según su Uso
2.3.1 Archivos Permanentes
2.3.1.1 Archivos de Constantes
2.3.1.2 Archivos Maestros
2.3.1.3 Archivos Históricos
2.3.2 Archivos de Movimientos
2.3.3 Archivos de Trabajo.
2.4 Organización de Archivos
2.4.1 Organización Secuencial
2.4.2 Organización Directa o Aleatoria
2.4.3 Organización Indexada
2.4.3.1 El Área Primaria
2.4.3.2 El Área de Índices
2.4.3.3 El Área de Excedentes
2.5 Métodos de Acceso
2.6 Bases de Datos
2.6.1 Modelos de Bases de Datos
2.6.1.1 Modelo Jerárquico
2.6.1.2 Modelo en Red
2.6.1.3 Modelo Relacional
2.6.2 Seguridad y Control de Datos
2.6.3 Seguridad Contra Fallos del Sistema o del Soporte
4.8.3 Métodos
4.9 El Control Timer
4.10 Los Controles HScrollBar y VscrollBar
4.10.1 Propiedades
4.10.2 Sucesos
4.11 Creación de Menús
4.11.1 Opciones del Editor de Menús
4.11.2 Orden de la Tabulación de Controles
4.11.3 Cambiar el Orden de Tabulación de Controles
4.11.4 Quitar un Control del Orden de Tabulación
4.11.5 Tecla de Acceso Rápido a un Control
CAPÍTULO 5 VISUAL BASIC - HERRAMIENTAS DE PROGRAMACIÓN
5.1 Variables y Constantes
5.1.1 Comentarios
5.1.2 Una Constante
5.1.3 Las Variables
5.2 Declaración de Variables
5.3 Tipos de Datos
5.3.1 Declaración Explícita
5.4 Ámbito de las Variables
5.4.1 Variables Locales
5.4.2 Variables Estáticas
5.4.3 Variables a Nivel del Formulario
5.4.4 Variables a Nivel del Módulo
5.4.5 Variables Públicas
5.4.6 Variables de Registros o Estructuras
5.5 Operadores
5.5.1 Los Operadores Aritméticos
5.5.2 Los Operadores Relacionales
5.5.3 El Operador &
5.5.4 Los Operadores Lógicos
5.6 Funciones Matemáticas
5.7 Funciones de Conversión de Cadena
5.8 Funciones para la Conversión de Datos
5.9 Funciones de Fecha y Hora
5.10 Estructuras de Control
5.10.1 Estructuras de Decisión
6.10.1.1 If...Then
6.10.1.2 If...Then...Else
6.10.1.3 Select Case
5.10.2 Estructuras de Bucle
6.10.2.1 Do...Loop
6.10.2.2 For...Next
6.10.2.3 For Each…Next
5.10.3 Estructuras de Control Anidadas
5.10.4 Salida de una Estructura de Control
5.11 Procedimientos y Funciones
5.11.1 Creación de un Procedimiento General
5.11.2 Edición de un Procedimiento
5.11.3 Procedimiento Function
6.11.3.1 Llamada a una Función
5.11.4 Procedimiento Sub
5.11.5 Argumentos por Referencia y por Valor
5.11.6 Funciones Recursivas
5.12 Arrays
5.12.1 Arrays Unidimensionales
5.12.2 Declaración de un Array
5.12.3 Arrays Bidimensionales
5.12.4 Arrays Dinámicos
5.12.5 Arrays de Controles
Etapa Resultado
Problema
Análisis
Especificaciones
Diseño Reportes
Formatos
Bases de datos
Presentación Programas
Diseño
Aprobación
D
Programación Algoritmo/Flujograma/Seudocódigo E
Codificación–Programa fuente, Prog estructurada S
Compilación – Programa Objeto A
(Errores: Sintaxis, Lógica) R
Enlace – Código ejecutable R
(Aplicación:Interactiva/por lotes/reportes/consultas) O
L
Pruebas L
Unitarias Errores:Ejecución,Especificación O
Funcionales
De conjunto
De esfuerzo
Evaluación
Aplicación aprobada
Documentación
Manual Sistema
Manual Usuario
Manual Operación
Manual Instalación
Capacitación
Usuarios EXPLOTACION
Técnicos
Explotación y
Mantenimiento
Figura 1.2. Ciclo de vida del software
Análisis. Consiste en el estudio detallado del problema con el fin de obtener una
serie de documentos (especificaciones) en los que quede totalmente definido el
proceso de la automatización. Consta principalmente de:
- Análisis previo.
- Análisis funcional.
- Análisis orgánico.
Diseño. Consiste en concebir de modo completo la aplicación en términos de
definir el contenido de los reportes, formatos de pantalla, bases de datos y de los
programas.
Programación. Consiste en la realización de una solución o algoritmo del
problema planteado. Esta solución se diseña utilizando una notación intermedia
(seudo-código) o mediante alguna de las notaciones gráficas como los
ordinogramas; sin tener en cuenta necesariamente el lenguaje de programación
que se vaya a utilizar en la siguiente etapa.
En esta etapa es donde tiene cabida fundamentalmente la actividad del
programador y la utilización de técnicas adecuadas de diseño como la
programación estructurada y el diseño modular.
Codificación. Escritura en un lenguaje de programación de alto nivel de los
algoritmos obtenidos en la etapa anterior.
Edición. En esta fase se transcribe el programa a la computadora, grabándose el
mismo en la memoria auxiliar por medio de un editor de programas o procesador
textos. A este programa almacenado en la computadora y escrito en lenguaje de
alto nivel se le denomina programa fuente.
Compilación. Consiste en obtener el programa objeto, codificado en lenguaje de
máquina a partir del programa fuente. Esta tarea se realiza de forma automática
mediante el compilador del lenguaje, el cual, además de efectuar la traducción,
incluye un análisis sintáctico del programa, detectando posibles errores en su
escritura y posibilitando corrección de los mismos.
Enlace (linkage). En esta fase se incluyen determinadas rutinas internas de la
librería dcl lenguaje que sean necesarias en el programa, y si la aplicación consta
de varios programas o módulos se enlazan todos ellos, obteniéndose lo que
denominamos programa ejecutable.
Prueba de ejecución. El programa ejecutable obtenido en la etapa anterior se
somete a un juego de datos de prueba capaz de detectar los posibles errores en
su funcionamiento.
Errores .- La presencia de errores, surgidos en alguna de las etapas antes
descritas, suele ser inevitable. Por ello, es muy importante saber detectarlos y
corregirlos para asegurar la calidad del producto final. Un programa en
explotación puede contener errores que no han sido detectados y que pueden dar
lugar a consecuencias imprevisibles.
En el momento en que se encuentra un error hay que proceder a estudiar
sus causas y regresar a la etapa correspondiente en que puede ser corregido.
Según la etapa en que se detectan, los errores se clasifican de la siguiente
manera:
• De compilación. También denominados errores sintácticos, son los más
fáciles de encontrar y corregir. Se producen por el incumplimiento de las reglas
1.4.1 Entrada de datos. Está formada por todas las instrucciones que toman los
datos objeto del programa desde un dispositivo externo (unidad de entrada)
depositándolos en la memoria central de la computadora, incluyendo la depuración
o validación de los mismos.
1.4.3 Salida de resultados. La constituyen las instrucciones que hacen que los
datos resultantes del proceso sean proporcionados al exterior por medio de algún
dispositivo (unidad de salida).
Estos tres componentes de todo programa (Figura 1.4) no aparecen
separadamente, sino que lo normal es encontrar las instrucciones pertenecientes
a cada uno de los tres grupos mezcladas entre si, pues en multitud de ocasiones
es necesario realizar operaciones de entrada después de iniciada la fase de
proceso, y asimismo, se proporcionan algunos resultados antes de terminado el
mismo.
Datos Memoria central Resultados
EJEMPLO
Instrucciones en lenguaje ensamblador.
INICIO: ADD B, 1
MOV A, B
CMP A, E
JE FIN
JMP INICIO
FIN: END
Este lenguaje presenta la mayoría de los inconvenientes del lenguaje de
máquina:
Cada modelo de computadora tiene un lenguaje ensamblador propio
diferente del de los demás, por lo cual un programa sólo puede utilizarse en la
máquina para la que se programó.
Hoy día los códigos más utilizados son los de 8 bits, de los cuales los más
conocidos son el EBCDIC (Extended Binary Coded Decimal Interchange Code) y
el ASCII extendido. La Tabla 1.1 representa el código ASCII extendido a 8 bits y la
Tabla 1.2 representa el código EBCDIC.
si plato es azul
ponerlo con los azules
1 coger plato
2 echar jabon
3 pasar el estropajo por el plato
4 si hay suciedad ir a la instrucción 2
5 si el plato no es azul ir a la instrucción 7
6 ponerlo con los azules
7 si hay más platos ir a la instrucción 1
Carácter finito. "Un algoritmo siempre debe terminar después de un número finito
de pasos".
Entrada. "Un algoritmo tiene cero o más entradas: cantidades que le son dadas
antes de que el algoritmo comience, o dinámicamente mientras el algoritmo corre.
Estas entradas son tomadas de conjuntos específicos de objetos".
Salida. "Un algoritmo tiene una o más salidas: cantidades que tienen una relación
específica con las entradas".
A partir del carácter finito y de la salida se deduce que ante una misma
situación inicial (o valores de entrada) un algoritmo debe proporcionar siempre el
mismo resultado (o salida), con excepción de los algoritmos probabilistas.
1.10.4.1 Símbolos
Inicio / Fin
Entrada / Salida
Proceso
Decisión
Proceso iterativo
Proceso predefinido
Dirección de flujo
X i
14.- Se ingresarán N valores para X. Calcular el valor promedio X i 1
N
1 2 3
x x x xn
15.- La función e x se puede calcular con la fórmula e x 1 ....
1! 2! 3! n!
Llamemos NUM = Numerador, DEN = Denominador, TER = término = N/D.
Detener el proceso cuando el término TER sea menor o igual a 0.00005
16.- Cargar un vector de N elementos con valores introducidos al azar, luego
buscar el valor mayor y su ubicación e imprimir la información encontrada
17.- Construir la matriz identidad de N x N
18.- Se dispone de 9 bolas de billar, todas iguales menos una que tiene peso
diferente. En 3 pesadas debemos determinar cual es la diferente además
de saber si es más pesada o más liviana que las demás
19.- Dado un número, determinar si el mismo es par o impar
20.- Dado un número, determinar si el mismo es primo o no es primo
21.- Hallar la suma de los N primeros números pares
22.- Se debe introducir la temperatura ya sea en oC o oF. Convertir los valores a
oF o oC según corresponda. (Ver cómo identificar el valor introducido)
23.- Ordenar M números introducidos al azar, en forma ascendente. Podemos
usar el método de comparaciones sucesivas con el primer número.
INICIO
Leer M
I=0
I=I+1
Leer N(I)
No
I=M?
Si
I=M
I=I-1
J=0
J=J+1
SiAUX=N(J)
N(J)>N(J+1) No N(J)=N(J+1)
N(J+1)=AUX
Si
No J=I?
Si
No
I=1
Si
I=0
I=I+1
Escribir N(I)
No
I=M?
Si
Fin
Inicio
A
Fin ? Si Fin B
No
A No Ejecutar ? DIVE>2 ? Si
Si No
Leer N K=K+1
A P(K) = J
I
J Mod I = 0 ?
No
Si A
DIVE = DIVE + 1
25.- Invertir los dígitos de un número N entero, positivo de dos cifras o más
Inicio
A
Fin ? Si Fin
No
A No Invertir ?
Si
Leer N
No Desplegar N1 A
A>0?
Si
DIG = A Mod 10
N1 = N1*10 + DIG
A = A \ 10
26.- Construir una matriz de N x N con N impar y mayor a 2. Calcular las sumas
de los vectores centrales (vertical y horizontal) además de la suma total de
los vectores centrales (horizontal y vertical)
Inicio
A
Fin ? Si Fin
No
A Ejecutar ?
No
Si
Leer N A
Si
H = 0, V = 0, S = 0
B
I = 1, N
I = 1, N
J = 1, N
H = H + A(I, K)
V = V + A(K, I)
Leer C
I
A(I, J) = C
S = H + V – A(K, K)
J
I Imprimir H, V, S
S = 0, K = N \ 2 + 1
A
2.2 Archivos y registros.- Un Archivo o Fichero es una estructura de datos que reside en
memoria secundaria, consistente en un conjunto de informaciones estructuradas en unidades
de acceso denominadas registros, todos del mismo tipo y en número indeterminado.
2.2.1 Un registro lógico.- O simplemente registro es cada uno de los componentes del
archivo, conteniendo el conjunto de informaciones que se acceden y se tratan de manera
unitaria. Está constituido por uno o más elementos denominados campos, que pueden ser
de diferentes tipos y que a su vez pueden estar compuestos por subcampos.
Un registro puede tener un campo clave, cuyo valor sirve para identificar de forma
única el registro y por tanto, dicho valor no puede aparecer repetido en otro registro diferente.
Puede suceder que un archivo no tenga campo clave en sus registros, o por el contrario,
que tenga varios, denominándose clave primaria a la principal y a las demás secundarias.
Si un archivo contiene información de un conjunto de individuos u objetos, sus registros
contienen información de cada uno de ellos y los campos los diferentes datos que componen.
Por ejemplo, en el archivo de personal de una empresa, cada registro contiene
información de un empleado, los campos contienen su número de CI, nombre, dirección,
fecha de ingreso, etc. La calle en que vive será un sub-campo y el campo clave puede ser el
número de CI (Tabla 2.1).
NÚMERO DE CI 2198365
NOMBRE LUIS ORTIZ RUBIO
DIRECCIÓN PS. OLMOS # 16
LOCALIDAD LA PAZ
DEPARTAMENTO PRODUCCION
CATEGORIA LABORAL TÉCNICO AUXILIAR
FECHA DE INGRESO 15/09/1988
Tabla 2.1. Registro personal.
campo 3
Figura 2.3. Esquema lógico de un archivo.
2.3 Clasificación de los Archivos Según su Uso.- Los archivos se clasifican según la
utilización que se hace de ellos en tres grupos:
2.3.1 Archivos Permanentes.- Contienen información que varia poco a lo largo del tiempo.
Pueden ser de. tres clases:
2.3.1.1 Archivos de Constantes.- Su información permanece prácticamente inamovible,
utilizándose principalmente como archivos de consulta. Un archivo de este tipo puede ser el
de la red del metro de una ciudad, que contiene la descripción, características, número de
estaciones, número de trenes, etc., de cada línea.
2.3.1.2 Archivos Maestros.- También denominados Archivos de Situación, contienen la
información que refleja el estado o situación de una empresa, entidad o algún aspecto de ella
en un determinado momento. Estos archivos se actualizan periódicamente para adaptarlos a
cada nueva situación. Un ejemplo es el archivo de personal con contrato temporal en una
empresa, o también el archivo de existencias en almacén.
2.3.1.3 Archivos Históricos.- Se obtienen de los anteriores cuando se dejan fuera de uso
para futuros estudios estadísticos o consultas. Será un archivo histórico el que contiene la
información de libros adquiridos por una biblioteca en la década de los ochenta.
2.3.3 Archivos de Trabajo.- Tienen una vida limitada, normalmente igual a la duración de
la ejecución de un programa y se utilizan como auxiliares de los anteriores (se llaman
también archivos de maniobra).
Por ejemplo, si se desea una lista alfabética de los nombres del personal contratado, se
hará por medio de un archivo de trabajo en el que se almacene esta información a partir del
archivo de personal. Este archivo desaparecerá una vez se tenga la lista impresa.
- Secuencial
- Directa o aleatoria
- Indexada
- Archivos de texto
- Archivos binarios
Por otro lado, para actualizados es preciso crear nuevos archivos donde se copien
registros que vayan a permanecer, modificados o no, junto con los nuevos.
Acceso secuencial
Posiciones 01 02 03 04 05 06 07
Área de índices
Área de datos o primaria
Área de excedentes (Overflow)
2.4.3.1 El área de datos o primaria.- Contiene los registros de datos, clasificados en orden
ascendente por su campo de clave.
2.4.3.2 El área de índices.- Es un archivo secuencial creado por el sistema, en el que cada
registro establece una división (segmento) en el área de datos o primaria, y contiene la
dirección de comienzo del segmento y la clave más alta del mismo. De esta manera, el
sistema accede de forma directa a un segmento del área primaria a partir del área de índices,
de forma similar a la búsqueda de un capitulo de un libro a partir de su índice.
2.4.3.3 El área de excedentes.- Es un espacio reservado para añadir nuevos registros que
no pueden ser colocados en el área primaria cuando se produce una actualización del
archivo (Figura 2.6).
Ing. Hermas Herrera Callejas Página: 4 de 8
Computación para Ingeniería I y Laboratorio Cap. 2 - Conceptos de Archivos y Bases de Datos
Área de índices 01 AC 04 FA 07 GK
Área de datos AA -- AB -- AC -- BC -- CH -- FA -- GF -- GJ - GK -
01 02 03 04 05 06 07 08
Área excedentes FM -- AN -- BM -- GA
Esta organización presenta la ventaja de un rápido acceso por medio de la clave del
registro, y además el sistema se encarga de relacionar la posición de cada registro con su
contenido por medio del área dé índices. También es trabajo del sistema, la gestión de las
áreas de índices y de excedentes.
Los inconvenientes que presenta son la necesidad de espacio adicional para el área de
índices y el desaprovechamiento de espacio que resulta de quedar huecos intermedios libres
después de sucesivas actualizaciones.
2.6 Bases de Datos.- La gestión de archivos se ha demostrado insuficiente para cubrir las
necesidades de almacenamiento y proceso de datos en la actualidad.
Los sistemas de información de las empresas son cada vez más grandes y complejos, y
su gestión mediante el uso de archivos presenta algunos inconvenientes, como el hecho de
que los datos estén repartidos por distintos departamentos de la empresa, lo que supone
tener que desplazarse o solicitarlos cada vez que se necesitan en un lugar diferente de
donde se generan.
Además pueden estar repetidos varias veces, con el inconveniente de que su
actualización dará lugar a inconsistencias si no se realiza simultáneamente en todos los
Ing. Hermas Herrera Callejas Página: 5 de 8
Computación para Ingeniería I y Laboratorio Cap. 2 - Conceptos de Archivos y Bases de Datos
2.6.1.1 Modelo Jerárquico.- Utiliza la estructura de árbol para establecer relaciones del
tipo 1 : n (uno a muchos). Una base de datos de este tipo consistirá en uno o varios árboles
que expresarán las distintas agrupaciones entre los datos. Cada árbol tiene un nodo
distinguido denominado raíz y, a partir de él, se establecen relaciones de sucesión,
denominándose nodos hijos a los descendientes de otro. Mientras que un nodo padre sólo
puede tener una ocurrencia, los nodos hijos pueden tener varias (Figura 2.7).
Empleado
2.6.1.2 Modelo de Red.- Utiliza la estructura de red o grafo, que permite definir entre todos
los nodos relaciones n : n (muchos a muchos). Mediante el establecimiento de apuntadores
entre nodos se puede relacionar cualquier unidad de datos con cualquiera de las otras
(Figura 2.8).
Estudios Experiencia
Empleado
Logros Familia
2.6.1.3 Modelo Relacional.- Se basa en el Álgebra Relacional. Las relaciones entre las
unidades de datos o entidades se expresan mediante tablas de dos dimensiones. Una base
de datos de este tipo estará formada por varias de estas tablas en las que una fila (tupla)
contiene una ocurrencia de valores interrelacionados y una columna contiene los diferentes
valores posibles de cada entidad (Tabla 2.2).
2.6.3 Seguridad Contra Fallos del Sistema o del Soporte.- Es preciso proteger no sólo
los datos, sino también las operaciones de actualización que se realizan con ellos, de tal
manera que si en un momento dado se produce una caída del sistema o la rotura del
soporte, se pueda recuperar la información según estaba antes del fallo.
De esta forma, cuando se produzca un fallo o avería, una vez subsanada y realizado el
procedimiento de recuperación, se tendrá la información según estaba cuando se efectuó el
último registro de operaciones y sólo será preciso repetir las operaciones que se hicieron
sobre el archivo o base de datos desde ese momento hasta el fallo.
Objeto.Propiedad = Valor
donde Objeto es el nombre del objeto cuya propiedad se desea establecer,
Propiedad es la característica que deseamos modificar y Valor es el nuevo valor
asignado a dicha propiedad. Por ejemplo:
Label1.Caption = ”Ingrese código de acceso”
podría utilizarse en el código de programa para asignar a la propiedad Caption del
objeto Label1 el valor “Ingrese código de acceso”.
3.2.2 Métodos .- Un método es una sentencia especial que realiza una acción o
un servicio para un objeto en concreto dentro del programa. La sintaxis para
utilizar un método es:
Objeto.Método = Valor
donde Objeto es el nombre del objeto que deseamos modificar, Método es la
orden que queremos utilizar para modificar el objeto y Valor es un argumento
opcional que utilizará el método. Por ejemplo, la sentencia
List1.Addltem = “Petrolera”
Utiliza el método Addltem para colocar la palabra ‘Petrolera’ en el cuadro de lista
List1.
por la acción del usuario. A cada suceso se puede asociar un procedimiento que
responda adecuadamente a la acción desencadenada. Los sucesos son los
mensajes o solicitudes que se envían a los objetos de Visual Basic.
3.4.1 Controles.- Los controles son objetos que se “dibujan” sobre un formulario,
tales como etiquetas, cuadros de texto, botones de comando, marcos, listas,
temporizadores, etc.
1.- Situar el puntero del mouse sobre el botón Inicio y hacer clic
2.- Situar el puntero del mouse sobre la opción programas
3.- Situar el puntero del mouse en el grupo de programas Visual Studio 6.0
4.- Finalmente hacer clic en el icono de Visual Basic 6.0
Al hacer clic en el icono de Visual Basic 6.0, aparece el cuadro de diálogo Nuevo
proyecto. Este cuadro de diálogo solicita seleccionar el tipo de proyecto de
programación que se desea crear. Hacer clic en el botón Abrir para aceptar el
nuevo proyecto propuesto por defecto, una aplicación estándar de 32 bits para
Visual Basic. En el entorno de programación de visual Basic se abrirá un proyecto
nuevo, junto con algunas de las ventanas y herramientas que se muestran en la
Ing. Hermas Herrera Callejas Página: 3 de 20
Computación para Ingeniería I y Laboratorio Cap. 3 –Visual Basic – Conceptos Básicos
siguiente ilustración:
Ventana de Propiedades
3.5.1 La barra de menús.- Muestra una lista con todos los menús (Archivo,
Edición, Ver, Proyecto, Formato, Depuración, Ejecutar, Consulta, Diagrama,
Herramientas, Complementos, Ventana y Ayuda) que permitirán acceder a la
mayoría de los comandos que controlan el entorno de programación. Los menús y
los comandos funcionan según una serie de reglas estándar utilizadas en todos
los programas basados en Windows y se podrá acceder a ellos utilizando el
teclado o el mouse.
Ventana de Propiedades
Cortar Explorador de proyectos
Copiar Terminar
Pegar Interrumpir
Buscar Iniciar
Deshacer Rehacer
los métodos, las propiedades, los eventos y las constantes que puede utilizar en el
código, además de los módulos y los procedimientos definidos para el proyecto.
3.5.2.19 Cuadro de herramientas.- Muestra el Cuadro de herramientas, que
contiene los controles y los objetos insertables disponibles actualmente para
agregar a la aplicación.
Puntero PictureBox
Label
TextBox
Frame CommandButton
CheckBox OptioButton
ComboBox ListBox
HScrollBar VScrollBar
Timer DriveListBox
DirListBox FileListBox
Shape Line
Image Data
ActiveX
Lista de propiedades
Los botones Ver objeto y Ver código proporcionan acceso a todos los archivos
utilizados en el proceso de programación.
Para cambiar el tamaño del formulario, sitúe el puntero del mouse sobre uno de
los cuadraditos que aparecen en medio de los lados o en una de las esquinas del
formulario, y cuando el puntero cambie a una flecha doble, arrastre en el sentido
adecuado hasta que el formulario adquiera el tamaño deseado.
Hacer clic en este botón y en el cuadro de diálogo que aparece, seleccionar una imagen
3.6.1.13 ShowlnTaskBar.- Permite determinar si en la barra de tarea de
windows debe aparecer o no un icono que represente al formulario cuando el
programa se ejecute.
3.6.1.14 Top.- Permite establecer la posición vertical del formulario. Junto con
Left determina la coordenada de la esquina superior izquierda del formulario.
3.6.1.15 Visible.- Por defecto toma el valor Trae, lo que indica que la ventana
estará visible cuando se ejecute la aplicación. Si asignamos el valor False
haremos que el formulario no sea visible.
3.6.1.16 Width.- Permite establecer el ancho del formulario. Junto con Height fija
las dimensiones del formulario.
3.6.1.17 WindowState.- Devuelve o establece, en tiempo de ejecución, el estado
visual de una ventana de formulario.
Suceso Comentario
Activate Este suceso ocurre cuando el formulario se convierte en la ventana activa.
Procedimiento llamado Form_Activate.
Click Este suceso ocurre cuando el usuario hace clic sobre el formulario.
Procedimiento llamado Form_Click.
Deactivate Este suceso ocurre cuando el formulario deja de ser la ventana activa.
Procedimiento llamado Form_Deactivate.
DblClick Este suceso ocurre cuando el usuario hace doble clic sobre el formulario.
Procedimiento llamado Form_DblCIick.
Load Este suceso ocurre cuando se carga un formulario.
Procedimientollamado Form_Load.
MouseDown Este suceso ocurre cuando el usuario presiona un botón del mouse con el
puntero dentro del formulario. Procedimiento llamado Form_MouseDown.
MouseMove Este suceso ocurre cuando el usuario desplaza el puntero del mouse sobre
el formulario. Procedimiento llamado Form_MouseMove.
MouseUp Este suceso ocurre cuando el usuario suelta el botón del mouse sobre el
formulario. Procedimiento llamado Form_MouseUp.
Unload Este suceso ocurre cuando un formulario está a punto de descargarse.
Procedimiento llamado Form_Unload.
Método Comentario
Hide Oculta el formulario
Refresh Actualiza el contenido del formulario.
SetFocus Le entrega el enfoque al formulario.
Show Hace visible el formulario.
3.7 Creación de una aplicación.- En general, para construir una aplicación con
Visual Basic, se siguen estos tres pasos fundamentales:
1. Diseñar la interfaz de usuario (medio de comunicación entre el usuario y la
aplicación) utilizando los controles del cuadro de herramientas.
2. Establecer las propiedades de los elementos (formularios y controles) de la
interfaz de usuario.
3. Escribir el código de programa para cada uno de los elementos de la interfaz
de usuario.
Desarrollar la primera aplicación. Esta tendrá un formulario, un cuadro de
texto y dos botones de comando. En esta aplicación, cuando el usuario haga clic
en el botón ‘Saludo’, en el cuadro de texto debe aparecer el mensaje “Estoy
aprendiendo Visual Basic” y cuando haga clic en el botón ‘Salir’, la aplicación debe
finalizar. Seguir estos pasos:
Abrir el menú Archivo y... ...hacer clic en el comando Nuevo proyecto
Hacer clic en Aceptar y Visual Basic mostrará un nuevo formulario. Observar que
el formulario está lleno de puntos. Estos puntos forman una cuadrícula que
ayudará a alinear los controles que se dibujen en el formulario. Para hacer que la
cuadrícula desaparezca, hacer clic en el comando Opciones... del menú
Herramientas. Luego, hacer clic en la ficha General del cuadro de diálogo
Opciones e inhabilitar la opción Mostrar cuadrícula.
Observar que alrededor del control aparecen ocho cuadraditos. Estos cuadraditos
se llaman puntos de control y permiten modificar el tamaño del objeto con sólo
arrastrarlos en la dirección adecuada.
2. Modificar el tamaño del objeto. Para ello, situar el puntero del mouse sobre uno
de los puntos de control y arrastrar en la dirección adecuada hasta que el objeto
adopte el tamaño deseado.
Hacer clic sobre la propiedad Height, introducir un nuevo valor para establecer la altura del objeto y
presionar Enter. Lo mismo se puede hacer con la propiedad Width
Se puede cambiar la posición de un objeto si éste tiene una posición inadecuada.
Para ello, situar el puntero del mouse sobre el objeto y arrastrar el objeto hacia
una nueva posición. También se puede cambiar la posición de un objeto
ingresando nuevos valores en las propiedades Left (izquierda) y Top (superior), en
la ventana Propiedades. Left permite establecer la distancia entre el borde
izquierdeo interno del formulario y el objeto seleccionado. Top permite establecer
la distancia entre el borde superior interno del formulario y el objeto seleccionado.
Utilizar este cuadro de diálogo para modificar algunas propiedades del texto
que aparecerá en el control Mensaje. Por ejemplo, seleccionar la fuente Arial de
tipo Normal y tamaño 12. Finalmente, hacer clic en Aceptar.
Modificar las propiedades del botón de comando Command1:
1. En el formulario, seleccionar el botón Command1.
2. En la ventana Propiedades, ingresar el texto ‘Saludo’ en la propiedad (Nombre).
3. En la propiedad Caption, ingresar el título “Saludo”.
Modificar las propiedades del botón de comando Command2:
1. En el formulario, seleccionar el botón Command2.
2. En la ventana Propiedades, ingresar el texto ‘Salir’ en la propiedad (Nombre).
3. En la propiedad Caption, ingresar el título “Salir”.
Luego de haber establecido las propiedades de los elementos del formulario,
éste tendrá un aspecto similar a la siguiente ilustración:
EndSub
El cuerpo principal de un procedimiento siempre debe encontrarse situado
entre estas dos sentencias. El nombre del procedimiento, Saludo_Click indica que
el procedimiento está conectado con el botón de comando Saludo y que será
ejecutado cuando se produzca el suceso Click.
3.9 Ejecución del programa.- Para ejecutar el programa hacer clic en el botón
Iniciar de la barra de herramientas estándar. El programa se ejecutará y aparecerá
la interfaz de usuario tal y como fue diseñada.
Hacer clic en el botón Saludo y en el cuadro de texto aparecerá el mensaje
“Hola. Estoy aprendiendo Visual Basic”.
Para ejecutar una aplicación también se puede hacer clic en la opción Iniciar
del menú Ejecutar o presionar la tecla F5.
Para finalizar la ejecución del programa, hacer clic en el botón “Salir”.
nombre del comando). Visual Basic muestra el cuadro diálogo Generar proyecto:
4.1 El control Label (Etiqueta).- Este control se utiliza para colocar títulos en el
formulario y mensajes junto a los cuadros de texto para que los usuarios sepan qué
introducir en ellos.
Las etiquetas se utilizan para mostrar mensajes que indican a los usuarios qué es lo que deben hacer.
El control TextBox también se utiliza para introducir datos que serán procesados por un procedimiento
asociado a este u otro control.
Cuando el usuario seleccione una opción, aparecerá un check dentro de la casilla y la propiedad Value
adoptará el valor 1.
0-Unchecked (Desactivada)
1- Checked (Activada)
2-Grayed (Atenuada)
Visible True Devuelve o asigna un valor que determina si el objeto está
visible u oculto.
En la interfaz del usuario se incluye una caja de texto, cuatro casillas de verificación, una etiqueta y Un
botón de comando.
La siguiente tabla muestra las propiedades de los controles incluidos en el
formulario:
Control Propiedad Valor
TextBox Name nnTextoPrueba
Text ““
CheckBox Name nnNegrita
Caption &Negrita
CheckBox Name nnCursiva
Caption &Cursiva
CheckBox Name nnMayúsculas
Caption &Mayúsculas
CheckBox Name nnColorRojo
Caption Color &Rojo
Label Name Label1
Caption Introduzca un texto de prueba en la caja de texto y
seleccione una o más casillas de verificación para ver su
efecto en el texto
CommandButtom Name nnSalir
Caption Salir
En el formulario, hacer doble clic en la casilla de verificación Negrita. La ventana
de código abre el procedimiento Negrita_Click. Digitar el siguiente código entre las
sentencias Private Sub nnNegrita_Click y End Sub:
If nnNegrita.Value = 1 Then
nnTextoPrueba.Font.Bold = True
Else
nnTextoPrueba.Font.Bold = False
End If
Utilizar el control OptionButton cuando se quiera presentar varias opciones de las cuales el usuario solo
puede elegir una.
4.5.2 El evento Clic.- Cuando el usuario hace clic en un botón de opción se produce
el evento Click. En el procedimiento de este evento verificar el valor de la propiedad
Value de este control y realizar una acción. Value adopta el valor True (Verdadero) si el
control está activado, y False (Falso) si está desactivado.
Por ejemplo diseñar una interfaz como la de la figura anterior, de tal forma que
cuando se seleccione uno de los botones de opción “8”, “10” o “12”, el texto introducido
en la caja de texto aparezca en el tamaño indicado.
La siguiente tabla muestra las propiedades de los controles en el formulario:
Control Propiedad Valor
TextBox Name nnTextoPrueba
Text ““
OptionButton Name nnTamaño8
Caption 8
OptionButton Name nnTamañol0
Caption 10
4.6 El control Frame (Marco).- Este control permite agrupar e identificar fácilmente un
grupo de controles.
Para crear diferentes grupos de botones de opción, encerrar cada grupo en un marco.
4.6.2 Cómo crear grupos de botones de opción.- Para crear un grupo de botones
de opción, primero dibujar el marco y después dibujar dentro los botones de opción.
1. En el cuadro de herramientas, hacer doble clic en el control Frame.
2. En el formulario, ajustar el tamaño y posición del marco.
3. En el cuadro de herramientas, hacer clic en el control OptionButton.
4. En el formulario, situar el puntero en el interior del marco y con el botón izquierdo del
mouse pulsado arrastrar hasta dibujar el control OptionButton.
Repetir los pasos 3 y 4 para añadir un nuevo control al marco.
No se debe dibujar un control fuera del marco y después arrastrarlo dentro de él.
Si se hace esto, el control estaría encima del marco y no dentro de él.
4.7 El control ListBox (Cuadro de lista).- Este control pone a disposición del usuario
un conjunto de elementos, de los cuales puede elegir uno. Si el número de elementos
supera el número de los que pueden ser visualizados simultáneamente en la lista,
aparecerá automáticamente una barra de desplazamiento vertical para que el usuario
pueda desplazar los elementos de la lista hacia arriba o hacia abajo. Generalmente,
una lista es apropiada cuando se quiere limitar la entrada de una serie de elementos
determinados.
Por defecto los elementos de la lista se visualizan en una sola columna, aunque
es posible establecer múltiples columnas. Si el ancho total de las columnas supera el
ancho de la lista, aparecerá automáticamente una barra de desplazamiento horizontal
para que el usuario pueda desplazar las columnas hacia la izquierda o hacia la derecha.
4.7.2 Métodos
Método Descripción
AddItem Permite añadir nuevos elementos a la lista. La sintaxis de este método es:
Listl.AddItem elemento (, índice)
elemento es una cadena que se va añadir a la lista, y el índice es su
orden. El argumento índice es opcional; si se omite, la cadena se añade al
final de la lista. Si está puesta como True la propiedad Sorted del control,
la entrada se inserta en el lugar adecuado de la lista, sin tener en cuenta el
valor del argumento indice
RemoveItem Permite eliminar elementos de una lista. Para borrar un elemento de una lista,
primero debemos averiguar su posición (índice) dentro de la lista, y pasársela al
método RemoveItem. La sintaxis de este método es: Listl.RemoveItem índice
El parámetro índice es el lugar que ocupa la entrada que se quiere borrar y esta
vez no es opcional.
Clear Borra todos los elementos de la lista. Su sintaxis es: List1.Clear
4.7.3 Sucesos
Suceso Descripción
Click Ocurre cuando el usuario hace clic sobre el control.
La siguiente aplicación permite añadir, eliminar y seleccionar elementos en una
lista. La interfaz debe ser similar a la siguiente ilustración:
En el cuadro de lista, hacer clic en el nombre del país que desea eliminar y
seguidamente, hacer clic en el botón ‘Eliminar elemento’.
este tipo de cuadro permite que los usuarios escriban opciones que no figuran en
la lista. Para presentar todos los elementos de la lista, ajuste el tamaño del
cuadro de lista de forma que se visualicen todas.
2-Dropdown List.- Lista desplegable. Es similar al cuadro combinado desplegable
con la diferencia de que el usuario no puede escribir en el cuadro, solo puede
seleccionar un elemento de la lista.
Text Devuelve o establece el texto contenido en el control.
4.8.2 Sucesos
Suceso Descripción
Click Con cualquiera de las listas, ocurre cuando el usuario selecciona un ítem de la
lista para indicar sus preferencias.
Change Ocurre cuando el valor de la propiedad Text es modificado.
6.8.3 Métodos
Método Descripción
AddItem Permite añadir nuevos elementos a la lista.
RemoveItem Permite eliminar elementos de una lista.
Clear Borra todos los elementos de la lista.
La siguiente aplicación es similar a la aplicación anterior pero esta vez se utiliza
el control ComboBox. La interfaz debe tener el siguiente aspecto:
La siguiente tabla muestra las propiedades de los controles incluidos en esta interfaz:
Control Propiedad Valor
ComboBox Name nnFrutas
List Chirimoya
Ciruela
Fresa
Lucuma
Manzana
Melocotón
Naranja
Sorted True
Style 1-Simple Combo
Text ““
Label Name Label1
Caption Fruta seleccionada
TextBox Name nnFrutaSelec
Text ““
CommandButton Name nnAñadirElemento
Caption Añadir nuevo elemento
CommandButton Name nnEliminarElemento
Caption Eliminar elemento
4.9 El control Timer (Reloj).- Este control genera sucesos Timer a intervalos
regulares de tiempo. Es ideal para crear relojes digitales, cronómetros, alarmas o
simplemente para ejecutar un procedimiento a determinado intervalo de tiempo.
Para fijar el intervalo del control Timer se utiliza la propiedad Interval, a la cual se le
asigna un valor numérico que indica una medida en milisegundos (1/1000 segundos).
Para que este control se active, la propiedad Enable debe establecerse a True. Una vez
activado, éste permanecerá en marcha de forma constante (generando sucesos Timer
en el intervalo fijado) hasta que el usuario detenga el programa o el control sea
desactivado. Por ejemplo, si se asigna a la propiedad Interval el valor de 4000 se
generarán sucesos Timer cada 4000 milisegundos, es decir, cada 4 segundos. Este
control no es visible en tiempo de ejecución.
Desarrollar un reloj digital intermitente que muestre la hora segundo a segundo:
1. Abrir el menú Archivo y hacer clic en el comando Nuevo proyecto.
2. En el formulario, añadir un control Timer y un control Label como lo muestra la
siguiente ilustración:
Alignment 2-Center
Caption ““
Font Arial, Negrita, 18 puntos
Tag Mostrar Hora
Timer Name nnTimer1
Interval 500
Enabled True
Cuadro de desplazamiento
SmallChange SmallChange
LargeChange LargeChange
Min Value Max
4.10.1 Propiedades
Propiedad Val p/defecto Descripción
LargeChange 1(1-32655) Cuando el usuario haga clic en el área que hay entre el cuadro
de desplazamiento y las flechas, éste se desplazará hacia la
derecha o hacia la izquierda y la propiedad Value se
incrementará o decrementará una cantidad que está fijada por la
propiedad LargeChange
Max 32655 Devuelve o establece el valor máximo de la propiedad Value
Min 0 Devuelve o establece el valor mínimo de la propiedad Value
Name Hscroll1 o Vscroll1 Nombre usado en el código
SmallChange 1(1-32655) Cuando el usuario haga clic en las dos flechas que hay en los
extremos de la barra de desplazamiento, el valor de la propiedad
Value cambiará una cantidad especificada en la propiedad
SmallChange
Value 0 Valor actual del control especificado por la posición del cuadro
de desplazamiento.
4.10.2 Sucesos
Suceso Comentario
Change Este suceso ocurre cada vez que el usuario cambia la posición del cuadro de
desplazamiento ya sea haciendo clic en SmallChange o LargeChange o bien
desplazando con el mouse el cuadro de desplazamiento, en este último caso el
suceso Change se activa solo cuando se suelta el botón del mouse.
Scroll Ocurre continuamente mientras el cuadro de desplazamiento es arrastrado de
una posición a otra con el mouse.
Desarrollar una aplicación que muestre el manejo del control HScrollBar. El
programa debe combinar los tres colores básicos: rojo, verde y azul.
La interfaz debe ser similar a la siguiente ilustración:
formulario:
Control Propiedad Valor
PictureBox Name nnColores
Label Caption Rojo
Label Caption Verde
Label Caption Azul
HscrollBar Name nnRojo
LargeChange 20
Max 255
Min 0
SmallChange 2
Value 0
HscrollBar Name nnVerde
LargeChange 20
Max 255
Min 0
SmallChange 2
Value 0
HscrollBar Name nnAzul
LargeChange 20
Max 255
Min 0
SmallChange 2
Value 0
Guardar el formulario con el nombre CombinaciónColores.frm y la aplicación con
el nombre CombinaciónColores.vbp.
Diseñada la interfaz de usuario, unir código a los controles del formulario. Asociar
un procedimiento a la barra de desplazamiento nnRojo accionado por el suceso Scroll.
Cuando el usuario arrastre el cuadro de desplazamiento del control nnRojo, el color rojo
que muestra el control PictuneBox debe aumentar o disminuir de nivel.
1. En el formulario, hacer doble clic sobre el control nnRojo. En la ventana de código,
desplegar el cuadro de lista procedimientos y seleccionar el suceso Scroll. La
ventana de código abre el procedimiento nnRojo_Scroll.
2. Digitar el siguiente código:
Private Sub nnRojo_Scroll()
rojo = nnRojo.Value
verde = nnVerde.Value
azul = nnAzul.Value
nnColores.BackColor = RGB(rojo, verde, azul)
End Sub
Hacer doble clic en el control nnVerde. En la ventana de código, desplegar el
cuadro de lista procedimientos y seleccionar el suceso Scroll. La ventana de código
abre el procedimiento nnVerde_Scroll. Digitar el siguiente código:
Private Sub nnVerde_Scroll()
verde = nnVerde.Value
azul = nnAzul.Value
rojo = nnRojo.Value
nnColores.BackColor = RGB(rojo, verde, azul)
End Sub
Hacer doble clic en el control nnAzul. En la ventana de código, desplegar el
cuadro de lista procedimientos y seleccionar el suceso Scroll. La ventana de código
Ing. Hermas Herrera Callejas Página : 17 de 25
Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos
El menú Formato debe mostrar las opciones Fuente, Tamaño y Salir. A la vez, el
submenú Fuente debe mostrar las opciones Arial, Comic Sans MS y Courier; y el
submenú Tamaño, las opciones 10, 12 y 14. El menú Varios debe mostrar las opciones
Reloj, Calculadora y Naipes.
Seguir estos pasos:
1. Hacer clic en la opción Nuevo proyecto del menú Archivo para crear una nueva aplicación.
2. Hacer clic en el formulario.
3. Hacer clic en el comando Editor de menús del menú Herramientas para visualizar el
cuadro de diálogo Editor de menús.
A la vez, Arial, Comic Sans MS y Courier son opciones del submenú Fuente. De
manera que debemos diferenciar estos elementos del submenú Fuente. Para ello,
seleccionar la opción Arial y hacer clic dos veces en el botón flecha a la derecha. Lo
mismo hacer con las opciones Comic Sans MS y Courier.
El sangrado de todos los elementos ingresados en el Editor de menú debe sen el
siguiente:
&Formato
...&Fuente
...... &Arial Ctrl+A
...... &Comic Sans MS Ctrl+C
...... C&ourier Ctrl+O
... &Tamaño
...... 10
...... 12
...... 14
... - Línea de separación
... &Salir Ctrl + S
&Varios
... &Reloj Ctrl + R
... Calc&uladora Ctrl + U
... &Naipes Ctrl + N
Una línea de separación permite agrupar órdenes en función de su actividad.
Para crear una línea de separación escribir un guión (-) en el cuadro de texto Caption y
en el cuadro de texto Name introducir un nombre.
El editor de menús debe tener el siguiente aspecto:
Hacer clic sobre el menú Formato, situar el puntero del mouse en el submenú
Fuente y hacer clic en la opción Comic Sans MS; la ventana de código se abre
mostrando el procedimiento nnFuenteComicSans_Click. Digitar el siguiente código:
Private Sub nnFuenteComicSans_Ciick()
'Convierte a Comic Sans MS el texto contenido en TextBox
nnTexto1.Font.Name = "Comic Sans MS"
End Sub
Hacer clic sobre el menú Formato, situar el puntero del mouse en el submenú
Fuente y hacer clic en la opción Courier; la ventana de código muestra el procedimiento
nnFuenteCounier_Click. Digitar el siguiente código:
Private Sub nnFuenteCounier_Click()
'Convierte a Courier el texto contenido en el control TextBox
nnTexto1.Font.Name = "Courier"
End Sub
Hacer clic sobre el menú Formato, situar el puntero del mouse en el submenú
Tamaño y hacer clic en la opción 10; la ventana de código muestra el procedimiento
nnTamañol0. Digitar el siguiente código:
Private Sub nnTamañol0_Clic()
'Modifica a 10 puntos el tamaño del texto del control TextBox.
nnTexto1.Font.Size = 10
End Sub
Hacer clic sobre el menú Formato, situar el puntero del mouse en el submenú
Tamaño y hacer clic en la opción 12; la ventana de código muestra el procedimiento
nnTamañol2. Digitar el siguiente código:
Private Sub nnTamañol2_Clic()
'Modifica a 12 puntos el tamaño del texto del control TextBox.
nnTexto1.Font.Size = 12
End Sub
Hacer clic sobre el menú Formato, situar el puntero del mouse en el submenú
Tamaño y hacer clic en la opción 14; la ventana de código muestra el procedimiento
nnTamañol4. Digitar el siguiente código:
Private Sub nnTamañol4_Click()
'Modifica a 14 puntos el tamaño del texto del control TextBox.
nnTexto1.Font.Size = 14
End Sub
La aplicación termina al elegir la opción Salir
Private Sub nnSalir_Click()
'Termina la aplicación.
End
End Sub
Seleccionar el menú Varios y hacer clic en la opción Reloj, la ventana de código
se abre mostrando el procedimiento nnReloj_Click. Digitar el siguiente código:
Private Sub nnReloj_Click()
'Ejecuta la aplicación Reloj.exe de Microsoft Windows.
id = Shell("C:\Caepeta1\...Carpetan\Reloj.exe", 1)
End Sub
La función Shell permite ejecutar una orden del sistema operativo u otro
programa. Tiene esta sintaxis:
Shell(orden$[,n])
Ing. Hermas Herrera Callejas Página : 23 de 25
Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos
4.11.4 Quitar un control del orden de tabulación.- Podemos quitar un control del
orden de tabulación si establecemos su propiedad TabStop a False. Un control cuya
propiedad TabStop se ha establecido en False sigue manteniendo su posición en el
orden de tabulación actual, aunque el control es saltado al ir de un control a otro con la
tecla Tab.
If nnColorRojo.Value = 1 Then
nnTextoPrueba.ForeColor = RGB(255, 0, 0)
Else
nnTextoPrueba.ForeColor = RGB(0, 0, 0)
End If
If nnCursiva.Value = 1 Then
nnTextoPrueba.Font.Italic = True
Else
nnTextoPrueba.Font.Italic = False
Control Propiedad Valor
TextBox Name nnTextoPrueba End If
Text ““
CheckBox Name nnNegrita If nnMayusculas.Value = 1 Then
Caption &Negrita nnTextoPrueba = UCase(nnTextoPrueba )
CheckBox Name nnCursiva Else
Caption &Cursiva
CheckBox Name nnMayúsculas nnTextoPrueba = LCase(nnTextoPrueba )
Caption &Mayúsculas End If
CheckBox Name nnColorRojo
Caption Color &Rojo If nnNegrita.Value = 1 Then
Label Name Label1 nnTextoPrueba.Font.Bold = True
Caption “Seleccione una o más casillas
de verificación para ver su Else
efecto en el texto que se ha nnTextoPrueba.Font.Bold = False
introducido en la caja de texto” End If
CommandButtom Name nnSalir
Caption Salir
mismo”
CommandButtom Name nnSalir
Caption Salir
Frame Name nnFrame2
Caption Color Letras
OptionButton Name nnNegro
Caption Negro
OptionButton Name nnRojo
Caption Rojo
OptionButton Name nnVerde
Caption Verde
OptionButton Name nnAzul
Caption Azul
‘Termina el programa
End
5.1.1 Comentarios.- Son todo lo que está a la derecha del carácter (‘) en una línea
cualquiera de programa y no ejecuta acción alguna. Por ejemplo:
‘Suma de los números pares
SumaPares = 0 ‘Se inicializa la variable SumaPares al valor 0
Los comentarios son de mucha utilidad para poder entender el código del
programa utilizado. En programas con pocas líneas de código puede no parecer
importante, pero cuando se trata de proyectos realmente complejos, o desarrollados por
varios programadores su importancia se hace evidente. En el caso de que el código no
esté comentado, el trabajo de actualización y revisión puede ser una tarea difícil.
5.1.2 Una Constante.- Es un valor que no cambia durante la ejecución del programa.
El tratamiento y tipo de datos es igual al de las variables. Para declarar una constante
se utiliza la palabra Const en la declaración. Si durante la ejecución se intenta cambiar
su valor se producirá un error. Ejemplos:
‘Las constantes son privadas por defecto.
Const Incremento = 2.5
‘Declaración de una constante pública.
Public Const Saludo = ”Bien Venido”
‘Declaración de un entero constante.
Private Const Altura As Integer = 15
‘Múltiples constantes en una línea.
Const Año = ”1999”, Radio As Double = 4.45
5.1.3 Las Variables.- Utilizadas para almacenar valores durante la ejecución del
programa. Por ejemplo,
Ventas = 5500
Asigna el valor 5500 a la variable Ventas. Observar que el signo igual del ejemplo es un
operador de asignación, no es un operador de igualdad; el valor 5500 se asigna a la
variable Ventas. El valor de una variable puede modificarse a lo largo de la ejecución
del programa.
Las variables tienen nombre, tipo de dato y un ámbito. El nombre se utiliza para
identificar a la variable en el programa, debe ser corto y fácil de recordar. El nombre de
una variable debe comenzar con una letra, no puede incluir un punto, no debe exceder
de los 255 caracteres de longitud y debe ser único en el mismo alcance, que es el
intervalo desde el que se puede hacer referencia a la variable: un procedimiento,
formulario, etc. Los caracteres de una variable pueden ser letras, dígitos, el carácter de
subrayado (_) y los caracteres de declaración del tipo de la variable (%, &, ¡, #, @, y $).
El nombre de una variable no puede ser una palabra reservada del lenguaje (For, If,
Loop, Next, Val, Hide, Caption,...).
5.2 Declaración de Variables.- Antes de utilizar una variable, hay que declarar su
tipo. Para ello se utiliza la sentencia Dim. Esta sentencia reserva espacio de memoria
para la variable y permite a Visual Basic saber qué tipos de datos deberá guardar en
dicha variable. Por ejemplo, la siguiente sentencia crea espacio para una variable
llamada Longitud:
Ing. Hermas Herrera Callejas Página : 1 de 24
Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación
5.3 Tipos de Datos.- Visual Basic dispone de varios tipos de datos, aplicables tanto
para constantes como para variables. La siguiente tabla muestra los tipos de datos
disponibles en Visual Basic.
Carácter de declaración
Tipo Descripción del tipo Rango
Boolean Binario True o False
Byte Entero corto 0 a 255
Integer Entero (2 bytes) % -32768 a 32767
Long Entero largo (4 bytes) & -2.147.483.648 a 2.147.483.647
Single Real simple precisión (4 bytes) ¡ -3.40E+38 a 3.40E+38
Double Real doble precisión (8 bytes) # -1 .79D+308 a 1.79D+308
Currency Número con punto decimal fijo @ -9.22E+14 a 9.22E+14
(8 bytes)
String Cadena de caracteres (4 bytes $ 0 a 65500 caracteres
+ 1 byte/car. hasta 64k)
Date Fecha 1 de enero del 100 a 31 de dic de
9999. Indica también la hora,
desde 00:00:00 a 23:59:59.
Variant Fecha/ hora; números (ninguno) F/h: como Date: números: mismo
enteros, reales, o caracteres rango del tipo de valor almacenado
(16 bytes + 1 byte/car, en cadena
de caracteres.)
Otra forma de declarar una variable es utilizando los caracteres de declaración de
tipo. Por ejemplo:
Edad% Variable de tipo Integer.
Longitud# Variable de tipo real de precisión doble
Dirección$ Variable de tipo carácter.
TipoInterés@ Variable fraccionaria
Si una variable no es declarada, se asume que es de tipo Variant. Por ejemplo, las
sentencias
Dim N As Integer
Ventas = “Ventas 1999:” ‘Variable de tipo String
Ventas = 4573.2548 ‘Variable de tipo doble
Declaran a N como una variable entera y a Ventas como una variable de tipo
Variant que se comporta como una variable de tipo String para contener una cadena de
caracteres, y a continuación cambia su tipo para comportarse como una variable real de
doble precisión.
mal el nombre de una variable y ello genere un error. Para evitar este tipo de errores,
se utiliza la sentencia Option Explicit en la sección de declaraciones del formulario y del
módulo. Option Explicit genera un mensaje de error si encuentra una variable no
declarada explícitamente.
Option Explicit opera sólo en el formulario o en el módulo donde se haya puesto.
Para tener esta opción activa para todo el código de una aplicación, haga clic en el
comando Opciones del menú Herramientas. En el cuadro de diálogo Opciones, habilite
la casilla Requerir declaración de variables.
5.4 Ambito de las Variables.- Se entiende par ámbito de una variable al espacio de la
aplicación donde la variable es reconocida y por lo tanto se puede utilizar.
5.4.2 Variables Estáticas.- Una variable local se re-inicializa cada vez que se entra en
el procedimiento o función en el que se crea y al terminar se destruye. En otras
palabras, una variable local no conserva su valor entre una llamada al procedimiento y
la siguiente. Para hacer que una variable conserve su valor entre una llamada a otra,
hay que declararla estática utilizando la palabra reservada Static. Visual Basic re-
inicializa una variable estática solamente la primera vez que se llama al procedimiento.
Por ejemplo, en el código
Static Edad As Integer
Se declara la variable Edad de tipo entero. Esta variable conservará su valor
entre llamadas en el procedimiento y se destruirá sólo cuando el programa termine.
5.4.3 Variables a Nivel del Formulario.- Una variable declarada a nivel del formulario
puede ser compartida por todos los procedimientos de ese formulario. Para declarar
una variable a nivel del formulario, hacer doble clic sobre uno de los objetos contenidos
en el formulario y en la ventana de código, seleccionar (General) del cuadro de lista
Nombres y seleccionar (Declaraciones) del cuadro de lista de sucesos.
El punto de inserción aparece en la sección de declaraciones del formulario. Es en
esta sección donde la variable debe ser declarada como se puede apreciar en las
gráficas siguientes:.
5.4.4 Variables a Nivel del Módulo.- Para compartir una variable entre todos los
formularios y procedimientos contenidos en un proyecto, se necesita declararla en un
módulo de dicho proyecto. Para crear un nuevo módulo, hacer clic en el comando
Agregar módulo del menú Proyecto. Seleccionar el botón Abrir y Visual Basic añadirá
un nuevo módulo estándar denominado Module 1 en el proyecto:
Los cuadros de lista Nombre y Suceso indican que se encuentra abierta la sección
de declaraciones generales del módulo estándar. Las variables que se declaren aquí
estarán disponibles para todo el programa. Una variable a nivel de módulo es por
defecto estática.
El nombre Module1 que aparece entre paréntesis es el nombre de archivo que se
asigna por defecto a este módulo. Para modificar este nombre, en el menú Archivo
seleccionar la opción Guardar Módule1 como. En el cuadro de diálogo Guardar archivo
como, introducir un nombre para el módulo. Finalmente, pulsar el botón Guardar. De
esta manera, el módulo queda almacenado en un archivo con la extensión .bas. De
igual modo, el nombre del archivo que contiene el módulo queda modificado.
Para modificar el nombre de objeto del módulo, desplazar el puntero del mouse
sobre el nombre y hacer clic con el botón derecho del mouse. En el menú contextual
que aparece seleccionar la opción Propiedades y la ventana Propiedades aparecerá en
la pantalla.
Por defecto, una variable a nivel de módulo está disponible para todos los
procedimientos del módulo; pero no para el código de otros módulos. Para declarar
variables a nivel de módulo utilizar la palabra clave Private. A nivel de módulo no hay
diferencia entre Private y Dim.
La ventana de proyecto lista en una nueva carpeta el nuevo módulo añadido al
programa
Nombre de objeto del módulo (nombre que tendrá el módulo en el programa). Nombre de archivo del módulo.
Como los módulos no incluyen otros objetos, su única propiedad es Name. En ésta
digitar el nuevo nombre de objeto para el módulo. De esta manera, se podrá distinguir
un módulo de otros si se decide utilizar más de uno en los programas.
5.4.5 Variables Públicas.- Para que una variable esté disponible más allá del ámbito
de un procedimiento, e incluso del de un formulario o módulo, hay que declararla en un
módulo de la aplicación, en la sección de declaraciones generales, utilizando la palabra
clave Public. Por ejemplo, en esta declaración de variables:
Public Totales As Double, Gastos As String
Las variables Totales y Gastos tienen un ámbito global. Estas variables pueden ser
utilizadas desde cualquier parte de la aplicación, sin importar el módulo en el que esté
el procedimiento que accede a ellas. No se pueden declarar variables Public en un
procedimiento.
Type Registro
RazónSocial As String*50
Direccion As String*40
Teléfono As String*10
RUC As Long
End Type
Luego de definir el nuevo tipo de dato, podemos declarar variables globales, a nivel del
módulo. Por ejemplo
Global Clientes As Registro
Declara a la variable Clientes de tipo Registro. Para referirse a un determinado
5.5.3 El Operador &.- Une (concatena) una cadena de caracteres al final de otra.
También se puede utilizar el operador +. No obstante para evitar ambigüedades se
utiliza &.
5.5.4 Los Operadores Lógicos.- También conocidos como nexos lógicos permiten
combinar dos a más comparaciones en una sola comparación compuesta. Por ejemplo,
la comparación compuesta:
(Edad > 18) And (Edad < 45)
Devuelve True si ambos lados de And son True. De otro modo, la expresión
devuelve False.
En la comparación compuesta:
(Edad < 18) Or (Edad > 45)
El operador Or devuelve True si alguno de los lados de Or es True. Si ambos
lados de Or son False, la expresión devuelve False.
Not es una negación, devuelve lo contrario a un resultado de verdad. Así, en la
expresión
Not(Edad = 15)
Si Edad vale 15, Not transformará el resultado de True a False.
5.6 Funciones Matemáticas.- Visual Basic incluye varias de estas funciones que nos
permiten realizar operaciones matemáticas complejas. La siguiente tabla muestra cada
una de estas funciones junto con una breve descripción de su contenido.
Función Descripción
Abs() Devuelve el valor absoluto de un número.
Sintaxis:
Abs(número)
Donde, el argumento número puede ser cualquier expresión numérica válida. El valor
absoluto de un número es su magnitud sin signo. Por ejemplo:
ABS(-5) y ABS(5) devuelven 5.
Cos() Devuelve el coseno de un ángulo en radianes.
Sintaxis:
Cos(número)
Donde el argumento número es un número tipo Double o cualquier expresión numérica
válida que expresa un ángulo en radianes. La función Cos toma el ángulo y devuelve
la razón de dos lados de un triangulo rectángulo. La razón es la longitud del lado
adyacente al ángulo dividido por la longitud de la hipotenusa. Para convertir grados en
radianes, se multiplica los grados por PI/180. Para convertir radianes en grados, se
multiplica los radianes por 180/PI.
Exp() Devuelve e (la base de los logaritmos naturales) elevado a una potencia.
Sintaxis:
Exp(número)
Donde, el argumento número es un número tipo Double o cualquier expresión
numérica válida. El valor de la constante e es 2.718282 aproximadamente.
Int, Fix Devuelve un valor del mismo tipo que el que se paso como parámetro y que contiene
la parte entera de un número.
Sintaxis:
Int(número)
Fix(número)
Donde número puede ser cualquier expresión numérica válida. Las funciones Int y Fix
eliminan la fracción de un número y devuelven el valor entero resultante. La diferencia
entre Int y Fix es que si el número es negativo, Int devuelve el primer entero negativo
menor o igual a número, mientras que Fix devuelve el primer ente negativo mayor o
igual a número. Por ejemplo, Int convierte -8.4 en -9 y Fix convierte -8.4 a -8. La
función Fix(número) es equivalente a:
Sgn(número)* Int(Abs(número))
Log() Devuelve el logaritmo natural (base e) de un número.
Sintaxis:
Log(número)
Donde, número es cualquier expresión numérica válida mayor que cero. Se Puede
calcular logaritmos en base-n para cualquier número x dividiendo el logaritmo natural
de x por el logaritmo natural de n de la siguiente manera:
Log(x) = Log(x) / Log(n)
Sin() Devuelve el seno de un ángulo en radianes.
Sintaxis:
Sin(número)
Donde el argumento número es un número tipo Double o cualquier expresión numérica
válida que expresa un ángulo en radianes. La función Sin toma un ángulo y devuelve
la razón de dos lados de un triángulo rectángulo. La razón es la longitud de lado
opuesto al ángulo dividido por la longitud de la hipotenusa.
Sgn() Devuelve el signo de un número.
Sintaxis:
Sgn(número)
Donde número puede ser cualquier expresión numérica válida.
Si número es Sgn devuelve
Mayor que cero 1
Igual a cero 0
Menor que cero -1
Sqr() Devuelve la raíz cuadrada de un número
Sintaxis:
Sqr(número)
Donde número es un número tipo Double o cualquier expresión numérica válida mayor
o igual a cero.
Tan() Devuelve la tangente de un ángulo en radianes.
Sintaxis:
Tan(número)
Donde el argumento número es un número tipo Double o cualquier expresión numérica
válida que expresa un ángulo en radianes. La función Tan toma un ángulo y devuelve
la razón de dos lados de un triángulo rectángulo. La razón es la longitud del lado
opuesto al ángulo dividida por la longitud del lado adyacente al ángulo.
Sólo se convierten a mayúsculas las letras minúsculas. Las letras mayúsculas o los
caracteres que no son letras no sufren cambios.
Space() Genera una cadena de espacios.
Sintaxis:
Space(número)
Donde número es el número de espacios que se desea incluir en la cadena. La función
Space es útil para dar formato a la salida y para borrar datos en cadenas de longitud
fija.
String() Devuelve un (String) tipo Variant que contiene una cadena de caracteres que se repite
en la longitud especificada.
Sintaxis:
String(número, carácter)
Donde:
número Longitud de la cadena devuelta.
Carácter Código de carácter que especifica el carácter o la expresión de cadena
cuyo primer carácter se utiliza para construir la cadena devuelta.
Val() Esta función devuelve los números contenidos en una cadena como un valor numérico
del tipo adecuado.
Sintaxis:
Val(cadena)
Donde cadena es cualquier expresión de cadena válida. La función Val deja de leer la
cadena en el primer carácter que no puede reconocer como parte de un número. Los
símbolos y caracteres que se consideran a menudo parte de valores numéricos, como
signos de moneda y comas, no se reconocen. Los espacios en blanco, los tabuladores
y los avances de línea se eliminan del argumento. Lo siguiente:
Val(” 1415 178 Av. Los Ruibares”) ‘Val sólo reconoce el punto (.) como separador decimal válido.
Devuelve el valor 1415178:
DateAdd() La función DateAdd devuelve un valor de tipo Variant con una fecha a la que se le ha
agregado un intervalo de tiempo especificado.
Sintaxis:
DateAdd(intervalo, número, fecha)
Donde:
intervalo Expresión de cadena que contiene el intervalo de tiempo que se desea
agregar.
Número Expresión numérica con el número de intervalos que se desea agregar.
Puede ser positiva (para obtener fechas futuras) o negativa (para fechas
pasadas).
fecha Fecha a la que se agrega el valor anterior o el nombre de una variable
Variant con una fecha válida.
El argumento intervalo tiene los siguientes valores:
yyyy Año
q Trimestre
m Mes
y Día del año
d Día
w Día de la semana
ww Semana
h Hora
m Minuto
s Segundo
Se puede utilizar la función DateAdd para agregar o restar un intervalo de tiempo
especificado de una fecha. Por ejemplo, con DateAdd podría calcular una fecha 30
días posterior al día de hoy o una hora a 45 minutos de la actual.
Si se desea agregar días a fech, se puede utilizar Día del año (“y”), Día (“d”) o Día de
la semana (“w”).
La función DateAdd nunca devuelve una fecha no válida. En el ejemplo siguiente se
agrega un mes al 31 de enero:
DateAdd(“m”, 1, “31-Ene-95”)
En este caso, DateAdd devuelve 28-Feb-95 y no 31 -Feb-95. Si fecha es 31-Jan-96,
devolverá 29-Feb-96, ya que 1996 es un año bisiesto. Si la fecha calculada va a
resultar inferior al año 100, se produce un error. Si número no es un valor de tipo
Long, se redondeará al número entero más cercano antes de ser utilizado.
DateDiff() Esta función devuelve el número de intervalos de tiempo entre dos fechas
especificadas.
Sintaxis:
DateDiff(intervalo, fecha1, fecha2[, 1erdiasemana[, 1rasemanaaño]])
Donde:
Intervalo Expresión de cadena, como se describe en la tabla valores, con el
intervalo de tiempo usado para calcular la diferencia entre fecha1 y
fecha2.
Fecha1, fecha2 Las dos fechas a utilizar en el cálculo.
1erdiasemana Una constante, como se describe en valores, que especifica el
primer día de la semana. Si no se especifica, se asume que es el
domingo.
1rasemanaaño Una constante, como se describe en la tabla Valores, que
especifica la primera semana del año. Si no se especifica, se
asume que es aquella en la que se encuentre el 1 de enero.
El argumento intervalo toma los valores siguientes:
intervalo intervalo de tiempo
yyyy. Año
q Trimestre
m Mes
y Día del año
d Día
w Día de la semana
ww Semana
h Hora
m Minuto
s Segundo
El argumento 1erdiasemana se describe en la siguiente tabla Valores:
Constante Valor Descripción
UseSystem 0 Utiliza el valor de la aplicación si hay, caso contrario el APINLS.
Sunday 1 Domingo (predeterminado)
Monday 2 Lunes
Tuesday 3 Martes
Wednesday 4 Miércoles
Thursday 5 Jueves
Friday 6 Viernes
Saturday 7 Sábado
Se puede utilizar la función DateDiff para determinar el número de intervalos
especificados que existen entre dos fechas.
Por ejemplo, con DataDiff se podría calcular el número de días entre dos fechas o el
número de semanas entre hoy y el final del año. Si se desea saber el número de
días entre fecha1 y fecha2, se puede utilizar Día del año (“y” o Día (“d”).
Cuando intervalo es Día de la semana (“w”, DateDiff devuelve el número de
semanas entre las dos fechas. Si fecha1 es un lunes, DateDiff contará el número de
lunes hasta fecha2. En la cuenta incluirá fecha2, pero no fecha1. Sin embargo, si
intervalo es semana (“ww”, la función DateDiff devolverá el número de semanas del
calendario entre las dos fechas, en este caso contará el número de domingos entre
fecha 1 y fecha2. DateDiff contará fecha2 si cae domingo, pero no fecha1, aunque
caiga en domingo. Si fecha1 se refiere a un momento posterior en el tiempo a
fecha2, la función DateDiff devolverá un numero negativo. El argumento
1erdiasemana afecta a los cálculos que utilizan “w” y “ww” como símbolos de
intervalo.
Si fecha es un literal de fecha (una fecha entre signos de número (#)), el año, si se
específica, pasará a ser una parte permanente de la fecha. Sin embargo, si fecha se
inicia entre comillas dobles (“”) y se omite el año, se insertará el año en curso en el
código cada vez que se evalúe la expresión fecha. Así es posible escribir código
que pueda usarse en años distintos.
Day() La función Day devuelve un número entero entre 1 y 31, inclusive, que representa el
día del mes.
Sintaxis:
Day(fecha)
El argumento con nombre fecha se limita a una fecha o números y cadenas, (en
cualquier combinación), que pueda representar una fecha. Si fecha contiene datos
no válidos, se devuelve Null.
Month() La función Month devuelve un número entero entre 1 y 12, inclusive, que representa
el mes del año.
Sintaxis:
Month(fecha)
El argumento con nombre fecha se limita a una fecha o números y cadenas (en
cualquier combinación), que puedan representar una fecha, si fecha contiene datos
no válidos, se devuelve Null.
Now La función Now devuelve la fecha y la hora actuales de acuerdo a la configuración
de la fecha y la hora del sistema de la PC en uso.
Sintaxis:
Now
WeekDay() La función WeekDay devuelve un número entero que representa el día de la
semana.
Sintaxis:
WeekDay(fecha, [díasemana])
Donde:
fecha Numérico o expresión de cadena, en cualquier combinación, que puede
representar una fecha. Si fecha contiene Null, se devuelve Null.
díasemana Una constante que especifica el primer día de la semana, tal y como se
describe en la configuración. Si se omite, se supone el valor vbSunday.
Year() Esta función devuelve un número entero que representa el año.
Sintaxis:
Year(fecha)
El argumento fecha es cualquier expresión numérica o expresión de cadena (en
cualquier combinación) que pueda representar una fecha. Si fecha contiene datos no
válidos, se devuelve Null.
ejecuta el primer bloque de sentencias y luego salta a las sentencias que hay después
de End If. Si la condición es False (falsa), ejecuta el segundo bloque de sentencias, es
decir, las que hay a continuación de la palabra clave Else.
If Condición Then
[Bloque de sentencias 1]
Else
[Bloque de sentencias 2]
End If
Veamos un ejemplo:
Function Factorial (N As Integer) As Long
If N = 0 Then
Factorial = 1
Else
Factorial = N*Factorial(N - 1)
End If
End Function
Otra variación de la estructura If...Then...Else usa varias condiciones con la
palabra clave Elseif:
If Condición1 Then
[Bloque de sentencias 1]
[ElseIf Condición2 Then]
[Bloque de sentencias2]]...
[Else]
[Bloque de sentencias n]
End If
Se puede colocar cualquier número de cláusulas ElseIf. Las condiciones se
evalúan desde arriba. Si la primera condición es False, Visual Basic procede a evaluar
la segunda condición y así sucesivamente, hasta encontrar una condición True.
Cuando encuentra una condición True, Visual Basic ejecuta el bloque de sentencias
correspondiente y después pasa a ejecutar las sentencias que siguen a End lf.
Opcionalmente, puede incluir un bloque de sentencias Else, que Visual Basic
ejecutará si ninguna de las condiciones es True.
Veamos un ejemplo:
Sub Base_Click (Index As lnteger)
If Index = 0 Then
txtBase.Text = Format$(NúmeroActual)
ElseIf Index = 1 Then
txtBase.Text = Oct$(NúmeroActual)
EIse
txtBase.Text = Hex$(NúmeroActual)
End If
End Sub
hasta la sentencia Loop, vuelve a Do While y evalúa la condición otra vez. Por tanto, el
bucle se puede ejecutar cualquier número de veces, siempre y cuando la condición sea
verdadera. Nunca se ejecutarán las sentencias si la condición es False inicialmente.
El siguiente procedimiento mostrará el cuadrado de los números enteros menores
o iguales que 10 cuando el usuario haga clic sobre el formulario:
Private Sub Form_Click()
Dim I, Cuadrado As Integer
I=1
Do While I<= 10
Cuadrado = I*I
I=I+1
Print Cuadrado
Loop
End Sub
5.10.2.3 For Each...Next.- El bucle For Each…Next repite un bloque de sentencias por
cada elemento de una colección de objetos o de una matriz. Es especialmente útil
cuando no se sabe cuántos elementos hay en una colección. Sintaxis:
For Each elemento In grupo
sentencias
Next elemento
El siguiente procedimiento limpia todos los cuadros de texto del formulario:
Sub LimpiarCuadrosdeTexto()
Dim control
For Each control In Forml.Controls
If Type of control is TextBox Then
control.Text = “ ”
End If
Next control
End Sub
Se debe considerar las restricciones siguientes cuando se utiliza For Each...Next:
Para las colecciones, elemento sólo puede ser una variable Variant, una variable
Object genérica o un objeto mostrado en el Examinador de objetos.
Para las matrices, elemento sólo puede ser una variable Variant.
No se puede utilizar For Each...Next con una matriz de tipos definidos por el usuario
porque un Variant no puede contener un tipo definido por el usuario.
5.10.4 Salida de una Estructura de Control.- Para salir directamente de un bucle sin
realizar más iteraciones se utiliza la sentencia Exit. Si se desea salir de un bucle For se
utiliza la sentencia Exit For; en cambio, si se desea salir de un bucle Do se utiliza la
sentencia Exit Do.
For contador = inicio To fin [Step incremento]
[bloque de sentencias]
[Exit For]
[bloque de sentencias]
Next [contador]
Do [{While/Until} condición]
[bloque de sentencias]
[Exit Do]
[bloque de sentencias]
Loop
Do
[bloque de sentencias]
[Exit Do]
[bloque de sentencias]
Loop [{While/Untíl} condición]
Cuando se utiliza la instrucción Exit para salir de un bucle, el valor de la variable
contador difiere, dependiendo de cómo haya salido del bucle.
Cuando termina un bucle, la variable contador contiene el valor del límite superior
más el incremento.
Cuando sale de un bucle prematuramente, la variable contador conserva su valor
según las reglas usuales del alcance.
Cuando sale antes del final de una colección, la variable contador contiene Nothing
si se trata de un tipo de dato Object y Empty si es un tipo de dato Variant.
3.11.3.1 Llamada a una Función.- Para llamar a una función desde un procedimiento
de suceso utilice esta sintaxis:
variable = nombre([argumentos])
argumentos.- Lista de variables separadas por comas. El número de variables debe
ser igual al número argumentos de la función. Los tipos de las variables
deben coincidir con los tipos de la función.
En cada llamada a una función hay que escribir los paréntesis, aunque ésta no
tenga argumentos.
El siguiente procedimiento llama a la función Factorial que devuelve, como
resultado, el factorial de un número ingresado en un cuadro de texto.
Private Sub cmdCalcular_Click()
Número = Val(txtN.Text)
txtFactorial.Text = Factorial(Número) ‘Llama a la función Factorial y el valor devuelto es asignado
a la propiedad Text del cuadro de texto txtFactorial.
End Sub
Private Function Factorial(N) As Long
Factorial = 1
Do While N > 0
Factorial = Factorial * N
N=N-1
Loop
End Function
5.11.5 Argumentos por Referencia y por Valor.- Visual Basic permite pasar los
argumentos de dos formas: por referencia y por valor. Cuando un argumento se pasa
por referencia, cualquier cambio de valor que sufra el argumento en el cuerpo de la
función o del procedimiento Sub también se produce en el argumento correspondiente
de la llamada a la función o al procedimiento Sub. Para que el valor de un argumento
no sea cambiado por la función o por el procedimiento Sub es necesario pasarlo por
valor. Para ello, se coloca el argumento entre paréntesis en la llamada. Por ejemplo:
Convertir(Cent), Fahr
Llama al procedimiento Convertir; el argumento Cent es pasado por valor. Si el
procedimiento cambia ese valor, el cambio afecta sólo a una copia de Cent y no a la
propia variable Cent.
Otro modo de especificar que un argumento es pasado por valor es anteponiendo
la palabra ByVaI a la declaración del argumento en la cabecera del procedimiento (Sub
o Function).
Sub Convertir (ByVal Cent As lnteger, Fahr As Long)
5.12 Arrays.- Un array es una estructura de datos en la que se almacena una serie de
elementos del mismo tipo (por ejemplo, los salarios de los empleados de una empresa).
Dicho de otro modo, un array es una lista con un número finito de n elementos del
mismo tipo que se caracteriza porque almacena los elementos del array en posiciones
de memoria continua y tiene un único nombre de variable (por ejemplo Salarios) que
Ing. Hermas Herrera Callejas Página : 21 de 24
Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación
5.12.4 Arrays Dinámicos.- Los array declarados anteriormente son arrays estáticos
(con un número fijo de elementos). Cuando no se sabe el número de elementos que
tendrá un array se puede utilizar un array dinámico. Para especificar que un array va a
ser dinámico se deja la lista de dimensiones vacía. En el programa, se asigna el número
de elementos del array con la sentencia ReDim. Por ejemplo, si se declara el array
Notas,
Dim Notas() As Integer
Más adelante, un procedimiento puede asignar espacio para el array, como se indica a
continuación:
Sub Promedio()
...
ReDim Notas(F,C)
...
EnSub
Cada vez que la sentencia ReDim es ejecutada, todos los valores almacenados en
el array se pierden. Para que los valores del array se conserven, se debe utilizar la
palabra reservada Preserve. Por ejemplo, la sentencia
ReDim Preserve A(UBound(A) + 10)
Incrementa el tamaño del array A en diez elementos más y los valores quedan intactos.
La función UBound permite obtener el índice superior del array. Esta función toma como
parámetro el nombre de la matriz.
Para aumentar o disminuir el tamaño actual de un array multidimensional sólo se
puede cambiar el límite superior de la última dimensión. Cualquier otro intento produce
un error. Si redimensionamos un array a una dimensión inferior a la actual, los valores
cuyos índices han quedado fuera de la nueva definición se pierden sin remisión.
Hacer clic en Si y Visual Basic creará un array de controles, asignando por defecto
los índices 0,1,... a cada uno de los elementos del array. Esta operación sólo puede
realizarse durante el diseño.
Los elementos de un array de controles comparten los mismos procedimientos
conducidos por sucesos. El siguiente procedimiento inhabilita los cuadros de texto de
un formulario:
Sub InhabilitarCuadrosdeTexto()
For I = 0 to 7
txtCampo(i).Enabled = False
Next I
EndSub
Cualquier control del array reconoce un suceso Visual Basic pasa el índice como
argumento extra. Este argumento siempre va antes de cualquier otro argumento. Por
ejemplo,
Private Sub Textl _KeyPress(Index As Integer, keyAscii As Integer)
End Sub
El valor de Index puede utilizarse dentro del procedimiento para determinar qué
control ha recibido el suceso. Un elemento del array de controles puede referenciarse
escribiendo NombreArray(Index), nomenclatura que puede utilizarse en cualquier lugar
donde pueda especificarse el nombre del control.
6.1 Archivos de Datos.- Visual Basic permite manejar tres tipos de archivos:
secuenciales, aleatorios y binarios. Los secuenciales son archivos ASCII (texto) que
almacenan registros de cualquier longitud. Los registros se almacenan como simples
líneas de texto terminadas por una secuencia retorno de carro-avance de línea CR-LF.
Los registros se organizan uno tras otro, de tal forma que en un archivo secuencial se
lee el primer registro y se continúa con el siguiente hasta llegar al final. Se puede utilizar
cualquier procesador de texto para visualizar o modificar un archivo secuencial.
Los archivos aleatorios están conformados por un conjunto de registros de la
misma longitud, los cuales pueden procesarse en cualquier orden. Cada registro está
conformado por un único número identificador y puede ser leído, escrito o actualizado.
Los archivos binarios ofrecen la posibilidad de tratar cualquier archivo como una
secuencia numerada de caracteres.
Lectura de archivos de texto.- Se puede utilizar la función INPUT para leer caracteres
de un archivo secuencial. En la siguiente orden se utiliza la función Input para leer una
determinada cantidad de bytes del archivo #1 y el contenido lo mueve a la propiedad
Text del cuadro Texto
Texto.Téxt = Input$(LOF(1), #1)
El primer parámetro de la función Input (bytes de lectura) se cubre con la función
LOF(1) que devuelve el tamaño del archivo abierto en bytes. LOF(Long Of File, longitud
de archivo).
A continuación se desarrollará un programa que mostrará los pasos para crear, guardar
y abrir archivos secuenciales. Se creará un editor de texto que nos permitirá realizar
estas tres operaciones con un archivo de texto.
1. Hacer clic en el comando Nuevo proyecto del menú Archivo.
2. Guardar la aplicación con el nombre EditorTexto.vbp y el formulario con el nombre
EditorTexto.frm.
3. Seleccionar el comando Editor de menús del menú Herramientas.
4. Añadir las siguientes propiedades en el Editor de menús:
Caption Name Shortcut
&Archivo MenuArchivo
...&Nuevo OpciónNuevo Ctrl+N
...&Abrir... OpciónAbrir Ctrl+A
...&Guardar como... OpciónGuardarComo Ctrl+G
...&Salir OpciónSalir Ctrl+S
5. Hacer clic en el botón Aceptar del Editor de menús.
6. Seleccionar el comando Componentes del menú Proyecto. Visual Basic muestra el
6.1.3.1 Definición del Registro.- Para definir un registro con la siguiente estructura:
Campos Tipo Longitud
Apellidos String 50
Nombres String 50
Dirección String 50
Teléfono String 7
Edad Integer
Se utiliza el siguiente código:
Type Registro
Apellidos As String* 50
Nombres As String*50
Dirección As String*50
Teléfono As String*7
Edad As lnteger
End Type
Luego se declara la variable con la que se va a trabajar como de tipo Registro.
Por ejemplo:
Global Clientes As Registro
Declara la variable Clientes de tipo Registro.
6.1.3.2 Apertura del Archivo.- Para abrir un archivo aleatorio se utiliza la sentencia
Open. La sintaxis de la sentencia Open es la siguiente:
Open nombre-arch For Random As #n-archivo Len = longitud reg
Donde:
nombre-arch es la ruta y el nombre del archivo.
n-archivo es un número entre 1 - 255 para referenciar al archivo.
longitud reg es una expresión entera que indica la longitud de cada uno de los registros.
Ejemplo:
Open “C:\Clientes.dat” For Random As #1 Len = Len(Amigos)
Si se abre un archivo aleatorio no existente, Open lo crea y si existe simplemente
lo abre.
6.2 Creación de Módulos.- Para declarar la estructura de los registros que tendrá el
archivo a crearse es necesario crear un nuevo módulo. Para ello, seleccionar el
comando Agregar módulo del menú Proyecto. Visual Basic muestra el cuadro de
diálogo Agregar módulo:
Hacer clic en el comando Nuevo proyecto del menú Archivo. Añadir un control
ListBox, nueve controles Label, ocho controles TextBox (elementos de un array de
controles) y cinco controles CommandButton en el formulario. Asignar las siguientes
propiedades a cada uno de los controles:
Control Propiedad Valor
ListBox Name Código
Label Caption Seleccione código
Label Caption Código
Label Caption Título
Label Caption Autor
Label Caption Editorial
Label Caption Año Publicación.
Label Caption Stock Actual.
Label Caption Stock Mínimo.
Label Caption Precio
Array de controles Name Campo
TextBox Text ““
índex 0, 1, 2…7
CommandButton Name Guardar
Caption Guardar
Enabled False
CommandButton Name Modificar
Caption Modificar
Enabled False
CommandButton Name Eliminar
Caption Eliminar
Enabled False
CommandButton Name Ingresar
Caption Ingresar
CommandButton Name Salir
Caption Salir
La interfaz de usuario debe tener el siguiente aspecto:
Asociar un procedimiento a cada uno de los controles del formulario. Hacer doble
clic en el formulario (la ventana de código abre el procedimiento Form_Load) y digitar el
siguiente procedimiento:
Private Sub Form_Load()
‘Sitúa el formulario en el centro de la pantalla
Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2
‘Abre el archivo ObrasLit.dat del disco C
Open “C:\ObrasLit.dat” For Random As #1 Len = Len(ObrasLit)
‘Llama al procedimiento LLenarLista
LLenarLista
End Sub
El procedimiento LLenarLista debe llenar el control ListBox con los códigos de los
Ing. Hermas Herrera Callejas Página : 7 de 17
Computación para Ingeniería I y Laboratorio Cap.6–Visual Basic–Uso de Archivos y Bases de Datos
Seleccionar el tipo.
Definir el alcance del procedimiento.
Hacer clic en Aceptar y Visual Basic abrirá el procedimiento LlenarLista:
Public Sub LlenarLista()
End Sub
Entre Public Sub LLenarLista y End Sub digitar el siguiente código:
Dim numreg, i As Integer
numreg = LOF(1) \ Len(ObrasLit)
‘Las siguientes instrucciones llenan la lista con los códigos de los registros
If numreg <> 0 Then
Codigo.Clear
For i = 1 To LOF(1) \ Len(ObrasLit)
Get #1, i, ObrasLit
If ObrasLit.Sw = "1" Then Codigo.AddItem ObrasLit.Codigo
Next i
Else
Exit Sub
End If
Cuando se ejecute el programa, el control ListBox mostrará los códigos de los
registros:
Asociar un procedimiento al control ListBox accionado por el suceso Click. Cada
vez que el usuario haga clic sobre uno de los códigos que muestra este control, los
datos relacionados con el código deben aparecer en los cuadros de texto
procedimiento Código_Click.
2. Digitar el siguiente código:
Private Sub Codigo_Click()
Dim i As Integer
For i = 1 To LOF(1) \ Len(ObrasLit)
Get #1, i, ObrasLit
If ObrasLit.Codigo = Codigo.Text Then
Campos(0).Text = ObrasLit.Codigo
Campos(1).Text = ObrasLit.Titulo
Campos(2).Text = ObrasLit.Autor
Campos(3).Text = ObrasLit.Editorial
Campos(4).Text = ObrasLit.Año_Publ
Campos(5).Text = ObrasLit.Stock_Actual
Campos(6).Text = ObrasLit.Stock_Minimo
Campos(7).Text = ObrasLit.Precio
End If
Next i
Guardar.Enabled = False
Modificar.Enabled = False
Eliminar.Enabled = True
End Sub
Asociar un procedimiento al botón de comando Ingresar accionado por el suceso
Click. El procedimiento debe habilitar el botón guardar e inhabilitar los botones Modificar
y Eliminar; además, debe llamar al procedimiento LimpiarCuadrosdeTexto.
1. Hacer doble clic en el botón de comando Ingresar. La ventana de código abre el
procedimiento Ingresar_Ctick.
2. Digitar el siguiente código:
Private Sub Ingresar_Click()
LimpiarCuadrosdeTexto
Guardar.Enabled = True
Modificar.Enabled = False
Eliminar.Enabled = False
End Sub
Asociar un procedimiento al botón de comando Guardar, accionado por el suceso
Click. El procedimiento debe transferir la información de los cuadros de texto a los
campos del archivo, guardar los nuevos datos en el archivo ObrasLit.dat, volver a llenar
la lista, llamar al procedimiento LimpiarCuadrosdeTexto e inhabilitar el botón de
comando Guardar
1. Hacer doble clic en el botón de comando Guardar. La ventana de código muestra el
procedimiento Guardar_Click.
2. Digitar el siguiente código:
Private Sub Guardar_Click()
'Ingresa los nuevos datos en el archivo ObrasLit.dat
ObrasLit.Codigo = Campos(0).Text
ObrasLit.Titulo = Campos(1).Text
ObrasLit.Autor = Campos(2).Text
ObrasLit.Editorial = Campos(3).Text
ObrasLit.Año_Publ = Campos(4).Text
ObrasLit.Stock_Actual = Campos(5).Text
ObrasLit.Stock_Minimo = Campos(6).Text
ObrasLit.Precio = Campos(7).Text
ObrasLit.Sw = 1
posición = i
Exit For
End If
Next i
If encontrado Then
Get #1, posición, ObrasLit
ObrasLit.Sw = 0
Put #1, posición, ObrasLit
End If
LLenarLista
LimpiarCuadrosdeTexto
Eliminar.Enabled = False
Modificar.Enabled = False
End Sub
Asociar un procedimiento al array de controles TextBox accionado por el suceso
Change. Cuando el usuario realice cualquier cambio en uno de los controles que
forman parte del array, este procedimiento se ejecutará y habilitará el botón Modificar e
inhabilitará los botones de comando Guardar y Eliminar.
1. Hacer doble clic en uno de los controles TextBox (array de controles). La ventana de
código abre el procedimiento Campos_Change.
2. Digitar el siguiente código:
Private Sub Campos_Change(Index As Integer)
Modificar.Enabled = Not Guardar.Enabled
Eliminar.Enabled = False
End Sub
Asociar otro procedimiento al array de controles TextBox accionado por el
suceso KeyPress. Cuando el usuario introduzca datos en uno de estos controles y
presione la tecla Enter, el enfoque debe pasar al siguiente control TextBox.
1. Hacer doble clic en uno de los controles TextBox. En la ventana de código,
desplegar el cuadro de lista Procedimientos y seleccionar el suceso KeyPress. La
ventana de código abre el procedimiento Campos_KeyPress.
2. Digitar el siguiente código:
Private Sub Campos_KeyPress(Index As Integer, KeyAscii As Integer)
If KeyAscii = 13 And Index < 7 Then Campos(Index + 1).SetFocus
End Sub
Agregar el procedimiento LimpiarCuadrosdeTexto al programa. El procedimiento
debe limpiar todos los cuadros de texto.
1. Hacer clic en el comando Agregar procedimiento del menú Herramientas.
2. En el cuadro de diálogo Agregar procedimiento, ingresar el nombre del
procedimiento (LimpiarCuadrosdeTexto), el tipo de procedimiento (Procedimiento) y
el alcance (Público).
3. Hacer clic en Aceptar. Visual Basic abre el procedimiento LimpiarCuadrosdeTexto.
4. Digitar el siguiente código:
Public Sub LimpiarCuadrosDeTexto()
Dim i As Integer
'Limpia los cuadros de texto del formulario
For i = 0 To 7
Campos(i).Text = ""
Next i
Campos(0).SetFocus
End Sub
Hacer clic en las flechitas que muestra el control Data para moverse entre los registros de la tabla.
Para generar un formulario que muestre los datos de la tabla Clientes contenida
en la base de datos NWIND, seguir estos pasos:
1. Seleccionar el comando Administrador de complementos del menú Complementos.
Visual Basic muestra el cuadro de diálogo: Administrador de complementos:
2. En el cuadro de diálogo Administrador de complementos, seleccionar VB 6 Data
Form Wizard y hacer clic en la casilla de verificación Cargado/Descargado.
3. Hacer clic en el botón Aceptar.
4. Hacer clic en el comando Asistente para formularios de datos en el menú
Como Windows es una interfaz gráfica de usuario, es importante tener una forma de
presentar imágenes gráficas en la interfaz de una aplicación. Visual Basic incluye tres
controles que facilitan el trabajo con gráficos:
Form (Formulario)
PictureBox (Cuadro de dibujo)
Image (Imagen)
7.1 El Control Image (Imagen).- Este control se utiliza para presentar imágenes gráficas
(mapa de bits, ícono, metarchivo, metarchivo mejorado o archivos JPEG o GIF) en una
aplicación. El control Image responde al evento Clic lo que permite usarlo como un sustituto
de los botones de comando, como elementos de una barra de herramientas o para crear
animaciones sencillas.
7.1.1 Carga de una Imagen en el Control Image.- Se puede cargar una imagen gráfica en
este control de dos maneras: durante el diseño de la aplicación o durante la ejecución. Para
cargar una imagen en tiempo de diseño, seguir estos pasos:
1. En el formulario, hacer clic sobre el control Image con el botón derecho del mouse y en el
menú contextual que aparece, seleccionar Propiedades.
2. En la ventana Propiedades, hacer clic en el botón...de la propiedad Picture. Visual Basic
visualiza el cuadro de diálogo Cargar imagen.
3. En la ventana Cargar imagen, elegir una imagen y hacer clic en Abrir. El control Image
ahora muestra la imagen seleccionada:
Cuando se carga una imagen en un control Image, el control cambia su tamaño
automáticamente para ajustarse al de la imagen, independientemente del tamaño del control
dentro del formulario.
7.1.2 Carga de una Imagen Usando el Portapapeles.- También se puede cargar una
imagen a un control Image en tiempo de diseño si se lo pega desde otra aplicación. Por
ejemplo, para cargar una imagen retocada en PhotoShop, sencillamente copiar la imagen al
Portapapeles, seleccionar el control Image y seleccionar el comando Pegar del menú Edición
7.1.3 La Propiedad Stretch.- Si la propiedad Stretch está como True, la imagen ajustará su
tamaño al cambiar el tamaño del control Image en tiempo de diseño. Es posible que la
imagen (especialmente los mapas de bits) se distorsione si el tamaño de ésta es reajustada.
Stretch=False Stretch=True
Para eliminar una imagen, poner de nuevo la propiedad Picture a valor “” (Ninguno).
Para ello, hacer clic en el control Image, elegir la propiedad Picture en la ventana
Propiedades, hacer doble clic en la palabra visualizada en la caja de valores y pulsar la tecla
Delete (Supr).
7.1.4 Carga de una Imagen en Tiempo de Ejecución.- Para cargar un gráfico en el control
Image en tiempo de ejecución utilizar la propiedad Picture y la función LoadPicture.
Set Image1.Picture = LoadPicture (“C:\Imágenes\Gatito.bmp”)
Para borrar el gráfico de este control, utilizar la función LoadPicture sin especificar un
nombre de archivo. El siguiente ejemplo borrará el control Image incluso si se cargó una
imagen con la propiedad Picture en tiempo de diseño:
Set Imagel.Picture = LoadPicture()
La siguiente aplicación, muestra la imagen Gatito.bmp si el usuario hace clic sobre el
control Image; un doble clic sobre el control Image, borra la imagen.
Private Sub Form_Load()
‘Sitúa el control Imagel en esquina superior izquierda del formulario.
Imagel.Move 0,0
‘Ajusta el tamaño del formulario al del control Image.
Form1.Height = Image1.Height
Form1.Width = Image1.Width
End Sub
Private Sub Image1_Click()
‘Muestra la imagen Gatito.bmp en el control Image
Set Image1.Picture = LoadPicture(“C:\Gráficos\Gatito.bmp”)
End Sub
Private Sub Image1_DblClick()
‘Borra la imagen Gatito.bmp del control Image
Set Image1.Picture = LoadPicture()
End Sub
Presionar la tecla F5 para ejecutar el programa y hacer clic sobre el control image....
aplicación.
2. En el cuadro de herramientas, hacer doble clic sobre el control Image.
3. En el formulario, arrastrar el control Image hasta situarlo en la esquina superior izquierda
del formulario.
4. Hacer clic en el comando Copiar del menú Edición. Una copia del control Image se
guarda en el Portapapeles.
5. Hacer clic en el comando Pegar del menú Edición. Visual Basic muestra un mensaje
preguntando si se desea crear una matriz de controles. Una matriz de controles es un
grupo de objetos idénticos que se mostrarán en la interfaz del programa. Cada uno de los
objetos del grupo comparte el mismo nombre de objeto, de forma que se puede
seleccionar y definir simultáneamente el grupo entero de objetos.
6. Hacer clic en Sí para crear una matriz de controles. Visual Basic crea una matriz de
controles Image y pega el segundo control Image en la esquina superior izquierda del
formulario.
7. Arrastrar el segundo control Image hasta situarlo a la derecha del primero.
8. Volver a hacer clic en el comando Pegar del menú Edición y después arrastrar el tercer
control Image a la parte inferior del primero.
9. Volver a hacer clic en el comando Pegar del menú Edición y después arrastrar el cuarto
control Image a la parte inferior del segundo.
10. En el cuadro de herramientas, hacer doble clic sobre el control CommandButton y en el
formulario, arrastrar hasta situarlo en la parte inferior del formulario.
Establecer ahora, las propiedades de los controles contenidos en el formulario. Para
establecer las propiedades de los controles Image en grupo, situar el puntero del mouse en
la parte superior izquierda del formulario y arrastrar el puntero en diagonal hacia abajo, hasta
enmarcar los cuatro controles Image como se observa en la siguiente ilustración:
Al soltar el botón del mouse, los cuatro controles Image aparecerán seleccionados.
Presionar la tecla F4 y establecer las siguientes propiedades:
Matriz de control Image BorderStyle 1- Fixed Single
Stretch True
Luego de establecer las propiedades de los controles Image, asignar las siguientes
propiedades al botón de comando Command1:
CommandButton Name Mostrar
Caption Mostrar imágenes
En el formulario, hacer doble clic sobre el botón de comando Mostrar imágenes y en la
ventana de código digitar el siguiente procedimiento:
Private Sub Mostrar_Click()
‘Este procedimiento carga 4 archivos de imagen que están almacenados en la carpeta C:\Gráficos.
Dim I As Byte
For I = 1 To 4
Image1(I - 1).Picture = LoadPicture(”C:\Gráficos\Imagen”& I &“.bmp”)
Next I
End Sub
Guardar el formulario con el nombre Imágenes.frm y la aplicación con el nombre
Imágenes.vbp.
Presionar la tecla F5 para ejecutar el programa y hacer clic en el botón Mostrar
imágenes. En el formulario aparecerán las imágenes cargadas:
Las imágenes cargadas durante el diseño son guardadas y cargadas con la aplicación.
Lo que significa que cuando se crea un archivo .EXE de la aplicación, no se necesitará
acompañarlo de los archivos de imágenes utilizados. En cambio, cuando las imágenes se
cargan en tiempo de ejecución, utilizando la función LoadPicture y se crea un archivo EXE,
se debe acompañar éste con los archivos de imágenes utilizados.
SensibilidadCursor.vbp
4. Hacer clic en el control Image situado en el lado izquierdo del formulario.
5. En la ventana Propiedades, en la propiedad (Nombre) digitar el nombre Botón para el
control Image.
6. Hacer clic en el segundo control Image y en la ventana Propiedades digitar el mismo
nombre asignado al control Image seleccionado anteriormente. Visual Basic mostrará un
mensaje preguntando si se desea crear una matriz de controles:
10. Agregar nueve controles Image al formulario. La interfaz debe ser similar a la ilustración
proxima:
N K S NS KS SS NB KB SB
11. Asignar los nombres que muestra la ilustración a cada uno de los nueve controles Image.
12. Establecer a False la propiedad Visible de cada uno de los 9 controles Image
recientemente nombrados.
13. Proceder a insertar los siguientes íconos en cada uno de los controles Image.
Negrita Cursiva Subrayado NegritaSob CursivaSob SubrayadoSob NegritaBaj CursivaBaj SubrayadoBaj
N K S NS KS SS NB KB SB
En el formulario, seleccionar el control N y en la ventana Propiedades hacer clic en el
botón ... de la propiedad Picture. En el cuadro de diálogo Cargar imagen, hacer doble clic en
el archivo de imagen Negrita. Esto hará que el icono Negrita quede insertado en el control N.
Proceder de manera similar con los controles Image restantes:
Al control K insertar el icono Cursiva.
Al control S insertar el icono Subrayado.
Botón F FS FB
Observar que el nombre Botón del control Image situado en la parte inferior izquierda
del formulario es igual a los nombres de los controles Image situados en la parte superior
izquierda del formulario. Estos cuatro controles forman una matriz de controles y la propiedad
index de cada uno de estos controles son 0, 1, 2 y 3 respectivamente.
15. Establecer la propiedad Visible de los controles F, FS y FB a False
16. Insertar en los controles F, FS y FB las imágenes de salir mostradas a continuación:
Salir SalirSob SalirBaj
F FS FB
En el formulario, seleccionar el control F y en la ventana Propiedades hacer clic en el
botón ... de la propiedad Picture. En el cuadro de diálogo Cargar imagen hacer doble clic en
el archivo de imagen Salir. Esto hará que la imagen Salir quede insertada en el control F.
Proceder de manera similar con los dos controles Image restantes.
Finalmente la interfaz de usuario debe tener el siguiente aspecto:
Pulsar sobre el botón y este se hundirá al igual que sucede con los botones de otras
aplicaciones desarrolladas para Windows.
7.3 Los Métodos Gráficos.- Visual Basic tiene los siguientes métodos gráficos: Print, PSet,
Line y Circle. Estos métodos permiten mostrar texto y dibujar líneas, círculos y puntos en un
formulario o en un control PictureBox.
7.3.1 El Método Print.- Permite mostrar texto. Por ejemplo, la siguiente instrucción mostrará
la cadena de caracteres ‘Texto de prueba’ en la parte superior izquierda de un control
PictureBox:
Picture1.Print “Texto de prueba”
Visual Basic proporciona los métodos TextWidth (Ancho de texto) y TextHeight (Alto de
texto) que permiten alinear una cadena de caracteres en un formulario o en un control
PictureBox. Por ejemplo, las siguientes líneas colocarán el texto ‘Texto de prueba’ en el
centro del control PictureBox.
Private Sub Picture1 _Click()
Picture1.CurrentX = (Picture1.ScaleWidth - TextWidth(“Texto de prueba”))/2
Picture1.CurrentY = (Picture1.ScaleHeight – TextHeight(”Texto de prueba”))/2
Picture1.Print “Texto de prueba”
End Sub
Para presentar una cadena de caracteres en un determinado punto de la pantalla,
asignar a las propiedades CurrentX y CurrentY el valor en coordenadas de dicho punto y
después emplear el método Print para presentar la cadena de caracteres.
7.3.2 El Método Pset.- Permite dibujar un punto en el control PictureBox y se utiliza para
dibujar curvas que hay que trazar punto a punto. Tiene la siguiente sintaxis:
[objeto.]PSet(X,Y)[,color]
Donde X e Y son las coordenadas del punto. El argumento color es opcional y si no se
especifica se supone el color del primer plano (ForeColor). Las propiedades CurrentX y
CurrentY son puestas, respectivamente, a los valores X e Y.
Ing. Hermas Herrera Callejas Página : 10 de 21
Computación para Ingeniería I y Laboratorio Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos
1 Hacer doble clic en el cuadro de texto Max. La ventana de código abre el procedimiento
Max_Change
2 Desplegar el cuadro de Lista Procedimientos de la ventana de código y en la lista de
sucesos que puede reconocer el control TextBox, seleccionar el suceso KeyPress.
3 Digitar el siguiente procedimiento:
Private Sub Max_KeyPress(KeyAscii As Integer)
If Not ((Chr(KeyAscii) >= “0” And Chr(KeyAscii) <= “9”) Or (Chr(KeyAscii) = “-“ Or Chr(KeyAscii) = “.”)) Then
Beep
KeyAscii = 0
End If
End Sub
Asociar un procedimiento al botón de comando Dibujar accionado por el suceso Click.
Cuando el usuario haga clic en el botón comando Dibujar, este procedimiento debe dibujar el
gráfico de la función Sin(X) en el control PictureBox.
1 Hacer doble clic en el botón de comando Dibujar. La ventana de código abre el
procedimiento Dibujar_Click.
2 Digitar el siguiente procedimiento:
Private Sub Dibujar_Click()
Dim VarX, FunY, XMin, XMax, YMin, YMax As Double
‘El método Cls borra el gráfico pintado en el control.
Gráfico.Cls
‘Cambia temporalmente la propiedad ScaleMode a 3 (pixeles)
Gráfico.ScaleMode = 3
XPíxeles = Gráfico.ScaleWidth
XMin = Val(Min)
XMax = Val(Max)
‘Calcula los valores mínimo y máximo de la función.
For I = 1 to XPíxeles
VarX = XMin + (Xmax - XMin) * I / XPíxeles
FunY = Sin(VarX)
If FunY > YMax Then YMax = FunY
If FunY < YMin Then YMin = FunY
Next I
‘Prepara el sistema de coordenadas definido por el usuario
Gráfico.Scale (XMin, YMin) - (XMax, Ymax)
‘Traza el gráfico de la función
For I = 1 To XPíxeles
VarX = XMin + (XMax - XMin) * I / XPíxeles
Gráfico.PSet (VarX, Sin(VarX)), RGB(0, 0, 255)
Next I
End Sub
Se analiza el procedimiento anterior. La siguiente línea
Gráfico.ScaleMode = 3
Cambia temporalmente la propiedad ScaleMode a 3 con la finalidad de utilizar la
propiedad ScaleWidth del control PictureBox. Luego se asigna a la variable XPíxeles la
resolución horizontal del control PictureBox con el fin de preparar un sistema de coordenadas
definido por el usuario.
XPíxeles = Gráfico.ScaleWidth
Las siguientes instrucciones
For I = 1 To XPíxeles
VarX = XMin + (XMax - XMin) * I / XPíxeles
FunY = FunciónY(VarX)
Ing. Hermas Herrera Callejas Página : 12 de 21
Computación para Ingeniería I y Laboratorio Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos
7.3.3 El Método Line.- Permite dibujar una línea entre dos puntos. La sintaxis de este
método es:
[objeto.]Line[(X1, Y1)] - (X2, Y2)[, color]
Si al método Line se le añade la opción B, las coordenadas (Xl ,Y1) y (X2,Y2) harán
referencia a la esquina superior izquierda o inferior derecha de un rectángulo.
[objeto.]Line(X1, Y1) - (X2, Y2)[, [color], B[F]]
Si se especifica la opción BF, se obtiene una rectángulo coloreado. Si objeto no se
especifica, la figura se dibuja sobre el formulario actual.
Desarrollar una aplicación que muestre líneas verticales, horizontales y diagonales en
un control PintureBox. Seguir estos pasos:
1 Hacer clic en el comando Nuevo proyecto del menú Archivo para crear una nueva
aplicación.
2 Colocar tres controles Label, dos controles TextBox, dos controles UpDown, cinco
controles CommandButton y un control PictureBox en el formulario.
Asignar las siguientes propiedades a los controles:
Control Propiedad Valor
Form Caption Trazado de Líneas
Label Caption Introduzca los datos requeridos
Label Caption Horizontales
Label Caption Verticales
TextBox Name Horiz
MaxLength 4
Text ““
TextBox Name Vert.
MaxLength 4
Text ““
UpDown BuddyControl Horiz
BuddyProperty Text
Increment 1
Max 1600
Min 1
SyncBuddy True
UpDown BuddyControl Vert
BuddyProperty Text
Increment 1
Max 1600
Min 1
SyncBuddy True
PictureBox Name Gráfico
Backcolor Blanco
CommandButton Name TrazarHorizontales
Caption Trazar Horizontales
CommandButton Name TrazarVerticales
Caption Trazar Verticales
CommandButton Name TrazarDiagonales
Caption Trazar Diagonales
CommandButon name LimpiarCuadro
Caption Limpiar Cuadro
CommandButon Name Salir
Caption Salir
Diseñada la interfaz de usuario, asociar un procedimiento al cuadro de texto Horiz
accionado por el suceso KeyPress. Este procedimiento sólo debe permitir el ingreso de
dígitos en el cuadro de texto Horiz.
1. En el formulario, hacer doble clic sobre el cuadro de texto Horiz.
2. En la ventana de código, desplegar el cuadro de lista Procedimientos y seleccionar el
suceso KeyPress. La ventana de código abre el procedimiento Horiz_KeyPress.
3. Digitar el siguiente código:
Private Sub Horiz_keyPress(KeyAscii As Integer)
If Chr(KeyAscii) < “0” Or Chr(KeyAscii) > “9” Then
Beep
KeyAscii = 0
End If
End Sub
Asociar un procedimiento al cuadro de texto Vert accionado por el suceso KeyPress.
Este procedimiento sólo debe permitir el ingreso de dígitos en el cuadro de texto Vert.
1. En el formulario, hacer doble clic sobre el cuadro de texto Vert.
2. En la ventana de código, desplegar el cuadro de lista Procedimientos y seleccionar el
suceso KeyPress. La ventana de código abre el procedimiento Vert_KeyPress.
3. Digitar el siguiente código:
Private Sub Vert_KeyPress(KeyAscii As Integer)
If Chr(KeyAscii) < “0” Or Chr(KeyAscii) > “9” Then
Beep
KeyAscii = 0
End If
End Sub
Asociar un procedimiento al botón de comando Horizontales accionado por el suceso
Click. Cuando el usuario haga clic en este botón, el control PictureBox debe mostrar el
número de líneas horizontales que indica el cuadro de texto Horiz.
1. En el formulario, hacer doble clic en el botón de comando Trazar Horizontales. La ventana
de código abre el procedimiento TrazarHorizontales_Clíck.
2. Digitar el siguiente código:
Private Sub TrazarHorizontales_Click()
Dim lineas As Integer
lineas = Val(Horiz)
X1 = 0
‘Se calcula el espacio que debe haber entre línea y línea
NY1 = Grafico.Height / (lineas + 1)
Y1 = NY1
For i = 1 To lineas
Grafico.Line (X1, Y1)-(Grafico.Width, Y1)
Y1 = Y1 + NY1
Next i
End Sub
Asociar un procedimiento al botón de comando Trazar Verticales accionado por el
suceso Click. Cuando el usuario haga clic en este botón, el control PictureBox debe mostrar
el número de líneas verticales que indica el cuadro de texto Vert.
1. En el formulario, hacer doble clic en el botón de comando Trazar Verticales. La ventana
de código abre el procedimiento TrazarVerticales_Clíck.
2. Digitar el siguiente código:
Private Sub TrazarVerticales_Click()
Dim lineas As Integer
lineas = Val(Vert)
Y1 = 0
‘Se calcula el espacio que debe haber entre línea y lúnea
NX1 = Grafico.Width / (lineas + 1)
X1 = NX1
For i = 1 To lineas
Grafico.Line (X1, Y1)-(X1, Grafico.Height)
X1 = X1 + NX1
Next i
End Sub
Hacer doble clic en el botón de comando Trazar Diagonales y escriba el siguiente
código en el procedimiento que muestra la ventana de código.
Private Sub TrazarDiagonales_Click()
‘Traza las dos diagonals principales en el control PictureBox
Grafico.Line (0, 0)-(Grafico.Width, Grafico.Height)
Grafico.Line (0, Grafico.Height)-(Grafico.Width, 0)
End Sub
Hacer doble clic en el botón de comando Limpiar Cuadro y escriba la sentencia
Grafico.Cls en el procedimiento que muestra la ventana de código.
Private Sub LimpiarCuadro_Click()
Grafico.Cls
End Sub
Hacer doble clic en el botón de comando Salir y escribir la sentencia End en el
procedimiento que muestra la ventana de código.
Private Sub Salir_Click()
End
End Sub
Ing. Hermas Herrera Callejas Página : 15 de 21
Computación para Ingeniería I y Laboratorio Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos
7.3.4 El Método Circle.- Permite dibujar un círculo, una elipse o parte de estas figuras con
centro (X, Y). La sintaxis de este método es:
[objeto.]Circle(X, Y), radio, [color], [principio], [fin], [aspecto]
X e Y son las coordenadas del centro del círculo y el argumento radio es el radio del
círculo. Los argumentos principio y fin son ángulos, en radianes, de valores comprendidos
en el rango –2*PI a 2*PI, que especifican los ángulos de principio y fin para el trazado del
arco. Si se omiten, se traza una curva completa. El argumento aspecto es la proporción entre
el radio vertical y horizontal de la elipse. Si aspecto < 1, la elipse se extiende horizontalmente
y se comprime en dirección vertical.
Desarrollar una aplicación que dibuje un número de circunferencias requerido con
centro en el centro del PictureBox. Es fácil hacerlo utilizando el método Circle.
Seguir estos pasos:
1. Hacer clic en el comando Nuevo proyecto del menú Archivo para crear una nueva
aplicación.
2. Colocar dos controles Label, dos controles TextBox, un control UpDown, tres controles
CommandButton y un control PictureBox en el formulario.
3. Asignar las siguientes propiedades a los controles:
Control Propiedad Valor
Form Caption Circunferencias
Label Caption Circulos
Label Caption Aspecto
TextBox Name Círculos
Text ““
TextBox Name Aspecto
Text ““
UpDown BuddyControl Circulos
BuddyProperty Text
Increment 1
Max 230
Mim 1
SyncBuddy True
PictureBox Name Gráfico
Backcolor Blanco
CommandButton Name Trazar
Caption Trazar
Cuando el usuario haga clic en este botón, la ejecución del programa debe finalizar.
1. Hacer doble clic en el botón de comando Salir. La ventana de código abre el
procedimiento Salir_Click.
2. Entre las instrucciones Salir_Click y End Sub digitar la sentencia End.
Private Sub Salir_Click()
End
End Sub
Las siguientes ilustraciones muestran ejemplos de los resultados de la aplicación.
7.4 Los Controles Line y Shape.- Estos controles permiten crear figuras geométricas de
diferentes formas, tamaños y colores en un formulario o en un marco.
Utilizar el control Line para dibujar líneas rectas. La siguiente tabla muestra algunas
propiedades de este control:
Propiedad Descripción
BorderStyle Permite establecer el estilo del borde. Presenta las siguientes opciones:
Valor Descripción
0-Transparent Transparente.
1-Solid Sólido.
2-Dash De rayas.
3-Dot De puntos.
4-Dash-Dot Raya-punto.
5-Dash-Dot-Dot Raya-punto-punto.
6-Inside Solid Sólido interno.
BorderWidth Permite establecer el ancho del borde.
BorderColor Permite colorear la línea con cualquiera de los colores estándar de Visual Basic.
Visible Permite mostrar u ocultar la línea.
El control Shape permite dibujar rectángulos, cuadrados, elipses y circunferencias.
Algunas propiedades de este control son:
Propiedad Descripción
BorderColor Permite especificar un color para el borde de la figura.
FillColor Permite especificar el color de relleno de la figura.
FillStyle Permite establecer un patrón para el color de relleno. Presenta las siguientes
opciones:
Valor Descripción
0-Solid Sólido.
1-Transparent Transparente.
2-Horizontal Line Línea horizontal.
3-Vertical Line Línea vertical.
4-Upward Diagonal Diagonal hacia arriba.
5-Downward Diagonal Diagonal hacia abajo.
6-Cross Cruz.
7-Diagonal Cross Diagonal cruzado.
Al cargar el formulario
Sitúa el control Image en tope superior izquierdo del formulario
Botón f fs fb
Poner Propiedad Visible de controles f, fs y fb a False
Insertar estas imágenes en los controles f, fs y fb:
n k s ns ks ss nb kb sb
Poner a False la propiedad Visible de estos controles Image.
Insertar estos íconos en cada uno de los controles Image.
Negrita Subrayado CursivaSob NegritaBaj SubrayadoBaj
Salir SalirSob SalirBaj
La interfaz de usuario debe tener el siguiente aspecto:
Cursiva NegritaSob SubrayadoSob CursivaBaj
‘ Deben cargarse cada uno de los controles anteriores con las
correspondientes imágenes de acuerdo al siguiente detalle:
Al control n insértele el icono Negrita.
Al control k insértele el icono Cursiva.
Al control s insértele el icono Subrayado.
Al control ns insértele el icono NegritaSob.
Al control ks insértele el icono CursivaSob.
Al control ss insértele el icono SubrayadoSob.
Al control nb insértele el icono NegritaBaj. ‘ Al cargar el formulario
Al control kb insértele el icono CursivaBaj. Lo Sitúa en el centro de la pantalla
Al control sb insértele el icono SubrayadoBaj. Move (Screen.Width - Wídth) \ 2, (Screen.Height - Height) \ 2
‘ Agregue 4 controles Image al formulario, con los nombres:. Carga imágenes en matriz de controles
Boton, f, fs y fb Botón(0).Picture = n.Picture
Botón(1).Picture = k.Picture
Botón(2).Picture = s.Picture
Botón(3).Picture = f.Picture
Ing. Hermas Herrera Callejas Página : 1 de 3
‘ Al mover el mouse por el formulario: If Botón(1).Picture = ks.Picture Then
Cambia imágenes a normales Botón(1).Picture = k.Picture
If Botón(0).Picture = ns.Picture Then End If
Botón(0).Picture = n.Picture If Botón(2).Picture = s.Picture Then
End If Botón(2).Picture = ss.Picture
If Botón(1).Picture = ks.Picture Then End If
Botón(1).Picture = k.Picture Case 3
End If Botón(3).Picture = ss.Picture
If Botón(2).Picture = ss.Pictune Then End Select
Botón(2).Picture = s.Pictune ‘ Al hacer clic en un icono deben verse sus efectos en el texto
End If Select Case Index
If Botón(3).Picture = fs.Picture Then Case 0
Botón(3).picture = f.Picture If Botón(0).Picture = ns.Picture Then
End If Botón(0).Picture = nb.Picture
‘ Al mover el mouse por el arreglo Boton se eleven los iconos Label1.FontBold = True
Select Case Index Else If Botón(0).Picture = nb.Picture Then
Case 0 Botón(0).Picture = n.Picture
If Botón(0).Picture = n.Picture Then Label1.FontBold = False
Botón(0).Picture = ns.Picture End If
End If Case 1
If Botón(1).Picture = ks.Picture Then If Botón(1).Picture = ks.Picture Then
Botón(1).Picture = k.Picture Botón(1).Picture = kb.Picture
End If Label1.FontItalic = True
If Botón(2).Picture = ss.Picture Then Else If Botón(1).Picture = kb.Picture Then
Botón(2).Picture = s.Picture Botón(1).Picture = k.Picture
End If Label1.FontItalic = False
Case 1 End If
If Botón(0).Picture = ns.Picture Then Case 2
Botón(0).Picture = n.Picture If Botón(2).Picture = ss.Picture Then
End If Botón(2).Picture = sb.Picture
If Botón(1).Picture = k.Picture Then Label1.FontUnderline = True
Botón(1).Picture = ks.Picture Else If Botón(2).Picture = sb.Picture Then
End If Botón(2).Picture = s.Picture
If Botón(2).Picture = ss.Picture Then Label1.FontUnderline = False
Botón(2).Picture = s.Picture End If
End If Case 3
Case 2 Botón(3).Picture = fb.Picture
If Botón(0).Picture = ns.Picture Then End Select
Botón(0).Picture = n.Picture ‘Al Mouse Up en el icono Salir finaliza el programa
End If If Index = 3 Then End
Todas las aplicaciones Windows utilizan cuadros de diálogo estándar que permiten
realizar operaciones comunes como abrir y guardar archivos, establecer opciones de
impresión y seleccionar colores y fuentes. Estos cuadros de diálogo han sido diseñados
dentro del sistema operativo y están disponibles para ser utilizados en el diseño de cualquier
aplicación mediante el uso del control CommonDialog.
8.1 El Control CommonDialog.- Para utilizar estos cuadros de diálogo, todo lo que se
debe hacer es colocar un control CommonDialog en el formulario y llamar al método
apropiado. En tiempo de ejecución, cuando se invoca a un método, se presenta un cuadro
de diálogo, en tiempo de diseño, el control CommonDialog se presenta como un icono en el
formulario.
El control CommonDialog utiliza los siguientes métodos para visualizar cuadros de
diálogo:
Método Acción
ShowOpen Muestra el cuadro de diálogo Abrir
ShowSave Muestra el cuadro de diálogo Guardar como
ShowColor Muestra el cuadro de diálogo Color
ShowFont Muestra el cuadro de diálogo Fuente
ShowPrinter Muestra el cuadro de diálogo Imprimir
ShowHelp Muestra el cuadro de diálogo Ayuda
8.2 Los Cuadros de Diálogo Abrir y Guardar.- Los cuadros de diálogo Abrir y Guardar
permiten manipular archivos de datos. Por medio de ellos se puede salvar los datos, así
como recuperarlos. La figura siguiente muestra el cuadro de diálogo Abrir, por medio del
Usar el cuadro de diálogo Abrir para desplazarse a cualquier otro directorio mediante
la lista desplegable. Buscar y solicitar la ruta y un archivo.
En tiempo de ejecución, cuando el usuario selecciona un archivo y cierra el cuadro de
diálogo, se utiliza la propiedad .FileName para obtener la ruta y el nombre del archivo
seleccionado.
El control CommonDialog crea el mismo cuadro de diálogo Abrir que se utiliza en otras
aplicaciones. Por ejemplo, hacer clic con el botón derecho del mouse en cualquier archivo
que aparece en la lista de este cuadro y aparecerá un menú contextual con el que podrá
cambiar el nombre del archivo, copiarlo, cortarlo, eliminarlo, etc
. El cuadro de diálogo Guardar como es idéntico al cuadro de diálogo Abrir, pero difiere
en los títulos de los botones que hay en la parte inferior derecha.
8.2.1 Propiedades
Propiedad Descripción
CancelError Asignar el valor True a esta propiedad y cuando el usuario haga clic en el botón
‘cancelar’ del cuadro de diálogo, se generará un error que indica a la aplicación que
se quiere detener la operación actual. Todos los cuadros de diálogo comunes
generan el mismo error, el 32755 (la constante Cancel). Proporcionar un gestor de
errores que examine el número del error y si es 32755, detenga la operación.
DefaultExt Esta propiedad se usa para especificar la extensión por defecto de los archivos,
como Txt o Doc, de manera que cuando el usuario abra o guarde un archivo sin
extensión, la especificada en esta propiedad se añada al nombre del archivo.
Filter Esta propiedad se utiliza para especificar el tipo o tipos de archivos que se mostrarán
en la lista de archivos del cuadro de diálogo. Por ejemplo, para mostrar sólo archivos
de texto, debemos especificar:
Diálogo.Filter = “Archivos Txt|*.txt”
Observar que la barra vertical “|” separa la descripción (Archivos Txt) de la extensión
real (*.txt). En caso de que se quiera especificar más de un filtro, cada uno de ellos
debe estar separado del siguiente por la barra vertical. Por ejemplo, para que la lista
muestre archivos con las extensiones Txt y Doc deberá espedficar:
Diálogo.Filter = “Archivos Txt|*.txt|Archivos Doc|*.Doc”
FilterIndex Cuando se especifica más de un filtro, el primero que aparece en la propiedad Fiiter,
pasa a ser el filtro por defecto. Filterlndex permite especificar un filtro distinto del
primero. Utilizando el ejemplo anterior, si a Filterlndex le asignamos el valor 2, el
cuadro de diálogo Abrir mostrará archivos con extensión Doc por defecto.
FileName Luego de seleccionar o escribir un nombre de archivo y hacer clic en el botón
Aceptar del cuadro de diálogo, la ruta y el nombre de este archivo quedan
almacenados en la propiedad FileName. Posteriormente, esta propiedad se puede
8.2.2 Indicadores.- Abierto el cuadro de diálogo, éste actuará de una u otra forma
dependiendo de una serie de indicadores, que el programador facilitará utilizando la
propiedad Flags. Para activar varios indicadores en la propiedad Flags, se debe combinar
sus valores mediante el operador lógico Or.
Constante Descripción
cdIOFNReadOnly Activa la opción “Abrir como sólo lectura” ubicada en la parte inferior del
cuadro de diálogo.
cdIOFNHideReadOnly Oculta la opción “Abrir como sólo lectura”.
cdIOFNFileMustExit Muestra un mensaje de advertencia si el usuario introduce un nombre de
archivo inexistente.
cdIOFNPathMustExit Muestra un mensaje de advertencia si el usuario introduce una ruta de
acceso inexistente.
cdIOFNNochangeDir Impide que el usuario cambie el directorio actual. Usar este indicador para
forzar al usuario a guardar los archivos en una determinada carpeta.
cdIOFNCreatePrompt Muestra un mensaje al usuario preguntando si desea crear un archivo que
no existe.
cdIOFNAllowMultiselect Permite la selección de varios archivos en el cuadro de diálogo Abrir. El
usuario puede seleccionar más de un archivo manteniendo presionada la
tecla Shift y usando las teclas del cursor. Al hacer clic en Aceptar, la
propiedad FileName contendrá una cadena con los nombres de los
archivos seleccionados, separados por espacios.
cdIOFNExtensionDiferent Indica que el usuario utilizó una extensión diferente a la extensión
especificada en la propiedad DefaultExt.
cdIOFNExplorer Muestra una ventana similar al del Explorador.
cdIOFNOverwritePrompt Muestra un mensaje preguntando al usuario si desea sobrescribir en caso
que el archivo seleccionado en el diálogo ‘Guardar como’ exista.
cdIOFNLongNames Permite utilizar nombres de archivo largos.
cdIOFNNoValidate Normalmente el cuadro de diálogo Abrir valida los nombres de los
archivos. Este indicador se activa para saltar este paso de validación.
cdIOFNNoLongNames No permite utilizar nombres de archivos largos.
cdIOFNHelpButton Muestra el botón Ayuda en el cuadro de diálogo.
cdIOFNNoDeferenceLinks No quita la referencia de vínculos. Por defecto, elegir un vínculo hace que
se quite la referencia.
cdIOFNNoReadOnlyReturnInhabilita la selección de archivos con el atributo de Sólo lectura y que no
están en una carpeta protegida contra escritura.
8.3 El Cuadro de Diálogo Fuente.- Este cuadro de diálogo será de mucha utilidad si la
aplicación que se está diseñando trabaja con texto. Permite al usuario seleccionar una
fuente, tamaño o estilo de fuente y algunos efectos especiales como color, subrayado o
tachado.
El cuadro de diálogo Fuente proporciona al usuario las fuentes que hay en la
computadora.
Una vez cerrado el cuadro de diálogo, el control CommonDialog devuelve los atributos
de la fuente seleccionada por medio de las siguientes propiedades:
Propiedad Descripción
FontName Devuelve el nombre de la fuente seleccionada.
FontBold Será True si tiene puesto el atributo “Negrita”.
FontItalic Será True si tiene puesto el atributo “Cursiva”.
FontStrikethru Tendrá el valor True si se seleccionó el efecto “Tachado”. Asignar la constante
CFEffects a la propiedad Flags para usar este efecto.
FontUnderline Tendrá el valor True si se seleccionó el efecto “Subrayado”. Asignar la constante
CFEffects a la propiedad Flags para usar este efecto.
FontSize Devuelve el tamaño de la fuente seleccionada.
Color Devuelve el color seleccionado. Asignar la constante CFEffects a la propiedad
Flags para usar este efecto.
Las propiedades anteriores servirán para conocer la selección que ha efectuado el
usuario. También se puede dar un valor inicial antes de llamar al cuadro de diálogo Fuente,
de tal forma que aparezcan seleccionadas por defecto las características que se indiquen.
8.3.2 Indicadores.- Por medio de la propiedad Flags se puede utilizar uno o varios
indicadores, mediante los cuales el cuadro de diálogo sabrá qué tipos de letra puede
seleccionar el usuario y qué acciones adicionales deberá llevar a cabo. La siguiente tabla
muestra estos indicadores:
Constante Descripción
cdICFTTOnIy Hace que el cuadro de diálogo muestre sólo fuentes True Type.
cdICFScreenFonts Hace que el cuadro de diálogo muestre sólo las fuentes disponibles para la
pantalla.
cdICFPrinterFonts Hace que el cuadro de diálogo muestre sólo fuentes disponibles para
impresora.
cdICFBoth Hace que el cuadro de diálogo muestre fuentes de pantalla y de impresora.
cdICFScalableOnly Hace que en el cuadro de diálogo sólo aparezcan fuentes escalables.
cdICFFixedPitchOnly Hace que el cuadro de diálogo muestre sólo fuentes de espaciado fijo.
cdICFEEffects Permite usar las opciones de color, tachado y subrayado.
cdICFNoFaceSel No seleccionar los nombres de fuentes.
8.4 El cuadro de diálogo Imprimir.- Este cuadro de diálogo permite al usuario elegir la
impresora, el tamaño del papel, el número de copias que se desea imprimir y qué páginas se
van a imprimir.
Luego de que el usuario haya elegido la impresora y haya hecho clic sobre el botón
Aceptar, el control CommonDialog devuelve al programa el nombre de la impresora y los
atributos de impresión a través de las siguientes propiedades:
Propiedad Descripción
Copies (Copias) Especifica el número de copias que se van a imprimir.
FromPage (Desde la página) Especifica la página en la que comenzará la impresión
ToPage (Hasta la página) Especifica la página en la que se detendrá la impresión
HDC Específica el contexto del dispositivo de la impresora seleccionada
PrinterDefault Asignar el valor True a esta propiedad y la nueva impresora
seleccionada por el usuario pasará a ser la impresora por defecto
Dependiendo de los indicadores que se activen en la propiedad Flags, el cuadro de
diálogo Print actuará de una forma u otra.
8.4.1 Indicadores
Constante Descripción
cdIPDAIIPages Devuelve o establece el estado de la opción Todo.
cdIPDPageNums Devuelve o establece el estado de la opción Páginas.
cdIPDNoPageNums Desactiva el botón de opción Páginas.
cdIPDSelection Devuelve o establece el estado de la opción Selección.
cdIPDNoSelection Desactiva el botón de opción Selección.
cdIPDDisablePrintToFile
Desactiva la casilla de activación Imprimir en un archivo.
cdIPDHldePrintToFile Oculta la Casilla de activación Imprimir en un archivo.
cdIPDPrintToFile Devuelve o establece el estado de la casilla de activación Imprimir en un
archivo.
cdIPDCollate Devuelve o establece el estado de la casilla de activación Intercalar
copias.
cdIPDPrintSetup El sistema presenta directamente el cuadro de diálogo Configurar
impresora.
cdIPDUseDevModeCopies Desactiva Número de copias si la impresora no soporta la impresión de
múltiples copias.
8.5 El Cuadro de Diálogo Color.- Este cuadro de diálogo permite que el usuario seleccione
un color de una paleta o definir un color personalizado a partir de los componentes rojo,
verde y azul.
El cuadro de diálogo Color sólo tiene una propiedad: Color. Mediante esta propiedad se
podrá obtener el color seleccionado en tiempo de ejecución. Asignar un color a la propiedad
Color y asignar la constante CCRGBInit en la propiedad Flags para que cuando se abra el
cuadro de diálogo, aparezca seleccionado un color inicial.
El cuadro de diálogo Color muestra sólo algunos colores, pero el usuario puede definir
un nuevo color haciendo clic en el botón Definir colores personalizados.
8.5.1 Indicadores
Constante Descripción
cdCCFullOpen Muestra todo el cuadro de diálogo, incluyendo la sección “Definir colores
personalizados” que aparece en la parte derecha del cuadro.
cdCCPreventFullOpen Impide que el usuario acceda a la sección “Definir colores personalizados”.
cdCCRGBInit Establece el valor inicial del color, cuando se abre el cuadro de diálogo.
8.6 Creación de un Mini Editor.- Se creará un mini editor. Al ejecutar esta aplicación, la
interfaz de usuario deberá presentar una barra de menús con las opciones Archivo, Edición y
Formato; una barra de herramientas con botones de acceso directo y una barra de estado. El
menú Archivo deberá contener comandos que permitan crear, abrir, guardar e imprimir
archivos. El menú Edición, comandos que permitan copiar, cortar y pegar texto. El menú
Formato, un comando que permita aplicar estilos de fuente al texto seleccionado. Una barra
de herramientas, como se sabe, presenta un conjunto de botones que permiten ejecutar los
comandos más comúnmente utilizados; de manera que, la barra de herramientas de nuestro
mini editor presentará botones que permitirán crear, abrir, guardar e imprimir archivos, así
como también, copiar, cortar y pegar texto. La barra de estado presentará tres paneles: el
primer panel mostrará un mensaje relacionado con la acción que estemos realizando; el
segundo mostrará el texto MAYUS en negrita si la tecla Caps Lock está activa y atenuada si
no lo está; el tercer panel mostrará la hora. Aspecto de la interfaz de usuario al ejecutar el
programa MiniEditor.
1. Hacer clic en la opción Nuevo proyecto del menú Archivo para crear un nuevo proyecto.
2. Hacer clic sobre el formulario para seleccionarlo.
3. Hacer clic sobre el botón Editor de menús para visualizar el cuadro de diálogo Editor de
menús. Crear la barra de menús según el siguiente detalle:
Caption Name Shortcut
&Archivo Archivo
....&Nuevo ArchivoNuevo Ctrl+N
....&Abrir ArchivoAbrir Ctrl+A
....- LíneaSeparadoral
....&Guardar ArchivoGuardar Ctrl+G
....- LíneaSeparadora2
....&Imprimir ArchivoImprimir Ctrl+I
....- LíneaSeparadora3
....&Salir ArchivoSalir Ctrl+S
&Edición Edición
....&Copiar EdiciónCopiar Ctrl+C
....C&ortar EdiciónCortar Ctrl+O
....&Pegar EdiciónPegar Ctrl+P
&Formato Formato
....&Fuente FormatoFuente Ctrl+F
4 Si el cuadro de herramientas no está activo, hacer clic en el botón Cuadro de
herramientas
5 Poner sobre el formulario una caja de texto. Para ello, hacer doble clic sobre el control
TextBox en el cuadro de herramientas.
Guardar el proyecto con el nombre MiniEditor.Vbp y el formulario con el nombre
MiniEditor.Frm. Cambiar las propiedades de los controles Form y TextBox como sigue:
Control Propiedad Valor
Form Name Forml
Caption Mi Editor
Icon C:\Gráficos\Note14.icon
TextBox Name Text1
Multiline True
ScrollBars 3-Both
Text (Texto)
Crear la barra de herramientas. Para ello, colocar un control ImageList en el formulario.
Si el ícono del control ImageList no aparece en el cuadro de herramientas, hacer clic en la
opción Componentes del menú Proyecto. En el cuadro de diálogo Componentes, habilitar la
opción Microsoft Windows Common Controls 6.0 y hacer clic en Aceptar.
1 En el cuadro de herramientas, hacer doble clic en el ícono del control ImageList. Este
aparece en el centro del formulario.
2 En el formulario, situar el puntero del mouse sobre el control ImageList y hacer clic con el
botón derecho del mouse.
3 En el menú emergente que aparece, seleccionar la opción Propiedades. Visual Basic
muestra el cuadro de diálogo Páginas de propiedades.
4 Este cuadro presenta tres pestañas: General, Imágenes y Color. En la pestaña General
indique la altura y ancho de los iconos que se incluirán en la barra de herramientas. Esta
propiedad es de sólo lectura si la barra de herramientas contiene imágenes
5 Seleccionar la pestaña Imágenes para elegir las imágenes que se insertarán en la barra
de herramientas.
6 Hacer dic en el botón Insertar Imagen y Visual Basic visualizará el cuadro de diálogo
Seleccionar imagen, desde el cual se podrá seleccionar la imagen que se incluirá en la
Ing. Hermas Herrera Callejas Página : 7 de 19
Computación para Ingeniería I y Laboratorio Cap.8–Visual Basic–Cuadros de Diálogo Comunes
barra de herramientas.
7 Continuar haciendo clic en este botón hasta completar las imágenes restantes, finalmente
hacer clic en el botón Aceptar.
8 En el cuadro de herramientas, hacer doble clic en el ícono del control ToolBar para incluir
una barra de herramientas en el formulario.
9 Hacer clic con el botón derecho del mouse sobre la barra de herramientas y en el menú
emergente que aparece, seleccionar la opción Propiedades.
Luego de ingresar todas las propiedades para cada uno de los botones que aparecerán
en la barra de herramientas, hacer clic en Aceptar. La interfaz de usuario tendrá aspecto de
la figura mostrada:
2. En el formulario, desplazar el puntero del mouse sobre la barra de estado y hacer clic con
el botón derecho del mouse. En el menú emergente que aparece, seleccionar la opción
Propiedades. Visual Basic visualiza el cuadro de diálogo Páginas de propiedades:
End Sub
Private Sub ArchivoImprimir_Click()
Call Imprimir ‘Llama al procedimiento Imprimir.
End Sub
Private Sub ArchivoSalir_Click()
End ‘Termina la ejecución del programa.
End Sub
Private Sub EdiciónCopiar_Click()
Call Copiar ‘Llama al procedimiento Copiar
End Sub
Private Sub EdiciónCortar_Click()
Call Cortar ‘Llama al procedimiento Cortar
End Sub
Private Sub EdiciónPegar_Click()
Call Pegar ‘Llama al procedimiento Pegar
End Sub
Private Sub FormatoFuente_Click()
Call Fuente ‘Llama al procedimiento Fuente
End Sub
Nota: Call transfiere el control a un procedimiento Sub o a un procedimiento Function.
Asociar un procedimiento a la barra de herramientas. En el formulario, hacer doble clic
sobre la barra de herramientas. La ventana de código abre el procedimiento
Toolbar1_ButtonClick. Digitar el siguiente código:
Private Sub Toolbar1_ButtonClick(ByVal Button As MSConnect1Lib.Button)
Select Case Button.Key
Case "BotónNuevo"
Call Nuevo
Case "BotónAbrir"
Call Abrir
Case "BotónGuardar"
Call Guardar
Case "BotónImprimir"
Call Imprimir
Case "BotónCopiar"
Call Copiar
Case "BotónCortar"
Call Cortar
Case "BotónPegar"
Call Pegar
End Select
End Sub
Digitar el código de los procedimientos Nuevo, Abrir, Guardar, Imprimir, Copiar, Cortar y
Pegar.
Public Sub Nuevo()
'Procedimiento para editar un nuevo archivo y guardar las modificaciones realizadas en el mismo
If Modificado Then
rpta = MsgBox("Desea guardar los cambios realizados en el documento?", vbYesNo, "Mi Editor")
If rpta = vbNo Then
Exit Sub
Else
Call Guardar
End If
End If
Ing. Hermas Herrera Callejas Página : 12 de 19
Computación para Ingeniería I y Laboratorio Cap.8–Visual Basic–Cuadros de Diálogo Comunes
StatusBar1.Panels(1).Text = " " 'Borra el mensaje del primer panel de la barra de estado
Modificado = False 'Desactiva el indicador de modificado
Exit Sub
ManipularErrorAbrir:
If Err.Number = 32755 Then
StatusBar1.Panels(1).Text = " "
Exit Sub
Else
MsgBox "Error desconocido al abrir el archivo"
End If
End Sub
Public Sub Guardar()
'Procedimiento para guardar un archivo de texto
On Error GoTo ManipularErrorGuardar
StatusBar1.Panels(1).Text = "Guardando archivo"
With CuadroDeDiálogo
.CancelError = True
.DefaultExt = "txt"
.Filter = "Texto|*.txt|Todos los archivos|*.*"
'Muestra un mensaje preguntando si desea sobreescribir el archivo
.Flags = cdlOFNOverwritePrompt
.ShowSave 'Muestra el cuadro de diálogo Guardar como
Canal = FreeFile
Open .FileName For Output As #Canal
Form1.Caption = .FileName
End With
'Escribir en el archivo los datos necesarios
With Text1
Write #Canal, .Text, .FontName, .FontSize, .FontBold, .FontItalic, .FontUnderline, .FontStrikethru,
.ForeColor
End With
Close #Canal
StatusBar1.Panels(1).Text = " "
Modificado = False
Exit Sub
ManipularErrorGuardar:
If Err.Number = 32755 Then
StatusBar1.Panels(1).Text = " "
Exit Sub
Else
MsgBox "Error desconocido al guardar el archivo"
End If
End Sub
Public Sub Imprimir()
'Procedimiento para imprimir el aspecto actual del formulario
Dim copias As Byte
On Error GoTo ManipularErrorImprimir
StatusBar1.Panels(1).Text = "Imprimiendo archivo"
With CuadroDeDiálogo
.CancelError = True
.Flags = cdlPDNoSelection Or cdlPDNoPageNums Or cdlPDHidePrintToFile
.PrinterDefault = True
.ShowPrinter 'Muestra el cuadro de diálogo Imprimir
copias = .Copies
End With
Printer.Copies = copias 'Fijar el número de copias
Printer.Font = Text1.Font 'Tomar el estilo de texto
Printer.Print Text1.Text 'Imprimir el texto actual
Printer.EndDoc 'Fin de impresión
StatusBar1.Panels(1).Text = " "
Exit Sub
ManipularErrorImprimir:
If Err.Number = 32755 Then
StatusBar1.Panels(1).Text = " "
Exit Sub
Else
MsgBox "Error desconocido"
End If
End Sub
Public Sub Copiar()
'Una copia del texto seleccionado en el cuadro de texto Text1 pasa al portapapeles (Clipboard)
Clipboard.SetText Text1.SelText
EdiciónPegar.Enabled = Trae 'Activa la opción Pegar del menú Edición
Toolbar1.Buttons(7).Enabled = Trae 'Activa el boton Pegar de la barra de erramientas
End Sub
Public Sub Cortar()
'Una copia del texto seleccionado en el cuadro de texto Text1 pasa al portapapeles (Clipboard)
Clipboard.SetText Text1.SelText
Text1.SelText = "" 'Borra el texto seleccionado
EdiciónCopiar.Enabled = False 'Inhabilita la opción Copiar del menú Edición
EdiciónPegar.Enabled = Trae 'Habilita la opción Pegar del menú Edición
FormatoFuente.Enabled = False 'Inhabilita la opción Fuente del menú Formato
Toolbar1.Buttons(5).Enabled = False 'Inhabilita el boton Copiar de la barra de herramientas
Toolbar1.Buttons(6).Enabled = False 'Inhabilita el boton Cortar de la barra de herramientas
Toolbar1.Buttons(7).Enabled = True 'Habilita el boton Pegar de la barra de herramientas
End Sub
Public Sub Pegar()
'Transfiere texto desde el portapapeles hacia el cuadro de texto Text1
Text1.SelText = Clipboard.GetText()
End Sub
Public Sub Fuente()
'Procedimiento que modifica el estilo del texto
On Error GoTo ManipularErrorFuente
StatusBar1.Panels(1).Text = "Aplicando estilo"
With CuadroDeDiálogo
.CancelError = True
FontName = Text1.FontName 'Fijar el estilo actual en el cuadro de diálogo
.FontSize = Text1.FontSize
.FontBold = Text1.FontBold
.FontItalic = Text1.FontItalic
.FontUnderline = Text1.FontUnderline
.FontStrikethru = Text1.FontStrikethru
.Color = Text1.ForeColor
.Flags = cdlCFBoth Or cdlCFEffects
ShowFont 'Muestra el cuadro de diálogo Fuente
Text1.FontName = .FontName 'Aplica al cuadro de texto Text1 el estilo elegido
Text1.FontSize = .FontSize
Text1.FontBold = .FontBold
Text1.FontItalic = .FontItalic
Text1.FontUnderline = .FontUnderline
Text1.FontStrikethru = .FontStrikethru
Text1.ForeColor = .Color
End With
StatusBar1.Panels(1).Text = " "
Exit Sub
ManipularErrorFuente:
If Err.Number = 32755 Then
StatusBar1.Panels(1).Text = " "
Exit Sub
Else
MsgBox "Error desconocido"
End If
End Sub
Asociar un procedimiento al formulario accionado por el suceso Unload. Cuando el
usuario finalice el programa, este procedimiento guardará las modificaciones realizadas en el
texto
Private Sub Form_Unload(Cancel As Integer)
If Modificado Then
rpta = MsgBox("Desea guardar los cambios realizados en el documento?", vbYesNo, "Mi Editor")
If rpta = vbNo Then
Exit Sub
Else
Call Guardar
End If
End If
End Sub
Asociar un procedimiento al cuadro de texto Text1 accionado por el suceso Change.
Cuando el usuario realice alguna modificación en el cuadro de texto Textl, este procedimiento
activará la variable Modificado.
1. Hacer doble clic en el cuadro de texto Text1. La ventana de código muestra el
procedimiento Text1_Change.
2. Digitar el siguiente código:
Private Sub Text1_Change()
Modificado = True
End Sub
Asociar un procedimiento al cuadro de texto Text1 accionado por el suceso MouseUp.
1. Hacer doble en el cuadro de texto Text1
2. Desplegar el cuadro de lista Procedimientos y seleccionar el suceso MouseUp. La
ventana de código abre el procedimiento Text1_MouseUp.
3. Digitar el siguiente código:
Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Habilita/Inhabilita el botón Copiar si Seleccionó/No seleccionó texto en el cuadro de texto Text1.
Toolbar1.Buttons(5).Enabled = (Text1.SelLength > 0)
'Habilita/Inhabilita el botón Cortar si Seleccionó/No seleccionó texto en el cuadro de texto Text1.
Toolbar1.Buttons(6).Enabled = (Text1.SelLength > 0)
'Habilita/Inhabilita la opción Copiar del menú Edición si Seleccionó/No seleccionó
'texto en el cuadro de texto Text1.
EdiciónCopiar.Enabled = (Text1.SelLength > 0)
8.7 Creación de un Programa que Visualiza Imágenes.- Crear un programa que permita
visualizar imágenes. Al ejecutar esta aplicación, la interfaz de usuario debe presentar dos
opciones: Abrir archivo y Salir. La opción Abrir archivo debe permitir la selección de un
archivo de imagen y la opción Salir finalizar la ejecución del programa. La interfaz de usuario
debe ser similar a la siguiente ilustración:
Observar que en este formulario hay dos etiquetas: Label1 y Label2; un control
PictureBox y un control CommonDialog. Modificar las propiedades de estos controles:
Control Propiedad Valor
Form Name Form1
Caption Imágenes
BorderStyle 5-Sizable ToolWindow
BackColor &H80000001&
Label Name Label1
AutoSize True
BackStyle 0-Transparent
BorderStyle 0-None
Caption Abrir imagen
Font Comic Sans MS
ForeColor &H000000FF&
Label Name LabeI2
AutoSize True
BackStyle 0-Transparent
BorderStyle 0-None
Caption Salir
Font Comic Sans MS
ForeColor &H000000FF&
PictureBox Name Picture1
BorderStyle 0-None
Visible False
Luego de diseñar la interfaz de usuario, escribir el código de la aplicación.
Asociar un procedimiento al control Label1. En el formulario, hacer doble clic sobre el
control Label1 En la ventana de código, desplegar el cuadro de lista Procedimientos y
seleccionar el suceso MouseUp. Escribir el siguiente código:
Private Sub Label1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
On Error GoTo ManipularErrorAbrir
9.2 Propiedades
Propiedad Descripción
AllowUserResizing Esta propiedad permite redimensionar el ancho de las columnas o la altura de las
filas. Para ello, en la columna o fila fija, situar el puntero del Mouse sobre la línea
divisoria de las celdas y arrastrar hasta obtener el tamaño adecuado. La
propiedad AllowUserResizing presenta estas opciones:
0-flexResizeNone El usuario no puede cambiar el tamaño de las celdas.
1-flexResizeColumns El usuario sólo puede cambiar el ancho de las columnas.
2-flexResizeRows El usuario sólo puede cambiar la altura de las filas.
3-flexResizeBoth El usuario puede cambiar el tamaño de filas y columnas.
Cols Determina el número total de columnas que tendrá el control MSFlexGrid.
Rows Determina el número total de filas que tendrá el control MSFlexGrid.
FixedCols Define el número total de columnas fijas no desplazables que tendrá el control.
FixedRows Determina el número total de filas fijas no desplazables que tendrá el control.
FormatString Permite establecer en tiempo de diseño el ancho de las columnas, las
alineaciones y el texto de las filas y columnas fijas del control MSFlexGrid. La
propiedad FormatString está compuesta por dos segmentos separados por
barras verticales (|). El texto entre dos barras define una nueva columna o fila y
puede contener también los siguientes caracteres de alineación:
< Alinea la columna a la izquierda.
A Centra la columna.
> Alinea la columna a la derecha.
ColWidth Permite ajustar el ancho de una celda. Especificar en twips el nuevo ancho.
RowHeight Permite ajustar la altura de una celda. Especificar en twips la nueva altura de la
celda. Por ejemplo, las siguientes instrucciones amplían la segunda fila y la
tercera columna de la rejilla a 1500 twips:
Número de la fila cuyo tamaño es modificado.
MSFlexGrid1.RowHeight(2) = 1500
MSFlexGrid1.ColWidth(3) = 1500 Medidas en twips.
Número de la columna cuyo tamaño es modificado.
ScrollBars Permite utilizar barras de desplazamiento para tener acceso a cualquier parte del
control MSFlexGrid. Para ello, asignar uno de estos valores a la propiedad
ScrollBars:
0-FlexScrollBarNone Hace que la rejilla no tenga barra de desplazamiento.
1-FlexScrollBarHorizontal Hace que la rejilla tenga una barra de desplazamiento
horizontal.
2-FlexScrollBarVertical Hace que la rejilla tenga una barra de desplazamiento
vertical.
3-FlexScrollBarBoth Hace que la rejilla tenga ambas barras de
desplazamiento.
SelectionMode Permite restringir la forma en que serán seleccionadas las celdas. Para ello,
asignar uno de estos valores a la propiedad SelectionMode:
0-FlexSelectionFree Permite seleccionar celdas libremente, como en una
hoja de cálculo.
1-FlexSelectionByRow Fuerza la selección por filas.
2-FlexSelectionByColumn Fuerza la selección por columnas.
FillStyle Determina si al establecer la propiedad TextMatrix o una de las propiedades de
formato de celda del control MSFlexGrid los cambios se aplican a todas las
celdas seleccionadas. La propiedad FillStyle presenta estas opciones:
0-FlexFillSingle Los cambios afectan sólo a la celda activa.
1-FlexFillRepeat Los cambios afectan a todas las celdas seleccionadas.
9.3 Sucesos
Suceso Descripción
EnterCell Este suceso se produce cuando se selecciona una nueva celda.
LeaveCell Este suceso se produce cuando se abandona una celda.
9.4 Introducir datos en una celda.- La intersección de una fila y una columna conforman
una celda. Para introducir un valor en una celda se utiliza la propiedad TextMatrix. Por
ejemplo, para introducir la palabra “Préstamo” en la celda 0, 2 (fila 0, columna 2) escribir la
siguiente instrucción de programa:
MSFlexGrid1.TextMatrix(0,2) = ”Préstamo”
Para introducir el número 3250 en la celda 3, 2 (fila 3, columna 2) escribir la siguiente
instrucción:
MSFlexGrid1.TextMatrix(3, 2) = 3250
de la celda inferior derecha del rango utilizando las propiedades RowSel y ColSel. Por
ejemplo, las siguientes instrucciones seleccionarán un rango de 8 celdas (celda 3, 2 a 6, 3):
MSFlexGrid1.Row = 3
MSFlexGrid1.Col = 2
MSFlexGrid1.RowSel = 6
MSFlexGrid1.ColSel = 3
La siguiente figura muestra la selección anterior:
Observar que, de todas las celdas seleccionadas, la primera no aparece resaltada. Esta
se distingue del resto porque también es la celda activa.
Para restringir la forma en que se seleccionan las celdas utilizar la propiedad
SelectionMode en la Ventana Propiedades.
9.5 Despliegue de información en las celdas.- Para ver con detalle la manera de utilizar
el control MSFlexGrid, se desarrollará una aplicación que calcule la cantidad requerida como
pagos periódicos para amortizar un préstamo en un periodo de tiempo especificado. Los
datos que hay que introducir son el Capital prestado, el tipo de interés por periodo y el plazo
(número de cuotas a pagar). Este programa supone que todos los plazos son iguales.
El cálculo se basa en la fórmula:
Ci (1 i ) N
P
(1 i ) N 1
Donde:
P = pago periódico (cuota)
i = tipo de interés periódico
C = préstamo (Capital prestado)
N = número de pagos (plazo)
Diseñar una interfaz similar a la siguiente ilustración:
1. Hacer clic en el comando ‘Nuevo proyecto’ del menú Archivo para crear una nueva
aplicación.
2. Guardar el formulario con nombre Plandepagos.frm y la aplicación con nombre
Plandepagos.vbp.
3. Hacer clic en el comando Componentes del menú Proyecto. Pulsar sobre la ficha
Controles del cuadro de diálogo Componentes
4. Introducir una marca de verificación en el elemento Microsoft FlexGríd Control 6.0 y hacer
clic en Aceptar.
El siguiente cuadro resume las propiedades asignadas a cada uno de los controles:
Control Propiedad Valor
Image Name Boton
Index 0
Picture CalcularIn.bmp
Image Name Boton
Index 1
Picture Salir.bmp
Image Name Salir
Picture Salir.bmp
Visible False
Image Name SalirB
Picture SalirBaj.bmp
Visible False
Image Name SalirS
Picture SalirSob.bmp
Visible False
Image Name Calcular
Picture Calcular.bmp
Visible False
Image Name CalcularB
Picture CalcularBaj.bmp
Visible False
Image Name CalcularS
Picture CalcularSob.bmp
Visible False
Image Name CalcularI
Picture CalcularIn.bmp
Visible False
Luego de asignar las propiedades a cada uno de los controles Image, seleccionar el
control MSFlexGrid y ampliarlo de modo que COPE el ancho del formulario, cubriendo
algunos controles Image que, al no ser visibles en ejecución, no serán afectados en su
funcionalidad. El formulario quedará similar a la siguiente ilustración:
Asociar procedimientos al cuadro de texto Interés accionados por los sucesos Change
y KeyPress. Sólo debe permitir el ingreso de valores numéricos en el cuadro de texto Interés
y al presionar la tecla Enter, el cursor debe ubicarse en la casilla Capital.
1. Hacer doble en el cuadro de texto Interés. La ventana de código abre el procedimiento
Interés_Change.
2. Digitar el siguiente procedimiento:
Private Sub Interes_Change()
If IsNumeric(Interes.Text) And Val(Interes.Text) >= 0 Then
i = Val(Interes.Text) / 100
sw3 = True
If sw1 And sw2 And sw3 Then
Boton(0).Picture = Calcular.Picture
End If
Else
Boton(0).Picture = CalcularI.Picture
MsgBox "Introduzca solo números positivos", , "Error de ingreso"
sw3 = False
End If
End Sub
Luego seleccionar el suceso KeyPress y digitar el siguiente código
Private Sub Interes_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Capital.SetFocus
End If
End Sub
Asociar un procedimiento al array de controles Botón accionado por el suceso
MouseMove. Cuando el usuario desplace el puntero del mouse sobre uno de estos dos
botones, este procedimiento se ejecutará y cambiará el gráfico del botón.
1. Hacer doble clic sobre uno de los controles Botón.
2. En la ventana de código, desplegar el cuadro de lista Procedimientos y seleccionar el
suceso MouseMove.
3. Digitar el siguiente procedimiento:
Private Sub Boton_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Select Case Index
Case 0
If Boton(0).Picture = Calcular.Picture Then
Boton(0).Picture = CalcularS.Picture
End If
Boton(1).Picture = Salir.Picture
Case 1
If Boton(0).Picture = CalcularS.Picture Then
Boton(0).Picture = Calcular.Picture
End If
Boton(1).Picture = SalirS.Picture
End Select
End Sub
Asociar un procedimiento al formulario accionado por el suceso MouseMove. Cuando
el usuario desplace el puntero del mouse sobre el formulario, este procedimiento se ejecutará
y cambiará los gráficos de los controles Botón.
1. Hacer doble clic en el formulario.
End Select
End Sub
Asociar otro procedimiento al array de controles Botón accionado por el suceso
MouseUp. Cuando el usuario sitúe el puntero del mouse sobre el botón Botón(0) o Botón(1),
pulse y suelte el botón izquierdo del mouse, se ejecutará este procedimiento y cambiará el
gráfico del control Botón(0) o finalizará la ejecución del programa.
1. Hacer doble clic sobre uno de los controles Botón.
2. En la ventana de código, desplegar el cuadro de lista Procedimientos y seleccionar el
suceso MouseUP.
3. Digitar el siguiente código:
Private Sub Boton_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Select Case Index
Case 0
If Boton(0).Picture = CalcularB.Picture Then
Boton(0).Picture = Calcular.Picture
End If
Case 1
End
End Select
End Sub
Digitar el procedimiento LimpiarRejilla. Este procedimiento limpiará todos los datos de
las celdas en el control MSFlexGrid.
Public Sub limpiarrejilla()
With Rejilla
.Rows = n + 4
.Row = 1
.Col = 0
.RowSel = .Rows - 1
.ColSel = .Cols - 1
.FillStyle = flexFillRepeat
.Text = ""
End With
End Sub
Presionar la tecla F5 para ejecutar el programa. Introducir el Capital, Nro. de periodos
(Plazo) y el Interés por periodo.
Rows 25
Cols 12
Enabled False
FixedRows 1
FixedCols 0
FormatString Cédula |<Paterno |<Materno |<Nombres |
|<Dirección |<F. de Nacim |<Gén |<Sw |
ScrollBars 3-flexScrollBarBoth
CommonDialog Name Abrir
Label Name Mensaje1
Caption ““
AutoSize True
Label Name Mensaje2
Caption ““
AutoSize True
Label Name Mensaje3
Caption ““
AutoSize True
Hacer Clic en el menú Proyecto y seleccionar el Sub-menú Agregar Módulo. Cuando
el Visual Basic despliegue el cuadro de diálogo Agregar módulo, hacer clic en el comando
Abrir. En la ventana que abre el Visual Basic, digitar la estructura del archivo de alumnos con
nombre de registro Reg_Alumnos, al final definir la variable Alumnos de tipo Reg_Alumnos
para que tenga la misma estructura de datos de acuerdo al siguiente detalle
Type Reg_Alumnos
Cédula As String * 10
Paterno As String * 20
Materno As String * 20
Nombres As String * 30
Dirección As String * 40
Fecha_Nac As Date
Género As String * 1
SW As String * 1
End Type
Global Alumnos As Reg_Alumnos
Guardar el formulario con el nombre MantDatos.frm y la aplicación con el nombre
MantDatos.vbp. La interfaz debe tener el siguiente aspecto:
If Fila >= 21 Then .AddItem (" ") 'Añade una nueva fila al control MSFlexGrid
End If
Next i
Campo.Text = .TextMatrix(1, 0)
End With
Else
Exit Sub
End If
End Sub
Para el mantenimiento del archivo de alumnos, cuyo nombre se definió al crearlo en
una práctica anterior, el usuario debe modificar, ingresar y eliminar registros. Para eliminar un
registro, el usuario debe seleccionar el registro situando el puntero del mouse sobre el
registro y haciendo clic sobre él. Seguidamente, debe hacer clic en el botón Eliminar.
Para ingresar un nuevo registro, el usuario debe hacer clic con el botón derecho del
mouse sobre el control MSFlexGrid (el control Campo debe aparecer enfocado después del
último registro), ingresar los datos del nuevo registro y hacer clic en el botón Guardar.
Para modificar los campos de un registro, el usuario debe mantener presionada la
tecla Alt, situar el puntero del mouse sobre uno de los campos de un determinado registro y
hacer clic. Luego de realizar las modificaciones en el campo y presionar la tecla Enter, el
usuario debe hacer clic en el botón Modificar.
Asociar un procedimiento al control MSFlexGrid accionado por el suceso MouseUp.
Este procedimiento debe responder a las siguientes acciones realizadas por el usuario: un
clic con el botón izquierdo del mouse sobre un registro, un clic con el botón derecho del
mouse sobre el control MSFlexGrid y un clic sobre un campo mientras la tecla Alt está
presionada.
Si el usuario hace clic con el botón izquierdo del mouse sobre un registro, el registro
debe quedar seleccionado y la variable AuxCod debe almacenar el código del mismo. Si el
usuario hace clic con el botón derecho del mouse sobre el control MSFlexGrid, el programa
debe seleccionar la celda ubicada más a la izquierda después del último registro. Si el
usuario mantiene presionada la tecla Alt y pulsa el botón izquierdo del mouse sobre una de
las celdas del control MSFlexGrid, el programa debe seleccionar la celda, guardar el código
del registro que contiene a la celda en la variable AuxCodigo y el número de la fila en la
variable XFila.
1. Hacer doble clic en el control MSFlexGrid. En la ventana de código desplegar el cuadro de
lista Procedimientos y seleccionar el suceso MouseUp. La ventana de código abre el
procedimiento Rejilla_MouseUp.
2. Digitar el siguiente código:
Private Sub Rejilla_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
Mensaje2.Caption = " "
Mensaje3.Caption = " "
With Rejilla
'Si se pulsó el botón izquierdo del mouse.
If Button = 1 Then
MantDatos.Caption = "Eliminar registros"
Mensaje1.Caption = "Haga clic en el botón Eliminar para borrar el registro seleccionado."
Guardar.Enabled = False 'Inhabilita el botón de comando Guardar
Modificar.Enabled = False 'Inhabilita el botón de comando Modificar
Eliminar.Enabled = True 'Habilita el botón de comando Eliminar
.Row = .MouseRow: .Col = 0 'Selecciona la fila con el registro que será eliminado.
.RowSel = .MouseRow: .ColSel = .Cols - 1
AuxCéd = .Text 'La Cédula del registro se almacena en la variable AuxCéd
Ing. Hermas Herrera Callejas Página: 14 de 19
Computación para Ingeniería I y Laboratorio CAP 9 – Visual Basic – El control MSFlexGrid
End If
If Button = 2 Then 'Se pulso el botón derecho del mouse.
MantDatos.Caption = "Ingreso de datos"
Mensaje1.Caption = "Ingrese los datos en todos los campos y haga clic en el botón Guardar"
Guardar.Enabled = True 'Habilita el botón de comando Guardar
Modificar.Enabled = False 'Inhabilita el botón de comando Modificar
Eliminar.Enabled = False 'Inhabilita el botón de comando Eliminar
'Selecciona la celda a partir de la cual se ingresarán los datos del nuevo registro.
.Row = Fila + 1
.Col = 0
End If
If Button = 1 And Shift = 4 Then 'Se pulsó la tecla Alt y el botón izquierdo del mouse.
MantDatos.Caption = "Modificar registros"
Mensaje1.Caption = "Presione la tecla Enter para confirmar el cambio realizado"
Mensaje2.Caption = " "
Mensaje3.Caption = " "
Guardar.Enabled = False 'Inhabilita el botón de comando Guardar
Modificar.Enabled = True 'Habilita el botón de comando Modificar
Eliminar.Enabled = False 'Inhabilita el botón de comando Eliminar
.Row = .MouseRow 'Selecciona la celda en la que se hizo clic.
.Col = .MouseCol
AuxCédula = .TextMatrix(.Row, 0) 'La Cédula del registro se almacena en variable AuxCédula.
'El número de la fila en la que se encuentra la celda seleccionada es almacenado en la variable XFila.
XFila = .Row
End If
End With
End Sub
Asociar otro procedimiento al control MSFlexGrid accionado por el suceso EnterCell.
El suceso EnterCell tiene lugar cada vez que se selecciona una nueva celda. El
procedimiento deberá:
1. Borrar el contenido del cuadro de texto Campo.
2. Ocultar el cuadro de texto Campo.
3. Situar el cuadro de texto Campo sobre la celda seleccionada y ajustar su tamaño al de ésta.
4. Asignar el contenido de la celda seleccionada a la propiedad Text del cuadro de texto Campo.
5. Visualizar el cuadro de texto Campo.
6. Mover el enfoque al cuadro de texto Campo.
Seguir estos pasos para asociar un procedimiento al control MSFIexGrid accionado
por el suceso EnterCell:
1. Hacer doble clic en el control MSFIexGríd. En la ventana de código desplegar el cuadro
de lista Procedimientos y seleccionar el suceso EnterCell. La ventana de código abre el
procedimiento Rejilla_EnterCell.
2. Digitar el siguiente código:
Private Sub Rejilla_EnterCell()
Campo.Text = " " 'Borra el contenido del control TextBox
Campo.Visible = True 'Oculta el control TextBox
Campo.Top = Rejilla.Top + Rejilla.CellTop 'Sitúa el control TextBox sobre la celda seleccionada
Campo.Left = Rejilla.Left + Rejilla.CellLeft
'Ajusta el tamaño del control TextBox al tamaño de la celda seleccionada
Campo.Width = Rejilla.CellWidth
Campo.Height = Rejilla.CellHeight
'Asigna el contenido de la celda seleccionada a la propiedad Text del control TextBox
Campo.Text = Rejilla.Text
Guardar.Enabled = False
End Sub
Asociar un procedimiento al botón de comando Modificar accionado por el suceso
Click. Cuando el usuario haga clic en este botón, los datos modificados de una determinada
fila del control MSFlexGrid deben ser almacenados en el archivo de alumnos cuyo nombre se
definió al crearlo en una práctica anterior.
1. Hacer doble clic en el botón de comando Modificar. La ventana de código muestra el
procedimiento Modificar_Click.
2. Digitar el siguiente procedimiento:
Private Sub Modificar_Click()
Dim i As Integer
Dim encontrado As Boolean
MantDatos.Caption = "Modificar datos"
For i = 1 To LOF(1) \ Len(Alumnos)
Get #1, i, Alumnos
If Trim(Alumnos.Cédula) = Trim(AuxCédula) And Alumnos.SW = "1" Then
encontrado = True
posición = i
Exit For
End If
Next i
If encontrado Then
Alumnos.Cédula = Rejilla.TextMatrix(XFila, 0)
Alumnos.Paterno = Rejilla.TextMatrix(XFila, 1)
Alumnos.Materno = Rejilla.TextMatrix(XFila, 2)
Alumnos.Nombres = Rejilla.TextMatrix(XFila, 3)
Alumnos.Dirección = Rejilla.TextMatrix(XFila, 4)
Alumnos.Fecha_Nac = Rejilla.TextMatrix(XFila, 5)
Alumnos.Género = Rejilla.TextMatrix(XFila, 6)
Put #1, posición, Alumnos
Consultar_Click
End If
Modificar.Enabled = False
End Sub
Asociar un procedimiento al botón de comando Eliminar accionado por el suceso Click.
Cuando el usuario haga clic en este botón, el registro seleccionado debe ser eliminado del
archivo de alumnos, cuyo nombre se definió al crearlo en una práctica anterior.
1. Hacer doble clic en el botón de comando Eliminar. La ventana de código muestra el
procedimiento Eliminar_Click().
2. Digitar el siguiente procedimiento:
Private Sub Eliminar_Click()
Dim i, posición As Integer
Dim encontrado As Boolean
MantDatos.Caption = "Eliminar datos"
encontrado = False
For i = 1 To LOF(1) \ Len(Alumnos)
Get #1, i, Alumnos
If Trim(Alumnos.Cédula) = Trim(AuxCéd) Then
encontrado = True
posición = i
Exit For
End If
Next i
If encontrado Then
Get #1, posición, Alumnos
Alumnos.SW = "0"
Put #1, posición, Alumnos
Consultar_Click
End If
Eliminar.Enabled = False 'lnhabilita el botón Eliminar
End Sub
El procedimiento LimpiarRegistros tiene la función de limpiar las celdas del control
MSFlexGrid.
Public Sub LimpiarRegistros()
With Rejilla
'Selecciona todas las celdas del control MSFlexGrid menos las de la fila 0
.Row = 1: .Col = 0: .RowSel = .Rows - 1: .ColSel = .Cols - 1
'Los cambios afectan a todas las celdas seleccionadas
.FillStyle = flexFillRepeat
.Text = " "
.FillStyle = flexFillSingle 'Los cambios afectan sólo a la celda activa
.Row = 1: .Col = 0: 'Selecciona la celda 1,0
End With
End Sub
Hacer doble clic en el botón de comando Salir. En la ventana de código digitar el
siguiente código:
Private Sub Salir_Click()
Close 'Cierra el archivo de alumnos
Unload Me
End 'Finaliza la ejecución del programa
End Sub
Presionar la tecla F5 para ejecutar el programa. Hacer clic en el botón Consultar y los
datos del archivo de alumnos aparecerán en las celdas del control MSFlexGrid. Para eliminar
un registro, situar el puntero del mouse sobre el registro y hacer clic (el registro queda
resaltado bajo un fondo azul y el botón Eliminar se activa). Hacer clic en el botón Eliminar y
los registros serán eliminados del archivo de alumnos.
Integrar el control TextBox con el control MSFlexGrid. Mantenimiento del archivo de alumnos
La interfaz tendrá cinco controles CommandButton, un control TextBox, un CommonDialog y un MSFlexGrid.
Incorporar en el cuadro de herramientas los controles Microsoft Common Dialog Control 6.0 y Microsoft FlexGrid Control 6.0, antes de
llevarlos a la Interfaz del Usuario.
Propiedades de los controles:
Control Propiedad Valor . AllowUserResizing 1 – flexResizeColumns
Form Name MantDatos Rows 25
Caption Mantenimiento archivo de alumnos Cols 12
TextBox Name Campo Enabled False
BorderStyle 0-None FixedRows 1
Text “” FixedCols 0
Visible False FormatString Cédula|<Paterno |<Materno
CommandButton Name Corrsultar |<Nombres |<Dirección
Caption Consultar |<F.de Nacim|<Gén
CommandButton Name Guardar |<Sw |
Caption Guardar ScrollBars 3-flexScrollBarBoth
CommandButton Name Modificar CommonDialog Name Abrir
Caption Modificar Label Name Mensaje1
CommandButton Name Eliminar AutoSize True
Caption Eliminar Label Name Mensaje2
CommandButton Name Salir AutoSize True
Caption Salir Label Name Mensaje3
MSFlexGrid Name Rejilla AutoSize True
Agregar en un módulo la estructura Reg_Alumnos del archivo de "Haga clic con el botón derecho del mouse para añadir
alumnos de acuerdo al siguiente detalle un registro."
Cédula As String * 10 "Presione la tecla Alt y haga clic sobre un campo para
Paterno As String * 20 realizar modificaciones."
Materno As String * 20 Inhabilita botones Guardar, Modificar y Eliminar
Nombres As String * 30 Habilita el control MSFlexgrid
Dirección As String * 40 Calcula el total de registros
Fecha_Nac As Date Llama al procedimiento LimpiarRegistros
Género As String * 1 Iterativamente para todos los registros
SW As String * 1 Lee un registro
Definir la variable Alumnos con esta estructura Si el SW es 1
Global Alumnos As Reg_Alumnos Incrementa Fila en 1
Asociar un procedimiento a cada uno de los controles: Mueve los campos del archivo al MSFlexGris
Dim AuxCéd, AuxCédula As String Si Fila >= 21 Añade nueva fila al MSFlexGrid
Dim Fila, XFila As Integer En el TextBox Campo guarda el contenido de la celda (1,0)
Al cargar el formulario: Con el suceso MouseUp en el MSFlexGrid
Lo sitúa en el centro de la pantalla Borrar Mensaje2
lnhabilita botones Ingresar, Modificar y Eliminar Borrar Mensaje3
Abrir el archivo de alumnos usando cuadro de diálogo Si se pulsó el botón izquierdo del mouse.
Al hacer clic en Consultar Título del formulario "Eliminar registros"
Los datos del archivo alumnos, deben copiarse al MSFlexGrid. Mensaje1 "Haga clic en el botón Eliminar para borrar el
El título del formulario debe ser “Consulta de datos" registro seleccionado."
Los Label deben mostrar mensajes: Inhabilita botones Guardar y Modificar
"Haga clic con el botón izquierdo del mouse sobre un registro Habilita botón Eliminar
para eliminarlo." Selecciona fila con registro a eliminar
Ing. Hermas Herrera Callejas Página : 2 de 3
.Row = .MouseRow: .Col = 0 Si se presionó tecla Enter
.RowSel = .MouseRow: .ColSel = .Cols - 1 Si TextBox no está vacio
AuxCéd = .Text 'Cédula de registro almacena en AuxCéd Rejilla.Row = Rejilla.RowSel
Si se pulsó el botón derecho del mouse Rejilla.Col = Rejilla.ColSel + 1
Título de formulario "Ingreso de datos" Con Clic en botón Guardar
Mensaje1 "Ingrese los datos en todos los campos y haga clic lngresa nuevo registro en archivo de alumnos.
en el botón Guardar" Alumnos.Cédula = Rejilla.TextMatrix(Fila + 1, 0)
Habilita botón Guardar Alumnos.Paterno = Rejilla.TextMatrix(Fila + 1, 1)
Inhabilita botones Modificar y Eliminar Alumnos.Materno = Rejilla.TextMatrix(Fila + 1, 2)…etc
Selecciona celda para ingresar datos. Calcula Total Registros en Archivo
.Row = Fila + 1 Graba registro en siguiente posición
.Col = 0 Llama procedimiento Consultar_Click
Si se pulsó Alt y botón izquierdo del mouse. Inhabilita botón Guardar
Título formulario "Modificar registros" Con Clic en Modificar
Mensaje1 "Presione la tecla Enter para confirmar el Título de formulario “Modificar Datos”
cambio realizado" Iterativamente busca registro modificado
Borrar Mensaje2 y Mensaje3 Transfiere datos de MSFlexGrid al archivo
Inhabilita botones Guardar y Eliminar Alumnos.Cédula = Rejilla.TextMatrix(XFila, 0)
Habilita botón Modificar Alumnos.Paterno = Rejilla.TextMatrix(XFila, 1)
Selecciona celda en que se hizo clic Alumnos.Materno = Rejilla.TextMatrix(XFila, 2)…etc
.Row = .MouseRow Graba registro
.Col = .MouseCol Llama a procedimiento Consultar_Click
Cédula del registro almacena en AuxCédula Inhabilita botón Modificar
AuxCédula = .TextMatrix(.Row, 0) Con Clic en Eliminar
Fila de celda seleccionada se almacena en XFila. Título de formulario "Eliminar datos"
XFila = .Row Iterativamente busca registro a eliminar
Con suceso EnterCell en MSFlexGrid Al encontrar mueve 0 a SW
Borra el TextBox Graba registro
Sitúa el TextBox sobre celda seleccionada Llama a procedimiento Consultar_Click
Campo.Top = Rejilla.Top + Rejilla.CellTop lnhabilita botón Eliminar
Campo.Left = Rejilla.Left + Rejilla.CellLeft Procedimiento LimpiarRegistros
Ajusta tamaño de TextBox al de la celda Selecciona todas las celdas de MSFlexGrid menos fila 0
Campo.Width = Rejilla.CellWidth .Row = 1: Col = 0: .RowSel = .Rows - 1: .ColSel = .Cols - 1
Campo.Height = Rejilla.CellHeight Cambios en todas las celdas seleccionadas
Mueve contenido de celda a TextBox .FillStyle = flexFillRepeat
Campo.Text = Rejilla.Text .Text = " "
Campo.SetFocus Cambios solo en celda activa
Con suceso LeaveCell en MSFlexGrid .FillStyle = flexFillSingle
El contenido de TextBox pasa a celda que abandona. .Row = 1: .Col = 0:
Rejilla.Text = Campo.Text Con Clic en botón Salir
Con suceso KeyPress en TextBox Termina proceso
Selecciona celda derecha de celda activa.