Sunteți pe pagina 1din 204

UNIVERSIDAD MAYOR DE SAN ANDRÉS

FACULTAD DE INGENIERIA

CARRERA DE INGENIERIA PETROLERA

COMPUTACION PARA INGENIERIA I Y LABORATORIO

GUIA Y MATERIAL DE ESTUDIO

Ing. Hermas Herrera Callejas

La Paz, Agosto de 2015


UNIVERSIDAD MAYOR DE SAN ANDRES
FACULTAD DE INGENIERIA
CARRERA DE INGENIERIA PETROLERA

PROGRAMA ANALITICO

ASIGNATURA: COMPUTACION P/ INGENIERIA I Y LABORATORIO SIGLA: PET223

NIVEL: 5to SEMESTRE

PERIODO DURACION DEL CURSO: 20 SEMANAS

HORAS DE CLASE POR SEMANA


PRACTICAS CON
TEORICAS: 4 HORAS LABORATORIOS: 4 HORAS
AUXILIATURA: 2 HRS.

PRE REQUISITOS: MAT102 CALCULO II


MAT207 ECUACIONES DIFERENCIALES

ELABORADO POR: ING. HERMAS HERRERA CALLEJAS

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

II.1 OBJETIVO GENERAL


Lograr el aprendizaje, por parte del estudiante universitario de Ingeniería Petrolera, de los
conocimientos necesarios en materia de computación a fin de complementar su formación
profesional con esta área tan importante en la actualidad para cualquier rama del quehacer humano

II.2 OBJETIVO ESPECIFICO


Lograr el aprendizaje y la capacitación de los estudiantes de Ingeniería Petrolera en temas de
Computación, desde sus fundamentos básicos y su evolución histórica hasta el avance tecnológico
actual junto al desarrollo de las comunicaciones (como el Internet) y su proyección futura.

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.

III CONTENIDO ANALÍTICO

A. CONTENIDO DE LA TEORIA

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

Página: 2
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
2.6.4 Seguridad Contra Usos Incorrectos o No Autorizados

CAPÍTULO 3 VISUAL BASIC – CONCEPTOS BÁSICOS

3.1 Definición de Visual Basic


3.2 Definición de Objeto
3.2.1 Propiedades
3.2.2 Métodos
3.2.3 Sucesos
3.3 Concepto de Proyecto
3.4 Terminología de Visual Basic
3.4.1 Controles
3.4.2 Formulario
3.4.3 Interfaz de Usuario
3.4.4 Módulo
3.4.5 Procedimientos Conducidos por Sucesos

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

CAPÍTULO 4 VISUAL BASIC - CONTROLES BASICOS

4.1 El Control Label


4.1.1 Propiedades
4.2 El Control TextBox
4.2.1 Propiedades
4.2.2 Sucesos
4.2.3 Métodos
4.3 El Control CommandButtom
4.3.1 Propiedades
4.4 El Control CheckBox
4.4.1 Propiedades
4.4.2 El Evento Clic
4.5 El Control OptionButtom
4.5.1 Propiedades
4.5.2 El Evento Clic
4.6 El Control Frame
4.6.1 Propiedades
4.6.2 Cómo Crear Grupos de Botones de Control
4.7 El Control ListBox
4.7.1 Propiedades
4.7.2 Métodos
4.7.3 Sucesos
4.8 El Control ComboBox

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

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
5.10.1.1 If...Then
5.10.1.2 If...Then...Else
5.10.1.3 Select Case
5.10.2 Estructuras de Bucle
5.10.2.1 Do...Loop
5.10.2.2 For...Next

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

CAPÍTULO 6 VISUAL BASIC – USO DE ARCHIVOS Y BASES DE DATOS

6.1 Archivos de Datos


6.1.1 Archivos Secuenciales
6.1.2 Archivos Aleatorios
6.1.3 Creación de un Archivo Aleatorio
6.1.3.1 Definición del Registro
6.1.3.2 Apertura del Archivo
6.1.3.3 Escritura en un Archivo Aleatorio
6.1.3.4 Lectura de un Archivo Aleatorio
6.1.3.5 La sentencia Seek( )
6.2 Creación de Módulos
6.3 El Control Data
6.3.1 Creación de un Editor de Datos
6.4 El Asistente para Formularios de Datos

CAPÍTULO 7 VISUAL BASIC - CONTROLES QUE MUESTRAN IMÁGENES Y GRAFICOS

7.1 El Control Image


7.1.1 Carga de una Imagen en el Control Image
7.1.2 Carga de una Imagen usando el Portapapeles
7.1.3 La propiedad Stretch
7.1.4 Carga de una Imagen en Tiempo de Ejecución
7.1.5 Creación de Botones de Orden Gráficos
7.2 El Control PictureBox
7.2.1 Propiedades
7.2.2 Sistema de Coordenadas
7.3 Los Métodos Gráficos
7.3.1 El Método Print

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

CAPÍTULO 8 VISUAL BASIC - CUADROS DE DIALOGO COMUNES

8.1 El Control CommonDialog


8.1.1 Colocar el Control CommonDialog en el Fotrmulario
8.2 Los Cuadros de Diálogo Abrir y Guardar
8.2.1 Propiedades
8.2.2 Indicadores
8.3 El Cuadro de Diálogo Fuente
8.3.1 Propiedades
8.3.2 Indicadores
8.4 El Cuadro de Diálogo Imprimir
8.4.1 Indicadores
8.5 El Cuadro de Diálogo Color
8.5.1 Indicadores
8.6 Creación de un Mini Editor
8.7 Creación de un Programa que Visualiza Imágenes

CAPÍTULO 9 VISUAL BASIC – EL CONTROL MS FLEXGRID

9.1 El Control MSFlexGrid


9.2 Propiedades
9.3 Sucesos
9.4 Introducir datos en una celda
9.4.1 Selección de celdas
9.4.2 Formato de celdas
9.5 Despliegue de Información en las Celdas
9.6 Edición de Datos en las Celdas

B. CONTENIDO DEL LABORATORIO


 Access
 Project
 Laboratorios con VS/Basic
o Programa con Casillas de Verificación
o Programa con Opciones de Selección
o Programa con Lista Simple
o Programa con el Control ComboBox
o Programa con aplicación del Control Timer
o Programa con las Barras de Desplazamiento Horizontal y Vertical
o Programa con aplicación de Menús
o Programa que trabaja con Archivos de Texto
o Programa que trabaja con Archivos Aleatorios
o Programa que trabaja con Bases de Datos

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

IV METODOLOGÍA UTILIZADA PARA EL DESARROLLO DE LA MATERIA

 Clases magistrales impartidas en aula


 Clases participativas de los alumnos en planteamientos y solución de problemas en el aula
 Trabajos de investigación para la solución de problemas individuales o grupales en casa
 Entrega y revisión de trabajos de investigación
 Planteamiento de problemas y ejecución de trabajos prácticos en computadora para la
solución de los problemas planteados
 Entrega y revisión de trabajos prácticos
 Exámenes parciales
 Ayudantía
 Laboratorio de Trabajos Prácticos en Computadora
 Examen final

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

7 VS Basic - Controles que Muestran 8


Imágenes y Gráficos
8 VS Basic - Cuadros de Diálogo Comunes 6
9 VS Basic - El Control MSFlexGrid 6
5 a 9 Segundo Examen Parcial 2
1 a 9 Examen final 2
Registro de Notas 2

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

Ing. Hermas Herrera Callejas Página: 1 de 4


Computación para Ingeniería I y Laboratorio Contenido de la Asignatura

2.6.4 Seguridad Contra Usos Incorrectos o No Autorizados


CAPÍTULO 3 VISUAL BASIC – CONCEPTOS BÁSICOS
3.1 Definición de Visual Basic
3.2 Definición de Objeto
3.2.1 Propiedades
3.2.2 Métodos
3.2.3 Sucesos
3.3 Concepto de Proyecto
3.4 Terminología de Visual Basic
3.4.1 Controles
3.4.2 Formulario
3.4.3 Interfaz de Usuario
3.4.4 Módulo
3.4.5 Procedimientos Conducidos por Sucesos
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
CAPÍTULO 4 VISUAL BASIC - CONTROLES BASICOS
4.1 El Control Label
4.1.1 Propiedades
4.2 El Control TextBox
4.2.1 Propiedades
4.2.2 Sucesos
4.2.3 Métodos
4.3 El Control CommandButtom
4.3.1 Propiedades
4.4 El Control CheckBox
4.4.1 Propiedades
4.4.2 El Evento Clic
4.5 El Control OptionButtom
4.5.1 Propiedades
4.5.2 El Evento Clic
4.6 El Control Frame
4.6.1 Propiedades
4.6.2 Cómo Crear Grupos de Botones de Control
4.7 El Control ListBox
4.7.1 Propiedades
4.7.2 Métodos
4.7.3 Sucesos
4.8 El Control ComboBox
4.8.1 Propiedades
4.8.2 Sucesos

Ing. Hermas Herrera Callejas Página: 2 de 4


Computación para Ingeniería I y Laboratorio Contenido de la Asignatura

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

Ing. Hermas Herrera Callejas Página: 3 de 4


Computación para Ingeniería I y Laboratorio Contenido de la Asignatura
CAPÍTULO 6 VISUAL BASIC – USO DE ARCHIVOS Y BASES DE DATOS
6.1 Archivos de Datos
6.1.1 Archivos Secuenciales
6.1.1.1 Apertura de archivos secuenciales
6.1.1.2 Lectura de archivos de texto
6.1.1.3 Escritura de archivos de texto
6.1.1.4 Cierre de archivos secuenciales
6.1.2 Archivos Aleatorios
6.1.3 Creación de un Archivo Aleatorio
6.1.3.1 Definición del Registro
6.1.3.2 Apertura del Archivo
6.1.3.3 Escritura en un Archivo Aleatorio
6.1.3.4 Lectura de un Archivo Aleatorio
6.1.3.5 La Sentencia Seek
6.2 Creación de Módulos
6.3 El Control Data
6.3.1 Creación de un Editor de Datos
6.4 El Asistente para Formularios de Datos
CAPÍTULO 7 VISUAL BASIC - CONTROLES QUE MUESTRAN IMÁGENES Y GRAFICOS
7.1 El Control Image
7.1.1 Carga de una Imagen en el Control Image
7.1.2 Carga de una Imagen usando el Portapapeles
7.1.3 La propiedad Stretch
7.1.4 Carga de una Imagen en Tiempo de Ejecución
7.1.5 Creación de Botones de Orden Gráficos
7.2 El Control PictureBox
7.2.1 Propiedades
7.2.2 Sistema de Coordenadas
7.3 Los Métodos Gráficos
7.3.1 El Método Print
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

CAPÍTULO 8 VISUAL BASIC - CUADROS DE DIALOGO COMUNES


8.1 El Control CommonDialog
8.1.1 Colocar el Control CommonDialog en el Fotrmulario
8.2 Los Cuadros de Diálogo Abrir y Guardar
8.2.1 Propiedades
8.2.2 Indicadores
8.3 El Cuadro de Diálogo Fuente
8.3.1 Propiedades
8.3.2 Indicadores
8.4 El Cuadro de Diálogo Imprimir
8.4.1 Indicadores
8.5 El Cuadro de Diálogo Color
8.5.1 Indicadores
8.6 Creación de un Mini Editor
8.7 Creación de un Programa que Visualiza Imágenes

CAPÍTULO 9 VISUAL BASIC – EL CONTROL MS FLEXGRID


9.1 El Control MSFlexGrid
9.2 Propiedades
9.3 Sucesos
9.4 Introducir datos en una celda
9.4.1 Selección de celdas
9.4.2 Formato de celdas
9.5 Despliegue de Información en las Celdas
9.6 Edición de Datos en las Celdas

Ing. Hermas Herrera Callejas Página: 4 de 4


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

CAPITULO 1 - CONCEPTOS DE PROGRAMACION

1.1 INTRODUCCION .- Los problemas o tareas que se plantean diariamente,


por ejemplo en el ámbito de la empresa, ya sean de gestión, técnicos,
matemáticos, etc, pueden ser resueltos mediante el uso de la capacidad
intelectual y la habilidad manual de la persona. Diremos entonces que la tarea ha
sido realizada de forma manual (Figura 1.1).

Figura 1.1. Resolución manual de trabajos.

1.2 Aplicación o Sistema Informático .- La utilización de la computadora para


la realización automática de una tarea aporta grandes ventajas, como la rapidez
de ejecución y la fiabilidad de los resultados obtenidos Un buen número de
problemas conllevan complicados cálculos, así como el manejo de grandes
cantidades de datos. En el primer caso, el riesgo de equivocarse es grande y en
el segundo, el trabajo se convierte en pesado y rutinario. Mediante el uso de la
computadora se eliminan estos inconvenientes debido a las capacidades de la
máquina, basadas en las siguientes características:
• Rapidez.
• Precisión.
• Memoria.
No obstante, la computadora por sí sola no sabría resolver ni el más
sencillo problema que se nos pueda ocurrir. Es preciso, para que pueda hacerlo,
describirle con detalle y en su lenguaje todos los pasos que ha de llevar a cabo
para la resolución del problema. Una descripción de este tipo es lo que se llama
programa de computadora y su objetivo es dirigir el funcionamiento de la
máquina.

1.3 CICLO DE VIDA DE LA APLICACIÓN .- Desde el planteamiento de un


problema o tarea hasta que se tiene el correspondiente programa o aplicación
informática para su realización por medio de una computadora, instalado en la
misma y en funcionamiento mientras sea de utilidad, se siguen una serie de
etapas que en conjunto denominamos ciclo de vida del software. Cada una de
las etapas, que tiene un objetivo bien determinado, ha de llevarse a cabo cuando
se ha terminado completamente la anterior; es decir, se han de abordar de forma
estrictamente secuencial.
Las etapas de que consta el ciclo de vida del software pueden agruparse en
los siguientes bloques, según el esquema de la Figura 1.2.

Ing. Hermas Herrera Callejas Página : 1 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

1.3.1 Etapas del Desarrollo de Aplicaciones .- Es de destacar que en la


realización de estas etapas no todas necesitan el uso de la computadora. No
obstante, desde hace algún tiempo se utiliza ésta como apoyo mediante las
denominadas herramientas CASE (Computer Aided Software Engineering).

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

Ing. Hermas Herrera Callejas Página : 2 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

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

Ing. Hermas Herrera Callejas Página : 3 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

sintácticas del lenguaje y son detectados por el programa compilador indicando el


lugar en que se encuentran y la clase de error.
• De ejecución. Se detectan durante la ejecución del programa por la parada
anormal del mismo, y suelen provenir de la realización de operaciones no
permitidas. Se producen o no dependiendo de los datos de entrada empleados;
por ello, para encontrarlos es necesaria la prueba del programa con un conjunto
de datos dc ensayo lo suficientemente amplio que abarque la mayoría de casos y
posibilidades de ejecución.
• De lógica. Se dice que un programa tiene un error de lógica si produce
resultados que no son correctos. Para detectarlos hay que realizar un número
suficiente dc ejecuciones con diferentes datos de prueba y comprobar los
resultados obtenidos.
• De especificación. Son los más difíciles de corregir, pues corresponden a
incorrecciones sobrevenidas en la etapa del análisis, por lo que hay que modificar
gran parte del trabajo realizado.

1.3.2 Documentación de tos programas .- Constituida por todos los


documentos que se elaboran en cada una de las etapas del análisis y diseño, es
muy importante para facilitar su mantenimiento y obtener un mayor rendimiento.
Denominamos documentación interna al contenido del propio programa
fuente. Debe incluir los comentarios explicativos suficientes que posibiliten su
comprensión y actualización. Asimismo, se debe utilizar un código
autodocumentado; es decir, debe ser escrito de una forma clara y legible.
La documentación externa la forman el resto de documentos que se
acompañan con el programa sin formar parte de él. Entre ellos deben figurar los
siguientes:
• Especificaciones del análisis.
• Descripción del diseño.
• Descripción de las versiones, sí las hubiere.
• Descripción de archivos y estructuras de datos.
• Descripción del programa principal y subprogramas.
• Manual de mantenimiento.
• Manual de explotación.

1.3.3. Etapas de la implantación y explotación .- Para la implantación y


explotación de programas se deben seguir los pasos que se describen a
continuación.
Explotación y mantenimiento. Una vez comprobada la corrección del programa
y realizada su instalación en el sistema informático, la aplicación queda a
disposición de los usuarios, que la utilizarán hasta tanto se decida abandonarla o
cambiarla por otra. Es lo que denominamos explotación de la aplicación.
Paralelamente al uso de la aplicación se realiza el mantenimiento de la
misma, consiste en su evaluación periódica por parte del personal informático, así
como la inclusión de las adaptaciones y modificaciones necesarias para
mantenerla actualizada.

Ing. Hermas Herrera Callejas Página : 4 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

1.4 ESTRUCTURA DE UN PROGRAMA .- En general, un programa consiste en


una secuencia de instrucciones que ha de procesar la computadora con el objetivo
de obtener unos resultados o datos de salida a partir de unos datos iniciales o
datos de entrada (Figura 1.3). Desde el punto de vista funcional, un programa se
estructura en tres pasos:

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.2 Proceso. Conjunto de instrucciones que resuelven el problema a partir de


los datos que han sido introducidos, dejando los resultados en la memoria central.
El dispositivo físico encargado de llevar a cabo esta tarea es la unidad central de
proceso.

Figura 1.3. Proceso de elaboración.

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

Entrada Proceso Salida

Figura 1.4. Estructura funcional de un programa.

1.5 LENGUAJES DE PROGRAMACIÓN .- El desarrollo de las capacidades del


hardware ha experimentado un auge desmesurado en los últimos años, pero el
aprovechamiento de estas posibilidades no es óptimo si no se dispone del
software adecuado. Con este fin se han diseñado diversos lenguajes de pro-
gramación, unos de propósito general, es decir, para todo tipo de aplicaciones, y
otros de aplicación particular en alguno de los campos del ámbito informático.
Un lenguaje de programación es una notación para escribir programas, a
través de los cuales podemos comunicarnos con el hardware y dar así las órdenes

Ing. Hermas Herrera Callejas Página : 5 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

adecuadas para la realización de un determinado proceso. Un lenguaje está


definido por una gramática o conjunto de reglas que se aplican a un alfabeto
constituido por el conjunto de símbolos utilizados.

1.5.1 CLASIFICACION DE LOS LENGUAJES DE PROGRAMACIÓN .- Una


primera clasificación, atendiendo a su proximidad al lenguaje de la máquina o al
lenguaje de las personas (lenguaje natural), establece los tres siguientes grupos:
 Lenguaje de máquina (Lenguaje de bajo nivel).
 Lenguaje ensamblador (Lenguaje intermedio).
 Lenguaje de alto nivel (evolucionado).

1.5.2 Lenguaje de máquina .- El lenguaje de máquina es el único que entiende


directamente la computadora. Utiliza el alfabeto binario, que consta de los dos
únicos símbolos 0 y 1, denominados bits (abreviatura inglesa de dígitos binarios).
Fue el primer lenguaje utilizado en la programación de computadoras, pero dejó
de utilizarse por su dificultad y complicación, siendo sustituido por otros lenguajes
más fáciles de aprender y utilizar, que además reducen la posibilidad de cometer
errores.
EJEMPLO
Instrucciones en lenguaje de máquina y sus equivalentes en el sistema
hexadecimal.
0000 0001 1010 0001 01 Al
1000 1001 1001 1010 89 9A
0011 1010 1001 1100 3A 9C
0111 0100 0111 0000 74 70
1110 1001 0010 0000 E9 20

1.5.3 Lenguaje ensamblador .- El lenguaje ensamblador es el primer intento de


sustituir el lenguaje de máquina por otro más similar a los utilizados por las
personas. En este lenguaje, cada instrucción equivale a una instrucción en
lenguaje de máquina, utilizando para su escritura palabras nemotécnicas en lugar
de cadenas de bits.

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ó.

Ing. Hermas Herrera Callejas Página : 6 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

El programador ha de conocer perfectamente el hardware del equipo, ya


que maneja directamente las posiciones de memoria, registros del procesador y
demás elementos físicos.
Todas las instrucciones son elementales, es decir, en el programa se deben
describir con el máximo detalle todas las operaciones que se han de efectuar en la
máquina para la realización de cualquier proceso.
Por otro lado, tanto el lenguaje de máquina como el ensamblador gozan de
la ventaja de mínima ocupación de memoria y mínimo tiempo de ejecución en
comparación con el resultado de la compilación del programa equivalente escrito
en otros lenguajes.

1.5.4 Lenguajes de alto nivel .- Los lenguajes de alto nivel, también


denominados lenguajes evolucionados, surgen con posterioridad a los anteriores
con los siguientes objetivos, entre otros:
1. Lograr independencia de la máquina, pudiendo utilizar un mismo programa en
diferentes equipos con la única condición de disponer de un programa traductor o
compilador, que es suministrado por el fabricante, para obtener el programa
ejecutable en lenguaje binario de la máquina que se trate. Además, no se
necesita conocer el hardware específico de dicha máquina.
2. Aproximarse al lenguaje natural para que el programa se pueda escribir y leer
de una forma más sencilla, eliminando muchas de las posibilidades de cometer
errores que se daban en el lenguaje de máquina, ya que se utilizan palabras (en
inglés) en lugar de cadenas de símbolos sin ningún significado aparente
3. Incluir rutinas de uso frecuente, como las de entrada/salida, funciones
matemáticas, manejo de tablas, etc., que figuran en una especie de librería del
lenguaje de manera que se puedan utilizar siempre que se quiera sin necesidad
de programarlas cada vez.
Se puede decir que el principal problema que presentan los lenguajes de
alto nivel es la gran cantidad de ellos que existen actualmente en uso, además de
las diferentes versiones o dialectos que se han desarrollado de algunos de ellos.

1.6 REPRESENTACION DE DATOS: CODIFICACIÓN ALFANUMERICA.- Los


datos e informaciones que se manejan internamente en un sistema informático se
pueden representar, según sus características, de las siguientes formas:
ASCII
ALFANUMÉRICAS EBCDIC
....
Representaciones
o códigos internos
Coma fija
NUMÉRICAS Coma flotante
....
Códigos alfanuméricos

Una computadora puede trabajar internamente con un conjunto de caracteres


que nos permitirán manejar datos, informaciones, instrucciones, órdenes de

Ing. Hermas Herrera Callejas Página : 7 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

control etc. Este conjunto de caracteres podemos subdividirlo en los siguientes


grupos:
 Caracteres alfabéticos.
 Letras mayúsculas. Son las letras de la A a la Z (sin la Ñ).
 Letras minúsculas. Son las letras de la a a la z (sin la ñ).
 Cifras decimales. Son los números 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9.
 Caracteres especiales.
 Caracteres. Son el punto (.), la coma (,), el punto y coma (;), e1 asterisco
(*), etc.
 Órdenes de control. Son NUL, CR, ACK, etc.
En general, cada carácter se maneja internamente en una computadora por
medio de un conjunto de 8 bits mediante un sistema de codificación binario que
denominaremos código de caracteres. (9 bits si se incluye el bit de paridad)
Cada computadora tiene su código de caracteres definidos por el fabricante,
si bien la mayoría de ellos adaptan a sus equipos códigos estándar de los ya
establecidos. En estos códigos se representa cada carácter por medio de un byte
(8 bits), con lo cual todo tipo de informaciones pueden ser utilizadas internamente,
formando cadenas de bytes sucesivos que representarán cadenas de caracteres
para que la máquina las maneje e interprete. No todos los tipos de códigos utilizan
para la representación de caracteres los ocho bits de un byte.

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.

Tabla 1.1 Código ASCII extendido


bits 7654
3210 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
0000 000 NUL 016 DLE 032 SP 048 0 064 @ 080 P 096 ` 112 p 128 Ç 144 É 160 á 176 _ 192 ü 208 ð 224 Ó 240
0001 001 SOH 017 DC1 033 ! 049 1 065 A 081 Q 097 a 113 q 129 ü 145 æ 161 í 177 _ 193 - 209 Ð 225 ß 241 ±
0010 002 STX 018 DC2 034 " 050 2 066 B 082 R 098 b 114 r 130 é 146 Æ 162 ó 178 _ 194 - 210 Ê 226 Ô 242 _
0011 003 ETX 019 DC3 035 # 051 3 067 C 083 S 099 c 115 s 131 â 147 ô 163 ú 179 ¦ 195 + 211 Ë 227 Ò 243 ¾
0100 004 EOT 020 DC4 036 $ 052 4 068 D 084 T 100 d 116 t 132 ä 148 ö 164 ñ 180 ¦ 196 - 212 È 228 õ 244 ¶
0101 005 ENQ 021 NAK 37% 053 5 069 E 085 U 101 e 117 u 133 à 149 ò 165 Ñ 181 Á 197 + 213 i 229 Õ 245 §
0110 006 ACK 022 SYN 038 & 054 6 070 F 086 V 102 f 118 v 134 å 150 û 166 ª 182 Â 198 ã 214 Í 230 µ 246 ÷
0111 007 BEL 023 ETB 039 '' 055 7 071 G 087 W 103 g 119 w 135 ç 151 ù 167 º 183 À 199 Ã 215 Î 231 þ 247 ¸
1000 008 BS 024 CAN 040 ( 056 8 072 H 088 X 104 h 120 x 136 ê 152 ÿ 168 ¿ 184 © 200 + 216 Ï 232 Þ 248 °
1001 009 HT 025 EM 041 ) 057 9 073 I 089 Y 105 i 121 y 137 ë 153 Ö 169 ® 185 ¦ 201 + 217 + 233 Ú 249 ¨
1010 010 LF 026 SUB 042 * 058 : 074 J 090 Z 106 j 122 z 138 è 154 Ü 170 ¬ 186 ¦ 202 - 218 + 234 Û 250 ·
1011 011 VT 027 ESC 043 + 059 ; 075 K 091 [ 107 k 123 { 139 ï 155 ø 171 ½ 187 + 203 - 219 _ 235 Ù 251 ¹
1100 012 FF 028 FS 044 , 060 < 076 L 092 \ 108 l 124 | 140 î 156 £ 172 ¼ 188 + 204 ¦ 220 _ 236 ý 252 ³
1101 013 CR 029 GS 045 - 061 = 077 M 093 ] 109 m 125 } 141 ì 157 Ø 173 ¡ 189 ¢ 205 - 221 ¦ 237 Ý 253 ²
1110 014 SO 030 RS 046 . 062 > 078 N 094 ^ 110 n 126 ~ 142 Ä 158 × 174 « 190 ¥ 206 + 222 Ì 238 ¯ 254 _
1111 015 SI 031 US 047 / 063 ? 079 O 095 _ 111 o 127Del 143 Å 159 ƒ 175 » 191 + 207 ¤ 223 _ 239 ´ 255

Ing. Hermas Herrera Callejas Página : 8 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

Tabla 1.2 Código EBCDIC


bits 7654
3210 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
0 1 2 3 4 5 6 7 8 9 A B C D E F
0000 0 NUL DLE DS SP & _ { } \ 0
0001 1 SOH DC1 SOS a j ~ A J 1
0010 2 STX DC2 FS SYN b k s B K S 2
0011 3 ETX DC3 c l t C L T 3
0100 4 PF RES BYP PN d m u D M U 4
0101 5 HT NL LF RS e n v E N V 5
0110 6 LC BS EOB UC f o w F O W 6
0111 7 DEL IL ESC EOT g p x G P X 7
1000 8 CAN h q y H Q Y 8
1001 9 RLF EM . \ i r z I R Z 9
1010 A SMM CC SM ¢ ! ' :
1011 B VT . $ , #
1100 C FF IFS DC4 < * % @
1101 D CR IGS ENQ NAK ( ) - '
1110 E SO IRS ACK + ; > =
1111 F SI IUS BEL SUB | ¬ ? "

Donde los significados de los caracteres de control son:


NUL Null CC Cursor Control
SOH Start of Heading. IFS Imterchange File Separator.
STX Ster of Text. IGS Interchange Group Separator.
ETX End of Text IRS Interchange Record Separator.
PF Punch 0ff IUS Interchange Unit Separator.
HT Horizontal Tabulation. DS Digit Select.
LC Lower Case. SOS Start of Significance.
DEL Delete. FS Field Separator.
RLF Reserve Line Feed. BYP Bypass.
SMM Start of Manual Message. LF Line Feed.
VT Vertical Tabulation. EOB End of Block
FF Form Feed. ESC Escape.
CR Carriage Return. SM Set Mode.
SO Shift Out. ENQ Enquiry.
SI Shift in. ACK Acknowledge.
DLE Data Link Escape. BEL Bell.
DC1 Device Control 1. SYN Synchronous Idle.
DC2 Device Control 2. PN Punch On.
DC3 Device Control 3. RS Reader Stop.
RES Restore. UC Upper Case.
NL New Line. EOT End of Transmission
BS Backspace. DC4 Device control 4.
IL Idle. NAK Negative Acknowledge.
CAN Cancel SUB Substitute.
EM End of Medium. SP Space

Ing. Hermas Herrera Callejas Página : 9 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

1.7 Técnicas de programación

1.7.1 Programación convencional

Aquella que sigue el procedimiento normal de ejecución de los distintos


procesos dentro del programa, traducción del diagrama de flujo a programa fuente,
similar a un seudo código, con un principio y un final

1.7.2 Programación modular

La programación modular es un paradigma de programación que consiste


en dividir un programa en módulos ó subprogramas con el fin de hacerlo más
legible y manejable.
Se presenta históricamente como una evolución de la programación
estructurada para solucionar problemas de programación más grandes y
complejos de lo que ésta puede resolver.
Al aplicar la programación modular, un problema complejo debe ser dividido
en varios sub-problemas más simples, y estos a su vez en otros sub-problemas
más simples. Esto debe hacerse hasta obtener sub-problemas lo suficientemente
simples como para poder ser resueltos fácilmente con algún lenguaje de
programación. Ésta técnica se llama refinamiento sucesivo, divide y vencerás ó
análisis descendente (Top-Down).
Un módulo es cada una de las partes de un programa que resuelve uno de
los subproblemas en que se divide el problema complejo original. Cada uno de
estos módulos tiene una tarea bien definida y algunos necesitan de otros para
poder operar. En caso de que un módulo necesite de otro, puede comunicarse con
éste mediante una interfaz de comunicación que también debe estar bien definida.

1.7.3 Programación estructurada

La programación estructurada sigue tres reglas: la secuencia, la iteración y


la decisión. La primera de ellas indica que las instrucciones del código se leerán
de principio a fin; la segunda indica que, según cierta condición, un número de
instrucciones podrían repetirse un numero determinado de veces, y la tercera
indica que según unas ciertas condiciones se ejecutarán o no un conjunto de
instrucciones.
En el siguiente algoritmo para limpiar platos, separando los azules se
aprecian estas tres características. La indentación de las instrucciones indican
cuáles son englobadas y cuáles no por sus predecesoras. Entre los beneficios de
la programación estructurada se encuentran la facilidad de mantenimiento y la
legibilidad por parte de otros programadores

mientras haya platos


coger plato
mientras haya suciedad
echar jabon
pasar el estropajo por el plato

Ing. Hermas Herrera Callejas Página : 10 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

si plato es azul
ponerlo con los azules

En código no estructurado, quedaría como sigue:

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

1.7.4 Estructuras de control

Las estructuras de control pueden dividirse en dos grupos:


 De decisión
– If…Then…
– If…Then…Else…
– Select Case
 De bucle
– Do… Loop (While / Until)
– For…Next
– For each … Next
 Anidadas
 Salidas de estructuras (Exit)

1.8 Programación orientada a objetos.- Un estilo de programación en el que un


programa se contempla como un conjunto de objetos limitados que, a su vez, son
colecciones independientes de estructuras de datos y rutinas que interactúan con
otros objetos. Una clase define las estructuras de datos y rutinas de un objeto.
Un objeto es una instancia de una clase, que se puede usar como una variable en
un programa. En algunos lenguajes orientados a objetos, éste responde a
mensajes, que son el principal medio de comunicación. En otros lenguajes
orientados a objeto se conserva el mecanismo tradicional de llamadas a
procedimientos.

1.9 Algoritmos.- En matemáticas, ciencias de la computación, y disciplinas


relacionadas, un algoritmo (del matemático persa al-Jwarizmi) es una lista bien
definida, ordenada y finita de operaciones que permite resolver un problema.
En la vida cotidiana se emplean algoritmos en multitud de ocasiones para
resolver diversos problemas. Los instructivos (manuales de usuario), para usar un
aparato, las instrucciones que recibe un trabajador. También existen ejemplos de
índole matemático, como el algoritmo de la división para calcular el cociente de
dos números, el algoritmo de Euclides para calcular el máximo común divisor de
dos enteros positivos, o el método de Gauss para resolver un Sistema lineal de
ecuaciones.

Ing. Hermas Herrera Callejas Página : 11 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

En la actualidad, el término algoritmo se aplica a muchos de los métodos


de resolver problemas que empleen una secuencia mecánica de pasos, como en
el diseño de un programa de ordenador o computadora. Esta secuencia se
puede representar en la forma de un diagrama de flujo para que sea más fácil de
entender.
Al igual que los algoritmos usados en aritmética, los algoritmos para
ordenadores pueden ser desde muy sencillos hasta bastante complejos. En
todos los casos, sin embargo, la tarea que el algoritmo ha de realizar debe ser
definible. Esta definición puede incluir términos matemáticos o lógicos o una
compilación de datos o instrucciones escritas. En el lenguaje de la informática,
quiere decir que un algoritmo debe ser programable, incluso si al final se
comprueba que el problema no tiene solución.

1.9.1 Importancia.- La importancia de un algoritmo radica en mostrar la manera


de llevar a cabo procesos y resolver mecánicamente problemas matemáticos o de
otro tipo. Al igual que las funciones matemáticas, los algoritmos reciben una
entrada y la transforman en una salida, para que un algoritmo pueda ser
considerado como tal, debe ser una secuencia ordenada, finita y definida
(formalización de su comportamiento) de instrucciones. De este modo se puede
seguir y predecir el comportamiento del algoritmo para cualquier entrada posible.
El concepto de algoritmo, aunque similar y obviamente relacionado, no
debe confundirse con el concepto de programa. Mientras el primero es la
especificación de un conjunto de pasos (operaciones, instrucciones, órdenes,...)
orientados a la resolución de un problema (método), el segundo es ese conjunto
de operaciones especificadas en un determinado lenguaje de programación y para
un computador concreto, susceptible de ser ejecutado (o compilado o
interpretado). Un algoritmo, estrictamente hablando, no puede ejecutarse hasta
que se implementa, ya sea en un lenguaje de programación, en un circuito
eléctrico, en un aparato mecánico, usando papel y lápiz, o en algún otro modelo
de computación.

1.9.2 Características de los algoritmos.- Se han definido cinco propiedades,


que son ampliamente aceptadas como requisitos para un algoritmo:

Carácter finito. "Un algoritmo siempre debe terminar después de un número finito
de pasos".

Precisión. "Cada paso de un algoritmo debe estar precisamente definido; las


operaciones a llevar a cabo deben ser especificadas de manera rigurosa y no
ambigua para cada caso".

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

Ing. Hermas Herrera Callejas Página : 12 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

Salida. "Un algoritmo tiene una o más salidas: cantidades que tienen una relación
específica con las entradas".

Eficacia. "También se espera que un algoritmo sea eficaz, en el sentido de que


todas las operaciones a realizar en un algoritmo deben ser suficientemente
básicas como para que en principio puedan ser hechas de manera exacta y en un
tiempo finito por un hombre usando lápiz y papel".

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 Métodos de representación de los algoritmos.- Los algoritmos pueden


ser expresados de muchas maneras:
 Lenguaje natural
 Pseudocódigo
 Lenguajes de programación
 Diagramas de flujo

1.10.1 Lenguaje Natural.- Las descripciones en lenguaje natural explican el


método de solución del problema, tienden a ser ambiguas y extensas. El usar
pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje
natural. Dichas expresiones son formas más estructuradas para representar
algoritmos.

1.10.2 Pseudocódigo.- Término genérico para nombrar las instrucciones del


programa, utilizadas en dos sentidos generales derivados del diagrama de flujo.
Pseudocódigo es la descripción de un algoritmo que asemeja a un lenguaje de
programación pero con algunas convenciones del lenguaje natural. Tiene varias
ventajas con respecto a los diagramas de flujo, entre las que se destaca el poco
espacio que se requiere para representar instrucciones complejas. El
pseudocódigo no está regido por ningún estándar. Pseudo viene de falso y por
ende es un código que, aunque es entendible, no se aplica al proceso que debe
realizar la maquina.

1.10.3 Lenguajes de Programación.- Descritos ya anteriormente con


mayor detalle

1.10.4 Diagramas de flujo.- Los diagramas de flujo son descripciones


gráficas de algoritmos; usan símbolos conectados con flechas para indicar la
secuencia de instrucciones y están regidos por normas ISO.
Los diagramas de flujo son usados para representar algoritmos pequeños,
ya que abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de
lectura son usados como introducción a los algoritmos, descripción de un lenguaje
y descripción de procesos a personas ajenas a la computación.
Diagrama secuencial empleado en muchos campos para mostrar los
procedimientos detallados que se deben seguir al realizar una tarea, como un

Ing. Hermas Herrera Callejas Página : 13 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

proceso de fabricación. También se utilizan en la resolución de problemas, como


por ejemplo en algoritmos. Los diagramas de flujo se usan normalmente para
seguir la secuencia lógica de las acciones en el diseño de programas de
computadoras.

1.10.4.1 Símbolos

Inicio / Fin

Entrada / Salida

Proceso

Decisión

Proceso iterativo

Proceso predefinido

Conector dentro de página

Conector fuera de página

Dirección de flujo

1.10.4.2 Tipos.- Muchos algoritmos son ideados para implementarse en un


programa. Sin embargo, los algoritmos pueden ser implementados en otros
medios, como una red neuronal, un circuito eléctrico o un aparato mecánico.
Algunos algoritmos inclusive se diseñan especialmente para implementarse
usando lápiz y papel. El algoritmo de multiplicación tradicional, muchas formas de
resolver la raíz cuadrada son sólo algunos ejemplos.
Hay también Diagramas de flujo de Sistemas donde se utilizan otros
símbolos adicionales a los mostrados o inclusive con otro significado

1.11 EJERCICIOS DE DIAGRAMAS DE FLUJO.- Realizar los diagramas de


flujo para resolver los siguientes problemas
1.- Convertir metros a Dm, Hm y Km (Dato: metros)

Ing. Hermas Herrera Callejas Página : 14 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

2.- Hallar el área y perímetro de un rectángulo (Datos: base, altura)


3.- Sumar los números enteros, los cuadrados y los cubos de 1 a N (Dato: N)
4.- Decidir según moneda. Si al lanzar cae cara ir al cine, caso contrario estudiar
5.- Encontrar el MAYOR de 3 números diferentes (Datos: A, B, C)
6.- Encontrar el MAYOR y el MENOR de 3 números diferentes (Datos: A, B, C)
7.- Hay 3 barras de diferente longitud. Comprobar si forman un triángulo. (Si la
suma de todo par de lados es mayor que el tercero, forman triángulo, caso
contrario no)
8.- Se deben digitar R, G, o B (Rojo, Verde o Azul). Imprimir color Rojo, Verde o
Azul según las letras introducidas especificadas anteriormente)
100
9.- Evaluar la función: Y  , donde x es la abscisa e Y es la ordenada. (Si
9  3X
X = 3 no se puede dividir
10.- El cuadrado de un número entero N es la suma de los N primeros números
N
impares (Dato N, N 2  (2i  1)
i 1
11.- Calcular el factorial de un número N introducido
12.- Calcular el salario e imprimir la boleta de pago de los empleados (Datos:
Nombre, horas trabajadas, salario por hora, fin de archivo)
Pago regular hasta 40 Hs semanales
Sobretiempo: 50% más que el salario normal
Imprimir: Nombre, Hs trabajadas, salario/hora, salario normal, sobretiempo
y pago total
13.- Imprimir el reporte de ventas (Vendedor, Nro de Orden, valor de la venta,
Totales por vendedor, Total compañía) leyendo la información de un archivo
N

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.

Ing. Hermas Herrera Callejas Página : 15 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

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

Ing. Hermas Herrera Callejas Página : 16 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

24.- Generar los N primeros números primos

Inicio

Def P(I), I, N, K, J, DIVE

A
Fin ? Si Fin B
No
A No Ejecutar ? DIVE>2 ? Si

Si No
Leer N K=K+1
A P(K) = J

N>0 ? No N debe ser > 0 No


K=N ? J=J+1
Si
Si
J = 1, K = 0 C
I = 1, N
C
DIVE = 0
Imprimir P(I)
I = 1, J

I
J Mod I = 0 ?
No
Si A
DIVE = DIVE + 1

Ing. Hermas Herrera Callejas Página : 17 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

25.- Invertir los dígitos de un número N entero, positivo de dos cifras o más

Inicio

Def A, N, N1, DIG

A
Fin ? Si Fin
No
A No Invertir ?

Si
Leer N

N>11 ? No N debe ser > 11 A


Si
A = N, N1 = 0

No Desplegar N1 A
A>0?

Si
DIG = A Mod 10
N1 = N1*10 + DIG
A = A \ 10

Ing. Hermas Herrera Callejas Página : 18 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

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

Def A(I, J), N, I, J, C, S, K, H, V

A
Fin ? Si Fin
No

A Ejecutar ?
No
Si
Leer N A

N>2 y N Mod 2= 1? No N debe ser impar y > 2

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

Ing. Hermas Herrera Callejas Página : 19 de 19


Computación para Ingeniería I y Laboratorio Cap. 2 - Conceptos de Archivos y Bases de Datos

CAPITULO 2 – CPNCEPTOS DE ARCHIVOS Y BASES DE DATOS

2.1. Introducción.- El almacenamiento y manejo de grandes cantidades de datos se hace


necesario en cualquier empresa para el logro de sus objetivos. Por ejemplo, se necesitan los
datos de los empleados, de clientes, de proveedores, de los productos almacenados, etc.
Normalmente, la gestión de estos datos se ha venido realizando de forma manual. Se
organizaban en forma de fichas, informes o expedientes, colocándolos en carpetas y
almacenando éstas en un archivador (Figura 2.1). Por ejemplo, se tiene un archivo de
clientes en el que cada ficha contiene todos los datos correspondientes a un cliente. Cuando
se necesita consultar o modificar los datos de clientes concretos será preciso realizar toda la
operación manualmente.

Figura 2.1. Archivo manual.

La utilización de las computadoras en la administración de las empresas ha supuesto


una revolución respecto al almacenamiento y gestión de sus datos, dando lugar al uso de los
denominados archivos informáticos y bases de datos.
Para el almacenamiento de los datos se utilizan soportes informáticos principalmente de
tipo magnético y óptico (discos, cintas, etc.), y para el tratamiento de los datos grabados en
ellos se utilizan las computadoras (Figura 2.2).

Figura 2.2. Soportes para el almacenamiento de datos.

Las ventajas obtenidas se derivan de las características de los soportes y de las


computadoras:
- Gran capacidad de almacenamiento en un reducido espacio.
- Rapidez en el proceso de los datos.
- Precisión de los resultados obtenidos del proceso.
Los archivos antes citados se denominan archivos de datos, pero hemos de tener en
cuenta que existen otros tipos de archivos, ya que cualquier información permanente que se
almacena en una computadora de cualquier forma, se considera igualmente un archivo. Por
ejemplo, un archivo fuente contendrá un programa fuente (programa escrito en un lenguaje
de programación de alto nivel), un archivo objeto contiene un programa ya compilado, un
archivo gráfico, un dibujo, etc.
En el presente capítulo nos dedicaremos al estudio de los archivos de datos o conjuntos
de informaciones en memoria secundaria relativas a un mismo tema. También estudiaremos
las bases de datos como generalización de la estructura de archivo.

Ing. Hermas Herrera Callejas Página: 1 de 8


Computación para Ingeniería I y Laboratorio Cap. 2 - Conceptos de Archivos y Bases de Datos

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.

2.2.2 Un registro físico.- O bloque corresponde a la cantidad de información que se


transfiere físicamente en cada operación de acceso (lectura o escritura) del medio magnético
Se debe aclarar los conceptos de registro lógico y registro físico, diferenciándose en que
el tamaño y formato del registro lógico los define el programador, mientras que el tamaño del
registro físico viene dado por las características físicas de la computadora utilizada.
En general, un bloque tendrá capacidad para contener uno o más registros lógicos, pero
también puede ocurrir que un registro lógico ocupe más de un bloque (Figura 2.3).
En el primer caso se habla de registros bloqueados, denominándose factor de
bloque al número de registros lógicos que contiene cada registro físico, y se denominan
registros expandidos a aquellos que ocupan más de un bloque.
La lectura de un archivo con registros bloqueados transfiere a memoria varios registros
a la vez, pero para leer un registro expandido será necesario realizar más de un acceso.
Bloque (Factor de bloqueo = 3)
Registro 1 Registro 2 Registro 3

campo 1 campo 2 campo 3 subcampo1 subcampo 2

campo 3
Figura 2.3. Esquema lógico de un archivo.

Ing. Hermas Herrera Callejas Página: 2 de 8


Computación para Ingeniería I y Laboratorio Cap. 2 - Conceptos de Archivos y Bases de Datos

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.2 Archivos de Movimientos.- En ellos se almacena la información que se utilizará para


actualizar los archivos maestros. Sus registros, denominados movimientos o transacciones,
son de tres clases: altas, bajas y modificaciones.
Una vez realizado el proceso de actualización de un archivo maestro por medio de un
archivo de movimientos, éste pierde su validez y podemos deshacernos de él.
Un archivo de este tipo para actualizar el antes mencionado de personal contratado, es
el que refleja las nuevas contrataciones, finalizaciones de contratos y modificaciones de los
mismos producidas en la empresa durante el mes actual.

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.

2.4 Organización de Archivos.- Al diseñar un archivo, dependiendo del uso que se va a


hacer del mismo y del soporte utilizado, se pueden elegir diferentes maneras de organizar
sus registros, siendo las principales organizaciones las siguientes:

- Secuencial
- Directa o aleatoria
- Indexada
- Archivos de texto
- Archivos binarios

2.4.1. Organización Secuencial.- Es aquélla en la cual los registros ocupan posiciones


consecutivas de almacenamiento, y solo se puede acceder a ellos de uno en uno a partir del
primero (Figura 2.4).
En un archivo secuencial no se pueden hacer operaciones de escritura cuando se está
leyendo, ni operaciones de lectura cuando se está escribiendo.
Ing. Hermas Herrera Callejas Página: 3 de 8
Computación para Ingeniería I y Laboratorio Cap. 2 - Conceptos de Archivos y Bases de Datos

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

Registro 1 Registro 2 Registro 3 Registro 4 Registro 5

Figura 2.4. Esquema lógico de un archivo secuencial.

2.4.2 Organización Directa o Aleatoria.- En un archivo con esta organización, también


denominada relativa las informaciones se colocan y se acceden aleatoriamente mediante su
posición, es decir, indicando el lugar relativo que ocupan dentro del conjunto de posiciones
posibles.
En esta organización se pueden leer y escribir registros, en cualquier orden y en
cualquier lugar.
Presenta el inconveniente de que es tarea del programador establecer la relación entre
la posición que ocupa un registro y su contenido, además puede desaprovecharse parte del
espacio destinado al archivo, ya que pueden quedar huecos libres entre unos registros y
otros.
Su principal ventaja es la rapidez de acceso a un registro cualquiera, ya que para ello no
es preciso pasar por los anteriores (Figura 2.5).
Acceso directo

Registro 2 Registro 3 Registro 1 Registro 4 Registro 8 Registr

Posiciones 01 02 03 04 05 06 07

Figura 2.5. Esquema lógico de un archivo directo.

2.4.3 Organización Secuencial Indexada.- Un archivo con esta organización consta de


tres áreas:

 Á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

Figura 2.6. Esquema lógico de un archivo secuencial indexado.

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.5 Métodos de Acceso.- Se denomina método de acceso a la forma en que el dispositivo


que maneja el soporte de información que contiene un archivo se posiciona en un
determinado lugar del mismo para realizar una operación de lectura o escritura de un
registro.
El modo de acceso lo decide el programador de la aplicación en función del soporte
utilizado y del tipo de organización del archivo.
Hay 2 métodos básicos: secuencial y directo.
El acceso secuencial a un registro supone acceder inicialmente al primer registro del
archivo y después, consecutivamente, a todos los sucesivos hasta llegar al registro deseado.
Este modo de acceso se puede utilizar con cualquier soporte y organización.
El acceso directo solamente se puede realizar en los denominados soportes
direccionables, como los discos magnéticos, y consiste en el posicionamiento sobre cualquier
registro sin necesidad de haber accedido antes a los anteriores.
En los archivos de organización directa, este acceso se consigue proporcionando al
dispositivo la posición del registro que se desea acceder. En ocasiones es conveniente
programar una función de aleatorización o hashing, la cual permita calcular la posición de
cualquier registro a partir del valor de su clave.
En los archivos indexados, el acceso directo lo realiza de forma automática el sistema a
partir del valor del campo clave; para ello utiliza, como se ha descrito en el apartado anterior,
un conjunto auxiliar de índices que relacionan las claves con las posicione de los registros.

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

lugares en que se ubican.


Las aplicaciones que se creen deberán tener en cuenta las distintas estructuraciones de
los datos, y los cambios que se realicen tanto en hardware como en software presentarán
numerosas complicaciones.
Otro problema derivado de la dispersión de los datos radica en la dificultad para
establecer sistemas de control y seguridad en los mismos.
Los sistemas de bases de datos pretenden dar solución a los problemas expuestos
mediante la integración de los archivos de datos, de su estructura y de la aplicación que los
maneja.
Podemos definir una base de datos como un conjunto integrado de datos
interrelacionados, junto con una serie de aplicaciones para su manejo, accesibles
simultáneamente por diferentes usuarios y programas.
Sus principales características son:
 Control centralizado de los datos.
 Integridad de los datos.
 Minimización de las redundancias.
 Independencia de los datos y las aplicaciones.
 Acceso concurrente a los datos.
 Costo mínimo de almacenamiento y mantenimiento.
 Versatilidad para la representación de relaciones.
 Establecimiento de medidas de seguridad.
 Facilidad para el cambio (hardware y software).

2.6.1 Modelos de Bases de Datos.- El modelo de base de datos hace referencia a la


estructura que se utiliza para expresar las relaciones existentes entre las diferentes unidades
de datos que la constituyen. De entre las varias posibilidades útiles para ello, son tres los
modelos que se han afianzado y están actualmente en uso:
1. Modelo jerárquico.
2. Modelo en red.
3. Modelo relacional.

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

Estudios Experiencia Familia Logros

Figura 2.7. Modelo Jerárquico.

Ing. Hermas Herrera Callejas Página: 6 de 8


Computación para Ingeniería I y Laboratorio Cap. 2 - Conceptos de Archivos y Bases de Datos

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

Figura 2.8. Modelo de Red.

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).

AUTOCAR CONDUCTOR CIUDAD PASAJERO AGENCIA


105 JULIÁN PÉREZ LA PAZ ELÍAS PEINADO TOURISA
105 JULIÁN PÉREZ COCHABAMBA ANA MARTORELL PRISA
105 PEDRO ROSALES SANTA CRUZ MARTA SÁNCHEZ TOURISA
107 JULIÁN PÉREZ SUCRE JULIO CARRANZA TOURIZA

Tabla 2.2. Modelo relacional

2.6.2 Seguridad y Control de Datos.- La información almacenada en un archivo o base de


datos puede llegar a tener una gran importancia y su pérdida o destrucción podría suponer
un desastre para sus propietarios.
Por ello, será preciso establecer determinadas medidas de seguridad y control que
minimicen o anulen ese riesgo.
Asimismo, habrá que determinar otras protecciones que garanticen la privacidad y
confidencialidad de los datos, con el fin de que éstos no puedan ser utilizados para otros
propósitos diferentes de los usos correctos para los que se crearon.
Distinguiremos dos aspectos diferentes con respecto a la protección que se puede
establecer sobre los datos:
1. Seguridad contra fallos del sistema o del soporte. Integridad
2. Seguridad contra usos incorrectos o no autorizados. Confidencialidad

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.

Ing. Hermas Herrera Callejas Página: 7 de 8


Computación para Ingeniería I y Laboratorio Cap. 2 - Conceptos de Archivos y Bases de Datos

Para ello se emplean las siguientes técnicas:


 Realización de copias de seguridad (back-up) periódicamente, por ejemplo, una vez por
semana, guardando estas copias en un lugar seguro hasta que dejen de tener validez al
realizar nuevas copias.
 Registro de operaciones que se realicen con los datos, recopilando estos registros
periódicamente, por ejemplo, una vez por día.
 Establecimiento de procedimientos de recuperación capaces de reconstruir la
información en su estado anterior a producirse el fallo, por medio de la copia de
seguridad y de los registros de operaciones.
 RAID = Redundant Array of Inexpensive Disk.- La información de archivos o bases de
datos creados en un volumen es distribuida de modo automático en áreas especiales de
los demás volúmenes para su recuperación automática en caso de daño del volumen
físico

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.

2.6.4 Seguridad Contra Usos Incorrectos o no Autorizados.- Una de las principales


características de los archivos y de las bases de datos es la posibilidad de acceso a sus
datos por parte de diferentes programas y usuarios. Esta característica implica la posibilidad
de que los datos puedan ser dañados por error o que puedan ser utilizados ilegítimamente
por usuarios no autorizados. Para evitarlo, habrá que establecer medidas de seguridad al
efecto.
Físicamente el acceso a un archivo se protege por medio de etiquetas, cuyas claves
están controladas por el sistema operativo. En algunos casos se puede aumentar aún más
esta protección por medio del criptografiado de los datos almacenados, consistente en el
encubrimiento de la información por algún método de cifrado. (Sin embargo hay posibilidad
de violar esa seguridad mediante pinchazos a las vías de transmisión mediante sneefers)
La protección queda establecida mediante diferentes niveles de acceso a los archivos
relativos a las operaciones permitidas o prohibidas: lectura, escritura y borrado de registros.
A cada usuario se le asigna un nivel de acceso, que es aceptado por el sistema
operativo tras el reconocimiento de su clave de usuario (password) y que le restringe el
acceso a determinados archivos y a determinadas operaciones sobre ellos. Es conveniente
que la clave de usuario se cambie con frecuencia para reforzar la seguridad.
Es imposible lograr seguridad en un 100 %, sin embargo toda medida de seguridad
implantada disminuye el riesgo contra uso no autorizado o destrucción. Habrá que buscar un
sano equilibrio entre el costo de implantar medidas de seguridad y el nivel de seguridad
alcanzado de modo que corresponda a las políticas de cada institución.

Ing. Hermas Herrera Callejas Página: 8 de 8


Computación para Ingeniería I y Laboratorio Cap. 3 –Visual Basic – Conceptos Básicos

CAPITULO 3 – VISUAL BASIC – CONCEPTOS BASICOS

3.1 Definición de Visual Basic.- Microsoft Visual Basic es actualmente el


lenguaje de programación más popular del mundo diseñado especialmente para
crear aplicaciones gráficas de manera fácil y eficiente. Con Microsoft Visual Basic
no es necesario escribir numerosas líneas de código para diseñar la interfaz
gráfica de usuario, sólo es necesario “dibujar” ciertos objetos prefabricados
llamados controles (etiquetas, cuadros de texto, botones de comando, listas
desplegables, etc.) en un formulario dentro de la pantalla. A continuación se
escribe el código fuente asociado con cada objeto. Esto es, cada objeto queda
ligado a un bloque de código que se ejecuta cuando se produce el suceso que lo
activa (por ejemplo, un clic del mouse).

3.2 Definición de Objeto.- Los elementos básicos (formularios y controles) de


construcción de una aplicación con Visual Basic son los objetos. Cada objeto
tiene un conjunto de características y un comportamiento definido (propiedades,
métodos y sucesos) que lo diferencian de otros objetos y hacen que cumpla con
una función determinada en una aplicación. Los objetos pueden moverse, variar
de tamaño y personalizarse mediante la asignación de propiedades en tiempo de
diseño o en tiempo de ejecución.

3.2.1 Propiedades .- Al conjunto de datos que describen las características de


un objeto se le conoce como sus propiedades. Estas propiedades pueden
establecerse en tiempo de diseño, utilizando la ventana Propiedades o durante la
ejecución del programa, mediante el uso de sentencias en el código. La sintaxis
para asignar valor a una propiedad es:

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.

3.2.3 Sucesos.- Hechos que son desencadenados en los formularios y controles

Ing. Hermas Herrera Callejas Página: 1 de 20


Computación para Ingeniería I y Laboratorio Cap. 3 –Visual Basic – Conceptos Básicos

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.3 Concepto de proyecto.- Un proyecto es una serie de archivos (módulos,


formularios, etc) que integran en su conjunto una aplicación completa. Un
proyecto consta de los siguientes archivos:
Archivo Extensión
* Un archivo de proyecto que realiza el seguimiento de todos los .vbp
componentes de la aplicación.
* Un archivo para cada formulario. .frm
* Un archivo de datos binario para cada formulario que contenga datos .frx
sobre propiedades de controles del formulario. Estos archivos no se
pueden modificar y los genera automáticamente cualquier archivo .frm
que tenga propiedades en formato binario, como Picture o Icon.
* Un archivo para cada módulo de clase. (opcional) .cls
* Un archivo para cada módulo estándar. (opcional) .bas
* Uno o más archivos con controles ActiveX .ocx
* Un único archivo de recursos. .res

3.4 Terminología de Visual Basic.- Conforme se desarrollen aplicaciones con


Visual Basic se necesitará estar familiarizado con los siguientes términos:

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.

3.4.2 Formulario.- Un formulario es una ventana en la que se “dibujan” los


controles y que permite a los usuarios llevar a cabo las funciones asociadas a la
aplicación.

3.4.3 Interfaz de usuario.- Medio de comunicación entre la aplicación y el


usuario

3.4.4 Módulo.- Un conjunto de declaraciones y procedimientos.

3.4.5 Procedimientos conducidos por sucesos.- Un procedimiento conducido


por sucesos es el código que es invocado cuando un objeto reconoce que ha
ocurrido un determinado suceso dentro de un programa. Por ejemplo cuando se
hace clic en el primer botón de comando de un programa, se ejecuta el
procedimiento de suceso Command1.Click. Los procedimientos conducidos por
sucesos suelen evaluar y establecer propiedades y utilizar otras sentencias de
programa para realizar el trabajo del programa.

3.4.6 Programación controlada por sucesos.- Cuando un programa es


controlado por sucesos, se escribe el código que se ejecuta en respuesta a
sucesos invocados por el usuario. Difiere de la programación procedural, en la
cual el programa comienza en la primera línea de código y sigue un flujo definido
Ing. Hermas Herrera Callejas Página: 2 de 20
Computación para Ingeniería I y Laboratorio Cap. 3 –Visual Basic – Conceptos Básicos

llamado procedimiento. La programación controlada por sucesos es la esencia de


las interfaces gráficas de usuario; el usuario acciona y el código responde.

3.4.7 Sentencia de programa.- Una sentencia de programa es una o más


palabras reservadas de código que realizan el trabajo del programa. Las
sentencias de programa de Visual Basic crean espacios de almacenamiento para
datos, abren archivos, realizan cálculos y muchas otras tareas importantes.

3.4.8 Tiempo de diseño.- Es el momento en el que se construye la aplicación

3.4.9 Tiempo de ejecución.- Es el momento en el cual el usuario ejecuta e


interactúa con la aplicación.

3.5 El entorno de programación de Visual Basic 6.0.- El entorno de


programación de Visual Basic contiene todas las herramientas necesarias para
desarrollar programas para Windows, de una manera fácil y sencilla. Para iniciar
Visual Basic, siga los pasos que se indican en la siguiente ilustración:

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:

Barra de menú Barra de herramientas Estándar Explorador de proyectos

Cuadro de herramientas Formulario Ventana de posición del formulario

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.

3.5.2 La Barra de Herramientas Estándar.- Esta barra contiene una serie de


botones que permitirán un acceso rápido a los comandos de menú usados
frecuentemente. Si se hace clic en uno de los botones de la barra de
herramientas, se ejecutará la acción representada por ese botón.

Ing. Hermas Herrera Callejas Página: 4 de 20


Computación para Ingeniería I y Laboratorio Cap. 3 –Visual Basic – Conceptos Básicos

Agregar proyecto de EXE estándar Visual Component Manager


Agregar Formulario Ventana de la vista datos
Editor de menús Cuadro de herramientas
Abrir proyecto Examinador de objetos
Guardar proyecto Ventana Posición del formulario

Ventana de Propiedades
Cortar Explorador de proyectos
Copiar Terminar
Pegar Interrumpir
Buscar Iniciar
Deshacer Rehacer

3.5.2.1 Agregar proyecto.- Muestra un submenú que enumera los tipos de


proyectos que se pueden agregar al grupo de proyectos abierto actualmente.
3.5.2.2 Agregar <elemento>.- Muestra un submenú que enumera todos los
elementos que se pueden agregar al proyecto activo. El icono cambiará al último
objeto agregado. El valor predeterminado es el Formulario.
3.5.2.3 Editor de menús.- Muestra el cuadro de diálogo Editor de menus.
3.5.2.4 Abrir proyecto.- Cierra el proyecto y el grupo de proyectos, si hay uno
cargado, y muestra los proyectos existentes y los proyectos asociados.
3.5.2.5 Guardar proyecto.- Guarda el proyecto actual y todos sus componentes
(formularios y módulos).
3.5.2.6 Pegar.- Inserta el contenido del Portapapeles en la ubicación actual.
3.5.2.7 Cortar.- Quita el control o texto seleccionado y lo coloca en el
Portapapeles.
3.5.2.8 Copiar.- Copia el texto o control seleccionado al Portapapeles.
3.5.2.9 Deshacer.- Deshace la última acción de edición, como la escritura de
texto en la ventana Código o la eliminación de controles.
3.5.2.10 Rehacer.- Restituye la última operación de edición de texto u objeto si no
efectuó ninguna acción desde el último comando Deshacer.
3.5.2.11 Iniciar.- Ejecuta la aplicación que comienza con el Objeto inicial
identificado en la ficha General del cuadro Propiedades del proyecto.
3.5.2.12 Interrumpir.- Detiene la ejecución de un programa y cambia al modo de
interrupción.
3.5.2.13 Terminar.- Detiene la ejecución del programa y vuelve a tiempo de
diseño.
3.5.2.14 Explorador de proyectos.- Muestra el Explorador de proyectos, que
presenta una lista jerarquizada de los proyectos abiertos actualmente y de sus
contenidos.
3.5.2.15 Buscar.- Busca un texto especificado en el cuadro de diálogo Buscar.
3.5.2.16 Ventana Posición del formulario.- Muestra la ventana Posición del
formulario, para obtener una vista previa de la ubicación del formulario dentro de la
ventana.
3.5.2.17 Ventana Propiedades.- Muestra la ventana Propiedades para ver o
modificar las propiedades del control seleccionado.
3.5.2.18 Examinador de objetos.- Muestra el Examinador de objetos, que
presenta una lista con las bibliotecas de objetos, la biblioteca de tipos, las clases,

Ing. Hermas Herrera Callejas Página: 5 de 20


Computación para Ingeniería I y Laboratorio Cap. 3 –Visual Basic – Conceptos Básicos

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.

3.5.3 El cuadro de herramientas.- Proporciona una serie de iconos, cada uno


de los cuales representan un determinado control que se puede colocar en un
formulario. Si no está visible, hacer clic en el botón Cuadro de herramientas de la
Barra de herramientas

Puntero PictureBox

Label
TextBox
Frame CommandButton

CheckBox OptioButton

ComboBox ListBox

HScrollBar VScrollBar

Timer DriveListBox

DirListBox FileListBox

Shape Line

Image Data

ActiveX

3.5.3.1 El puntero.- Este elemento no se utiliza para dibujar controles. Se utiliza


para seleccionar, mover y ajustar el tamaño de los controles existentes sobre el
formulario.
3.5.3.2 PictureBox (Cuadro de dibujo).- Se utiliza para visualizar imágenes
gráficas (‘icons’, ‘bitmaps’ y ‘metafiles’).
3.5.3.3 Label (Etiqueta).- Se utiliza para mostrar texto. Puede ser transparente,
de forma que el texto parece que forma parte del formulario. El texto de este
control se define en la propiedad Caption.
3.5.3.4 TextBox (Cuadro de texto).- Este control es un pequeño editor de texto
y su propiedad principal es Text, con la que se puede poner un texto fijo en el
control o leer el texto que introduzca el usuario.
3.5.3.5 Frame (Marco).- Se utiliza para agrupar objetos relacionados entre si.
Para agrupar controles, se dibuja primero el marco y después se dibujan los
controles dentro del marco.
3.5.3.6 CommandButton (Botón de comando).- Crea un botón en el que el
usuario puede hacer clic para ejecutar un comando.

Ing. Hermas Herrera Callejas Página: 6 de 20


Computación para Ingeniería I y Laboratorio Cap. 3 –Visual Basic – Conceptos Básicos

3.5.3.7 CheckBox (Casilla de verificación).- Este control presenta múltiples


opciones de las que el usuario puede elegir más de una. Las selecciones
efectuadas se activan o desactivan de modo alternante
3.5.3.8 OptionButton (Botón de opción).- Este control muestra múltiples
opciones de las que el usuario sólo puede elegir una. Al activar una opción,
automáticamente se desactivan las demás.
3.5.3.9 ComboBox (Cuadro combinado).- Este control es una combinación de
un cuadro de texto y un cuadro de lista. El usuario puede seleccionar un elemento
de la lista o escribir un valor en el cuadro de texto.
3.5.3.10 Timer (Reloj).- Permite activar procesos a intervalos regulares de
tiempo.
3.5.3.11 ListBox (Cuadro de lista).- Se utiliza para mostrar una lista de
elementos de los que el usuario puede seleccionar uno. A diferencia de un grupo
de casillas de activación o botones de opción, el control ListBox puede contener
varias líneas, y el usuario puede desplazarse por la lista para localizar una entrada
determinada.
3.5.3.12 HScrollBar (Barra de desplazamiento horizontal).- Se utiliza para
desplazar la información de una caja hacia la izquierda o hacia la derecha.
3.5.3.13 VScrollBar (Barra de desplazamiento vertical).- Se utiliza para
desplazar la información de una caja hacia arriba o hacia abajo.
3.5.3.14 DriveListBox (Cuadro de lista de unidades).- Se utiliza para visualizar
una lista de las unidades de disco disponibles para que el usuario pueda
seleccionar una.
3.5.3.15 DirListBox (Cuadro de lista de directorios).- Se utiliza para visualizar
una lista de carpetas de un dispositivo seleccionado en los que el usuario puede
moverse.
3.5.3.16 FileListBox (Cuadro de lista de archivos).- Se utiliza para visualizar
una lista de archivos contenidos en la carpeta seleccionada a los que el usuario
puede acceder.
3.5.3.17 Shape (Formas).- Permite dibujar rectángulos, cuadrados, elipses o
círculos en el formulario, además de elegir diversas formas de relleno en el área
encerrada por las figuras
3.5.3.18 Line (Línea).- Se utiliza para dibujar rectas o una gran variedad de
estilos de líneas en el formulario, o en algunos de los controles que permitan esta
modalidad de manipulación
3.5.3.19 Image (Imagen).- Se utiliza para mostrar en el formulario una imagen
gráfica tipo mapa de bits, icono o meta-archivo y la posibilidad de utilizarlo como
una tecla de comando
3.5.3.20 Data (Datos).- Este control proporciona acceso a una base de datos
existente y permite visualizar su información en el formulario además de poderse
manipular dicha información dentro del programa
3.5.3.21 OLE.- Este control permite incrustar datos, imágenes o elementos
provenientes de otra aplicación.

3.5.4 La Ventana Propiedades.- Permite visualizar y modificar las propiedades


de los elementos dentro de un formulario. Una propiedad es una característica de
un objeto o control, como su tamaño, título, color, etc. Una lista diferente aparece
en la ventana Propiedades cada vez que se selecciona un control en el formulario
(o se selecciona el formulario mismo)

Ing. Hermas Herrera Callejas Página: 7 de 20


Computación para Ingeniería I y Laboratorio Cap. 3 –Visual Basic – Conceptos Básicos

Cuadro de lista de Controles

Lista de propiedades

La ventana Propiedades contiene un cuadro de lista desplegable en el que


aparecen todos los controles del formulario; también lista todas las propiedades
del control seleccionado en el formulario.

3.5.5 El Explorador de proyectos.- Esta ventana despliega en forma de árbol


los formularios y módulos (archivos que contienen código) de la aplicación,
facilitando la tarea de pasar de unos archivos a otros durante la creación de un
proyecto. Cualquier cambio realizado en un proyecto se refleja de manera
automática en el Explorador de proyectos.
Ver código
Ver objeto

Los botones Ver objeto y Ver código proporcionan acceso a todos los archivos
utilizados en el proceso de programación.

3.5.6 Ventana de Posición del Formulario.- La ventana Posición del formulario


muestra la ubicación y tamaño relativo del formulario utilizando una pequeña
representación gráfica de la pantalla. Si desea que el formulario aparezca en una
posición distinta de la actual, puede moverlo en la ventana de Posición del
formulario. Para ello, sitúe el puntero del mouse sobre el ícono que representa al
formulario y, seguidamente, arrástrelo donde usted quiera que aparezca cuando el
usuario ejecute la aplicación.

Ing. Hermas Herrera Callejas Página: 8 de 20


Computación para Ingeniería I y Laboratorio Cap. 3 –Visual Basic – Conceptos Básicos

3.6 El Formulario.- Es el área de trabajo principal, es el punto desde el cual se


puede desarrollar cualquier aplicación Visual Basic. Básicamente, un formulario
funciona como un plano de fondo en el cual dibujaremos los controles necesarios
para solicitar, presentar datos o definir ciertos procesos.
Control de menú del sistema Maximizar
Barra de título Minimizar Cerrar

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.

3.6.1 Propiedades de un formulario.- Un formulario tiene propiedades que


afectan su apariencia y comportamiento y responde a ciertos eventos durante la
ejecución del programa. La mayor parte de las propiedades son modificables
durante el diseño de la aplicación y algunas sólo son modificables en el código del
programa, por tanto, durante la ejecución de éste. Veamos algunas propiedades
de los formularios:
3.6.1.1 (Nombre).- Por defecto el nombre del formulario es Form1 y puede ser
usado en el código para identificar al formulario. Puede establecer un nuevo
nombre durante el diseño de la aplicación.
3.6.1.2 Appearance.- Permite establecer el estilo del formulario. Al seleccionar
la opción Flat el formulario queda sin efectos visuales; en cambio, si
seleccionamos la opción 3D el formulario adopta la apariencia de tres
dimensiones.

Ing. Hermas Herrera Callejas Página: 9 de 20


Computación para Ingeniería I y Laboratorio Cap. 3 –Visual Basic – Conceptos Básicos

3.6.1.3 AutoRedraw.- Esta propiedad permite establecer si el contenido del


formulario vuelve a re-dibujarse cuando haya sido ocultado por otro objeto. La
opción True vuelve a re-dibujar el contenido del formulario cuando éste haya sido
ocultado; False no vuelve a re-dibujar los gráficos o texto.
3.6.1.4 BackColor.- Permite establecer el color de fondo del formulario.

Seleccione un color de fondo para el formulario


3.6.1.5 BorderStyle.- Permite modificar el tipo de borde del formulario.

0- None.- Permite definir una formulario sin borde.

1- Fixed Single.- Permite definir una formulario con borde simple no


redimensionable.

Ing. Hermas Herrera Callejas Página: 10 de 20


Computación para Ingeniería I y Laboratorio Cap. 3 –Visual Basic – Conceptos Básicos

2- Sizable.- Es la opción por defecto. Permite definir un formulario con borde


grueso redimensionable.

3- Fixed Dialog.- Permite definir una formulario con borde grueso no


redimensionable.
4- Fixed ToolWindow.- Permite definir un formulario de borde no
redimensionable con área de titulo reducida.
5- Sizable ToolWindow.- Permite definir un formulario de borde redimensionable
con área de titulo reducida
3.6.1.6 Control Box.- Seleccionar esta propiedad y hacer clic en True para incluir
un menú de sistema en la barra de título del formulario. Si se elige False, el menú
de control y los botones Maximizar, Minimizar y Cerrar desaparecen del formulario.
3.6.1.7 Caption.- Seleccione esta propiedad para introducir el texto que
aparecerá en la barra de título del formulario.

3.6.1.8 ForeColor.- Permite establecer el color de primer plano del formulario.


3.6.1.9 Height.- Devuelve o permite establecer la altura del formulario.
3.6.1.10 Left.- Devuelve o permite establecer la distancia entre el borde izquierdo
interno del formulario y el borde izquierdo de su contenedor.
3.6.1.11 MousePointer.- Devuelve o permite establecer el tipo de ícono para el
puntero del mouse cuando éste se desplace sobre el formulario.

3.6.1.12 Pícture.- Permite seleccionar un gráfico como fondo del formulario. El


gráfico puede ser de tipo BMP, WMF,JPG o GIF.

Ing. Hermas Herrera Callejas Página: 11 de 20


Computación para Ingeniería I y Laboratorio Cap. 3 –Visual Basic – Conceptos Básicos

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.

0- Normal.- Representa el estado normal de la ventana con las dimensiones que se


establecieron durante el diseño.
1- Minimized.- Si se asigna el valor 1 la ventana aparecerá minimizada, como un icono.
2- Maximized.- Si se asigna el valor 2 la ventana ocupará toda la pantalla.

3.6.2 Sucesos en un 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.

Ing. Hermas Herrera Callejas Página: 12 de 20


Computación para Ingeniería I y Laboratorio Cap. 3 –Visual Basic – Conceptos Básicos

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.

3.6.3 Métodos del formulario

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

Visual Basic visualiza el cuadro de diálogo Nuevo proyecto:

Ing. Hermas Herrera Callejas Página: 13 de 20


Computación para Ingeniería I y Laboratorio Cap. 3 –Visual Basic – Conceptos Básicos

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.

3.7.1 Diseño de la interfaz de usuario.- El diseño de la interfaz de usuario de


una aplicación consiste en “dibujar” los controles sobre el formulario. Para ello,
debe utilizar el Cuadro de herramientas:

1. En el cuadro de herramientas, situar el puntero del mouse sobre el control


TextBox y hacer clic para seleccionarlo. A continuación, situar el puntero del
mouse cerca a la esquina superior izquierda del formulario, pulsar y mantener
pulsado el botón izquierdo del mouse mientras se arrastra el puntero hacia abajo y
hacia la derecha. Soltar el botón del mouse cuando en el formulario se muestre
una etiqueta similar al contenido en la siguiente ilustración:

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.

El tamaño de un objeto también se puede modificar ingresando nuevos valores en


las propiedades Height (alto) y With (ancho), en la ventana Propiedades. Los
valores de alto y ancho están dados en twips. Un twips equivale a 1/1440
pulgadas.

Ing. Hermas Herrera Callejas Página: 14 de 20


Computación para Ingeniería I y Laboratorio Cap. 3 –Visual Basic – Conceptos Básicos

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.

3. En el cuadro de herramientas, situar el puntero del mouse sobre el control


CommandButton y hacer doble clic. El control aparece en el centro del formulario.
Modificar su tamaño y posición.

4. Volver a hacer doble clic sobre el control CommandButton. En el formulario,


modificar el tamaño y posición de este control.
Finalmente, la interfaz de usuario debe tener un aspecto similar a la siguiente
ilustración:

3.7.2 Establecimiento de las propiedades.- Luego de diseñar la interfaz de


usuario, el siguiente paso consiste en establecer las propiedades de los elementos

Ing. Hermas Herrera Callejas Página: 15 de 20


Computación para Ingeniería I y Laboratorio Cap. 3 –Visual Basic – Conceptos Básicos

incluidos en el formulario. Para ello, es necesario utilizar la ventana Propiedades.


Si esta ventana no está visible, hacer clic en el botón Ventana Propiedades o
presionar la tecla F4.
Por defecto, Visual Basic asigna un nombre a cada uno de los controles
dibujados en el formulario y al formulario mismo (Textl, Commandl, Command2 y
Form1). El nombre de un control permite asociarlo con un procedimiento y
referirse a él dentro del código del programa para modificar algunas propiedades.
Modificar el nombre del control TextBox:
1. En el formulario, situar el puntero del mouse sobre el cuadro de texto y hacer
clic (observar que ahora la ventana Propiedades lista todas las propiedades de
este control).
2. En la ventana Propiedades, en la propiedad (Nombre), borrar el nombre que
por defecto tiene este control y escribir “Mensaje”.

Asignar un nuevo nombre al control TextBox.


Si la propiedad que se busca no está a la vista, desplazar la barra de desplazamiento vertical hasta
visualizar la propiedad.
Cuando se ejecute el programa, el cuadro de texto Mensaje no debe mostrar
texto alguno por lo que es necesario modificar la propiedad Text de este control.
Para ello, en la ventana Propiedades, arrastrar la barra de desplazamiento hacia
abajo hasta visualizar la propiedad Text y borrar el texto (Textl) que por defecto
tiene esta propiedad.
Asignar una fuente, estilo y tamaño al mensaje que aparecerá en el cuadro
de texto Mensaje. Para lograr esto, arrastrar la barra de desplazamiento hasta
visualizar la propiedad Font del cuadro de texto Mensaje. Hacer clic en la
propiedad Font (Observar que aparece un pequeño botón con puntos
suspensivos... Hacer clic en este botón y Visual Basic visualizará el cuadro de
diálogo Fuente. En este cuadro seleccionar una fuente, estilo de fuente y tamaño
para el texto que aparecerá en el control TextBox.

Ing. Hermas Herrera Callejas Página: 16 de 20


Computación para Ingeniería I y Laboratorio Cap. 3 –Visual Basic – Conceptos Básicos

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:

Texto Mensaje Comando Saludo Comando Salir


El siguiente cuadro presenta un resumen de las propiedades asignadas a los
controles:
Control Propiedad Valor
Forml Name Forml
TextBox Name Mensaje
Text “”
Font Arial, Normal, tamaño 12
Commandl Name Saludo
Caption Saludo
Command2 Name Salir
Caption Salir

3.7.3 Escritura del código.- Diseñada la interfaz de usuario y establecidas las


propiedades de los elementos de la interfaz, el siguiente paso consiste en unir
código a cada uno de los controles de la aplicación. En cualquier aplicación que se
cree con Visual Basic, los controles incluidos en el formulario (incluso el formulario
mismo) pueden responder a sucesos como, por ejemplo, un clic del mouse. Pero,
para que un control o un formulario responda a un suceso es necesario que éstos
estén unidos a un código. El código unido a un objeto se denomina procedimiento
conducido por un suceso o simplemente procedimiento.
Veamos los pasos que se deben seguir para unir código de un procedimiento
al botón de comando “Saludo” accionado por el suceso click. Cuando el usuario
haga clic en este botón, en el cuadro de texto Mensaje debe aparecer el mensaje
de saludo “Hola. Estoy aprendiendo Visual Basic”. Para lograr esto, proceder con
los siguientes pasos

1. En el formulario, situar el puntero del mouse sobre el botón de comando


“Saludo” y hacer doble clic. Visual Basic muestra la ventana de código en la cual
se introducirá y editará sentencias de programa de Visual Basic.

Ing. Hermas Herrera Callejas Página: 17 de 20


Computación para Ingeniería I y Laboratorio Cap. 3 –Visual Basic – Conceptos Básicos

La ventana de código muestra las sentencias de programa que marcan el


inicio y el final de un procedimiento en Visual Basic:
Private Sub Saludo_Click()

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.

2. Escribir la siguiente línea de programa entre las sentencias Private Sub


Saludo_Clic() y End Sub.
Mensaje.Text = “Hola. Estoy aprendiendo Visual Basic”
Cuando se ha terminado, la ventana de código presentará un aspecto similar
a la siguiente ilustración:

Ahora, asociar un procedimiento al botón de comando “Salir” accionado por


el suceso Click. Cuando el usuario haga clic en este botón, la ejecución del
programa debe finalizar.
1. En el formulario, hacer doble clic en el botón de comando “Salir”. Visual Basic
muestra la ventana de código.
2. Escribir la sentencia End entre las sentencias Private Sub Salir_Clic() y End
Sub. La ventana de código debe tener el siguiente aspecto:

Ing. Hermas Herrera Callejas Página: 18 de 20


Computación para Ingeniería I y Laboratorio Cap. 3 –Visual Basic – Conceptos Básicos

End es la sentencia de programa que se utiliza para detener ejecución de un


programa y retirarlo de la pantalla.

3.8 Cómo almacenar el programa.- Ahora que ya se ha terminado el programa,


guardar el formulario con el nombre Saludo.frm y el proyecto con el nombre
Saludo.vbp. Para ello, hacer clic en el comando Guardar proyecto del menú
Archivo. Visual Basic muestra el cuadro de diálogo Guardar archivo como:
En el cuadro de texto Nombre de archivo, escribir Saludo y hacer clic en
Guardar. Visual Basic guardará el formulario con el nombre Saludo.frm. A
continuación, aparecerá el cuadro de diálogo Guardar proyecto como. En el
cuadro de texto Nombre de archivo, escribir Saludo y hacer clic en Guardar. El
proyecto Saludo se guardará con el nombre Saludo.vbp.

Si posteriormente se desea trabajar con este programa, se deberá


seleccionar el comando Abrir proyecto del menú Archivo y en el cuadro de diálogo
Abrir proyecto, hacer doble clic sobre el nombre Saludo del proyecto.

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”.

3.10 Creación de un archivo ejecutable.- Una vez que la aplicación tiene el


aspecto deseado y que su ejecución se realiza correctamente, se puede crear un
archivo ejecutable que permita que dicha aplicación se ejecute fuera del entorno
de Visual Basic. Para ello, en el menú Archivo, hacer clic en la opción Generar
Saludo.exe (Visual Basic añade automáticamente el nombre del programa al

Ing. Hermas Herrera Callejas Página: 19 de 20


Computación para Ingeniería I y Laboratorio Cap. 3 –Visual Basic – Conceptos Básicos

nombre del comando). Visual Basic muestra el cuadro diálogo Generar proyecto:

Luego de seleccionar una carpeta y de introducir un nombre, hacer clic en el


botón Aceptar. Visual Basic creará un programa ejecutable y lo almacenará en la
carpeta especificada.
Para ejecutar este archivo desde Windows, se lo debe localizar en el
Explorador de Windows y hacer doble clic sobre él. También se puede crear un
acceso directo para este archivo en la ventana del escritorio. Para ello, en el
Explorador de Windows, situar el puntero del mouse sobre el archivo ejecutable,
presionar el botón derecho del mouse y mantenerlo así mientras se arrastra hacia
el escritorio de Windows. Soltar el botón del mouse y Windows mostrará un menú
contextual. En este menú se debe seleccionar el comando Crear íconos de
acceso directo aquí. Windows introducirá un icono en el escritorio sobre el que
se podrá hacer doble clic para ejecutar el archivo ejecutable.

Ing. Hermas Herrera Callejas Página: 20 de 20


Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

CAPITULO 4 – VISUAL BASIC – CONTROLES BÁSICOS

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.

4.1.1 Propiedades del control Label


Propiedad Valor por defecto Descripción
Alignment 0-Left Justify Determina si el mensaje aparece alineado a la izquierda, a la
derecha o al centro de la etiqueta.
Autosize False Determina si la etiqueta cambia de tamaño de manera
automática para mostrar todo el mensaje
Backcolor White Devuelve o establece el color de fondo.
BackStyle 1-Opaque Determina si el color de fondo es transparente u opaco. Si se
elige 0-Transparent se vera lo que está detrás de la etiqueta.
BorderStyle 0-None Devuelve/establece el estilo de borde. Elegir 1-FixedSingle y
una línea bordeara la etiqueta
Caption Label1 Contiene el mensaje que aparece en la etiqueta.
Enabled True Determina si la etiqueta estará activa. Cambiar esta
propiedad en tiempo de ejecución para que la etiqueta no
responda a eventos generados por el usuario.
Font Ms Sans Serif Muestra el cuadro de diálogo Fuente en el que se establece
el nombre, estilo y tamaño de la fuente usada en el mensaje.
Forecolor Black Devuelve o establece el color del mensaje.
Height 375 Devuelve o establece la altura de la etiqueta.
Left 1560 Establece la distancia entre el borde izquierdo de la etiqueta
y el borde izquierdo del formulario.
MousePointer 0-Default Determina la forma del puntero del mouse al pasar este
sobre la etiqueta.
Name Label1 Nombre usado en el código para identificar a la etiqueta.
TabIndex Devuelve o establece el orden de tabulación del objeto.
Top 1200 Devuelve o establece la distancia entre el borde superior de
la etiqueta y el borde superior del contenedor.
Visible True Determina si la etiqueta estará visible u oculta
Width 1125 Devuelve o establece el ancho de la etiqueta.
WordWrap False Determina si la etiqueta se expande para ajustarse al texto.

4.2 El control TextBox (Cuadro de Texto).- Este control es un pequeño editor de


texto, se utiliza para mostrar texto que puede editarse. Su propiedad principal es Text,
con la que se puede poner un texto fijo en el control o leer el texto que se introduzca.

El control TextBox también se utiliza para introducir datos que serán procesados por un procedimiento
asociado a este u otro control.

Ing. Hermas Herrera Callejas Página : 1 de 25


Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

4.2.1 Propiedades del control TextBox


Propiedad Valor por defecto Descripción
Alignment 0-Left Justify Determina si el texto aparece alineado a la izquierda, a la
derecha o al centro del cuadro de texto.
Backcolor White Devuelve o establece el color de fondo.
BorderStyle 0-None Devuelve o establece el estilo de borde. Elegir 1-Fixed
Single y una línea bordeará al cuadro de texto.
Enabled True Determina si un cuadro de texto está activo.
Font Ms Sans Serif Muestra el cuadro de diálogo Fuente en el que se establece
el nombre, el estilo y tamaño de la fuente usada en la
propiedad Text.
ForeColor Black Devuelve o establece el color del texto.
Height 375 Devuelve o establece la altura del Control
Locked False Determina si el usuario puede editar el texto.
MaxLength 0 Específica el número máximo de caracteres que se puede
escribir en un cuadro de texto.
MousePointer 0-Default Determina la forma del puntero del mouse al pasar el
puntero sobre el cuadro de texto
MultiLine False Permite que el cuadro de texto acepte múltiples líneas.
Name Text1 Nombre usado en el código para identificar al cuadro de
texto.
PasswordChar “ ” Determina el carácter que aparece cuando el usuario
introduce una contraseña.
ScrollBars 0-None Define si la caja de texto tendrá barra de desplazamiento
vertical, horizontal o ambas.
TabIndex 1 Especifica el orden de enfoque dado al cuadro de texto.
TabStop True Determina si el cuadro de texto puede recibir el enfoque.
Visible True Determina si el cuadro de texto estará visible u oculto.
Width 1125 Devuelve o establece el ancho del cuadro de texto.
Text Text1 Contiene el texto del cuadro.
ToolTipText “ “ Devuelve o establece el texto mostrado cuando el puntero
del mouse se sitúa sobre el control.

4.2.2 Sucesos del control TextBox


Suceso Descripción
Change Ocurre cuando cambia el texto que contiene el control.
GotFocus Ocurre cuando el control recibe el enfoque.
KeyDown Ocurre cuando el usuario presiona una tecla mientras el control tiene el enfoque.
KeyPress Ocurre cuando el usuario presiona y suelta una tecla.
Keyup Ocurre cuando el usuario suelta una tecla mientras el control tiene el enfoque.
LostFocus Ocurre cuando el control pierde el enfoque.

4.2.3 Métodos del control TextBox


Método Descripción
Refresh Actualiza el texto del control TextBox.
SetFocus Mueve el enfoque al control TextBox.

4.3 El control CommandButton (Botón de Comando).- Este control permite “dibujar”


un botón de comando que, cuando se hace clic sobre él, ejecuta un bloque de código o
procedimiento ligado al mismo y accionado por el suceso Click.

Ing. Hermas Herrera Callejas Página : 2 de 25


Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

Asociar un procedimiento a un botón de comando y hacer clic para ejecutar el procedimiento.

4.3.1 Propiedades del control CommandButton


Propiedad Valor par defecto Descnpcion
Cancel False Establece si el botón de comando se comportará como el
botón Cancelar en el formulario.
Caption Command1 Establece el texto que mostrará el botón de comando.
Default False Establece si el botón será activado con la tecla Enter.
Enabled True Devuelve o establece un valor que determina si el objeto
puede responder a sucesos realizados por el usuario.
Height 495 Devuelve o establece la altura del objeto.
Left 3120 Devuelve a establece la distancia entre el borde izquierdo
del objeto y el borde izquierdo de su contenedor.
Name Commandl Permite establecer el nombre que se utilizará en el código.
Top 1615 Devuelve o establece la distancia entre el borde superior del
objeto y el borde superior de su contenedor.
Visible True Determina si el botón de comando estará visible u oculto.
Width 615 Devuelve o establece el ancho del botón de comando.

4.4 El control CheckBox (Casilla de verificación).- Este control permite presentar


varias opciones de las que el usuario puede elegir una o más de una.

Cuando el usuario seleccione una opción, aparecerá un check dentro de la casilla y la propiedad Value
adoptará el valor 1.

4.4.1 Propiedades del control CheckBox


Propiedad Valor por defecto Comentario
Caption Check1 Descripción que acompaña al control CheckBox.
Enabled True Devuelve o establece un valor que determina si el objeto
puede responder a eventos realizados por el usuario.
Name Check1 Devuelve o establece el nombre del objeto usado en el
código.
Value 0-Unchecked Indica si la casilla de verificación está activada, desactivada
o no disponible (atenuada). Cuando está activada, Value se
establece a 1;cuando no esta activa, Value se establece a 0
Ing. Hermas Herrera Callejas Página : 3 de 25
Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

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.

4.4.2 El evento Clic.- Cuando el usuario hace click en el control CheckBox se


desencadena el evento Click. En el procedimiento de este evento se puede realizar
alguna acción según el estado de la casilla de verificación.
La siguiente aplicación permite aplicar el atributo de negrita, cursiva, mayúsculas
y color rojo a una cadena de caracteres.

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

Ing. Hermas Herrera Callejas Página : 4 de 25


Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

Cuando se ejecute el programa y se active la casilla de verificación Negrita, la


propiedad Value de este control adoptará el valor 1. La estructura de control If...Then
permite ejecutar una acción dada cierta condición. En este caso, si la propiedad Value
es igual a 1, entonces el texto introducido en el cuadro de texto nnTextoPrueba quedará
convertido a negrita; en caso contrario, es decir, si la casilla de verificación es
desactivada, el texto introducido adoptará su aspecto anterior.
En el formulario, hacer doble clic en la casilla de verificación Cursiva y en la
ventana de código digitar el procedimiento nnCursiva_Click:
Private Sub nnCursiva_Click()
If nnCursiva.Value = 1 Then
nnTextoPrueba.Font.Italic = True
Else
nnTextoPrueba.Font.Italic = False
End If
End Sub
El procedimiento nnCursiva_Click es similar al procedimiento anterior con la
diferencia de que el texto introducido en el cuadro quedara convertido a cursiva.
Hacer doble clic en la casilla de verificación Mayúsculas y digitar el siguiente
procedimiento en la ventana de código:
Private Sub nnMayúsculas_Click()
If nnMayúsculas.Value = 1 Then
nnTextoPrueba = UCase(nnTextoPrueba)
Else
nnTextoPrueba = LCase(nnTextoPrueba)
End If
End Sub
La función UCase() convierte una cadena de caracteres a mayúsculas.
La función LCase() convierte una cadena de caracteres a minúsculas.
Hacer doble clic en la casilla de verificación Color Rojo y digitar este
procedimiento:
Private Sub nnColorRojo_Click()
If nnColorRojo.Value = 1 Then
‘Aplica el color rojo a la cadena de caracteres del cuadro de texto nnTextoPrueba.
nnTextoPrueba.ForeColor = RGB(255, 0, 0) ‘Color rojo
Else
‘Aplica el color negro a la cadena de caracteres del cuadro de texto nnTextoPrueba.
nnTextoPrueba.ForeColor = RGB(0, 0, 0) ‘Color negro
End If
End Sub
La función RGB permite especificar un color cualquiera. Su sintaxis es:
RGB(rojo%, verde%, azul%)
Los tres parámetros son enteros en el rango de 0 a 255 que especifican un nivel
de color rojo, verde y azul respectivamente.
Hacer doble clic en el botón de comando Salir y en el procedimiento
nnSalir_Click digitar el comando End. Cuando se haga clic en el botón Salir finalizará la
ejecución del programa.
Private Sub nnSalir_Click()
End
End Sub
Ing. Hermas Herrera Callejas Página : 5 de 25
Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

Guardar el formulario con el nombre Casillas_de_verificación.frm y la aplicación


con el nombre Casillas_de_verificación.vbp.
Presionar la tecla F5 para ejecutar el programa. Introducir una frase en el cuadro
de texto y activar la casilla de verificación Color Rojo. Observar que ahora el texto es de
color rojo. Si se vuelve a hacer clic en la casilla, el texto adoptará su color anterior.

4.5 El control OptionButton (Botón de opción).- Este control permite mostrar


múltiples opciones de las que el usuario solo puede elegir una. A diferencia de las
casillas de verificación, los botones de opción deben funcionar siempre como parte de
un grupo; al activar un botón de opción se desactivan de inmediato todos los demás
botones del grupo.

Utilizar el control OptionButton cuando se quiera presentar varias opciones de las cuales el usuario solo
puede elegir una.

4.5.1 Propiedades del control OptionButton


Propiedad Val p/defecto Comentario
Caption Optionl Descripción que acompaña al control OptionButton.
Enabled True Devuelve o establece un valor que determina si el control esta
habilitado para responder a eventos realizados por el usuario.
Name Option1 Devuelve o establece el nombre del control usado en el código.
Value False Indica si el botón de opción está activado o desactivado. Cuando
está activado, Value se establece a True; si no lo está, Value se
establece a False.
Visible True Devuelve o establece un valor que determina si el botón de opción
está visible u oculto.

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

Ing. Hermas Herrera Callejas Página : 6 de 25


Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

OptionButton Name nnTamaño12


Caption 12
Label Name Labell
Caption Introduzca un texto de prueba en la caja de texto y seleccione un
tamaño de fuente.
CommButton Name nnSalir
Caption Salir
Guardar el formulario con el nombre Opciones.frm y la aplicación con el nombre
Opciones.vbp.
Cuando el usuario seleccione una de las opciones “8”, “10” o “12”, se producirá el
evento Click asociado con ese control que hará que el texto introducido en el cuadro de
texto nnTextoPrueba se visualice con el tamaño 8,10 o 12 puntos, respectivamente.
En el formulario, hacer doble clic en el botón de opción “8”. En la ventana de
código, digitar el siguiente código:
Private Sub nnTamaño8_Click()
If nnTamaño8.Value = True Then nnTextoPrueba.Font.Size = 8
End Sub
Cuando el usuario ejecute el programa y active el botón de opción “8”, la
propiedad Value de este control adoptará el valor True (Verdadero) y se desencadena
el evento Click de este control. En el procedimiento, si la propiedad Value del control es
True, el tamaño del texto introducido en el cuadro nnTextoPrueba se establece a 8.
En el formulario, hacer doble clic en el botón de opción “10”. En la ventana de
código, digitar el siguiente código:
Private Sub nnTamañol0_Click()
If nnTamañol0.Value = True Then nnTextoPrueba.Font.Size = 10
End Sub
En el formulario, hacer doble clic en el botón de opción “12”. En la ventana de
código, digitar el siguiente código:
Private Sub nnTamaño12_Click()
If nnTamaño12.Value = True Then nnTextoPrueba.Font.Size = 12
End Sub
En el formulario, hacer doble clic en el botón de comando Salir. Digitar la
instrucción End en el procedimiento que muestra la ventana de código:
Private Sub nnSalir_Click()
End
End Sub

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.

Ing. Hermas Herrera Callejas Página : 7 de 25


Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

4.6.1 Propiedades del control Frame


Propiedad Valor p/defecto Comentario
Caption Frame1 Descripción que acompaña al control Frame.
Name Frame1 Nombre del control usado en el código.
Visible True Devuelve o establece un valor que determina si el botón de opción
está visible u oculto.

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.

Utilizar el control ListBox para visualizar un conjunto de elementos de los cuales


el usuario puede elegir uno.

4.7.1 Propiedades del control ListBox


Propiedad Descripción
Enabled True/False. Devuelve o establece un valor que determina si el control está
habilitado para responder a eventos realizados por el usuario.
Columns Devuelve o establece un valor que determina si un control ListBox se desplaza
verticalmente en una única columna (valor 0) u horizontalmente en columnas
periódicas (valores mayores que 0).
List Un arreglo que contiene los elementos de la lista, comienza con índice 0.

Ing. Hermas Herrera Callejas Página : 8 de 25


Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

ListCount Número total de elementos de la lista.


Listlndex Contiene el índice del elemento seleccionado, que es un número entre 0 (primer
elemento) y el número total de elementos en la lista -1 (ListCount - 1). El valor
de Listlndex será –1 si no se selecciona ningún elemento.
MultiSelect Determina cómo puede seleccionar el usuario los elementos de la lista. Valores
de la propiedad MultiSelect:
0 No se permiten selecciones múltiples (defecto).
1 Selección múltiple sencilla. Se selecciona o se desactiva una entrada
mediante un clic del mouse (o pulsando la tecla de espaciado). Para mover el
enfoque a otro elemento se usan las teclas del cursor.
2 Selección múltiple extendida. Para expandir la selección se utiliza la tecla
Shift mientras se hace clic con el mouse. De esta forma se resaltan los
elementos que hay entre el primero seleccionado y el actual. Si se pulsa la
tecla Ctrl y se hace clic, se selecciona o se desactiva una entrada en la lista.
Name Devuelve o establece el nombre del control usado en el código.
NewIndex Contiene el índice del último elemento añadido a la lista. Es útil si se desea
hacer algo con el elemento añadido, por ejemplo, que sea el elemento
actualmente seleccionado.
Selected Arreglo de valores lógicos paralelo y del mismo tamaño al arreglo List, indica qué
elementos se han seleccionados (True) de la lista. Se utiliza en lugar de ListIndex
cuando se establece la propiedad Multiselect en 1 o 2.
Sorted True/False. Establece si los elementos se ordenan alfabéticamente.
Style Apariencia del control. Puede tener valores 0 (Estándar) o 1 (CheckBox).

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:

Ing. Hermas Herrera Callejas Página : 9 de 25


Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

La siguiente tabla muestra las propiedades de los controles incluidos en la interfaz:


Control Propiedad Valor
ListBox Name nnPaises
Columns 0
Sorted True
Label Name nnLabel1
Caption Pais seleccionado
TextBox Name nnPaisSelec
Text ““
CommandButtom Name nnAñadirElemento
Caption Añadir nuevo elemento
CommandButtom Name nnEliminarElemento
Caption Eliminar elemento
CommandButtom Name nnSalir
Caption Salir
Guardar el formulario con el nombre ListadePaises.frm y la aplicación con el
nombre ListadePaises.vbp.
En el formulario, hacer doble clic en el cuadro de lista nnPaíses. En la ventana
de código, digitar el siguiente código:
Private Sub nnPaises_Click()
‘Muestra en el cuadro de texto nnPaisSelec el elemento seleccionado del cuadro de
lista nnPaises
If nnPaises.ListIndex <> -1 Then
nnPaisSelec.Text = nnPaises.List(nnPaises.ListIndex)
End If
End Sub
Hacer doble clic en el botón de comando “Añadir nuevo elemento” y digitar el
siguiente código en la ventana de código:
Private Sub nnAñadirNuevoElemento_Click()
‘Añade un nuevo elemento al cuadro de lista nnPaises
Dim nnElementoNuevo As String
nnElementoNuevo = InputBox("Ingrese un nuevo País:", "Nuevo País")
If Len(Trim(nnElementoNuevo)) > 0 Then
nnPaises.AddItem nnElementoNuevo
End If
End Sub
Hacer doble clic en el botón de comando ‘Eliminar elemento’ y en la ventana de
código digitar:
Private Sub nnEliminarElemento_Clic()
‘Elimina un elemento del cuadro de lista nnPaises
If nnPaises.ListIndex <> -1 Then
nnPaises.RemoveItem nnPaises.ListIndex
nnPaisSelec.Text = “ “
End If
End Sub
Hacer doble clic en el botón de comando Salir y en la ventana de código, entre
las sentencias Private Sub nnSalir_Clic() y End Sub, digitar el comando End.
Presionar la tecla F5 para ejecutar el programa. Hacer clic en el botón “Añadir
nuevo elemento” y en el cuadro de mensaje que aparece ingresar el nombre de un país.

Ing. Hermas Herrera Callejas Página : 10 de 25


Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

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’.

4.8 El control ComboBox (Cuadro Combinado).- El control ComboBox es una


combinación del control TextBox (cuadro de texto) y un control ListBox (cuadro de lista).
Este control permite que el usuario seleccione un elemento; para ello, escribir el texto
en el cuadro de texto o seleccionar un elemento en la lista.
Hay tres estilos de cuadros combinados: Cuadro combinado desplegable
(Style=0-Dropdown Combo), cuadro combinado simple (Style=1-Simple Combo) y el
cuadro de lista desplegable (Style=2-Dropdown List).
Cuadro combinado desplegable. Cuadro combinado simple. Cuadro combinado de lista desplegable.

4.8.1 Propiedades del control ComboBox


Propiedad Descripción
Enabled True/False. Devuelve o establece un valor que determina si el control está
habilitado para responder a eventos realizados por el usuario.
List Es un arreglo que contiene los elementos de la lista, comienza con índice 0.
ListCount Número total de elementos de la lista.
ListIndex Contiene el índice del elemento seleccionado, el cual es un número entre 0 (primer
elemento) y el número total de elementos en la lista -1 (ListCount-1). El valor de
ListIndex será-1 si no se selecciona ningún elemento.
Name Devuelve o establece el nombre del control usado en el código.
NewIndex Contiene el índice del último elemento añadido a la lista.
Sorted True/False. Ordena alfabéticamente los elementos de la lista.
Style Establece el comportamiento del control ComboBox. Puede tomar los siguientes
valores:
0-Dropdown Combo.- Cuadro combinado desplegable. Incluye una lista
desplegable y un cuadro de texto. El usuario puede escribir texto directamente en
el cuadro de texto o hacer clic en la flecha de la parte derecha del cuadro
combinado para abrir una lista de opciones.
1-Simple Combo.- Cuadro combinado simple. Incluye un cuadro de texto y una
lista que se presenta siempre. El usuario puede seleccionar datos en la lista o
escribir en el cuadro de texto. Al igual que el cuadro combinado desplegable,

Ing. Hermas Herrera Callejas Página : 11 de 25


Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

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

Ing. Hermas Herrera Callejas Página : 12 de 25


Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

CommandButton Name nnSalir


Caption Salir
Asociar un procedimiento al botón nnAñadirElemento accionado por el suceso
Click. Cuando el usuario haga clic en este botón, el programa debe solicitar el ingreso
de un nuevo elemento y adicionarlo al control nnFrutas.
1. En el formulario, hacer doble clic en el botón de comando nnAñadirElemento. La
ventana de código abre el procedimiento nnAñadirElemento_Click.
2. Digitar el siguiente código:
Private Sub nnAñadirElemento_Click()
Dim NuevoElemento As String
NuevoElemento = InputBox(”Ingrese una nueva fruta”, “Nueva Fruta”)
If Len(Trim(NuevoElemento)) > 0 Then nnFrutas.AddItem NuevoElemento
End If
End Sub
Asociar un procedimiento al botón nnEliminarElemento accionado por el suceso
Click. Cuando el usuario haga clic en este botón, el programa debe eliminar el elemento
seleccionado en el cuadro combinado nnFrutas.
1. Hacer doble clic en el botón de comando nnEliminarElemento.
2. En la ventana de código, digitar el siguiente código:
Private Sub nnEliminarElemento_Click()
If nnFrutas.ListIndex <> -1 Then
nnFrutas.RemoveItem nnFrutas.ListIndex
nnFrutas.Text = “ “
nnFrutaSelec.Text = “ “
End If
End Sub
Asociar un procedimiento al cuadro combinado nnFrutas accionado por el suceso
Change. Cuando el usuario realice cualquier cambio en el control nnFrutas, el cuadro
de texto nnFrutaSelec debe reflejar los cambios realizados.
1. Hacer doble clic en el control nnFrutas. La ventana de código abre el procedimiento
nnFrutas_Change.
2. Digitar el siguiente código:
Private Sub nnFrutas_Change()
nnFrutaSelec.Text = nnFrutas.Text
End Sub
Asociar un procedimiento al cuadro combinado nnFrutas accionado por el suceso
Click. En la ventana de código, desplegar el cuadro de lista Procedimientos y en la lista
de sucesos que puede reconocer el control ComboBox, seleccionar el suceso Click, tal
como lo muestra la siguiente ilustración:
Cuadro de lista Procedimientos

Ing. Hermas Herrera Callejas Página : 13 de 25


Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

Observar que ahora la ventana de código muestra el procedimiento


nnFrutas_Click. Es en este procedimiento que se escribe el código que mostrará en el
cuadro de texto nnFrutaSelec el elemento seleccionado en el cuadro combinado
nnFrutas
Private Sub Frutas_Click()
‘Muestra en el cuadro de texto el elemento seleccionado del cuadro combinado
nnFrutas
If nnFrutas.Listlndex <> -1 Then
If nnFrutas.Text <> “ ” Then
nnFrutaSelec.Text = nnFrutas.List(nnFrutas.ListIndex)
Else
nnFrutaSelec.Text = “ “
End If
End If
End Sub
Hacer doble clic en el botón de comando Salir y digitar el comando End para
finalizar la ejecución del programa:
Private Sub nnSalir_Click()
‘Finaliza la ejecución del programa.
End
End Sub

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:

Asignar las siguientes propiedades a cada uno de los controles:


Control Propiedad Valor
Form Caption Reloj Digital Intermitente
Label Name nnHora

Ing. Hermas Herrera Callejas Página : 14 de 25


Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

Alignment 2-Center
Caption ““
Font Arial, Negrita, 18 puntos
Tag Mostrar Hora
Timer Name nnTimer1
Interval 500
Enabled True

Asociar un procedimiento al control Timer.


1. En el formulario, hacer doble clic en el control Timer. La ventana de código abre el
procedimiento Timer1_Timer.
Timer1_Timer indica que el procedimiento está conectado con el control Timer1 y
que será ejecutado cuando se produzca el suceso Timer en cada inlervalo de tiempo.
2. Entre Private Sub Timer1_Timer y End Sub escribir las siguientes sentencias:
If nnHora.Tag = "Mostrar Hora" Then
nnHora.Caption = Time$
nnHora.Tag = ""
Else
nnHora.Caption = ""
nnHora.Tag = "Mostrar Hora"
End If
Dado que en la propiedad Interval del control Timer introducimos el valor 500, el
procedimiento Timen1_Timer se ejecutará cada medio segundo. La propiedad Tag del
control nnHora se inicializó a “Mostrar Hora” de manera que cuando se ejecute el
procedimiento la expresión nnHora.Tag = “Mostrar Hora” será verdadera y se
ejecutarán las siguientes líneas:
nnHora.Caption = Time$
nnHora.Tag = “ “
En la primera línea, la función Time obtiene la hora del reloj del sistema y ésta es
asignada a la propiedad Caption del control nnHora, mostrándonos la hora. En la
segunda línea, el valor de la propiedad Tag es cambiado por el valor “ “ de manera que,
cuando el procedimiento Timer1 _Timer se vuelva a ejecutar, la expresión “nnHora.Tag
= “Mostrar Hora”” será falsa por lo que se ejecutarán las siguientes líneas:
nnHora.Caption = “ “
nnHora.Tag = “Mostrar Hora”
En la primera línea, se borra el texto de la propiedad Caption del control nnHora;
en la segunda línea, el valor inicial de la propiedad Tag es restablecido.
Presionar la tecla F5 para ejecutar el programa. El efecto resultante es que el
programa nos mostrará la hora segundo a segundo.

4.10 Los controles HScrollBar y VScrollBar (Barras de Desplazamiento Horizontal


y Vertical).- Se utilizan con frecuencia para seleccionar un valor entre los dos extremos
del control.

Ing. Hermas Herrera Callejas Página : 15 de 25


Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

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:

La siguiente tabla muestra las propiedades de los controles incluidos en el

Ing. Hermas Herrera Callejas Página : 16 de 25


Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

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

abre el procedimiento nnAzul_Scroll. Digitar el siguiente código:


Private Sub nnAzul_Scroll()
azul = nnAzul.Value
rojo = nnRojo.Value
verde = nnVerde.Value
nnColores.BackColor = RGB(rojo, verde, azul)
End Sub
Asociar un procedimiento a la barra de desplazamiento nnRojo accionado por el
suceso Change. Cuando el usuario haga clic en el área que hay entre el cuadro de
desplazamiento y las flechas o en las flechas mismas, el color rojo que muestra el
control PictureBox 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 Change. La
ventana de código abre el procedimiento nnRojo_Change
2. Digitar el siguiente código:
Private Sub nnRojo_Change()
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 Change. Digitar el siguiente
código:
Private Sub nnVerde_Change()
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 Change. Digitar el siguiente
código:
Private Sub nnAzul_Change()
azul = nnAzul.Value
rojo = nnRojo.Value
verde = nnVerde.Value
nnColores.BackColor = RGB(rojo, verde, azul)
End Sub
Ejecutar el programa y desplazar el cuadro de desplazamiento de cada una de
las barras.

4.11 Creación de menús.- La mayoría de las aplicaciones para Windows se


caracterizan por tener una barra de menús, desde la cual el usuario puede ejecutar de
manera fácil un comando. Cuando se pulsa sobre el nombre de un menú se despliega
un cuadro de lista en el que aparecen una serie de opciones. La mayoría de las
opciones se ejecutan inmediatamente después de ser pulsadas (por ejemplo cuando el
usuario selecciona la opción Copiar del menú Edición, la información seleccionada es
copiada inmediatamente en el portapapeles de Windows); otras, cuyos nombres
Ing. Hermas Herrera Callejas Página : 18 de 25
Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

aparecen seguidos de puntos suspensivos, muestran un cuadro de dialogo solicitando


más información al usuario antes de que la opción se ejecute, también hay opciones
que tienen una flecha y al apuntar la misma se despliega una nueva lista que constituye
un submenú de nivel inferior. En este capitulo se verá cómo crear y diseñar menús
personalizados para la aplicación y definir sus propiedades de manera fácil y sencilla
utilizando el Editor de menús, una herramienta de fácil manejo.
Para visualizar el Editor de menús hacer clic en el comando Editor de menús del
menú Herramientas. Visual Basic muestra el Editor de menús:

4.11.1 Opciones del Editor de menús


Opción Descripción
Caption En este recuadro se escribe el nombre del comando o del menú que desea
que aparezca en la barra de menús o en un submenú. Para dar al usuario
acceso a través del teclado a un elemento de menú, escribir el signo &
delante de una letra. En tiempo de ejecución, esta letra aparecerá subrayada
(el signo & no será visible) y el usuario tendrá acceso al menú o al comando
si presiona la tecla Alt y la correspondiente a la letra subrayada.
Name En este recuadro se escribe un nombre de control para el elemento del
menú. El nombre de control es un identificador que sólo se utiliza para tener
acceso al elemento del menú en el código, no aparece en ningún menú.
Index Permite asignar un valor numérico que determina la posición del control en
una matriz de controles. Esta posición no tiene ninguna relación con la
ubicación del control en la pantalla.
Shortcut Permite seleccionar una tecla de método abreviado para cada comando.
HelpContexID Permite asignar un valor numérico único para el Id. de contexto. Este valor se
utiliza para encontrar el tema de Ayuda apropiado en el archivo de Ayuda
identificado mediante la propiedad HelpFile.
NegotiatePosition Permite seleccionar la propiedad NegotiatePosition del menú. Esta propiedad
determina si el menú aparece o no en un formulario contenedor y como
aparece.
Checked Permite hacer que aparezca inicialmente una marca de verificación a la
izquierda de un elemento del menú. Se utiliza normalmente para indicar si
una opción de alternar está activada o no.

Ing. Hermas Herrera Callejas Página : 19 de 25


Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

Enabled Permite seleccionar si el elemento del menú debe responder a eventos.


Desactivar esta opción si se desea que el elemento del menú no esté
disponible y aparezca atenuado.
Visible Permite hacer que un elemento aparezca en el menú.
WindowList Determina si el control del menú contiene una lista de formularios
secundarios MDI abiertos en una aplicación MDI.
Pasa el menú seleccionado a un nivel inferior cada vez que se hace clic en el
botón. Se puede crear hasta cuatro niveles de submenús.
Pasa el menú seleccionado a un nivel superior cada vez que se hace clic en
el botón. Se puede crear hasta cuatro niveles de submenús.
Cada vez que se hace clic en este botón, el elemento seleccionado del menú
se mueve hacia arriba una posición dentro del mismo nivel de menú.
Cada vez que se hace clic en este botón, el elemento seleccionado del menú
se mueve hacia abajo una posición dentro del mismo nivel de menú.
Lista Menús Es un cuadro de lista que muestra en orden jerárquico todos los elementos
del menú. Los elementos de los submenús aparecen indentados para indicar
su ubicación o su nivel en la jerarquía.
Selecciona la línea siguiente.
Inserta una línea en el cuadro de lista, inmediatamente encima de la línea
actualmente seleccionada.
Elimina la línea actualmente seleccionada.
Cierra el Editor de menús y aplica todos los cambios efectuados en el Ultimo
formulario seleccionado.
Cierra el Editor de menús y cancela todos los cambios.
Desarrollar un programa con una interfaz que permita seleccionar comandos
utilizando una barra de menús. La interfaz debe tener el siguiente aspecto:

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.

Ing. Hermas Herrera Callejas Página : 20 de 25


Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

4. Ingresar los datos en el Editor de menús:


En el cuadro de texto Caption escribir el nombre del menú que desea crear. En
este caso, escribir &Formato. El signo Ampersand (&) indica que la siguiente letra
aparecerá subrayada (Formato) con la finalidad de acceder a esta opción mediante la
combinación de las teclas Alt+F. En el cuadro de texto Name escribir nnFormato para
hacer referencia al menú en el código del programa. A continuación, hacer clic en el
botón Siguiente para crear el menú especificado.
La siguiente tabla muestra los elementos ingresados en el formulario y en el
editor de menús:
Control Propiedad Valor
TextBox Name nnTexto1
Text “ “
Caption Name Shortcut
&Formato nnFormato
&Fuente nnFuente
&Arial nnFuenteArial Ctrl + A
&Comic Sans MS nnFuenteComicSans Ctrl + C
C&ourier nnFuenteCourier Ctrl + O
&Tamaño nnTamaño
10 nnTamaño10
12 nnTamaño12
14 nnTamaño14
- LineaSeparadora
&Salir nnSalir Ctrl + S
&Varios nnVarios
&Reloj nnReloj Ctrl + R
&Calculadora nnCalculadora Ctrl + C
&Naipes nnNaipes Ctrl + N
El Editor de menús debe tener el siguiente aspecto:

5. Dado que Fuente es un submenú del menú Formato, es necesario diferenciarlos.


Para ello, hay que sangrar o indentar el submenú. Para sangrar el submenú Fuente,
desplazar el puntero del mouse sobre el submenú y hacer clic para seleccionarlo (el
submenú queda resaltado sobre un fondo azul). A continuación, hacer clic en el botón
flecha hacia la derecha .

Ing. Hermas Herrera Callejas Página : 21 de 25


Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

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:

4. Finalmente hacer clic en el botón Aceptar.


Luego de haber terminado con el diseño de la barra de menús, el siguiente paso
consiste en asociar un procedimiento a cada una de las opciones.
Hacer clic sobre el menú Formato, situar el puntero del mouse en el submenú
Fuente y hacer clic en la opción Arial; la ventana de código se abre mostrando el
procedimiento nnFuenteArial_Click. Digitar el siguiente código:
Private Sub nnFuenteAniaLClick()
'Convierte a Arial el texto contenido en el control TextBox
nnTexto1.Font.Name = "Arial"
End Sub

Ing. Hermas Herrera Callejas Página : 22 de 25


Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

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

El argumento orden$ está formado por la ruta y el nombre de la orden o del


programa que se desea ejecutar y n es un valor entero (1,2,3,4,7) que hace que el
proceso ejecutado se presente en una ventana normal, minimizada o maximizada,
enfocada o sin enfocar. La función retorna un valor id que identifica el programa
arrancado e indica si se ejecutó satisfactoriamente. Este valor normalmente no es
utilizado
En el menú Varios, hacer clic en la opción Calculadora. La ventana de código se
abre mostrando el procedimiento nnCalculadora_Click. Digitar el siguiente código:
Private Sub nnCalculadora_Click()
Ejecuta la aplicación Calc.exe de MS Windows
id = Shell("C:\Windows\Calc.exe", 1)
End Sub
Hacer clic en la opción Naipes del menú Varios. La ventana de código muestra el
procedimiento naipes_Click. Digitar el siguiente código:
Private Sub nnNaipes_Click()
'Ejecuta la aplicación Sol.exe de MS Windows
id = Shell("C:\Windows\Sol.exe", 1)
End Sub
Asociar un procedimiento al control TextBox accionado por el suceso MouseUp.
Cuando el usuario pulse el botón derecho del mouse sobre el control TextBox, un menú
contextual debe aparecer sobre el control mostrando todas las opciones del menú
Formato. Un menú contextual se caracteriza porque no está fijo en un lugar del
formulario, puede aparecer en cualquier lugar. En las aplicaciones Windows estos
menús se visualizan cuando se pulsa con el botón derecho del mouse sobre un
formulario o control. Para invocar a un menú contextual se utiliza la función PopupMenu
1. Hacer doble clic en el control TextBox. 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 nnTexto_MouseUp.
2. Digitar el siguiente código:
Private Sub nnTexto_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
‘Cuando en el cuadro de texto se presione el boton 2
If Button = 2 Then PopupMenu nnFormato
End Sub
Presionar la tecla F5 para ejecutar el programa. En el cuadro de texto digitar
cualquier texto. Luego, hacer clic con el botón derecho del mouse para visualizar el
menú contextual con las opciones del menú Formato. Seleccionar una opción del menú
contextual.

Ing. Hermas Herrera Callejas Página : 24 de 25


Computación para Ingeniería I y Laboratorio Cap. 4 – Visual Basic – Controles Básicos

4.11.2 Orden de la tabulación de los controles.- El orden de tabulación es el orden


en que el usuario se desplaza de un control a otro pulsando la tecla Tab en tiempo de
ejecución. Por omisión, el orden de tabulación es igual al orden en que los controles
han sido colocados en el formulario.

4.11.3 Cambiar el orden de tabulación de los controles.- Para cambiar el orden de


tabulación de los controles, utilizar la propiedad TabIndex de cada control. El valor de
esta propiedad va desde 0 hasta n-1, siendo n el número de controles que tiene el
formulario.
Los controles que no pueden obtener el enfoque, al igual que los controles
desactivados o invisibles, no tienen la propiedad TabIndex y no están incluidos en el
orden de tabulación. Cuando el usuario presione la tecla Tab, estos controles serán
ignorados.

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.

4.11.5 Tecla de acceso rápido a un control.- Si el control tiene la propiedad Caption,


se le puede asignar una tecla de acceso rápido para seleccionar el control. Para
especificar la tecla de acceso rápido se debe resaltar un carácter de la cadena en la
propiedad Caption. Por ejemplo, si el valor de la propiedad Caption es la cadena
Usuario, y si se desea definir la tecla S como la de acceso rápido, se deberá establecer
la propiedad Caption asi: U&suario. El texto en el control se vera así: Usuario.
Para acceder al control usando la tecla de acceso rápido se deberá pulsar la
combinación Alt + tecla de acceso. Para nuestro ejemplo será: Alt+S. Algunos
controles, tales como el control TextBox, no tienen la propiedad Caption. Para crear una
tecla de acceso para esos controles:
1. Colocar un control Label cerca al otro control.
2. Establecer la propiedad Caption del control Label para contener la tecla de acceso
apropiada.
3. Establecer, para el control Label, un valor de orden de tabulación menor en una
unidad que el del otro control.
Cuando se pulse Alt + tecla de acceso del control Label, el enfoque se moverá
hacia el otro control debido a que el control Label no puede recibir el enfoque.

Ing. Hermas Herrera Callejas Página : 25 de 25


Código: (01) Verificación

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

Código (02) Opciones

Control Propiedad Valor


RGB(Rojo%, Verde%, Azul%)
TextBox Name nnTexto1
Text ““ If nnNegro.Value = True Then
Frame Name nnFrame1
Caption Tamaño Letras
nnTexto1.ForeColor = RGB(0, 0, 0)
OptionButton Name nnTamaño8 End If
Caption 8
OptionButton Name nnTamaño10
Caption 10
If nnRojo.Value = True Then
OptionButton Name nnTamaño12 nnTexto1.ForeColor = RGB(255, 0, 0)
Caption 12 End If
OptionButton Name nnTamaño14
Caption 14
Label Name Label1 If nnTamaño8.Value = True Then
Caption “Introduzca un texto de prueba en nnTexto1.FontSize = 8
el recuadro anterior y luego selec-
cione un tamaño y un color para el
End If

Ing. Hermas Herrera Callejas Página : 1 de 4


CommandButtom Name nnEliminarElemento
Caption Eliminar elemento
CommandButtom Name nnSalir
Caption Salir
Código (03) Lista Simple

Dim nnElementoNuevo As String


nnElementoNuevo =
InputBox("Ingrese un nuevo País:", "Nuevo País")

If Len(Trim(nnElementoNuevo)) > 0 Then


nnPaises.AddItem nnElementoNuevo
End If
Control Propiedad Valor
ListBox Name nnPaises
Columns 0
If nnPaises.ListIndex <> -1 Then
Sorted True nnPaises.RemoveItem nnPaises.ListIndex
Label Name nnLabel1 nnPaisSelec.Text = “ “
Caption Pais seleccionado End If
TextBox Name nnPaisSelec
Text ““
CommandButtom Name nnAñadirElemento
If nnPaises.ListIndex <> -1 Then
Caption Añadir nuevo element nnPaisSelec.Text = nnPaises.List(nnPaises.ListIndex)
End If
Caption Eliminar elemento
CommandButtom Name nnSalir
Caption Salir

Código (04) Lista Combo

Dim nnElementoNuevo As String


nnElementoNuevo =
InputBox("Ingrese un nueva Fruta:", "Nueva Fruta")

If Len(Trim(nnElementoNuevo)) > 0 Then


nnFrutas.AddItem nnElementoNuevo
Control Propiedad Valor End If
ComboBox Name nnFrutas
List Chirimoya
Ciruela If nnFrutas.ListIndex <> -1 Then
Fresa nnFrutas.RemoveItem nnFrutas.ListIndex
Lúcuma nnFrutaSelec.Text = ""
Manzana End If
Damasco
Mandarina
Naranja If nnFrutas.ListIndex <> -1 Then
Higo nnFrutaSelec.Text = nnfrutas.List(nnfrutas.ListIndex)
Sorted True Else
Style 1-Simple Combo nnFrutaSelec.Text = ""
Text “ “ End If
Label Name nnLabel1
Caption Fruta seleccionada
TextBox Name nnFrutaSelec ‘Al modificar combo debe reflejarse en texto
Text “ “ nnFrutaSelec.Text = nnFrutas.Text
CommandButtom Name nnAñadirElemento ‘Al modificar texto debe reflejarse en combo
Caption Añadir nuevo elemento nnFrutas.Text = nnFrutaSelec.Text
CommandButtom Name nnEliminarElemento

Ing. Hermas Herrera Callejas Página : 2 de 4


Código (05) Reloj
‘Definiciòn de variable pùblica
Public Contador As Integer
‘Cuando se carga el formulario
Control Propiedad Valor
Contador = 0
Form Caption “Reloj Digital Intermitente”
‘Para el suceso Timer de nnTimer1
Label Name nnHora
If nnHora.Tag = "Mostrar" Then
Alignment 2-Center
nnHora.Caption = Time$
Caption ““
nnHora.Tag = ""
Font Arial, Negrita, 18 puntos
Else
Tag “Mostrar ”
nnHora.Caption = ""
Timer Name nnTimer1
nnHora.Tag = "Mostrar"
Interval 500
End If
Enabled True
‘Para suceso Timer de nnTimer2
Timer Name nnTimer2
Contador = Contador + 5
Interval 5000
Form1.Caption = "Van " & Contador & " segundos"
Enabled True

TextBox Name nnText1


Text “”
TextBox Name nnText2
Text “”
TextBox Name nnText3
Text “”

Código (06) Barras

‘ En cada barra de desplazamiento, para change y scroll


nnColores.BackColor = RGB(nnRojo.Value, nnVerde.Value,
nnAzul.Value)

‘ En nnAzul para change y scroll


Text3.Text = nnAzul.Value

‘En nnRojo para change y scroll


Text1.Text = nnRojo.Value
Control Propiedad Valor
PictureBox Name nnColores ‘ En nnVerde para change y scroll
Label Caption Rojo Text2.Text = nnVerde.Value
Label Caption Verde
Label Caption Azul ‘Para Suceso click en nnColores
HscrollBar Name nnRojo ‘ Previamente se debe lograr el color del formulario
LargeChange 10 nnColores.BackColor = RGB(240, 235, 219)
Max 255
Min 0 ‘Para Suceso doble click en nnColores
SmallChange 2 nnColores.BackColor = RGB(nnRojo.Value, nnVerde.Value,
Value 0 nnAzul.Value)
HscrollBar Name nnVerde
LargeChange 10
Max 255
Min 0
SmallChange 2
Value 0
HscrollBar Name nnAzul
LargeChange 10
Max 255
Min 0
SmallChange 2
Value 0

Ing. Hermas Herrera Callejas Página : 3 de 4


&Calculadora nnCalculadora
&Naipes nnNaipes
Código (07) Menús

‘Cambia a Arial el tipo de letra del texto


nnTexto1.FontName = "Arial"

‘Cambia a Courier el tipo de letra del texto


nnTexto1.FontName = "Courier"

‘Cambia a Comic Sans MS el tipo de letra del texto


nnTexto1.FontName = "Comic Sans MS"

‘Cambia a 10 el tamaño de letra del texto


nnTexto1.FontSize = 10

‘Cambia a 12 el tamaño de letra del texto


nnTexto1.FontSize = 12

‘Cambia a 14 el tamaño de letra del texto


nnTexto1.FontSize = 14

‘Inicia el programa de la calculadora


id = Shell("C:\Windows\calc.exe", 1)

‘Inicia el programa del juego de solitario


id = Shell("C:\Windows\Sol.exe", 1)

‘Inicia el programa ejecutable del reloj


id = Shell("F:\Hhc\VSBasic2003\nn05Reloj.exe", 1)

‘Termina el programa
End

Control Propiedad Valor ‘Con doble click despliega el menú contextual


TextBox Name nnTexto1 PopupMenu nnFormato
Text “ “

Caption Name Shortcut


&Formato nnFormato
F&uente nnFuente
Arial nnFuenteArial Ctrl + A
Comic Sans MS nnFuenteComicSans Ctrl + C
Courier nnFuenteCourier Ctrl + O
&Tamaño nnTamaño
10 nnTamaño10
12 nnTamaño12
14 nnTamaño14
- LineaSeparadora
&Salir nnSalir
&Varios nnVarios
&Reloj nnReloj

Ing. Hermas Herrera Callejas Página : 4 de 4


Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación

CAPITULO 5 – VISUAL BASIC – HERRAMIENTAS DE PROGRAMACION

5.1 Comentarios, Variables y Constantes

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

Dim Longitud As Integer


Después del nombre de la variable especificar el tipo de la misma. Por ejemplo, la
variable Longitud ha sido declarada de tipo Integer (entero). Esto permitirá a Visual
Basic ahorrar espacio en la memoria si la variable Longitud va a albergar números sin
cifras decimales. Luego de que la variable ha sido declarada se podrá asignar
información a la misma desde el código del programa. Por ejemplo, la siguiente
instrucción asigna el número 740 a la variable Longitud.
Longitud = 740
Después de la asignación, la variable Longitud podrá utilizarse en lugar del número
740 en el código del programa.

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.

5.3.1 Declaración Explícita.- En Visual Basic no es necesario declarar una variable


antes de utilizarla. Sin embargo, puede ocurrir que durante la programación se escriba
Ing. Hermas Herrera Callejas Página : 2 de 24
Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programació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.1 Variables Locales.- Una variable local es reconocida solamente en el


procedimiento en el que ha sido declarada. Fuera de ese procedimiento, la variable no
es conocida. Utilice la sentencia Dim o Static para declarar una variable local a un
procedimiento.
En el procedimiento Calcular_Clic() las variables A, B, Suma y Resta son locales.
Private Sub Calcular_Click()
Dim A, B, Suma, Resta As Long
A = Val(Numl .Text)
B = Val(Num2.Text)
Suma = A + B
Resta = A - B
Suma.Text = Suma
Resta.Text = Resta
End Sub

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:.

Ing. Hermas Herrera Callejas Página : 3 de 24


Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación

1. Desplegar el cuadro de lista nombres y seleccionar (General)

2. Desplegar el cuadro de lista de sucesos y seleccionar (Declaraciones) Se abre la sección de declaraciones

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.

Ing. Hermas Herrera Callejas Página : 4 de 24


Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación

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.

5.4.6 Variables de Registros o Estructuras.- Una estructura o registro es un tipo de


dato definido por el usuario. Es básicamente una colección de datos de diferentes
tipos, relacionados entre si y bajo una denominación común. Para crear una estructura
se debe utilizar las palabras reservadas Type... End Type en la sección de
declaraciones de un módulo.
Type NombredelNuevoTipo
NombredelElemento1 As TipodeDato
NombredelElemento2 As TipodeDato
NombredelElemento3 As TipodeDato
...
End Type
En el siguiente ejemplo se declara un tipo de dato denominado Registro que
consta de cuatro miembros o campos, denominados RazónSocial, Dirección, Teléfono y
RUC.

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

Ing. Hermas Herrera Callejas Página : 5 de 24


Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación

miembro de una estructura se utiliza la notación variable.miembro. Por ejemplo, en la


línea que sigue
Clientes.Teléfono = “8597986” ‘se asigna el valor 8597986 al campo Teléfono de la
estructura Clientes.

5.5 Operadores.- Un operador es un símbolo o palabra que ejecuta una operación


matemática o maneja la información. La siguiente tabla muestra el conjunto de
operadores que soporta Visual Basic.
Tipo Operación Operador
Aritmético Exponenciación ^
Cambio de signo -
Multiplicación y división *, /
División entera \
Resto de una división entera Mod
Suma y resta +, -
Concatenación Concatenar o enlazar &
Relacional Igual, distinto, menor, mayor,.. =, <>, <, >, <=, >=
Lógico Negación Not
Conjunción And
Disyunción (Or inclusive) Or
Disyunción (Or exclusiva) Xor
Equivalencia (opuesto a Xor) Eqv
Implicación Imp

5.5.1 Los Operadores Aritméticos.- Permiten realizar operaciones matemáticas y


asignar los resultados a las variables. En las siguientes líneas
PI = 3.1416 ‘El valor 3.1416 se asigna a la variable PI
Radio = 15 ‘El valor 15 se asigna a la variable Radio
Area = PI*Radio^2 ‘El producto de PI por Radio al cuadrada se asigna a la variable Area.

5.5.2 Los Operadores Relacionales.- También conocidos como operadores de


comparación, al comparar un dato con otro devuelven un resultado True si es verdadero
y False si es falso. En el siguiente ejemplo:
Edad > 19
El operador mayor (>) devuelve True (Verdadero) si el valor contenido en la variable
Edad es mayor que 19; en caso contrario, devuelve False (Falso). En la siguiente
comparación:
Edad < 45
El operador menor (<) devuelve True si el valor contenido en la variable Edad es menor
que 45; en caso contrario, devuelve False. Otro ejemplo:
Código = CódVend
El aperador igual (=) devuelve True si los valores que están a ambos lados de él son
iguales; en caso contrario, devuelve False. En la siguiente comparación:
Código <> CódVend
El operador distinto (<>) devuelve True si los valares que están a ambos lados de él
son diferentes; en caso contrario, devuelve False.

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 &.

Ing. Hermas Herrera Callejas Página : 6 de 24


Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación

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.

Ing. Hermas Herrera Callejas Página : 7 de 24


Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación

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.

5.7 Funciones de Conversión de Cadena.- Las funciones de cadena permiten


cambiar la apariencia y el tratamiento de las expresiones de cadena (String).
Función Descripción
Asc() Esta función devuelve el código de carácter correspondiente a la primera letra de una
cadena.
Sintaxis:
Asc(cadena)
Donde cadena es una expresión de cadena válida. Si cadena no contiene caracteres,
se produce un error en tiempo de ejecución. Ejemplos:
Código_Car = Asc(“C”) ‘Devuelve 67
Código_Car = Asc(“c”) ‘Devuelve 99
Chr() Esta función devuelve un tipo String que contiene el carácter asociado con el código
de carácter especificado.
Sintaxis:
Chr(códigocar)
Donde códigocar es un número tipo Long que identifica a un carácter.
Los números del 0 al 31 son los mismos que los códigos ASCII estándar no
imprimibles. Por ejemplo, Chr(10) devuelve un carácter de avance de línea. El
intervalo normal de códigocar es 0 - 255.
Ejemplo:
Caracter.Text = Chr(70) ‘Devuelve F
InStr() Esta función busca una cadena dentro de otra cadena y devuelve un número
indicando la posición en la que encuentra la cadena buscada; en caso de no
encontrarse devuelve 0.
Sintaxis:
lnStr([Start,]string1,string2[,compare])
Donde:
start Expresión numérica que establece la posición inicial para la búsqueda. Si se
omite, la búsqueda empieza en la posición del primer carácter. El argumento
start se requiere si se especifica compare.
String1 Expresión de cadena en la que se busca.
String2 Expresión de cadena buscada.
Compare Especifica el tipo de comparación de cadena. El argumento compare se
puede omitir, o puede ser 0 o 1 o 2. Se especifica 0 para realizar una
comparación binaria. Se especifica 1 para realizar una comparación de texto
sin distinguir entre mayúsculas y minúsculas. Se especifica 2 con distinción
de mayúsculas y minúsculas. Si se omite compare, el valor Option Compare
determina el tipo de comparación.
Ing. Hermas Herrera Callejas Página : 8 de 24
Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación

LCase() Convierte una cadena a minúsculas.


Sintaxis:
LCase(cadena)
El argumento cadena es cualquier expresión de cadena válida. Sólo se convierten a
minúsculas las letras mayúsculas. Las letras minúsculas o los caracteres que no son
letras no sufren cambios.
Left() Devuelve un número especificado de caracteres del lado izquierdo de una cadena.
Sintaxis:
Left(string, length)
Donde:
String Expresión de cadena de la cual se devuelven los caracteres que están más a la
izquierda.
Length Expresión numérica que indica cuántos caracteres se van a devolver. Si es 0,
devuelve una cadena de longitud cero (“ “). Si es mayor o igual al número de
caracteres en string, se devuelve la cadena entera.
Len() Devuelve el número de caracteres en una cadena o el número de bytes necesarios
para almacenar una variable.
Sintaxis:
Len(cadena| nombrevar)
Donde:
cadena Cualquier expresión de cadena válida.
nombrevar Cualquier nombre de variable válido. Si nombrevar es un tipo Variant, Len
actúa igual que con un tipo String y siempre devuelve el número de
caracteres que contiene. Se deben especificar uno (y sólo uno) de los dos
argumentos posibles.
Mid() Devuelve un número especificado de caracteres de una cadena.
Sintaxis:
Mid(string, start[, length])
Donde:
String Expresión de cadena de la cual se devuelven los caracteres.
start Posición de carácter en string en la cual comienza la parte que se quiere tomar.
Si start es mayor que el numero de caracteres en string, Mid devuelve una
cadena de longitud cero (“”)
length Es opcional. Es el número de caracteres que se van a devolver. Si se omite o
en el texto hay menos de length caracteres (incluyendo el carácter de start), se
devuelven todos los caracteres desde la posición de start hasta el final de la
cadena.
LTrim, RTrim y Trim Devuelve una copia de una cadena determinada sin espacios a la
izquierda (LTrim), sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a
la izquierda (Trim).
Sintaxis:
LTrim(cadena)
RTrim(cadena)
Trim(cadena)
Right() Devuelve un número especificado de caracteres del lado derecho de una cadena.
Sintaxis:
Right(string, lenght)
Donde:
string Expresión de cadena desde la cual se devuelven los caracteres que están más
a la derecha.
Ienght Expresión numérica que indica cuantos caracteres se van a devolver. Si es 0,
se devuelve una cadena de longitud cero (“”). Si es mayor o igual al número de
caracteres en string, se devuelve la cadena completa.
Str() Esta función convierte un número a cadena.
Sintaxis:
Str(número)
Donde número es un número tipo Long o contiene una expresión numérica válida. Al
convertir un número a cadena, siempre se reserva un espacio a la izquierda para el
signo del número. Si número es positivo, la cadena devuelta contiene un espacio a la
izquierda y el signo más se da por supuesto. La función Str sólo reconoce el punto (.)
como separador decimal válido.
UCase() Convierte una cadena de caracteres a mayúsculas.
Sintaxis:
UCase(cadena)

Ing. Hermas Herrera Callejas Página : 9 de 24


Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación

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:

5.8 Funciones para la Conversión de Datos.- Visual Basic proporciona varias


funciones de conversión con los que se puede convertir valores a tipos de datos
específicos. Por ejemplo, para convertir un valor a tipo Integer se utiliza la función CInt.
Función Descripción
CCur() Convierte a un valor de tipo Currency.
CDbl() Convierte a un valor de tipo Double.
CInt() Convierte a un valor de tipo Integer.
CLng() Convierte a un valor de tipo Long.
CSng() Convierte a un valor de tipo Single.
CStr() Convierte a un valor de tipo String.
CVar() Convierte a un valor de tipo Variant.
Hex() Convierte a un valor hexadecimal (base 16).
Oct() Convierte a un valor octal (base 8).
Si intenta pasar valores no válidos a una función de conversión para el tipo de
datos de destino se producirá un error. Por ejemplo, si se intenta convertir un tipo Long
en un Integer, el tipo Long debe estar en el intervalo válido del tipo de dato Integer.

5.9 Funciones de Fecha y Hora.- Las aplicaciones actuales necesitan manejar


valores de fecha y hora. Muchas aplicaciones se escriben para los negocios y con
propósitos científicos, donde el almacenamiento de fechas y horas es vital para el éxito
del proyecto. La siguiente tabla muestra tales funciones:
Función Descripción
Date Devuelve la fecha actual del sistema.
Sintaxis:
Date
Se use también la función Date para establecer la fecha del sistema.

Ing. Hermas Herrera Callejas Página : 10 de 24


Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación

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

Ing. Hermas Herrera Callejas Página : 11 de 24


Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación

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:

Ing. Hermas Herrera Callejas Página : 12 de 24


Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación

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.

5.10 Estructuras de Control.- Las estructuras de control permiten tomar decisiones y


realizar un proceso repetidas veces. Visual Basic proporciona dos tipos de estructuras
de control que permiten controlar el flujo de ejecución del programa:
 Estructuras de decisión
 Estructuras de bucle

5.10.1 Estructuras de Decisión.- Una aplicación debe ser capaz de comprobar


condiciones y, dependiendo de los resultados, realizar diferentes acciones. Entre las
estructuras de decisión que proporciona Visual Basic se incluyen las siguientes:
 lf...Then
 lf...Then...Else
 Select Case

5.10.1.1 If...Then.- La estructura If...Then comprueba una condición específica y, si es


verdadera, ejecuta una o más sentencias. Puede utilizar la sintaxis de una línea o de
varias líneas:
• If condición Then Sentencias
• If condición Then
Sentencias
End If
La condición generalmente es una expresión booleana, pero puede ser cualquier
expresión que dé como resultado un valor numérico. Visual Basic interpreta un valor
numérico cero como False y cualquier valor numérico distinto de cero como True. Si la
condición es True (verdadera), se ejecutarán todas las sentencias que siguen a la
palabra clave Then y si la condición es False (falsa), se ejecutarán las sentencias que
están a continuación de la estructura. Véase los siguientes ejemplos:
If Horas > 24 Then Horas = Horas - 24
Observar que la sintaxis de una línea no utiliza la sentencia End lf. Si se desea
ejecutar más de una sentencia utilizar la sintaxis de varias líneas If...Then...End If:
If KeyAscii = 13 Then
GradosFahr = Val(Grados_C.Text)*9/5 + 32
Grados_F.Text = Format$(GradosFahr)
End If

5.10.1.2 If...Then…Else.- Esta estructura evalúa la condición y si es True (verdadera),


Ing. Hermas Herrera Callejas Página : 13 de 24
Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación

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

5.10.1.3 Select Case.- Select Case ofrece posibilidades similares a la estructura


If...Then...Else, pero hace que el código sea más legible cuando hay varias opciones.
La estructura Select Case comprueba una única expresión, que se evalúa una sola vez
al principio de la estructura. El resultado de esta comprobación se compara con los
valores de cada case y si coincide con uno de ellos, se ejecuta el bloque de sentencias
asociado a ese Case.
Select Case expresión_prueba
[Case lista_expresiones1

Ing. Hermas Herrera Callejas Página : 14 de 24


Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación

[bloque de sentencias 1]]


[Case Iista_expresiones 2
[bloque de sentencias 2]

[Case Else
[bloque de sentencias n]]
End Select
Cada lista_expresiones es una lista de uno o más valores. Si hay más de un valor
en una lista, se separan los valores con comas. Si más de un Case coincide con la
expresión de prueba, sólo se ejecutará el bloque de sentencias asociado con la primera
coincidencia. Visual Basic ejecutará las sentencias de la cláusula opcional Case Else si
ningún valor de la lista de expresiones coincide con la expresión de prueba.
Veamos un ejemplo:
Select Case Index
Case 0
Botón(0).Visible = True
Case 1
Botón(1).Visible = True
Case 2
Botón(2).Visible = True
Case 3
Botón(3).Visible = True
Case 4
Botón(4).Visible = True
Case 5
Botón(5).Visible = True
Case Else
Exit Sub
End Select

5.10.2 Estructuras de Bucle.- Las estructuras de bucle permiten repetir la ejecución


de una o más líneas de código mientras una condición sea verdadera o hasta que una
condición sea verdadera. Visual Basic dispone de las siguientes estructuras de bucle:
 Do...Loop
 For...Next
 For Each...Next

5.10.2.1 Do...Loop.- Se utiliza el bucle Do...Loop para ejecutar un bloque de código un


número indefinido de veces. Hay algunas variantes en la sentencia Do...Loop pero
cada uno evalúa una condición para determinar si continúa la ejecución de un bloque
de sentencias.

a) Do while...Loop.- Se utiliza el bucle Do While…Loop para repetir la ejecución de un


bloque de sentencias mientras una condición sea True (verdadera) o dicho de otra
forma hasta que la condición sea False (falsa).
Sintaxis:
Do While condición
sentencias
Loop
Cuando Visual Basic ejecuta este bucle Do, primero evalúa la condición. Si
condición es False, se salta todas las sentencias; si es True, ejecuta las sentencias

Ing. Hermas Herrera Callejas Página : 15 de 24


Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación

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

b) Do...Loop while.- La variante Do...Loop While ejecuta las sentencias primero y


prueba la condición después de cada ejecución. Esta variante garantiza al menos una
ejecución de las sentencias.
Sintaxis:
Do
Sentencias
Loop While condición
Hay dos variantes análogas a las dos anteriores, excepto en que repiten el bucle
siempre y cuando la condición sea False en vez de True.
c) Ejecuta el bucle cero o más veces
Do Until condición
sentencias
Loop

d) Ejecuta el bucle al menos una vez


Do
sentencias
Loop Until condición
Este siguiente procedimiento muestra el mismo resultado que el anterior:
Private Sub Form_Click()
Dim I, Cuadrado As Integer
I=1
Do Until 1 > 10
Cuadrado = I*I
I=I+1
Print Cuadrado
Loop
End Sub

5.10.2.2 For...Next.- Los bucles Do se utilizan cuando no se sabe cuántas veces se


necesitará ejecutar las sentencias del bucle. Sin embargo, cuando se sabe cuántas
veces se van a ejecutar las sentencias, es mejor utilizar el bucle For...Next. Sintaxis:
For contador = inicio to fin [Step incremento]
sentencias
Next [contador]
Los argumentos contador, inicio, fin e incremento son todos numéricos.
La variable contador incrementa o reduce su valor en cada repetición del bucle. El

Ing. Hermas Herrera Callejas Página : 16 de 24


Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación

argumento incremento puede ser positivo o negativo. Si incremento es positivo inicio


debe ser menor o igual que fin o no se ejecutarán las sentencias del bucle. Si
incremento es negativo, inicio debe ser mayor o igual que fin para que se ejecute el
cuerpo del bucle. Si no se establece Step, el valor predeterminado de incremento es 1.
Al ejecutar el bucle For...Next, Visual Basic:
1. Asigna el valor de inicio a contador.
2. Si incremento es positivo, comprueba si contador es mayor que fin. Si lo es, Visual
Basic salta el cuerpo del bucle y continúa en la línea que sigue a Next. En caso
contrario, se ejecutan las sentencias que siguen a For hasta la sentencia Next.
3. Incrementa contador en 1 si no se ha especificado incremento; si se especificó
incremento, contador se incrementa con el valor de incremento.
4. Repite los pasos 2 y 3.
El procedimiento siguiente mostrará la suma de los números 1 a 100 cuando se
haga clic sobre el formulario:
Private Sub Form_Click()
Dim I, Suma As lnteger
For I = 1 To 100
Suma = Suma + 1
Next I
Print Suma
End Sub
El procedimiento que sigue mostrará la suma de los números pares contenidos
entre 2 y 100, incluidos ambos cuando se haga clic en el formulario:
Private Sub Form_Click()
Dim I, Suma As Integer
For I = 2 To 100 Step 2
Suma = Suma + I
Next I
Print Suma
End Sub
Si el valor incremento es negativo, inicio debe ser mayor o igual que fin para que
se ejecute el cuerpo del bucle. El siguiente procedimiento muestra el mismo resultado
que el anterior:
Private Sub Form_Click()
Dim I, Suma As lnteger
For I = 100 To 2 Step -2
Suma = Suma + I
Next I
Print Suma
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

Ing. Hermas Herrera Callejas Página : 17 de 24


Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación

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.3 Estructuras de Control Anidadas.- Si una estructura de control está dentro de


otra estructura de control (como un bloque If...Then dentro de un bucle For...Next),
entonces se dice que dicha estructura de control está anidada. Se pueden anidar los
controles en Visual Basic en tantos niveles como se desee. Es una práctica común
crear estructuras de decisión anidadas y estructuras de bucle más legibles sangrando el
cuerpo de la estructura de decisión o de bucle.

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.

5.11 Procedimientos y Funciones.- La base de una aplicación en Visual Basic la


forman sus procedimientos conducidos por sucesos. Un procedimiento conducido por
un suceso es el código que es invocado cuando un objeto reconoce que ha ocurrido un
determinado suceso. Por ejemplo, cuando se hace clic en el primer botón de comando
de un programa se ejecuta el procedimiento de suceso Commandl _Click asociado a
este botón.
Cuando varios procedimientos conducidos por sucesos necesitan ejecutar una
misma rutina, la mejor forma de proceder es colocar el código de esta rutina en un
procedimiento general que será invocado desde cada uno de estos procedimientos

Ing. Hermas Herrera Callejas Página : 18 de 24


Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación

conducidos por sucesos. De esta manera se evita duplicar código. Un procedimiento


general debe ser conciso y debe ejecutar una tarea única. De esta manera, el código
del programa será estructurado y fácil de mantener. Un procedimiento general puede
escribirse como procedimiento Sub o como procedimiento Function.
5.11.1 Creación de un Procedimiento General.- Para crear un procedimiento
general, primero se abre la ventana de código correspondiente al formulario o al módulo
donde se quiere definir el procedimiento y a continuación se ejecuta el comando
Agregar procedimiento del menú Herramientas. Visual Basic muestra el cuadro de
diálogo Agregar procedimiento:
En este cuadro de diálogo se debe ingresar un nombre y definir el tipo y alcance
que tendrá el nuevo procedimiento. Finalmente, hacer clic en Aceptar.
La ventana de código debe tener un aspecto similar al siguiente:

Entre Public Sub y End Sub se digita el cuerpo del procedimiento.

5.11.2 Edición de un Procedimiento.- Para editar un procedimiento general


existente, en la ventana de código, se debe seleccionar (general) en el cuadro de lista
objetos y a continuación, seleccionar el procedimiento del cuadro de lista
Procedimientos.

5.11.3 Procedimientos Function.- Un procedimiento Function es un grupo de


sentencias localizadas entre las sentencias Function y End Function. Este tipo de
procedimiento devuelve un valor y el procedimiento que le llama deberá hacer algo con
ese valor, como asignarlo a una variable o control. Sintaxis:
[Static][Private]Function nombre ([Argumentos])[As tipo]
[sentencias]
[nombre = expresión]
[Exit Function]
[sentencias]
[nombre = expresión]
End Function
Donde:
Nombre: Es el nombre de la función
Argumentos Lista de variables utilizadas por la función.
As tipo En esta cláusula se especifica el tipo de valor que devuelve la función (lnteger,
Long, Single, Double, Currency, String o Variant).
Expresión Define el valor devuelto por la función. Este valor es almacenado en el propio
nombre de la función, que actúa como variable dentro del cuerpo de la misma.
Sentencias Bloque de instrucciones que especifican la tarea que debe llevar a cabo la
función.
Exit Function Permite salir de una función antes de que ésta finalice. Al salir de la función, la
ejecución del programa retorna a la sentencia inmediatamente a continuación
de la que efectuó la llamada.

Ing. Hermas Herrera Callejas Página : 19 de 24


Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación

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.4 Procedimientos Sub.- A diferencia de un procedimiento Function, los


procedimientos Sub no devuelven un valor. La sintaxis que define un procedimiento
Sub es la siguiente:
[Static][Private] Sub nombre([argumentos])
[sentencias]
[Exit Sub]
[sentencias1]
End Sub
La explicación es análoga a la dada para los procedimientos Function.
Un procedimiento Sub puede ser llamado de alguna de las dos formas siguientes:
Call nombre [{argumentos}] ó
nombre [argumentos]
A diferencia de una función, un procedimiento no se puede utilizar en una expresión.
El siguiente procedimiento Sub limpia todos los cuadros de texto de un formulario.
Sub LimpiarCuadrosdeTexto()
Dim control
For Each control In Form1.Controls
If Type of control is TextBox Then
control.Text = “ “
End If
Next control
End Sub
La llamada a este procedimiento puede ser de cualquiera de las dos formas
siguientes:
LimpiarCuadrosdeTexto o
Call LimpiarCuadrosdeTexto

Ing. Hermas Herrera Callejas Página : 20 de 24


Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación

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.11.6 Funciones Recursivas.- Se dice que una función es recursiva si se llama a sí


misma, desde el interior del código que la compone. La recursividad es una alternativa
a la repetición o iteración en situaciones en las que la recursividad es una solución
simple y natural a un problema que en caso contrario sería difícil de resolver. La
recursividad es una herramienta potente y útil en la resolución de problemas que tengan
naturaleza recursiva y por ende, en la programación.
La siguiente función calcula el máximo común divisor de dos números enteros de
manera iterativa.
Public Function MCD(A, B) As Long
Dim Temporal As Long
Do While A Mod B <> 0
Temporal = A
A=B
B = Temporal Mod B
Loop
MCD = B
End Function
Una solución alternativa es una función recursiva, que se llame tantas veces como
sea necesario, pasándose en cada llamada los valores de A y B. Cuando el último resto
es cero (A Mod B = 0), el máximo común divisor es el último divisor (en ese caso, B).
Function MCD(A, B) As Long
If A Mod B = 0 Then
MCD = B
Else
MCD = MCD(B, A Mod B)
End If
End Function

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

representa a todos los elementos y éstos a su vez se diferencian por un índice o


subíndice.
Visual Basic permite definir arrays de variables de una o más dimensiones y de
cualquier tipo de datos (tipos fundamentales y tipos definidos por el usuario) e introduce
una nueva clase de arrays, arrays de controles, necesarios para escribir menús, para
crear nuevos controles en tiempo de ejecución o para hacer que una serie de controles
tengan asociado un mismo procedimiento para cada tipo de suceso.
.
5.12.1 Arrays unidimensionales.- Un array de una dimensión (unidimensional) es un
tipo de datos estructurado compuesto de un número fijo de elementos. Los elementos
del array se almacenan en posiciones contiguas de memoria, a cada una de las cuales
se puede acceder directamente. Supongamos que se desea almacenar las edades de
40 personas. Para almacenar estas edades se necesita reservar 40 posiciones en
memoria, dar un nombre al array y a cada una de las 40 personas asignarles su edad
correspondiente, es decir, dar el índice o subíndice del array.
Edad[0] 24
Edad[1] 34
Edad[2] 28
... ...
Edad[39] 34
Nombre del array: Edad
Subíndice [1], [2]...
Contenido Edad[1] = 34

5.12.2 Declaración de un Array.- Un array debe declararse con la sentencia Dim


seguida por el nombre del array y, entre paréntesis, el valor máximo del índice que
emplearemos para acceder a cada elemento.
Veamos algunos ejemplos:
Dim Nombres(24) As String
El ejemplo anterior declara un array de una dimensión, Nombres, con veinticinco
elementos, Nombres(0), Nombres(1),...,Nombres(24), cada uno de los cuales permite
almacenar una cadena de caracteres.
Global Edades(1 to 50) As Integer
El ejemplo anterior declara un array unidimensional, Edades, con cincuenta
elementos, Edades(1),..., Edades(50), cada uno de los cuales permite almacenar un
número entero.

5.12.3 Arrays Bidimensionales.- Un array bidimensional es un array con dos índices.


Para localizar o almacenar un valor en el array se deben especificar dos posiciones
(dos subíndices), uno para la fila y otro para la columna.
0 1 2 3 4 5
0 A[0, 0] A[0, 1] A[0, 2] A[0, 5]
1 A[1, 0]
2 A[2, 3]
3 A[3, 3]
4 A[4, 0] A[5, 5]
Array de dos dimensiones A con 5 filas y 6 columnas.
Ejemplos:
Dim Alumnos(3, 1 To 6) As Integer

Ing. Hermas Herrera Callejas Página : 22 de 24


Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación

El ejemplo anterior declara un array de dos dimensiones, Alumnos, con 4x6


elementos, Alumnos(0,1),...Alumnos(3,6), de tipo entero.
Static Sueldos(1 lo 5, 1 lo 5) As double
Este ejemplo declara un array de dos dimensiones, Sueldos, con 5x5 elementos:
Sueldos(1,1)... Sueldos(5,5).
Cuando se declara una array, se debe tener en cuenta las siguientes consideraciones:
 Para declarar un array global, se lo debe hacer en la sección de declaraciones de un
módulo utilizando la sentencia Global.
 Para declarar un array a nivel de módulo o de formulario, se lo debe hacer en la
sección de declaraciones del módulo o del formulario utilizando la sentencia Dim.
 Para declarar un array local a un procedimiento, utilizar la sentencia Static dentro del
propio procedimiento (también se puede utilizar la sentencia Dim si se declara el
procedimiento Static).

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.

5.12.5 Arrays de Controles.- Un array de controles es un conjunto de controles del


mismo tipo y con el mismo nombre. La utilidad de un array de controles se hace
evidente cuando queremos manipular las propiedades de un conjunto de controles. Por
ejemplo, en lugar de utilizar ocho cuadros de texto de diferentes nombres, puede crear
un array de ocho cuadros de texto en el formulario, distinguir cada elemento mediante
un subíndice y modificar una de sus propiedades.
Para crear un array de controles es suficiente asignar el mismo nombre a dos o
más controles (propiedad Name) durante el diseño de una aplicación. Tan pronto como
se asigna a un control un nombre ya asignado a otro control del mismo tipo, Visual
Ing. Hermas Herrera Callejas Página : 23 de 24
Computación para Ingeniería I y Laboratorio Cap.5–Visual Basic–Herramientas de Programación

Basic envía el siguiente mensaje preguntando si se desea crear un array de controles:

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.

Ing. Hermas Herrera Callejas Página : 24 de 24


Computación para Ingeniería I y Laboratorio Cap.6–Visual Basic–Uso de Archivos y Bases de Datos

CAPITULO 6 – VISUAL BASIC – USO DE ARCHIVOS Y BASES DE DATOS

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.

6.1.1 Archivos Secuenciales.- Para trabajar con archivos secuenciales porimero


debemos abrir el archivo, luego procesar el mismo y alconcluir el proceso, debemos
cerrar el archivo.

Apertura de archivos secuenciales.- La orden Open abre un archivo secuencial para


lectura o escritura. Abrir un archivo significa declarar un archivo como tal y reservar un
canal de comunicación entre el usuario y la computadora.
Sintaxis:
Open nombrearchivo For Modo As [#]numarch
Donde:
nombrearchivo Indica la ruta y el nombre del archivo.
Modo Input, Output, Append.
Input abre un archivo para lectura; si el archivo no existe en el disco duro, la
operación Input produce un error en tiempo de ejecución. La siguiente
orden abre el archivo Data.dat que se encuentra en la unidad C,
carpeta Agenda: Open “C:\Agenda\Data.dat” For Input As #1
Output abre un archivo nuevo para escritura, esta operación crea el archivo
en el disco duro; si en el disco duro ya existe un archivo con el
nombre del archivo nuevo, se pierde el contenido del antiguo.
Append abre un archivo existente y permite escribir datos adicionales al final
del archivo; si el archivo no existe, Append lo crea. La siguiente orden
abre el archivo Proveedores.dat y permite agregar registros al final del
mismo: Open C:\Proveedores.dat” For Append As #1
numarch Es un número de 1 a 511 que identifica al archivo cuando se vaya a acceder,
escribir y cerrar.
La apertura de un archivo en la forma descrita anteriormente es bastante restrictiva
puesto que no le permitiría al usuario seleccionar el disco, la carpeta ni el nombre del
archivo que desea abrir.
La manera más conveniente es utilizar el cuadro de diálogo común para abrir y cerrar
archivos. Supongamos que hemos incorporado el cuadro de diálogo común en el
formulario y que lo hemos denominado “Abrir”. Para indicar que se va a leer un archivo
seleccionado por el usuario mediante el cuadro de diálogo Abrir, la codificación se
modifica ligeramente. 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.

Ing. Hermas Herrera Callejas Página : 1 de 17


Computación para Ingeniería I y Laboratorio Cap.6–Visual Basic–Uso de Archivos y Bases de Datos

Open Abrir.FileName For lnput As #1

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).

Escritura de archivos de texto.- La orden Print se utiliza para escribir datos en un


archivo sin colocar delimitadores entre los elementos. Su sintaxis es:
Print #númarch, Expresión
Donde:
númanch es el número utilizado en la sentencia Open el cual identifica el archivo en el que se
escribirá.
Expresión es una cadena numérica o de caracteres que se va escribir en el archivo.
También podemos utilizar la orden Write para escribir los datos en el archivo.
Write inserta comas entre los elementos a medida que se escriben en el archivo. Su
sintaxis es:
Write #numarch, lista de expresiones
Donde:
Lista de expresiones son las expresiones que se desean almacenar separadas por comas.
Por ejemplo: Write #1, Textl.Text, Text2.Text escribe el contenido de
los cuadros de texto Text1, Text2 en el archivo.

Cierre de archivos secuenciales.- La orden Close se utiliza para cerrar un archivo. Su


sintaxis es:
Close #númarch
Donde, númarch es el número asignado en Open para identificar el archivo.
Close #1 cierra un archivo. Para cerrar más de un archivo se utiliza la orden Close,
solamente.

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

Ing. Hermas Herrera Callejas Página : 2 de 17


Computación para Ingeniería I y Laboratorio Cap.6–Visual Basic–Uso de Archivos y Bases de Datos

cuadro de diálogo Componentes.


7. Habilitar la casilla Microsoft Common Dialog Control 6.0 y hacer clic en Aceptar.
8. En el cuadro de herramientas, hacer doble clic en el control CommonDialog.
9. En el cuadro de herramientas hacer doble clic en el control TextBox. En el formulario
redimensionar el tamaño de este control. El formulario debe tener el siguiente aspecto:

Asociar un procedimiento al formulario y a cada una de las opciones del menú


Archivo.
Hacer doble clic sobre el formulario. En la ventana de código, digitar el siguiente
código:
Private Sub Form_Load()
‘Centra el formulario en la pantalla
Move (Screen.Width - Width) \ 2, (Screen.Height - Height) \ 2
Texto.Font.Name = “Arial” ‘Fuente por defecto, Arial
Texto.Font.Size = 10 ‘Tamaño por defecto,10
End Sub
En el formulario, hacer clic en el menú Archivo, seleccionar la opción Nuevo y
agregar el siguiente código al suceso Click asociado a esta opción:
Public Sub OpciónNuevo_Click()
‘Título por defecto
Forml.Caption = “(Sin título)”
‘Borra el contenido del cuadro de texto
Texto.Text = “ “
End Sub
En el menú Archivo, hacer clic en la opción Abrir y agregar el siguiente código al
evento Click asociado a esta opción:
Private Sub OpciónAbrir_Click()
‘Abre el cuadro de diálogo Abrir
Abrir.ShowOpen
‘Muestra la ruta y el nombre del archivo en la barra de título del formulario
Forml.Caption = Abrir.FileName.
‘Borra el texto actual del control Texto
Texto.Text = “ “
Open Abrir.FileName For Input As #1
Texto.Text = Input$(LOF(1), #1)
Close #1
End Sub
En el menú Archivo del formulario, hacer clic en la opción Guardar como...y
agregar el siguiente código al suceso Click asociado a esta opción:
Ing. Hermas Herrera Callejas Página : 3 de 17
Computación para Ingeniería I y Laboratorio Cap.6–Visual Basic–Uso de Archivos y Bases de Datos

Private Sub OpciónGuardarComo_Click()


‘Muestra el cuadro de diálogo Guardar como
Abrir.ShowSave
Open Abrir.FileName For Output As #1
Print #1, Texto.Text
Close #1
End Sub
En el formulario, hacer clic en la opción Salir del menú Archivo y agregar el
siguiente código:
Pnivate Sub ArchivoSalir_Click()
End
End Sub
Ejecutar el programa y en el cuadro de texto digitar cualquier texto. Para guardar
permanentemente el texto digitado, seleccionar la opción Guardar como...del menú
Archivo. En el cuadro de diálogo Guardar como..., seleccionar una carpeta y digitar un
nombre para el archivo. Finalmente, hacer clic en Guardar. Si posteriormente se desea
recuperar la información que contiene el texto, hacer clic en el comando Abrir del menú
Archivo. En el cuadro de diálogo Abrir, localizar y seleccionar el archivo. Por último
hacer clic en Abrir.

6.1.2 Archivos Aleatorios.- Un archivo aleatorio conocido también como archivo de


acceso directo consiste en un conjunto de registros de la misma longitud, cada uno de
ellos identificado por un único número lo que permite un acceso directo al registro.
Los pasos a seguir en la manipulación de archivos aleatorios son:
1. Definición del registro.
2. Apertura del archivo.
3. Proceso de los datos.
4. Cierre del archivo.

6.1.3 Creación de un Archivo Aleatorio.- Para crear un archivo aleatorio se sigue


estos pasos:
1. Crear un módulo y en ese módulo definir los campos del registro, indicando el tipo
de dato y longitud.
2. Declarar las variables tipo registro.
3. Abrir el archivo en modo de acceso aleatorio y especificar la longitud del registro.
(Sentencia Open)
4. Leer los datos del registro y grabar el contenido en el archivo (Sentencia Put).

Ing. Hermas Herrera Callejas Página : 4 de 17


Computación para Ingeniería I y Laboratorio Cap.6–Visual Basic–Uso de Archivos y Bases de Datos

5. Cerrar el archivo (Sentencia Close).

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.1.3.3 Escritura en un Archivo Aleatorio.- Para escribir o grabar datos en un archivo


aleatorio se utiliza la sentencia Put. Tiene esta sintaxis:
Put [#]n-archivo, [n-registro], variable
Donde
n-archivo es el número con el que se abrió el archivo.
n-registro es el número del registro. Si se omite se toma el número siguiente al utilizado
en la última sentencia Put
variable contiene la información a escribir en el archivo.
Ejemplo: Put #1, I, Clientes

6.1.3.4 Lectura de un Archivo Aleatorio.- Para la lectura de un archivo aleatorio se


utiliza la sentencia Get. Tiene esta sintaxis:
Get [#]n-archivo, [n-registro], variable
Donde
n-archivo es el número con el que se abrió el archivo.
n-registro es el número de registro. Si se omite, se toma el número siguiente al utilizado

Ing. Hermas Herrera Callejas Página : 5 de 17


Computación para Ingeniería I y Laboratorio Cap.6–Visual Basic–Uso de Archivos y Bases de Datos

en la última sentencia Get.


variable Esta variable almacena los datos del registro leído del archivo.
Ejemplo:
Get #1, I, Clientes

6.1.3.5 La Sentencia Seek.- Esta sentencia establece la posición de la próxima


operación de lectura o escritura en un archivo abierto con Open. Tiene esta sintaxis:
Seek [#]n-archivo, posición
Donde
n-archivo es el número con el que se abrió el archivo.
posición un número en el intervalo de 1 a 2.147.483.647 inclusive, que indica la posición en
la que se debe ejecutar la próxima operación de lectura o escritura.
Por ejemplo, la sentencia
Get #1, i, Clientes
Es equivalente a las sentencias
Seek #1, i
Get #1, , Clientes

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 Abrir y un nuevo módulo se abrirá en su pantalla. En este módulo


digitar la estructura del archivo. Como ejemplo se muestra la estructura del archivo
ObrasLit.dat

Se desarrollará una aplicación que permita el mantenimiento de un archivo


aleatorio. El nombre del archivo será ObrasLit.dat y tendrá la siguiente estructura:
Campos Tipo Longitud
Código String 5
Título String 50
Autor String 50
Editorial String 50
Año_Publ lnteger
Stock_Actual lnteger
Stock_Mínimo lnteger
Precio Double
Sw String 1

Ing. Hermas Herrera Callejas Página : 6 de 17


Computación para Ingeniería I y Laboratorio Cap.6–Visual Basic–Uso de Archivos y Bases de Datos

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

registros. Para agregar el procedimiento LLenarLista al programa, seleccionar el


comando Agregar procedimiento del menú Herramientas. Visual Basic muestra el
cuadro de diálogo Agregar procedimiento:
Ingresar el nombre del procedimiento.

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

1. Hacer doble clic en el control ListBox. La ventana de código muestra el


Ing. Hermas Herrera Callejas Página : 8 de 17
Computación para Ingeniería I y Laboratorio Cap.6–Visual Basic–Uso de Archivos y Bases de Datos

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

Ing. Hermas Herrera Callejas Página : 9 de 17


Computación para Ingeniería I y Laboratorio Cap.6–Visual Basic–Uso de Archivos y Bases de Datos

TotalRegistros = LOF(1) \ Len(ObrasLit)


Put #1, TotalRegistros + 1, ObrasLit
LLenarLista
LimpiarCuadrosdeTexto
Guardar.Enabled = False
End Sub
Asociar un procedimiento al botón de comando Modificar accionado por el
suceso Click. El procedimiento debe buscar el registro en disco, guardar los cambios
realizados en los campos de un registro e inhabilitar el botón de comando Modificar.
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 código:
Private Sub Modificar_Click()
Dim i, posición As Integer
Dim encontrado As Boolean
For i = 1 To LOF(1) \ Len(ObrasLit)
Get #1, i, ObrasLit
If ObrasLit.Codigo = Codigo.Text Then
encontrado = True
posición = i
Exit For
End If
Next i
If encontrado Then
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
Put #1, posición, ObrasLit
End If
Modificar.Enabled = False
End Sub
Asociar un procedimiento al botón de comando Eliminar accionado por el suceso
Click. Cuando el usuario seleccione un código en el control ListBox y haga clic en el
botón Eliminar, los datos relacionados con el código deben quedar eliminados del
archivo ObrasLit.dat, llamar a los procedimientos LLenarLista y LimpiarCuadrosdeTexto
e inhabilitar los botones de comando eliminar y modificar.
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 código:
Private Sub Eliminar_Click()
Dim i, posición As Integer
Dim encontrado As Boolean
encontrado = False
For i = 1 To LOF(1) \ Len(ObrasLit)
Get #1, i, ObrasLit
If ObrasLit.Codigo = Codigo.Text Then
encontrado = True

Ing. Hermas Herrera Callejas Página : 10 de 17


Computación para Ingeniería I y Laboratorio Cap.6–Visual Basic–Uso de Archivos y Bases de Datos

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

Ing. Hermas Herrera Callejas Página : 11 de 17


Computación para Ingeniería I y Laboratorio Cap.6–Visual Basic–Uso de Archivos y Bases de Datos

Asociar un procedimiento al botón de comando Salir accionado por el suceso Click.


1. Hacer doble clic en el botón de comando Salir.
2. Digitar el siguiente código:
Private Sub Salir_Click()
'Cierra el archivo ObrasLit.dat
Close
'Finaliza la ejecución del programa
End
End Sub
Presionar la tecla F5 para ejecutar el programa. Hacer clic en uno de los códigos
que muestra el control ListBox y los cuadros de texto mostrarán los datos relacionados
con el código. Si se hace clic en el botón Eliminar, los datos serán eliminados del
archivo ObrasLit.dat. Realizar algunos cambios en los datos mostrados y el botón
Modificar se activará de manera automática. Hacer clic en el botón Modificar para
confirmar los cambios realizados. Para ingresar nuevos datos, hacer clic en el botón
Ingresar (observar que el botón Guardar ahora está habilitado). Ingrese los nuevos
datos y haga clic en el botón Guardar para confirmar el ingreso de los nuevos datos.

6.3 El Control Data.- Este control facilita la obtención y despliegue de la información


contenida en bases de datos creadas con las aplicaciones Microsoft Access, dBase,
Excel, FoxPro, Lotus, Paradox y archivos de datos basados en texto.
Una base de datos está constituida por una o más tablas. Una tabla es un objeto
que almacena los datos en registros (filas) y campos (columnas). Una tabla es un
conjunto de registros que contienen un tipo determinado de información. Por ejemplo,
una tabla podría contener los datos de nuestros clientes o pacientes, un inventario de
las piezas de almacén, los datos de pedidos, etc.

6.3.1 Creación de un Editor de Datos.- Se desarrollará una aplicación que permita


editar los datos de la tabla Clientes contenida en la base de datos NWIND.

Ing. Hermas Herrera Callejas Página : 12 de 17


Computación para Ingeniería I y Laboratorio Cap.6–Visual Basic–Uso de Archivos y Bases de Datos

Seguir estos pasos:


1. Hacer clic en el comando Nuevo proyecto del menú Archivo para crear una nueva
aplicación.
2. En el cuadro de herramientas, hacer doble clic en el control Data. El control aparece
en el centro del formulario. Redimensionar el tamaño de este control tal como se
observa en la siguiente ilustración. Observar que el control Data contiene flechas
con las cuales se podrá desplazar por los registro de la base de datos. También
contiene un rótulo (Data1) que se podrá utilizar para describir la base de datos a la
que se accederá utilizando este objeto.

Primer registro de la base de datos Ultimo registro de la base de datos


Registro anterior Siguiente registro
3. Colocar diez controles Label y nueve controles TextBox en el formulario. Asígneles
las siguientes propiedades:

Ing. Hermas Herrera Callejas Página : 13 de 17


Computación para Ingeniería I y Laboratorio Cap.6–Visual Basic–Uso de Archivos y Bases de Datos

Control Propiedad Valor


Label Caption Clientes
Font Arial, Negrita, 14
Label Caption Id Cliente
Label Caption Nombre Compañía
Label Caption Nombre Contacto
Label Caption Dirección
Label Caption Ciudad
Label Caption Región
Label Caption País
Label Caption Teléfono
Label Caption Fax
TextBox Nombre IdCliente
TextBox Nombre NombreCompañia
TextBox Nombre NombreContacto
TextBox Nombre Dirección
TextBox Nombre Ciudad
TextBox Nombre Región
TextBox Nombre País
TextBox Nombre Teléfono
TextBox Nombre Fax
La interfaz debe tener el siguiente aspecto:

4. En el formulario, hacer clic en el control Data.


5. En la ventana Propiedades verificar que la propiedad Connect esté definida como
Access (valor por defecto).
6. En la ventana Propiedades, definir la propiedad DatabaseName como C:\Archivos
de programa\Microsoft Visual Studio\VB98\Nwind. Para ello, hacer clic en el botón
que aparece a la derecha de la propiedad DatabaseName. Visual Basic nuestra el
cuadro de diálogo DatabaseName. Seleccionar la base de datos Nwind.
7. En la propiedad RecordSource, desplegar el cuadro de lista y de las tablas
contenidas en la base de datos, seleccionar la tabla Clientes.
8. En la propiedad Caption digitar “Haga clic para controlar el despliegue”.
9. En el formulario, hacer clic en el control IdCliente.
10. En la ventana Propiedades, seleccionar la propiedad DataSource, pulsar el botón
del cuadro de lista desplegable y seleccionar Data1.

Ing. Hermas Herrera Callejas Página : 14 de 17


Computación para Ingeniería I y Laboratorio Cap.6–Visual Basic–Uso de Archivos y Bases de Datos

11. En la propiedad DataField, pulsar el botón del cuadro de lista desplegable y


seleccionar IdCliente (el campo que desea mostrar de la lista).

La siguiente tabla muestra las propiedades asignadas a cada uno de los


controles TextBox:
Control Propiedad Valor
TextBox Nombre IdCliente
DataSource Datal
DataField IdCliente
TextBox Nombre NombreCompañia
DataSource Datal
DataField NombreCompañia
TextBox Nombre NombreContacto
DataSource Datal
DataField NombreContacto
TextBox Nombre Dirección
DataSource Datal
DataField Dirección
TextBox Nombre Ciudad
DataSource Data1
DataField Ciudad
TextBox Nombre Región
DataSource Datal
DataField Región

Ing. Hermas Herrera Callejas Página : 15 de 17


Computación para Ingeniería I y Laboratorio Cap.6–Visual Basic–Uso de Archivos y Bases de Datos

TextBox Nombre País


DataSource Datal
DataField País
TextBox Nombre Teléfono
DataSource Data1
DataField Teléfono
TextBox Nombre Fax
DataSource Data1
DataField Fax
12. Guardar la aplicación con el nombre EditarBasedeDatos.vbp y el formulario con el
nombre EditarBasedeDatos.frm.
Presionar la tecla F5 para ejecutar el programa.

Hacer clic en las flechitas que muestra el control Data para moverse entre los registros de la tabla.

6.4 Asistente para Formularios de Datos.- Visual Basic incluye un complemento


llamado Asistente para formulario de datos (Data Form Wizard) que se puede utilizar
para generar un formulario de acuerdo con una base de datos. Este asistente analiza la
base de datos, localiza los campos y crea un formulario automáticamente con un título
adecuado, nombres de campos, cuadros de texto para los campos y un control Data
para moverse entre los registros.

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ú

Ing. Hermas Herrera Callejas Página : 16 de 17


Computación para Ingeniería I y Laboratorio Cap.6–Visual Basic–Uso de Archivos y Bases de Datos

Complementos. Visual Basic muestra el asistente para formularios de datos.


5. Seguir las indicaciones del Asistente. Por ejemplo, seleccionar de la lista el formato
de base de datos que se leerá. Luego, el siguiente paso es seleccionar la base de
datos. Para ello, hacer clic en el botón Examinar. En el cuadro de diálogo Bases de
datos de Access seleccionar la base de datos NWIND.

6. El siguiente paso consiste en seleccionar el tipo de formulario deseado y un tipo de


enlace de datos para tener acceso a los datos.
7. El siguiente paso consiste en seleccionar el origen de los registros y los campos que
aparecerán en el formulario.

Hacer clic aquí para seleccionar todos los campos de la tabla.


8. Luego, seleccionar las opciones que desee.
9. Finalmente, hacer clic en el botón Finalizar para generar el formulario.

Ing. Hermas Herrera Callejas Página : 17 de 17


(08) Archivo de Texto
Al hacer click en el menú Nuevo
 Cambiar el título del formulario a “Archivo Nuevo”
 Borrar el contenido actual del cuadro de texto

Al hacer click en el menú Abrir


 Muestra el cuadro de diálogo con método ShowOpen
Ejm: Dialogo.ShowOpen
 Muestra la ruta y el nombre del archivo en el título del formulario
Ejm: Form1.Caption = Dialogo.FileName
 Borra el contenido del cuadro de texto
 Abre el archivo seleccionado en modo input como Nro 1
Ejm: Open Diálogo.FileName For Input As #1
 Lee el archivo completo y lo transfiere al cuadro de texto
Ejm: Texto.Text = Input$(LOF(1), #1)
Caption Name Shortcut  Cierra el archivo abierto
&Archivo MenuArchivo Ejm: Close #1
...&Nuevo OpciónNuevo Ctrl+N
...&Abrir... OpciónAbrir Ctrl+A Al hacer click en el menú Guardar como:
...&Guardar como... OpciónGuardarComo Ctrl+G
 Muestra el cuadro de diálogo con método ShowSave
...&Salir OpciónSalir Ctrl+S
Ejm: Dialogo.ShowSave
 Abre el archivo seleccionado en modo Output como Nro 1
Para incluir el control cuadro de diálogo comun en el cuadro de
Ejm: Open Dialogo.FileName For Output As #1
herramientas, seleccionar el comando Componentes del menú Proyecto,
habilite la casilla Microsoft Common Dialog Control 6.0 y haga clic en  Escribe el contenido del cuadro de texto en el archivo
Aceptar. En el cuadro de herramientas, haga doble clic en el control Ejm: Print #1, Texto.Text
CommonDialog.  Cierra el archivo abierto
Ejm: Close #1
Al cargar el formulario:
 Centrar el formulario en la pantalla Al hacer click en el menu Salir
Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2  Finaliza el programa
 Definir fuente por defecto, Arial para el cuadro de texto
 Definir el tamaño por defecto de la fuente en 10

 Abre el archivo en modo Random (Open archivo For Random As #n-arch


(09) Archivos Aleatorio Len = long-reg)
 Llama al procedimiento LlenarLista

Para crearlo, del Menu Herramientas elegir: Agregar Procedimiento


LlenarLista (llena la lista del combo box con los CI de los registros en el
archivo)
 Calcula el Nro de registros del archivo (LOF(1) / Len(registro))
 Si existen registros borra la lista y carga con el siguiente proceso:
 Iterativamente (desde el 1ro al último registro)
o Lee un registro (Get [#]n-archivo, [n-registro], variable)
o Si el Switch está en 1 añade a la lista
 Si no existen registros deja la lista en blanco

Al clic en un CI de lista busca el registro en el archivo y mueve su


contenido al formulario
 Iterativamente para todos los registros
o Leer registro
Crear un arreglo de controles llamado CAMPOS o Si el CI del item seleccionado es igual al CI del registro
Comandos Guardar, Modificar y Eliminar inhabilitados en tiempo de o Mueve los campos del registro a los textos del formulario
desarrollo  Inhabilita el comando Guardar
Estructura del archivo (crear a nivel módulo desde menú proyecto)  Inhabilita el comando Modificar
Nom campo Tamaño Tipo de dato  Habilita el comando Eliminar
Cédula 10 posiciones Alfanumérico
Paterno 20 posiciones Alfanumérico Al presionar el comando Ingresar
Materno 20 posiciones Alfanumérico  Ejecutar el procedimiento LimpiarDatos
Nombres 30 posiciones Alfanumérico
 Habilita el comando Guardar
Dirección 40 posiciones Alfanumérico
 Inhabilita los comandos Modificar y Eliminar
Fecha_Nac 8 posiciones Fecha
Sexo 1 posición Alfabética
Al presionar Guardar toma la información del formulario, arma el
Switch 1 posición Alfabética
registro y lo guarda
Luego de definir la estructura, definir una variable de ese tipo que
contendrá los registros del archivo  Mueve los campos del formulario a los campos del registro
Incorporar Cuadro de Diálogo Común  Pone 1 en el Switch
Al cargar el formulario  Calcula el número de registros existentes en el archivo
 Centrar formulario en la pantalla

Ing. Hermas Herrera Callejas Página : 1 de 2


 Guarda el registro en la siguiente posición disponible del archivo  Poner 0 en Switch
(Put [#]n-archivo, [n-registro], variable)  Guardar el registro de nuevo
 Vuelve a llenar la lista del ComboBox  Llenar la lista del ComboBox
 Ejecuta el procedimiento LimiarDatos  LimpiarDatos
 Inhabilita el comando Guardar  Inhabilitar los comandos Eliminar y Modificar

Al presionar el comando Modificar Al modificar cualquier campo del formulario


 Iterativamente hasta encontrar el registro apropiado (o para todo el  El Comando Modificar habilitarlo o inhabilitarlo de modo que sea
archivo) lo contrario del comando Guardar en cuanto a su habilitación
o Leer un registro del archivo (Get [#]n-archivo, [n-registro],  Inhabilitar el comando Eliminar
variable)
o Si el CI del formulario es igual al CI del registro en el archivo Al presionar la tecla ENTER (KeyAscii = 13) y para los índices
 Mover los campos del formulario a los campos del registro menores a 6 el cursor debe colocarse en el siguiente campo
 Guardar el registro en el archivo (Put [#]n-archivo, [n- (campos(i+1).SetFocus), en el último debe volver al primero
registro], variable
o Inhabilitar el comando Modificar LimpiarDatos Limpia todos los cuadros de texto
o LimpiarDatos  Iterativamente y para cada campo
Al presionar el comando Eliminar se le pone un 0 en el Switch del o Mueve blancos al campo
registro  Ubica el cursor en el primer campo
 Iterativamente para todo el archivo (o hasta encontrar el registro
apropiado) Al concluir
o Leer un registro  Cierra el archivo
o Si el CI del formulario es igual al CI del registro en el  Termina el programa
archivo

(10) Editor de Datos TextBox Nombre NombreContacto


DataSource Data1
Aplicación que permitirá editar datos de la tabla Clientes contenida en la DataField NombreContacto
base de datos access NWIND . TextBox Nombre Dirección
DataSource Data1
DataField Dirección
TextBox Nombre Ciudad
DataSource Data1
DataField Ciudad
TextBox Nombre Región
DataSource Data1
DataField Región
TextBox Nombre País
DataSource Data1
DataField País
TextBox Nombre Teléfono
DataSource Data1
DataField Teléfono
TextBox Nombre Fax
DataSource Data1
DataField Fax
Control Propiedad Valor Data Name Data1
Label Caption CLIENTES Connect Access
Font Arial, Negrita, 14 DatabaseName C:\ruta archivo\NWIND
Label Caption Id Cliente RecordSource Clientes
Label Caption Nombre Compañía Caption “Haga clic para controlar el despliegue”
Label Caption Nombre Contacto
Label Caption Dirección
Label Caption Ciudad
Label Caption Región
Label Caption País
Label Caption Teléfono
Label Caption Fax
TextBox Nombre IdCliente
DataSource Data1
DataField IdCliente
TextBox Nombre NombreCompañia
DataSource Data1
DataField NombreCompañía

Ing. Hermas Herrera Callejas Página : 2 de 2


Computación para Ingeniería I y Laboratorio Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos

CAPITULO 7 – VISUAL BASIC – CONTROLES QUE MUESTRAN IMÁGENES Y GRAFICOS

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.

Ing. Hermas Herrera Callejas Página : 1 de 21


Computación para Ingeniería I y Laboratorio Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos

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....

para visualizar la imagen Gatito.bmp


Se desarrolla ahora un programa que abre imágenes que se encuentran almacenadas
en distintos archivos de disco, con nombres que terminan en números: Imagen1, Imagen2,
Imagen3 e Imagen4.
Seguir estos pasos:
1. Seleccionar el comando Nuevo proyecto del menú Archivo, para crear una nueva
Ing. Hermas Herrera Callejas Página : 2 de 21
Computación para Ingeniería I y Laboratorio Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos

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”)

Ing. Hermas Herrera Callejas Página : 3 de 21


Computación para Ingeniería I y Laboratorio Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos

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.

7.1.5 Creación de Botones de Orden Gráficos.- Hasta ahora, en las aplicaciones


desarrolladas, se ha empleado el control CommandButton como un medio para crear
botones de orden. Visual Basic proporciona el control Image como otra alternativa para crear
botones de orden basados en gráficos. Este control responde a los eventos Click, DblClick,
MouseDown, MouseMove y MouseUp lo que permite usarlo como un sustituto del control
CommandButton.

Botones de orden basados en gráficos Botón de orden basado en texto


Desarrollar una aplicación en la que se ejecutarán órdenes utilizando botones de orden
basados en gráficos. Estos botones se hundirán o emergerán cuando se los pulse, como
sucede con los botones que se pueden ver en otras aplicaciones desarrolladas para
Windows. Seguir estos pasos:
1. Seleccionar el comando Nuevo proyecto del menú Archivo, para crear una nueva
aplicación.
2. Agregar tres controles Image en el formulario. Ordenarlos tal como se observa en la
ilustración próxima:

3. Guardar el formulario y la aplicación con nombres SensibilidadCursor.frm y

Ing. Hermas Herrera Callejas Página : 4 de 21


Computación para Ingeniería I y Laboratorio Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos

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:

7. Hacer clic en Sí para crear una matriz de controles Image.


8. Hacer clic en el tercer control Image y asignarle el mismo nombre asignado a los dos
controles anteriores.
9. Agregar un control Label al formulario y modificar las propiedades Caption (Texto de
prueba) y Font (Arial, tamaño 18) de este control.

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.

Ing. Hermas Herrera Callejas Página : 5 de 21


Computación para Ingeniería I y Laboratorio Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos

Al control NS insertar el icono NegritaSob.


Al control KS insertar el icono CursivaSob.
Al control SS insertar el icono SubrayadoSob.
Al control NB insertar el icono NegritaBaj.
Al control KB insertar el icono CursivaBaj.
Al control SB insertar el icono SubrayadoBaj.
14. Agregar cuatro controles Image al formulario. Modificar el tamaño de estos controles y
ubicarlos en la parte inferior del formulario; además, nombrarlos tal como muestra la
siguiente ilustración:

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:

Asociar un procedimiento al formulario. Cuando el usuario inicie el programa, este


procedimiento se activará, centrará el formulario en la pantalla y asignará a la propiedad
Picture de los controles Botón(0), Botón(1), Botón(2) y Botón(3) las imágenes insertadas en
los controles N, K, S y F.

Ing. Hermas Herrera Callejas Página : 6 de 21


Computación para Ingeniería I y Laboratorio Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos

Private Sub Form_Load()


‘Sitúa el formulario en el centro de la pantalla
Move (Screen.Width - Wídth) \ 2, (Screen.Height - Height) \ 2
Botón(0).Picture = N.Picture
Botón(1).Picture = K.Picture
Botón(2).Picture = S.Picture
Botón(3).Picture = F.Picture
End Sub
Asociar un procedimiento al formulario accionado por el suceso MouseMove. Cuando el
usuario desplace el puntero del mouse sobre el formulario, los controles Botón(0), Botón(1),
Botón(2), Botón(3) deben mostrar las imágenes que contienen los controles N, K, S y F,
respectivamente.
Private Sub Form_MouseMove(Button As lnteger, Shift As lnteger, X As Single, Y As Single)
If Botón(0).Picture = NS.Picture Then Botón(0).Picture = N.Picture
If Botón(1).Picture = KS.Picture Then Botón(1).Picture = K.Picture
If Botón(2).Picture = SS.Picture Then Botón(2).Picture = S.Picture
If Botón(3).Picture = FS.Picture Then Botón(3).picture = F.Picture
End Sub
Asociar un procedimiento a la matriz de controles Botón accionado por el suceso
MouseMove. Hacer doble clic sobre uno de estos controles y en la ventana de código
desplegar la lista Procedimientos. Seleccionar el suceso MouseMove y la ventana de código
mostrará el procedimiento Botón_MouseMove. Digitar el siguiente código:
Private Sub Botón_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Select Case Index
Case 0
If Botón(0).Picture = N.Picture Then Botón(0).Picture = NS.Picture
If Botón(1).Picture = KS.Picture Then Botón(1).Picture = K.Picture
If Botón(2).Picture = SS.Picture Then Botón(2).Picture = S.Picture
Case 1
If Botón(0).Picture = NS.Picture Then Botón(0).Picture = N.Picture
If Botón(1).Picture = K.Picture Then Botón(1).Picture = KS.Picture
If Botón(2).Picture = SS.Picture Then Botón(2).Picture = S.Picture
Case 2
If Botón(0).Picture = NS.Picture Then Botón(0).Picture = N.Picture
If Botón(1).Picture = KS.Picture Then Botón(1).Picture = K.Picture
If Botón(2).Picture = S.Picture Then Botón(2).Picture = SS.Picture
Case 3
Botón(3).Picture = FS.Picture
End Select
End Sub
Asociar un procedimiento a la matriz de controles Botón accionado por el suceso
MouseDown. Cuando el usuario pulse sobre uno de estos controles, la imagen del control
debe quedar en NB, KB, SB o FB y la propiedad Caption del control Label (Texto de prueba)
debe ponerse en Negrita, Cursiva o Subrayado, respectivamente. Si el usuario vuelve a
hacer clic sobre uno de estos controles, la imagen del control debe quedar en N, K o S y
Texto de prueba debe retornar a sus propiedades normales.
Private Sub Botón_MouseDown(Index As Integer, Button As Integer, Shift As lnteger, X As Single, Y As Single)
Select Case Index
Case 0
If Botón(0).Picture = NS.Picture Then
Botón(0).Picture = NB.Picture
Label1.FontBold = True

Ing. Hermas Herrera Callejas Página : 7 de 21


Computación para Ingeniería I y Laboratorio Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos

ElseIf Botón(0).Picture = NB.Picture Then


Botón(0).Picture = N.Picture
Label1.FontBold = False
End If
Case 1
If Botón(1).Picture = KS.Picture Then
Botón(1).Picture = KB.Picture
Label1.FontItalic = True
ElseIf Botón(1).Picture = KB.Picture Then
Botón(1).Picture = K.Picture
Label1.FontItalic = False
End If
Case 2
If Botón(2).Picture = SS.Picture Then
Botón(2).Picture = SB.Picture
Label1.FontUnderline = True
Else If Botón(2).Picture = SB.Picture Then
Botón(2).Picture = S.Picture
Label1.FontUnderline = False
End If
Case 3
Botón(3).Picture = FB.Picture
End Select
End Sub
Asociar un procedimiento a la matriz de controles Botón accionado por el suceso
MouseUp. Cuando el usuario sitúe el puntero, presione y suelte el botón izquierdo del mouse
sobre el control Botón(3) (propiedad Index = 3) la ejecución del programa debe finalizar.
Private Sub Botón_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
‘Finaliza la ejecución del programa
If Index = 3 Then End
End Sub
Hacer clic en el comando Iniciar del menú Ejecutar para ejecutar el programa.
Desplazar el puntero del mouse sobre uno de los botones y éste emergerá tal como lo
muestra la siguiente ilustración para S:

Pulsar sobre el botón y este se hundirá al igual que sucede con los botones de otras
aplicaciones desarrolladas para Windows.

7.2 El Control PictureBox (Cuadro de Dibujo).- El control PictureBox es similar al control


Image en que los dos se pueden usar para presentar imágenes gráficas en una aplicación.
Sin embargo, el control PictureBox se utiliza también para actuar como contenedor de otros
controles y dispone de propiedades y métodos mediante los cuales es posible dibujar puntos,
líneas, rectángulos, círculos, establecer rellenos, tipos de línea, etc.

Ing. Hermas Herrera Callejas Página : 8 de 21


Computación para Ingeniería I y Laboratorio Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos

7.2.1 Propiedades del Control PictureBox


Propiedad Comentario
(Nombre) Nombre del control usado en el código.
Align Permite que el control PictureBox se sitúe automáticamente en la parte superior,
inferior, izquierda o derecha del formulario.
Valor Descripción
0-None El control aparecerá donde se lo coloque
1-Align Top El control aparecerá en la parte superior del formulario.
2-Align Bottom El control aparecerá en la parte inferior del formulario.
3-Align Left El control aparecerá en la parte izquierda del formulario.
4-Align Right El control aparecerá en la parte derecha del formulario.
AutoRedraw Establecer esta propiedad a True para que el resultado de los métodos gráficos
como Circle, Line y Point que se dibuja en el control, se vuelva a dibujar
automáticamente cuando el control PictureBox cambie de tamaño o se vuelva a
presentar después de estar oculto detrás de algún otro objeto.
AutoSize Establecer esta propiedad a True para hacer que el control se ajuste al tamaño de la
imagen.
DrawStyle Determina el estilo de la línea para el resultado de métodos gráficos. Presenta las
siguientes opciones:
Valor Descripción
0-Solid Sólido.
1-Dash De rayas.
2-Dot De puntos.
3-Dash-Dot Raya-punto
4-Dash-Dot-Dot Raya-punto-punto.
5-Transparent Transparente.
6-Inside Solid Sólido interno.
DrawWidth Devuelve o establece el ancho de la línea para el resultado de métodos gráficos.
FillColor Devuelve o establece el color usado para rellenar figuras, círculos y cuadros.
FillStyle Devuelve o establece el estilo de relleno de una figura. 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.
Font Facilita la manipulación de los atributos de texto.
ForeColor Devuelve o establece el color de primer plano utilizado para mostrar textos y gráficos
en un objeto.
Height Devuelve o establece el alto del control.
Picture Devuelve o establece el gráfico que se mostrará en el control.
ScaleHeight Devuelve o establece el número de unidades verticales del interior de un objeto.
ScaleLeft Devuelve o establece la coordenada horizontal para el borde izquierdo de un objeto.
ScaleMode Devuelve o establece un valor que indica las unidades de medida de las
coordenadas de un objeto al usar métodos gráficos o colocar controles.
ScaleTop Devuelve o establece la coordenada vertical del borde superior de un objeto.
ScaleWidth Devuelve o establece el número de unidades horizontales de medida del interior de
un objeto.
Width Devuelve o establece el ancho del control.

Ing. Hermas Herrera Callejas Página : 9 de 21


Computación para Ingeniería I y Laboratorio Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos

7.2.2 Sistema de Coordenadas.- El origen de coordenadas para un formulario o un cuadro


de dibujo es la esquina superior izquierda de los mismos, la coordenada X aumenta hacia la
derecha, y la coordenada Y aumenta hacia abajo. Cualquier punto del formulario se puede
identificar por medio de sus coordenadas X y Y. Un sistema de coordenadas se puede
ajustar a la escala que se desee.
La siguiente tabla muestra el sistema de coordenadas de Visual Basic:
Escala Descripción
0 Sistema de coordenadas definido por el usuario.
1 Twips (escala por defecto). 1,440 twips por pulgada.
2 Puntos. 72 puntos por pulgada
3 Píxeles. Un píxel es la unidad más pequeña de resolución de un monitor.
4 Caracteres. Un carácter es un área de 120 Twips de ancho y 240 twips de alto.
5 Pulgadas. 1 pulgada es igual a 25,4 milímetros.
6 Milímetros
7 Centímetros. 567 twips por centímetro.
Para ajustar el sistema de coordenadas a una de estas escalas, se utiliza la propiedad
ScaleMode.

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

Desarrollar un programa que dibuje en un control PictureBox la curva correspondiente a


la función SIN(X).
1 Seleccionar el comando Nuevo proyecto del menú Archivo para crear una nueva
aplicación.
2 En el formulario, colocar dos controles Label, dos controles TextBox, dos controles
UpDown, dos controles CommandButton y un control PictureBox. Para usar controles
UpDown se debe habilitar el componente “Microsoft Common Controls-2.5.0(SP2)” o bien
el “Microsoft Common Controls-2.6.0”. Asignar las siguientes propiedades:
Control Propiedad Valor
Label Caption Valor más bajo
Label Caption Valor más alto
TextBox Nombre Min
Text ““
TextBox Nombre Max
Text ““
UpDown Name UpDown1
BuddyControl Min
BuddyProperty Text
Increment 1
Max 10
Min 0
SyncBuddy True
UpDown Name UpDown2
BuddyControl Max
BuddyProperty Text
Increment 1
Max 160
Min 0
SyncBuddy True
PictureBox Nombre Gráfico
BackColor &H80000009&
CommandButton Nombre Dibujar
Caption Dibujar
CommandButton Nombre Salir
Caption Salir
Asociar un procedimiento al cuadro de texto Min accionado por el suceso KeyPress.
Este procedimiento sólo debe permitir el ingreso de los dígitos 0, 1, 2,...,9 y de los caracteres
”-“ y “.” en el cuadro de texto Min.
1 Hacer doble clic en el cuadro de texto Min. La ventana de código abre el procedimiento
Min_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 Min_KeyPress(KeyAscii As Integer)
If Not ((Chr(KeyAscii) >= “0” And Chr(KeyAscii) <= “9”) Or (Chr(KeyAscii) = “-“ Or Chr(KeyAscii) = “.”)) Then
Beep
KeyAscii = 0
End lf
End Sub
Asociar un procedimiento al cuadro de texto Max accionado por el suceso KeyPress.
Este procedimiento sólo debe permitir el ingreso de los dígitos 0, 1, 2, ..., 9 y de los
caracteres “-” y “.” en el cuadro de texto Max
Ing. Hermas Herrera Callejas Página : 11 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

If FunY > YMax Then YMax = FunY


If FunY < YMin Then YMin = FunY
Next I
Sirven para averiguar las dimensiones del sistema de coordenadas. Después de
finalizar el bucle For...Next, las variables YMax e YMin contienen los valores máximo y
mínimo de la función para el rango XMax y XMin.
La siguiente línea, prepara el sistema de coordenadas definido por el usuario utilizando
el método Scale:
Gráfico.Scale (XMin, YMin) - (XMax, YMax)
Para trazar el gráfico de la función punto por punto utilizamos el método PSet.
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
Observar que el método PSet llama a la función Sin(VarX) que calcula el valor de la
variable dependiente para cada valor de la variable VarX.
La siguiente ilustración muestra el gráfico de la función Y = Sin(X).

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.

Ing. Hermas Herrera Callejas Página : 13 de 21


Computación para Ingeniería I y Laboratorio Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos

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

Ing. Hermas Herrera Callejas Página : 14 de 21


Computación para Ingeniería I y Laboratorio Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos

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

Presionar la tecla F5 para ejecutar el programa.

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

Ing. Hermas Herrera Callejas Página : 16 de 21


Computación para Ingeniería I y Laboratorio Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos

CommandButton Name Limpiar


Caption Limpiar
CommandButton Name Salir
Caption Salir
Al cargar el formulario, este debe quedar centrado en la pantalla. Para ello debemos
introducir el siguiente código:
Private Sub Form_Load()
Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2
End Sub
Cuando se introduzcan valores en los cuadros de texto Círculos y Aspecto, el programa
debe permitir solo el ingreso de números. Para ello se debe introducir el siguiente código
bajo el suceso KeyPress de cada cuadro de texto:
Private Sub Circulos_KeyPress(KeyAscii As Integer)
If Chr(KeyAscii) < "0" Or Chr(KeyAscii) > "9" Then
Beep
KeyAscii = 0
End If
End Sub
Private Sub Aspecto_KeyPress(KeyAscii As Integer)
If Not ((Chr(KeyAscii) >= "0" And Chr(KeyAscii) <= "9") Or (Chr(KeyAscii) = ".")) Then
Beep
KeyAscii = 0
End If
End Sub
Asociar un procedimiento al botón de comando Trazar accionado por el suceso Click.
Cuando el usuario haga clic en este botón, el control PictureBox debe mostrar el número de
circunferencias indicado en el TextBox Circulos.
1. En el formulario, hacer doble clic en el botón de comando Trazar. La ventana de código
abre el procedimiento Trazar_Click.
2. Digitar el siguiente código:
Private Sub Trazar_Click()
aspec = Val(Aspecto)
If aspec = 0 Then aspec = 1
x = Grafico.Width / 2
y = Grafico.Height / 2
Ncirc = Val(Circulos)
radio = y
NC = y / Ncirc
For i = 1 To Ncirc
Grafico.Circle (x, y), radio, , , , aspec
radio = radio - NC
Next i
End Sub
Asociar un procedimiento al botón de comando Limpiar accionado por el suceso Click.
Cuando el usuario haga clic en este botón, se debe limpiar el PictureBox.
1. Hacer doble clic en el botón de comando Limpiar. La ventana de código abre el
procedimiento Limpiar_Click.
2. Digitar las siguientes sentencias.
Private Sub Limpiar_Click()
Grafico.Cls
End Sub
Asociar un procedimiento al botón de comando Salir accionado por el suceso Click.
Ing. Hermas Herrera Callejas Página : 17 de 21
Computación para Ingeniería I y Laboratorio Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos

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.

Ing. Hermas Herrera Callejas Página : 18 de 21


Computación para Ingeniería I y Laboratorio Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos

Shape Permite controlar la forma de la figura. Presenta las siguientes opciones:


Valor Descripción
0-Rectangle Rectángulo.
1-Square Cuadrado.
2-Oval Elipse
3-Circle Círculo.
4-Rounded Rectangle Rectángulo redondeado.
5-Rounded Square Cuadrado redondeado.
Visible Permite mostrar u ocultar la figura.
Desarrollar una aplicación que permita modificar las propiedades del control Shape.
Abrir un nuevo proyecto y en el formulario, colocar dos controles Label, dos controles
ComboBox, dos controles CommandButton, un control Frame, un control Shape, un control
CheckBox y un control CommonDialog.
Control Propiedad Valor
Form Caption Figuras geométricas
Label Caption Figura
Label Caption Estilo relleno
ComboBox Name Figura
Style 2-Dropdown List
List Rectángulo
Cuadrado
Ovalo
Círculo
Rectángulo redondeado
Cuadrado redondeado
ComboBox Name EstiloRelleno
Style 2-Dropdown List
List Sólido
Transparente
Líneas horizontales
Líneas verticales
Diagonales ascendentes
Diagonales descendentes
Cruces
Cruces diagonales
Frame Caption Muestra
Shape Nombre Forma
CheckBox Nombre CasillaOcultar
CommonDialog Nombre DiálogoColor
CommandButton Nombre BotónColor
Caption Color de relleno
CommandButton Nombre Salir
Caption Salir
La interfaz de usuario debe ser similar a la siguiente ilustración:

Ing. Hermas Herrera Callejas Página : 19 de 21


Computación para Ingeniería I y Laboratorio Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos

Asociar un procedimiento al control Figura accionado por el suceso Click. Cuando el


usuario despliegue este cuadro de lista y seleccione una opción, la figura que aparece en el
control Shape debe cambiar de forma.
Private Sub Figura_Clíck()
Select Case Figura.Text
Case “Rectángulo”
‘Cambia la forma a un rectángulo
Forma.Shape = 0
Case “Cuadrado”
‘Cambia la forma a un cuadrado
Forma.Shape = 1
Case “Ovalo”
‘Cambia la forma a un óvalo
Forma.Shape = 2
Case “Círculo”
‘Cambia la forma a un círculo
Forma.Shape = 3
Case “Rectángulo redondeado”
‘Cambia la forma a un rectángulo redondeado
Forma.Shape = 4
Case “Cuadrado redondeado”
‘Cambia la forma a un cuadrado redondeado
Forma.Shape = 5
End Select
End Sub
Asociar un procedimiento al control EstiloRelleno accionado por el suceso Click. Cuando
el usuario despliegue este cuadro de lista y seleccione una opción, el estilo de relleno de la
figura que muestra el control debe cambiar de aspecto.
Private Sub EstiloRelleno_Click()
Select Case EstiloRelleno.Text
Case “Sólido”
Forma.FillStyle = 0
Case “Transparente”
Forma.FillStyle = 1
Case “Líneas horizontales”
Forma.FillStyle = 2
Case “Líneas verticales”
Forma.FillStyle = 3
Case “Diagonales ascendentes”
Forma.FillStyle = 4
Case “Diagonales descendentes”
Forma.FillStyle = 5
Case “Cruces”
Forma.FillStyle = 6
Case “Cruces diagonales”
Forma.FillStyle = 7
End Select
EndSub
Asociar un procedimiento al control CasillaOcultar accionado por el suceso Click.
Cuando el usuario haga clic en este control, la figura que aparece en la muestra debe
aparecer o desaparecer.
Private Sub CasillaOcultar_Clic()

Ing. Hermas Herrera Callejas Página : 20 de 21


Computación para Ingeniería I y Laboratorio Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos

‘Muestra u oculta la figura


If CasillaOcultar.Value = 1 Then
Forma.Visible = False
Else
Forma.Visible = True
End If
End Sub
Asociar un procedimiento al botón de comando BotónColor accionado por el suceso
Click. Cuando el usuario haga clic en este botón, debe aparecer el cuadro de diálogo Color
en el que el usuario podrá seleccionar un color para el relleno de la figura.
Private Sub BotónColor_Click()
DiálogoColor.Action = 3
Forma.FillColor = DiálogoColor.Color
End Sub
Hacer doble clic en el botón de comando Salir y en la ventana de código, escribir el
comando End.
Private Sub Salir_Click()
‘Finaliza la ejecución del programa
End
End Sub
Presionar la tecla F5 para ejecutar el programa. Desplegar el cuadro de lista ‘Figura’ y
seleccionar la opción Elipse. Desplegar el cuadro de lista ‘Estilo relleno’ y seleccionar la
opción ‘Cruces diagonales’. Hacer clic en el botón ‘Color de relleno’ y aparecerá el cuadro de
diálogo Color. Seleccionar un color y hacer clic en Aceptar. Observar que el color de relleno
de la figura adquiere el color elegido.

Ing. Hermas Herrera Callejas Página : 21 de 21


(11).- Imágenes (Aparece y desaparece imagen) Imagel.Move 0,0
 Ajusta el tamaño del formulario al tamaño del control Image.
Form1.Height = Image1.Height
Form1.Width = Image1.Width
 Al hacer clic en el control Muestra la imagen Gatito.bmp
Set Imagel.Picture = LoadPicture(“C:\Gráficos\Gatito.bmp”)
 Al doble clic quita la imagen Gatito.bmp del control Image
Set Imagel.Picture = LoadPicture()

Al cargar el formulario
 Sitúa el control Image en tope superior izquierdo del formulario

(11A) Imágenes (Carga Imagen1,Imagen2,Imagen3 e Imagen4)


Matriz de control Imagel BorderStyle 1- Fixed Single
Stretch True
CommandButton Name Mostrar
Caption “Mostrar imágenes”
‘Al hacer clic en el comando
 Carga cuatro imágenes de la carpeta y ruta apropiadas.
Dim I As Byte
For I = 1 To 4
Imagel(I - 1).Picture = LoadPicture(”ruta\Imagen”& I &“.bmp”)
Next I

‘Al hacer clic en cada imagen, ésta desaparece

(12) Sensibilidad del Cursor


‘Al pasar el cursor por un control, este debe elevarse
‘Al salir del mismo debe retornar a su estado normal
‘Al hacer clic en un control debe verse el efecto en el texto
Matriz de controles Botón

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

(13) Puntos BuddyProperty Text


Increment 1
Max 10
Min 0
SyncBuddy True
UpDown Name UpDown2
BuddyControl Max
BuddyProperty Text
Increment 1
Max 160
Min 0
‘ La interface del usuario contiene 2 controles UpDown (nuevos) SyncBuddy True
‘ Para usar UpDown debemos habilitar el componente “Microsoft ‘ Al cargar el formulario centrarlo en la pantalla
Common Controls-2.5.0(SP2)” o bien el “Microsoft Common ‘ Al presionar el commando Trazar debe dibujar la función seno
Controls-2.6.0”. Las propiedades principales son las siguientes
Control Propiedad Valor Dim varx, funy, xmin, xmax, ymin, ymax As Double
TextBox Name Min Gráfico.Cls
Text “” Gráfico.ScaleMode = 3
TextBox Name Max xpixeles = Gráfico.ScaleWidth
Text “” xmin = Val(Min)
UpDown Name UpDown1 xmax = Val(Max)
BuddyControl Min

Ing. Hermas Herrera Callejas Página : 2 de 3


‘Se buscan valores máximos y mínimos en términos de pixeles ‘ Al presionar Salir debe terminar el programa
For i = 1 To xpixeles ‘ Al presionar una tecla en el cuadro de texto Max
varx = xmin + (xmax - xmin) * i / xpixeles
funy = Sin(varx) Si la tecla es Enter (Ascii 13) debe ubicarse el cursor en Min
If funy > ymax Then ymax = funy Si la tecla no es un número (0 a 9) o un signo menos (-) o el punto
If funy < ymin Then ymin = funy decimal (.) debe sonar la alarma (Beep) y el cursor permanecer en
Next i su lugar (KeyAscii = 0)
‘Se define nueva escala basada en las dimensiones introducidas ‘ Al presionar una tecla en el cuadro de texto Min
Gráfico.Scale (xmin, ymin)-(xmax, ymax)
‘Se procede a trazar la curva Si la tecla es Enter (Ascii 13) debe ubicarse el cursor en Max
For i = 1 To xpixeles Si la tecla no es un número (0 a 9) o un signo menos (-) o el punto
varx = xmin + (xmax - xmin) * i / xpixeles decimal (.) debe sonar la alarma (Beep) y el cursor debe
Gráfico.PSet (varx, Sin(varx)) permanecer en su lugar (KeyAscii = 0)
Next i

(14) Líneas y Círculos NX1 = Grafico.Width / (lineas + 1)


NY2 = Grafico.Height / (lineas + 1)
X1 = NX1
Y1 = 0
X2 = Grafico.Width
Y2 = Grafico.Height - NY2
For i = 1 To lineas
Grafico.Line (X1, Y1)-(X2, Y2)
X1 = X1 + NX1
Y2 = Y2 - NY2
Next i
‘ Al clic en Diagonal inf traza diagonales inferiores requeridas
Dim lineas As Integer
lineas = Val(Diags)
NX2 = Grafico.Width / (lineas + 1)
‘ Al cargar el formulario debe centrarlo en la pantalla NY1 = Grafico.Height / (lineas + 1)
‘ En los cuadros de texto solo debe permitirse ingreso de números Y1 = NY1
‘ (0 a 9), caso contrario debe sonar la alarma (Beep) y el cursor X1 = 0
‘ permanecer en su lugar (KeyAscii=0 X2 = Grafico.Width - NX2
‘ En Aspecto solo debe aceptar números (0 a 9) y el punto decimal, Y2 = Grafico.Height
‘ caso contrario sonar la alarma y el cursor permanecer en su lugar For i = 1 To lineas
‘ Al clic en Horizontales traza las líneas horizontales requeridas Grafico.Line (X1, Y1)-(X2, Y2)
Dim lineas As Integer Y1 = Y1 + NY1
lineas = Val(Horiz) X2 = X2 - NX2
X1 = 0 Next i
NY1 = Grafico.Height / (lineas + 1) ‘ Al clic en Circunferencias traza las circunferencias requeridas
Y1 = NY1 ‘ con centro en medio del PintureBox y según valor de aspecto
For i = 1 To lineas aspec = Val(Aspecto)
Grafico.Line (X1, Y1)-(Grafico.Width, Y1) If aspec = 0 Then aspec = 1
Y1 = Y1 + NY1 x = Grafico.Width / 2
Next i y = Grafico.Height / 2
‘ Al clic en Verticales traza las líneas verticales requeridas Ncirc = Val(Circulos)
Dim lineas As Integer NR1 = y / Ncirc
lineas = Val(Vert) radio = NR1
Y1 = 0 For i = 1 To Ncirc
NX1 = Grafico.Width / (lineas + 1) Grafico.Circle (x, y), radio, , , , aspec
X1 = NX1 radio = radio + NR1
For i = 1 To lineas Next i
Grafico.Line (X1, Y1)-(X1, Grafico.Height) ‘ Al clic en Diagonales principales traza las diagonales principales
X1 = X1 + NX1 ‘ que unan los 4 vértices
Next i ‘ Al clic en Limpiar debe limpiar el PintureBox
‘ Al clic en Diagonal sup traza diagonales superiores requeridas ‘ Al clic en Salir debe terminar el programa
Dim lineas As Integer
lineas = Val(Diagi)

Ing. Hermas Herrera Callejas Página : 3 de 3


Computación para Ingeniería I y Laboratorio Cap.8–Visual Basic–Cuadros de Diálogo Comunes

CAPITULO 8 – VISUAL BASIC – CUADROS DE DIALOGO COMUNES

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.1.1 Colocar el Control CommonDialog en el Formulario.- Si el control CommonDialog


no aparece en el cuadro de herramientas, seguir estos pasos para agregarlo:
1. Hacer clic en la opción Componentes del menú Proyecto. Visual Basic muestra el cuadro
de diálogo Componentes:
2. Desplazarse hasta la opción Microsoft Common Dialog Control 6.0 y hacer clic para
seleccionarlo.
3. Hacer clic en Aceptar y el control CommonDialog aparecerá al final del cuadro de
herramientas.
4. En el cuadro de herramientas, hacer doble clic sobre el control CommonDialog para
colocarlo en el formulario.
Al colocar el control CommonDialog en el formulario, podrá fijar su posición pero no
podrá modificar su tamaño, ya que se trata de un control que sólo es visible durante el diseño
pero no durante la ejecución.

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

Ing. Hermas Herrera Callejas Página : 1 de 19


Computación para Ingeniería I y Laboratorio Cap.8–Visual Basic–Cuadros de Diálogo Comunes

cual, el usuario puede especificar una unidad, un directorio y un nombre de archivo. En la


parte inferior dispone de una lista de tipos de archivos.

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

Ing. Hermas Herrera Callejas Página : 2 de 19


Computación para Ingeniería I y Laboratorio Cap.8–Visual Basic–Cuadros de Diálogo Comunes

utilizar para abrir el archivo y leer o escribir en él.


FileTitle Esta propiedad devuelve sólo el nombre del archivo que se va a abrir o guardar, sin
incluir la ruta de acceso.
MaxFileSize Por defecto, la máxima longitud que puede tener un nombre de archivo incluida la
ruta de acceso es de 256 bytes. En caso de que se necesite una longitud mayor,
especificar la nueva longitud en la propiedad MaxFileSize.
InitDir Esta propiedad permite establecer un directorio de inicio desde el cual se obtendrán
los archivos cada vez que se activen los cuadros de diálogo Abrir o Guardar. Si no se
establece un directorio inicial, el directorio por defecto será aquel donde se abrió o
guardó el último archivo. Por ejemplo, para que el directorio inicial sea “C:\Mis
documentos\” se deberá especificar:
Diálogo.InitDir = C:\Mis documentos\”
La siguiente sentencia establece como directorio inicial, la ruta de acceso de la
aplicación.
Diálogo.InitDir = App.Path
DialogTitle Esta propiedad permite especificar un título que se muestra en la barra de titulo del
cuadro de diálogo. Si no se especifica un titulo se utilizará el titulo por defecto.

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.

Ing. Hermas Herrera Callejas Página : 3 de 19


Computación para Ingeniería I y Laboratorio Cap.8–Visual Basic–Cuadros de Diálogo Comunes

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.

Ing. Hermas Herrera Callejas Página : 4 de 19


Computación para Ingeniería I y Laboratorio Cap.8–Visual Basic–Cuadros de Diálogo Comunes

cdICFNoSizeSel No seleccionar el tamaño de fuentes.


cdICFNoStyleSel No seleccionar ningún estilo.
cdICFHelpButton Muestra el botón Ayuda en el cuadro de diálogo.

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,

Ing. Hermas Herrera Callejas Página : 5 de 19


Computación para Ingeniería I y Laboratorio Cap.8–Visual Basic–Cuadros de Diálogo Comunes

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.

Seguir estos pasos:


Ing. Hermas Herrera Callejas Página : 6 de 19
Computación para Ingeniería I y Laboratorio Cap.8–Visual Basic–Cuadros de Diálogo Comunes

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.

Al hacer clic en la opción Propiedades, Visual Basic muestra el cuadro de diálogo


Páginas de propiedades.

Establecer las siguientes propiedades:


Propiedad Valor
ImageList ImageList1
Appearance 1-cc3D
Style 1-tbrFlat

Ing. Hermas Herrera Callejas Página : 8 de 19


Computación para Ingeniería I y Laboratorio Cap.8–Visual Basic–Cuadros de Diálogo Comunes

Seleccionar la pestaña Botones y hacer clic en el botón Insertar botón. En Key,


ingresar un nombre que después se utilizará en el programa. En ToolTipText, ingresar un
texto descriptivo que servirá de ayuda al situar el puntero sobre el botón, en la barra de
herramientas; en Image ingresar un número que corresponda al orden o número de la
imagen a mostrar.
Nombre Index Key ToolTipText Image Enables
Imagenl 1 BotónNuevo Nuevo 1
Imagen2 2 BotónAbrir Abrir 2
Imagen3 3 BotónGuardar Guardar 3
Imagen4 4 BotónImprimir Imprimir 4
Imagen5 5 BotónCopiar Copiar 5 Deshabilitado
Imagen6 6 BotónCortar Cortar 6 Deshabilitado
Imagen7 7 BotónPegar Pegar 7
Dado que la barra de herramientas tendrá siete botones, hacer clic en el botón Insertar
botón siete veces y establecer las propiedades mostradas en el cuadro anterior.

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:

Ahora, proceder a insertar un control StatusBar en el formulario.


1. En el cuadro de herramientas, hacer doble clic en el ícono del control StatusBar. Una
barra de estado aparece en la parte inferior del formulario.

Ing. Hermas Herrera Callejas Página : 9 de 19


Computación para Ingeniería I y Laboratorio Cap.8–Visual Basic–Cuadros de Diálogo Comunes

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:

Seleccionar la pestaña Paneles y hacer clic en el botón Insertar panel. En Minimun


Width ingresar el ancho del panel. Hacer clic en el botón Examinar y Visual Basic visualizará
el cuadro de diálogo ‘Seleccionar imagen’ desde el cual podrá seleccionar una imagen para
el panel.
Ingresar los siguientes valores para cada uno de los paneles:
Panel Index MinimumWidth Picture
Panel 1 1 1800 C:\Graficos\Nota.bmp
Panel 2 2 1440 C:\Graficos\Mano_tecla.bmp
Panel 3 3 144000 C:\Graficos\Relojl .bmp
3. Finalmente, hacer clic en el botón Aceptar.
Para finalizar el diseño de la interfaz, insertar un control CommonDialog en el formulario.
Para ello, hacer doble clic sobre el ícono del Control CommonDialog en el cuadro de
herramientas. Si este control no aparece en el cuadro de herramientas, seleccionar la opción
Componentes del menú Proyecto. En el cuadro de diálogo Componentes, habilitar la opción
Microsoft Common Dialog Control 6.0 y hacer clic en Aceptar.
Luego de diseñar la interfaz de usuario, asociar un procedimiento al formulario. Cuando
el usuario inicie el programa, este procedimiento se ejecutará de manera automática.
1. Hacer doble clic en el formulario para visualizar la ventana de código.
2. Digitar el siguiente código:
Option Explicit
'La variable Modificado permitirá saber si hubo alguna modificación en el archivo
Public Modificado, rpta As Boolean
'La variable Canal servirá para obtener un número de canal libre

Ing. Hermas Herrera Callejas Página : 10 de 19


Computación para Ingeniería I y Laboratorio Cap.8–Visual Basic–Cuadros de Diálogo Comunes

Public Canal As Integer


Private Sub Form_Load()
Dim i As Integer
'Centra el formulario en la pantalla
Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2
'Establece el título de la ventana
Caption = "Mi Editor"
'Establece que el texto que se escriba sea de tipo arial
Text1.FontName = "Arial"
'Establece que por defecto 10 sea el tamaño del texto
Text1.FontSize = 10
'Desactiva la opción Copiar del menú Edición
EdiciónCopiar.Enabled = False
'Desactiva la opción Cortar del menú Edición
EdiciónCortar.Enabled = False
'Activa/desactiva la opción Pegar del menú Edición según el portapapeles si contiene o no texto
EdiciónPegar.Enabled = (Len(Clipboard.GetText()) > 0)
'Desactiva la opción Fuente del menú Formato
FormatoFuente.Enabled = False
'Habilita/deshabilita botón pegar de barra herramientas según el portapapeles si contiene o no texto
Toolbar1.Buttons(7).Enabled = (Len(Clipboard.GetText()) > 0)
'Asigna el estado de la tecla Caps Lock (Bloqueo Mayús) al panel 2 de la barra de estado
StatusBar1.Panels(2).Style = sbrCaps
‘Asigna la hora del sistema al panel 3 de la barra de estado
StatusBar1.Panels(3).Style = sbrTime
End Sub
Asociar un procedimiento al formulario accionado por el suceso Resize. Cuando el
usuario redimensione el formulario, el procedimiento redimensionará el control Text1
1. Hacer doble clic en el formulario para visualizar la ventana de código.
2. Desplegar el cuadro de lista procedimientos y seleccionar el suceso Resize. La ventana
de código abre el procedimiento Form_Resize.
3. Digitar el siguiente código:
Private Sub Form_Resize()
Text1.Top = 440
Text1.Left = 0
Text1.Width = ScaleWidth
Text1.Height = ScaleHeight - 740
End Sub
Digitar un procedimiento para cada una de las opciones de los menús Archivo, Edición y
Formato. En el formulario, abrir el menú Archivo y hacer clic en la opción Nuevo. En la
ventana de código aparece el procedimiento ArchivoNuevo_Click. En este procedimiento
escribir el comando Call Nuevo:
Private Sub ArchivoNuevo_Click()
Call Nuevo ‘ Llama al procedimiento Nuevo
End Sub
Proceder de modo similar para las opciones Abrir, Guardar, Imprimir, Salir, Copiar,
Cortar, Pegar y Fuente.
Private Sub ArchivoAbrir_Click()
Call Abrir ‘Llama al procedimiento Abrir.
End Sub
Private Sub ArchivoGuardar_Click()
Call Guardar ‘Llama al procedimiento Guardar.

Ing. Hermas Herrera Callejas Página : 11 de 19


Computación para Ingeniería I y Laboratorio Cap.8–Visual Basic–Cuadros de Diálogo Comunes

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

Form1.Caption = "(Sin título)"


Text1.Text = " " 'Borra el contenido actual del cuadro de texto Text1
Text1.FontName = "Arial" 'Establece la fuente de tipo arial
Text1.FontSize = 10 'Establece el tamaño de la fuente
Text1.FontBold = False 'Desactiva la propiedad FontBold (Negrita)
Text1.FontItalic = False 'Desactiva la propiedad FontItalic (Cursiva)
Text1.FontUnderline = False 'Desactiva la propiedad FontUnderline(Subrayado)
Text1.FontStrikethru = False 'Desactiva la propiedad FontStrikethru(Tachado)
Text1.ForeColor = RGB(0, 0, 0) 'Establece un color (negro) para el texto
Modificado = False 'Desactiva el indicador de Modificado
End Sub
Public Sub Abrir()
'Procedimiento para abrir un archivo de texto
Dim Cadena1, Cadena2 As String
Dim Número1, Número2 As Long
Dim Estado1, Estado2, Estado3, Estado4 As Boolean
'Guarda las modificaciones realizadas en el archivo
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
On Error GoTo ManipularErrorAbrir 'Si ocurre un error, ejecutar ManipularErrorAbrir
'Muestra un mensaje en el primer panel de la barra de estado
StatusBar1.Panels(1).Text = "Abriendo archivo"
'Fijar las propiedades necesarias
With CuadroDeDiálogo
.CancelError = Trae 'Generará un error cuando pulse cancelar en diálogo abrir
.Filter = "Archivo de texto|*.txt|Todos los archivos|*.*" 'Filtros
.FilterIndex = 2 'Filtro por defecto
.DefaultExt = "Txt" 'Extensión por defecto que se añadirá al nombre del archivo
.Flags = cdlOFNFileMustExist 'El usuario solo podrá introducir nombres de archivos existentes
.ShowOpen 'Visualiza el cuadro de diálogo Abrir
Canal = FreeFile 'Obtiene un número de canal libre
Open .FileName For Input As Canal
Form1.Caption = .FileName 'Muestra el nombre del archivo en la barra de título del formulario
End With
Text1.Text = " " 'Borra el texto actual del control Te xt1
Input #Canal, Cadena1, Cadena2, Número1, Estado1, Estado2, Estado3, Estado4, Número2
With Text1
.Text = Cadena1
.FontName = Cadena2
.FontSize = Número1
.FontBold = Estado1
.FontItalic = Estado2
.FontUnderline = Estado3
.FontStrikethru = Estado4
.ForeColor = Número2
End With
Close #Canal 'Cierra el archivo

Ing. Hermas Herrera Callejas Página : 13 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

Ing. Hermas Herrera Callejas Página : 14 de 19


Computación para Ingeniería I y Laboratorio Cap.8–Visual Basic–Cuadros de Diálogo Comunes

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

Ing. Hermas Herrera Callejas Página : 15 de 19


Computación para Ingeniería I y Laboratorio Cap.8–Visual Basic–Cuadros de Diálogo Comunes

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)

Ing. Hermas Herrera Callejas Página : 16 de 19


Computación para Ingeniería I y Laboratorio Cap.8–Visual Basic–Cuadros de Diálogo Comunes

'Habilita/Inhabilita la opción Cortar del menú Edición si Seleccionó/No seleccionó


'texto en el cuadro de texto Text1.
EdiciónCortar.Enabled = (Text1.SelLength > 0)
'Habilita/Inhabilita la opción Fuente del menú Formato si Seleccionó/No seleccionó
'texto en el cuadro de texto Text1.
FormatoFuente.Enabled = (Text1.SelLength > 0)
End Sub

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

Ing. Hermas Herrera Callejas Página : 17 de 19


Computación para Ingeniería I y Laboratorio Cap.8–Visual Basic–Cuadros de Diálogo Comunes

Picture1.Picture = LoadPicture() 'Limpia el control Picture Box


CommonDialog1.CancelError = True
CommonDialog1.DialogTitle = "Abrir imágenes"
CommonDialog1.Filter = "Imagenes (.gif)|*.gif|Imágenes (.jpg)|*.jpg|Imágenes (.bmp)|*.bmp|Todos los
archivos (*.*)|*.*"
CommonDialog1.FilterIndex = 3
CommonDialog1.ShowOpen 'Muestra el cuadro de diálogo Abrir
'Inserta la imágen elegida en el control picture box
Picture1.Picture = LoadPicture(CommonDialog1.FileName)
Picture1.Visible = True 'Hace visible el control PictureBox
Label1.ForeColor = &HFF& 'Asigna el color rojo al control Label1
Exit Sub
ManipularErrorAbrir:
If Err.Number = 32755 Then
Exit Sub
Else
MsgBox "Error desconocido al abrir el archivo"
End If
End Sub
Asociar un procedimiento al control LabeI2 accionado por el suceso MouseUp. Cuando
el usuario suelte el botón del mouse en el control Label2, la ejecución del programa debe
finalizar.
Private Sub Label2_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Unload Me 'Cierra el formulario
End 'Finaliza la ejecución del programa
End Sub
Asociar un procedimiento al control Labell accionado por el suceso MouseMove.
Cuando el usuario mueva el puntero del mouse sobre el control Labell, el texto que muestra
este control debe cambiar de color.
Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Al mover el puntero del mouse sobre el control label1 el color amarillo se asigna al control label1
Label1.ForeColor = &HFFFF& 'Color amarillo
End Sub
Asociar un procedimiento al control Label2 accionado por el suceso MouseMove.
Cuando el usuario mueva el puntero del mouse sobre el control Label2, el texto que muestra
este control debe cambiar de color.
Private Sub Label2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Al mover el puntero del mouse sobre el control label2 el color amarillo se asigna al control label2
Label2.ForeColor = &HFFFF& 'Color amarillo
End Sub
Asociar un procedimiento al formulario accionado por el suceso MouseMove. Cuando el
usuario desplace el puntero del mouse sobre el formulario, el color del texto de los controles
Label debe cambiar a rojo.
1. Hacer doble clic en el formulario.
2. En la ventana de código, desplegar el cuadro de lista Procedimientos y seleccionar el
suceso MouseMove. La ventana de código abre el procedimiento Form_MouseMove.
3. Digitar el siguiente código:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Al mover el puntero del mouse sobre el formulario, asigna el color rojo a los controles Label1 y Label2
Label1.ForeColor = &HFF&
Label2.ForeColor = &HFF&
End Sub

Ing. Hermas Herrera Callejas Página : 18 de 19


Computación para Ingeniería I y Laboratorio Cap.8–Visual Basic–Cuadros de Diálogo Comunes

Asociar un procedimiento al control Picture1 accionado por el suceso Resize. Cuando el


usuario modifique el tamaño del control Picture1, el tamaño del formulario debe cambiar en
función del tamaño del control PictureBox.
1. Hacer doble clic en el control PictureBox.
2. En la ventana de código, desplegar el cuadro de lista Procedimientos y seleccionar el
suceso Resize. La ventana de código abre el procedimiento Picture1_Resize.
3. Digitar el siguiente código:
Private Sub Picture1_Resize()
'Redimensiona el tamaño del formulario en función del tamaño del control PictureBox
Form1.Top = 0
Form1.Left = 0
Form1.Width = Picture1.Width + 360
Form1.Height = Picture1.Height + 960
End Sub
Guardar el proyecto con el nombre Imagen.Vbp y el formulario con el nombre
Imagen.Frm.
Presionar la tecla F5 para ejecutar el programa.
Desplazar el puntero del mouse sobre la opción Abrir imagen (observar que “Abrir
imagen” adopta el color amarillo) y hacer clic. En el cuadro de diálogo Abrir, seleccionar una
imagen. Por ejemplo, seleccionar la imagen “Imagen1” que se adjunta con las prácticas de
laboratorio. Cada vez que seleccione una nueva imagen el formulario cambiará de tamaño.

Ing. Hermas Herrera Callejas Página : 19 de 19


(16) Mini Editor

Caption Name Shortcut


&Archivo Archivo Propiedad Valor
....&Nuevo ArchivoNuevo Ctrl+N ImageList ImageListl
....A&brir ArchivoAbrir Ctrl+A Appearance 1-cc3D
....- LíneaSeparadoral Style 1-tbrFlat
....&Guardar ArchivoGuardar Ctrl+G Index Key ToolTipText Image
....- LíneaSeparadora2 Imagenl 1 BotónNuevo Nuevo 1
....&Imprimir ArchivoImprimir Ctrl+I Imagen2 2 BotónAbrir Abrir 2
....- LíneaSeparadora3 Imagen3 3 BotónGuardar Guardar 3
....&Salir ArchivoSalir Ctrl+S Imagen4 4 BotónImprimir Imprimir 4
&Edición Edición Imagen5 5 BotónCopiar Copiar 5
....&Copiar EdiciónCopiar Ctrl+C Imagen6 6 BotónCortar Cortar 6
....C&ortar EdiciónCortar Ctrl+X Imagen7 7 BotónPegar Pegar 7
....&Pegar EdiciónPegar Ctrl+V
&Formato Formato
....F&uente FormatoFuente Ctrl+F
Control Propiedad Valor
Form1 Name Forml
Caption Mi Editor
Icon C:\Gráficos\Note14.icon
TextBox Name Textl
Multiline True
ScrollBars 3-Both
Text (Texto)

Insertar un control StatusBar en el formulario.

Valores para cada uno de los paneles:


Index MinimumWidth Picture
Panel 1 1 1800 C:\Graficos\Nota.bmp

Ing. Hermas Herrera Callejas Página : 1 de 6


Panel 2 2 1440 C:\Graficos\Mano_tecla.bmp Call Guardar ‘Call llama al procedimiento Guardar.
Panel 3 3 144000 C:\Graficos\Relojl .bmp End Sub
Private Sub ArchivoImprimir_Click()
Option Explicit Call Imprimir ‘Call llama al procedimiento Imprimir.
'La variable Modificado permitirá saber si hubo End Sub
'alguna modificación en el archivo Private Sub ArchivoSalir_Click()
Public Modificado, rpta As Boolean End ‘Termina la ejecución del programa.
'La variable Canal servirá para obtener un número de canal End Sub
libre
Public Canal As Integer Private Sub EdiciónCopiar_Click()
Call Copiar ‘Call llama al procedimiento Copiar
Private Sub Form_Load() End Sub
Dim i As Integer Private Sub EdiciónCortar_Click()
'Centra el formulario en la pantalla Call Cortar ‘Call llama al procedimiento Cortar
Move (Screen.Width - Width) / 2, (Screen.Height - Height) / End Sub
2 Private Sub EdiciónPegar_Click()
'Establece el título de la ventana Call Pegar ‘Call llama al procedimiento Pegar
Caption = "Mi Editor" End Sub
'Establece que el texto que se escriba sea de tipo arial Private Sub FormatoFuente_Click()
Text1.FontName = "Arial" Call Fuente ‘Call llama al procedimiento Fuente
'Establece que por defecto 10 sea el tamaño del texto End Sub
Text1.FontSize = 10
'Desactiva la opción Copiar del menú Edición Private Sub Toolbar1_ButtonClick(ByVal Button As
EdiciónCopiar.Enabled = False MSComctlLib.Button)
'Desactiva la opción Cortar del menú Edición Select Case Button.Key
EdiciónCortar.Enabled = False Case "BotónNuevo"
'Activa o desactiva la opción Pegar del menú Edición Call Nuevo
'dependiendo de si el portapapeles contiene o no texto Case "BotónAbrir"
EdiciónPegar.Enabled = (Len(Clipboard.GetText()) > 0) Call Abrir
'Desactiva la opción Fuente del menú Formato Case "BotónGuardar"
FormatoFuente.Enabled = False Call Guardar
'Habilita o deshabilita el botón pegar de la barra de Case "BotónImprimir"
herramientas Call Imprimir
'dependiendo de si el portapapeles contiene o no texto Case "BotónCopiar"
Toolbar1.Buttons(7).Enabled = (Len(Clipboard.GetText()) > Call Copiar
0) Case "BotónCortar"
'Asigna el estado de la tecla Caps Lock (Bloqueo Mayús) Call Cortar
‘al panel 2 de la barra de estado Case "BotónPegar"
StatusBar1.Panels(2).Style = sbrCaps Call Pegar
‘Asigna la hora del sistema al panel 3 de la barra de estado End Select
StatusBar1.Panels(3).Style = sbrTime End Sub
End Sub
Public Sub Nuevo()
Private Sub Form_Resize() 'Procedimiento para editar un nuevo archivo
Text1.Top = 440 'Guarda las modificaciones realizadas en el archivo
Text1.Left = 0 If Modificado Then
Text1.Width = ScaleWidth rpta = MsgBox("Desea guardar los cambios realizados en
Text1.Height = ScaleHeight - 740 el documento?", vbYesNo, "Mi Editor")
End Sub If rpta = vbNo Then
Exit Sub
Private Sub ArchivoNuevo_Click() Else
Call Nuevo ‘ Call llama al procedimiento Nuevo Call Guardar
End Sub End If
End If
Private Sub ArchivoAbrir_Click() Form1.Caption = "(Sin título)"
Call Abrir ‘CalI llama al procedimiento Abrir. 'Borra el contenido actual del cuadro de texto Text1
End Sub Text1.Text = " "
Private Sub ArchivoGuardar_Click() Text1.FontName = "Arial" 'Establece la fuente de tipo arial
Ing. Hermas Herrera Callejas Página : 2 de 6
Text1.FontSize = 10 'Establece el tamaño de la fuente Text1.Text = " "
Text1.FontBold = False 'Desactiva la propiedad FontBold Input #Canal, Cadena1, Cadena2, Número1, Estado1,
(Negrita) Estado2, Estado3, Estado4, Número2
Text1.FontItalic = False 'Desactiva la propiedad FontItalic With Text1
(Cursiva) .Text = Cadena1
'Desactiva la propiedad FontUnderline(Subrayado) .FontName = Cadena2
Text1.FontUnderline = False .FontSize = Número1
'Desactiva la propiedad FontStrikethru(Tachado) .FontBold = Estado1
Text1.FontStrikethru = False .FontItalic = Estado2
'Establece un color (negro) para el texto .FontUnderline = Estado3
Text1.ForeColor = RGB(0, 0, 0) .FontStrikethru = Estado4
'Desactiva el indicador de Modificado .ForeColor = Número2
Modificado = False End With
End Sub Close #Canal 'Cierra el archivo
'Borra el mensaje del primer panel de la barra de estado
Public Sub Abrir() StatusBar1.Panels(1).Text = " "
'Procedimiento para abrir un archivo de texto Modificado = False 'Desactiva el indicador de modificado
Dim Cadena1, Cadena2 As String Exit Sub
Dim Número1, Número2 As Long ManipularErrorAbrir:
Dim Estado1, Estado2, Estado3, Estado4 As Boolean If Err.Number = 32755 Then
'Guarda las modificaciones realizadas en el archivo StatusBar1.Panels(1).Text = " "
If Modificado Then Exit Sub
rpta = MsgBox("Desea guardar los cambios realizados en Else
el documento?", vbYesNo, "Mi Editor") MsgBox "Error desconocido al abrir el archivo"
If rpta = vbNo Then End If
Exit Sub End Sub
Else
Call Guardar Public Sub Guardar()
End If 'Procedimiento para guardar un archivo de texto
End If On Error GoTo ManipularErrorGuardar
'Si ocurre un error, ejecutar ManipularErrorAbrir StatusBar1.Panels(1).Text = "Guardando archivo"
On Error GoTo ManipularErrorAbrir With CuadroDeDiálogo
'Muestra un mensaje en el primer panel de la barra de estado .CancelError = True
StatusBar1.Panels(1).Text = "Abriendo archivo" .DefaultExt = "txt"
'Fijar las propiedades necesarias .Filter = "Texto|*.txt|Todos los archivos|*.*"
With CuadroDeDiálogo 'Muestra un mensaje preguntando si desea sobreescribir el
'Generará un error cuando pulse cancelar en diálogo abrir archivo
.CancelError = True .Flags = cdlOFNOverwritePrompt
'Filtros 'Muestra el cuadro de diálogo Guardar como
.Filter = "Archivo de texto|*.txt|Todos los archivos|*.*" .ShowSave
'Filtro por defecto Canal = FreeFile
.FilterIndex = 2 Open .FileName For Output As #Canal
'Extensión por defecto que se añadirá al nombre del Form1.Caption = .FileName
archivo End With
.DefaultExt = "Txt" 'Escribir en el archivo los datos necesarios
'El usuario solo podrá introducir nombres de archivos With Text1
existentes Write #Canal, .Text, .FontName, .FontSize, .FontBold,
.Flags = cdlOFNFileMustExist .FontItalic, .FontUnderline, .FontStrikethru, .ForeColor
'Visualiza el cuadro de diálogo Abrir End With
.ShowOpen Close #Canal
'Obtiene un número de canal libre StatusBar1.Panels(1).Text = " "
Canal = FreeFile Modificado = False
Open .FileName For Input As Canal Exit Sub
'Muestra el nombre del archivo en la barra de título del ManipularErrorGuardar:
formulario If Err.Number = 32755 Then
Form1.Caption = .FileName StatusBar1.Panels(1).Text = " "
End With Exit Sub
'Borra el texto actual del control Text1 Else
Ing. Hermas Herrera Callejas Página : 3 de 6
MsgBox "Error desconocido al guardar el archivo" FormatoFuente.Enabled = False
End If 'Inhabilita el boton Copiar de la barra de herramientas
End Sub Toolbar1.Buttons(5).Enabled = False
'Inhabilita el boton Cortar de la barra de herramientas
Public Sub Imprimir() Toolbar1.Buttons(6).Enabled = False
'Procedimiento para imprimir el aspecto actual del 'Habilita el boton Pegar de la barra de herramientas
formulario Toolbar1.Buttons(7).Enabled = True
Dim copias As Byte End Sub
On Error GoTo ManipularErrorImprimir
StatusBar1.Panels(1).Text = "Imprimiendo archivo" Public Sub Pegar()
With CuadroDeDiálogo 'Transfiere texto desde el portapapeles hacia el cuadro de
.CancelError = True texto Text1
.Flags = cdlPDNoSelection Or cdlPDNoPageNums Or Text1.SelText = Clipboard.GetText()
cdlPDHidePrintToFile End Sub
.PrinterDefault = True
'Muestra el cuadro de diálogo Imprimir Public Sub Fuente()
.ShowPrinter 'Procedimiento que modifica el estilo del texto
copias = .Copies On Error GoTo ManipularErrorFuente
End With StatusBar1.Panels(1).Text = "Aplicando estilo"
'Fijar el número de copias With CuadroDeDiálogo
Printer.Copies = copias .CancelError = True
'Tomar el estilo de texto 'Fijar el estilo actual en el cuadro de diálogo
Printer.Font = Text1.Font .FontName = Text1.FontName
'Imprimir el texto actual .FontSize = Text1.FontSize
Printer.Print Text1.Text .FontBold = Text1.FontBold
Printer.EndDoc 'Fin de impresión .FontItalic = Text1.FontItalic
StatusBar1.Panels(1).Text = " " .FontUnderline = Text1.FontUnderline
Exit Sub .FontStrikethru = Text1.FontStrikethru
ManipularErrorImprimir: .Color = Text1.ForeColor
If Err.Number = 32755 Then .Flags = cdlCFBoth Or cdlCFEffects
StatusBar1.Panels(1).Text = " " 'Muestra el cuadro de diálogo Fuente
Exit Sub .ShowFont
Else 'Aplica al cuadro de texto Text1 el estilo elegido
MsgBox "Error desconocido" Text1.FontName = .FontName
End If Text1.FontSize = .FontSize
End Sub Text1.FontBold = .FontBold
Text1.FontItalic = .FontItalic
Public Sub Copiar() Text1.FontUnderline = .FontUnderline
'Una copia del texto seleccionado en el cuadro de texto Text1.FontStrikethru = .FontStrikethru
'Text1 pasa al portapapeles (Clipboard) Text1.ForeColor = .Color
Clipboard.SetText Text1.SelText End With
'Activa la opción Pegar del menú Edición StatusBar1.Panels(1).Text = " "
EdiciónPegar.Enabled = True Exit Sub
'Activa el boton Pegar de la barra de erramientas ManipularErrorFuente:
Toolbar1.Buttons(7).Enabled = True If Err.Number = 32755 Then
End Sub StatusBar1.Panels(1).Text = " "
Exit Sub
Public Sub Cortar() Else
'Una copia del texto seleccionado en el cuadro de texto MsgBox "Error desconocido"
'Text1 pasa al portapapeles (Clipboard) End If
Clipboard.SetText Text1.SelText End Sub
'Borra el texto seleccionado
Text1.SelText = "" Private Sub Form_Unload(Cancel As Integer)
'Inhabilita la opción Copiar del menú Edición If Modificado Then
EdiciónCopiar.Enabled = False rpta = MsgBox("Desea guardar los cambios realizados en
'Habilita la opción Pegar del menú Edición el documento?", vbYesNo, "Mi Editor")
EdiciónPegar.Enabled = True If rpta = vbNo Then
'Inhabilita la opción Fuente del menú Formato Exit Sub
Ing. Hermas Herrera Callejas Página : 4 de 6
Else seleccionó
Call Guardar 'texto en el cuadro de texto Text1.
End If Toolbar1.Buttons(6).Enabled = (Text1.SelLength > 0)
End If 'Habilita/Inhabilita la opción Copiar del menú Edición si
End Sub Seleccionó/No seleccionó
'texto en el cuadro de texto Text1.
Private Sub Text1_Change() EdiciónCopiar.Enabled = (Text1.SelLength > 0)
Modificado = True 'Habilita/Inhabilita la opción Cortar del menú Edición si
End Sub Seleccionó/No seleccionó
'texto en el cuadro de texto Text1.
Private Sub Text1_MouseUp(Button As Integer, Shift As EdiciónCortar.Enabled = (Text1.SelLength > 0)
Integer, X As Single, Y As Single) 'Habilita/Inhabilita la opción Fuente del menú Formato si
'Habilita/Inhabilita el botón Copiar si Seleccionó/No Seleccionó/No seleccionó
seleccionó 'texto en el cuadro de texto Text1.
'texto en el cuadro de texto Text1. FormatoFuente.Enabled = (Text1.SelLength > 0)
Toolbar1.Buttons(5).Enabled = (Text1.SelLength > 0) End Sub
'Habilita/Inhabilita el botón Cortar si Seleccionó/No

(17) Visualiza Imágenes Picture1.Picture = LoadPicture()


CommonDialog1.CancelError = True
CommonDialog1.DialogTitle = "Abrir imágenes"
CommonDialog1.Filter = "Imagenes (.gif)|*.gif|Imágenes
(.jpg)|*.jpg|Imágenes (.bmp)|*.bmp|Todos los archivos
(*.*)|*.*"
CommonDialog1.FilterIndex = 3
'Muestra el cuadro de diálogo Abrir
CommonDialog1.ShowOpen
'Inserta la imágen seleccionada en el control picture box
Picture1.Picture = LoadPicture(CommonDialog1.FileName)
'Hace visible el control PictureBox
Picture1.Visible = True
Control Propiedad Valor 'Asigna el color rojo al control Label1
Form1 Name Form1 Label1.ForeColor = &HFF&
Caption Imágenes Exit Sub
BorderStyle 5-Sizable ToolWindow ManipularErrorAbrir:
BackColor &H80000001& If Err.Number = 32755 Then
Label1 Name Labell Exit Sub
AutoSize True Else
BackStyle 0-Transparent MsgBox "Error desconocido al abrir el archivo"
BorderStyle 0-None End If
Caption Abrir imagen End Sub
Font Comic Sans MS
ForeColor &H000000FF& Private Sub Label2_MouseUp(Button As Integer, Shift As
Label2 Name LabeI2 Integer, X As Single, Y As Single)
AutoSize True Unload Me 'Cierra el formulario
BackStyle 0-Transparent End 'Finaliza la ejecución del programa
BorderStyle 0-None End Sub
Caption Salir
Font Comic Sans MS Private Sub Label1_MouseMove(Button As Integer, Shift As
ForeColor &H000000FF& Integer, X As Single, Y As Single)
PictureBox Name Picturel 'Al mover el puntero del mouse sobre el control label1
BorderStyle 0-None 'el color amarillo se asigna al control label1
Visible False Label1.ForeColor = &HFFFF& 'Color amarillo
End Sub
Private Sub Label1_MouseUp(Button As Integer, Shift As
Integer, X As Single, Y As Single) Private Sub Label2_MouseMove(Button As Integer, Shift As
On Error GoTo ManipularErrorAbrir Integer, X As Single, Y As Single)
'Limpia el control Picture Box 'Al mover el puntero del mouse sobre el control label2
Ing. Hermas Herrera Callejas Página : 5 de 6
'el color amarillo se asigna al control label2
Label2.ForeColor = &HFFFF& 'Color amarillo
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As


Integer, X As Single, Y As Single)
'Al mover el puntero del mouse sobre el formulario, se
'asigna el color rojo a los controles Label1 y Label2
Label1.ForeColor = &HFF&
Label2.ForeColor = &HFF&
End Sub

Private Sub Picture1_Resize()


'Redimensiona el tamaño del formulario en función
'del tamaño del control PictureBox
Form1.Top = 0
Form1.Left = 0
Form1.Width = Picture1.Width + 360
Form1.Height = Picture1.Height + 960
End Sub

Ing. Hermas Herrera Callejas Página : 6 de 6


Computación para Ingeniería I y Laboratorio CAP 9 – Visual Basic – El control MSFlexGrid

CAPITULO 9 – VISUAL BASIC – EL CONTROL MSFlexGrid

9.1 El control MSFlexGrid (rejilla).- El control MSFlexGrid permite desarrollar aplicaciones


que requieran un control parecido a una hoja de cálculo. La siguiente figura muestra un
control MSFlexGrid:

Fila fija Filas no fijas


Columna fija Columnas no fijas
Observar que este control tiene dos clases de filas o columnas: fijas y no fijas. Por
defecto, la fila superior y la columna situada más a la izquierda son fijas y están reservadas
para mostrar los títulos. Para definir el número de filas y columnas que tendrá este control se
utiliza las propiedades Rows y Cols, respectivamente.

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.

Ing. Hermas Herrera Callejas Página: 1 de 19


Computación para Ingeniería I y Laboratorio CAP 9 – Visual Basic – El control MSFlexGrid

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

9.4.1 Selección de celdas.- Para realizar modificaciones en una celda o en un rango de


celdas, lo primero que se debe hacer es seleccionarlas utilizando código de programa. Para
seleccionar una única celda se utiliza las propiedades Row y Col. En la propiedad Row
asignar el número de la fila y en la propiedad Col el número de columna. La celda
seleccionada será la intersección de la fila y la columna especificadas. Por ejemplo, para
seleccionar la celda 3, 2 utilizar estas instrucciones:
MSFlexGrid1.Row = 3
MSFlexGrid1.Col = 2
La siguiente figura muestra la selección realizada:

Para seleccionar un rango de celdas, primero especificar las coordenadas de la celda


superior izquierda utilizando las propiedades Row y Col. Luego, especificar las coordenadas

Ing. Hermas Herrera Callejas Página: 2 de 19


Computación para Ingeniería I y Laboratorio CAP 9 – Visual Basic – El control MSFlexGrid

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.4.2 Formato de celdas.- Utilice la propiedad FillStyle para determinar si un formato se ha


de aplicar a la celda activa o a todas las celdas seleccionadas. Por ejemplo, para dar
formato a un rango de celdas, incluya la siguiente instrucción de programa después de haber
seleccionado el rango:
MSFlexGrid1.FillStyle = flexFillRepeat
El valor flexFillRepeat permite dar formato simultáneo a más de una celda. Después de
ejecutar esta instrucción, proceda a dar formato a las celdas seleccionadas. El valor por
defecto, flexFillSingle, permite dar formato a una única celda.
Las siguientes propiedades permiten dar formato a las celdas seleccionadas:
Propiedad Formato
CellFontBold Establece el estilo negrita al texto de las celdas seleccionadas. Ejemplo:
MSFlexGrid1.CellFontBold = True
CellFontItalic Establece el estilo cursiva al texto de las celdas seleccionadas. Ejemplo:
MSFlexGrid1.CellFontItalic = True
CellFontUnderlíne Establece el estilo subrayado al texto de las celdas seleccionadas. Ejemplo:
MSFlexGrid1.CellFontUnderline = True
CellAlignment Permite alinear el texto de las celdas seleccionadas. Esta propiedad puede
adoptar los siguientes valores:
Valor Descripción
0 Izquierda Arriba
1 Izquierda Centro
2 Izquierda Abajo
3 Centro Arriba
4 Centro Centro
5 Centro Abajo
6 Derecha Arriba
7 Derecha Centro
8 Derecha Abajo
9 General (cadenas Izquierda Centro, números Derecha Centro). Ejemplo:
MSFlexGrid1.CellAlignment = 7
CellFontName Establece el estilo de letra que se va a usar en las celdas seleccionadas. Ejm.
MSFlexGrid1.CellFontName = ”Curier New”

Ing. Hermas Herrera Callejas Página: 3 de 19


Computación para Ingeniería I y Laboratorio CAP 9 – Visual Basic – El control MSFlexGrid

CellFontSize Establece el tamaño de la fuente, en puntos. Ejemplo:


MSFlexGrid1 .CellFontSize = 14
CellForeColor Establece el color del texto de las celdas seleccionadas. Ejemplo:
MSFlexGrid1.CellForeColor = “Red”
CellBackColor Establece el color del fondo de las celdas seleccionadas. Ejemplo:
MSFIexGrid1.CellBackColor = “Blue”
ColAlignment Permite alinear una columna entera. Por ejemplo, la siguiente sentencia alinea
hacia la derecha el texto de la segunda columna:
MSFlexGrid1.ColAlignment(1) = 7

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.

Ing. Hermas Herrera Callejas Página: 4 de 19


Computación para Ingeniería I y Laboratorio CAP 9 – Visual Basic – El control MSFlexGrid

5. Añadir un control MSFlexGrid al formulario y ajustar el tamaño del control MSFlexGrid.


6. Con el control MSFlexGrid seleccionado asignar las siguientes propiedades:
Propiedad Valor
Name Rejilla
AllowUserResizing 1- FlexResizeColumns
Cols 7
FormatString " | > Capital|>Interes| >Amortización|>Cuotas| |"
Rows 20
ScrollBars 3-FlexScrollBarBoth
7. Añadir tres controles Label y tres controles TextBox al formulario. Asignar estas
propiedades:
Control Propiedad Valor
Form Name Form1
Caption Plan de pagos
Label Name Label1
Caption Capital
Label Name Label2
Caption Nro de periodos (Plazo)
Label Name Label3
Caption Interés por periodo
TextBox Name Capital
Text
TextBox Name Periodo
Text
TextBox Name Interés
Text
Completar a 9 los controles Image en el formulario y asignarles los siguientes nombres:
Boton Salir SalirB

SalirS CalcularB CalcularI CalcularS Calcular


Observar que hay dos controles Image con el mismo nombre (Botón). Estos forman
parte de un array de controles.
Hacer clic en el control Image Botón(0). En la propiedad Picture hacer clic en el
botón del lado derecho. Buscar y seleccionar el gráfico CalcularIn.bmp y hacer clic en Abrir.
Asignar los siguientes gráficos a cada uno de los controles Image:

Ing. Hermas Herrera Callejas Página: 5 de 19


Computación para Ingeniería I y Laboratorio CAP 9 – Visual Basic – El control MSFlexGrid

CalcularIn.bmp Salir.bmp SalirBaj.bmp SalirSob.bmp Calcular.bmp CalcularBaj.bmp CalcularSob.bmp

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 un procedimiento al formulario.


1. Hacer doble clic en el formulario y digitar el siguiente código:
Dim Cap, i, n, pag As Double

Ing. Hermas Herrera Callejas Página: 6 de 19


Computación para Ingeniería I y Laboratorio CAP 9 – Visual Basic – El control MSFlexGrid

Dim sw1, sw2, sw3 As Boolean


Private Sub Form_Load()
Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2
End Sub
Asociar procedimientos al cuadro de texto Capital accionados por los sucesos Change
y KeyPress. Sólo debe permitir el ingreso de valores numéricos en el cuadro de texto Capital
y al presionar la tecla Enter, el cursor debe ubicarse en la casilla Periodo.
1. Hacer doble clic en el cuadro de texto Capital. La ventana de código abre el
procedimiento Capital_change.
2. Digitar el siguiente procedimiento:
Private Sub Capital_Change()
If IsNumeric(Capital.Text) And Val(Capital.Text) >= 0 Then
Cap = Val(Capital.Text)
sw1 = 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"
sw1 = False
End If
End Sub
Luego seleccionar el suceso KeyPress y digitar el siguiente código
Private Sub Capital_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Periodo.SetFocus
End If
End Sub
Asociar procedimientos al cuadro de texto Periodo accionados por los sucesos
Change y KeyPress. Sólo se debe permitir el ingreso de valores numéricos en el cuadro de
texto Periodo y al presionar la tecla Enter, el cursor debe ubicarse en la casilla Interes.
1. Hacer doble en el cuadro de texto Periodo. La ventana de código abre el procedimiento
Periodo_Change.
2. Digitar el siguiente procedimiento:
Private Sub Periodo_Change()
If IsNumeric(Periodo.Text) And Val(Periodo.Text) >= 0 Then
n = Val(Periodo.Text)
sw2 = 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"
sw2 = False
End If
End Sub
Luego seleccionar el suceso KeyPress y digitar el siguiente procedimiento
Private Sub Periodo_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Interes.SetFocus
End If
End Sub

Ing. Hermas Herrera Callejas Página: 7 de 19


Computación para Ingeniería I y Laboratorio CAP 9 – Visual Basic – El control MSFlexGrid

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.

Ing. Hermas Herrera Callejas Página: 8 de 19


Computación para Ingeniería I y Laboratorio CAP 9 – Visual Basic – El control MSFlexGrid

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 Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Boton(0).Picture = CalcularS.Picture Then
Boton(0).Picture = Calcular.Picture
End If
Boton(1).Picture = Salir.Picture
End Sub
Asociar un procedimiento al array de controles Botón accionado por el suceso
MouseDown. Cuando el usuario sitúe el puntero del mouse sobre el botón Botón(0) o
Botón(1) y pulse el botón izquierdo del mouse, este procedimiento se ejecutará cambiando el
gráfico del control bajo el puntero y se es Boton(0) calculará y desplegará el cuadro de
amortizaciones además de cambiar el puntero del mouse mientras dura el cálculo.
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 MouseDown.
3. Digitar el siguiente código:
Private Sub Boton_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim fila As Integer
Dim sumaamort, sumacuotas, amort, Intere, sumaint As Double
Cap = Val(Capital.Text)
Select Case Index
Case 0
If Boton(0).Picture = CalcularS.Picture Then
Boton(0).Picture = CalcularB.Picture
MousePointer = 11
limpiarrejilla
pag = (Cap * i * (1 + i) ^ n) / ((1 + i) ^ n - 1)
sumaint = 0: sumaamort = 0: sumacuotas = 0
With Rejilla
For fila = 1 To n
.TextMatrix(fila, 0) = fila
.TextMatrix(fila, 1) = Format(Cap, "###,##0.00")
Intere = Cap * i
.TextMatrix(fila, 2) = Format(Intere, "#,##0.00")
amort = pag - Intere
.TextMatrix(fila, 3) = Format(amort, "#,##0.00")
.TextMatrix(fila, 4) = Format(pag, "#,##0.00")
Cap = Cap - amort
sumaint = sumaint + Intere
sumaamort = sumaamort + amort
sumacuotas = sumacuotas + pag
Next fila
.TextMatrix(fila, 2) = Format(sumaint, "##,##0.00")
.TextMatrix(fila, 3) = Format(sumaamort, "##,##0.00")
.TextMatrix(fila, 4) = Format(sumacuotas, "###,##0.00")
End With
MousePointer = 0
End If
Case 1
Boton(1).Picture = SalirB.Picture

Ing. Hermas Herrera Callejas Página: 9 de 19


Computación para Ingeniería I y Laboratorio CAP 9 – Visual Basic – El control MSFlexGrid

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.

Ing. Hermas Herrera Callejas Página: 10 de 19


Computación para Ingeniería I y Laboratorio CAP 9 – Visual Basic – El control MSFlexGrid

9.6 Edición de datos en las celdas.- En el programa anterior se ha utilizado el control


MSFlexGrid para mostrar datos, pero observar que los datos contenidos en las celdas no
pueden ser editados. Esta limitación puede superarse fácilmente integrando el control
TextBox con el control MSFlexGrid.
Para ello, se usan las propiedades CellWidth, CellHeight, CellTop y CeIlLeft del control
MSFlexGrid. Las propiedades CellWidth, CellHeight proporcionan información sobre el ancho
y alto de la celda seleccionada en el control MSFlexGrid; mientras que las propiedades
CellTop y CellLeft proporcionan información sobre la ubicación de la celda.
Si se asigna a un control TextBox las propiedades de tamaño y ubicación de la celda
seleccionada, el control se situará sobre ella de manera tal que el usuario tendrá la impresión
de que está editando la celda directamente.
Una vez situado el control TextBox sobre la celda, el contenido de la celda se copia
sobre el control TextBox. Cuando el usuario se mueve a otra celda, se copia el contenido del
control TextBox a la celda que abandona y después se coloca el control TextBox sobre la
celda que se acaba de seleccionar.
La siguiente aplicación mostrará los pasos para integrar el control TextBox con el
control MSFlexGrid. El programa debe permitir el mantenimiento de los datos almacenados
en el archivo de alumnos cuyo nombre se definió al crearlo en una práctica anterior.
Seguir estos pasos:
1. Hacer clic en el comando Nuevo proyecto del menú Archivo para crear una nueva
aplicación.
2. Añadir cinco controles CommandButton y un control TextBox en el formulario.
3. Hacer clic en el comando Componentes del menú Proyecto. Visual Basic muestra el
cuadro de diálogo Componentes.
4. Hacer clic en el cuadro de verificación a la izquierda del elemento Microsoft Common
Dialog Control 6.0 y del elemento Microsoft FlexGrid Control 6.0, luego hacer clic en
Aceptar.
5. En el cuadro de herramientas, hacer doble clic sobre el control MSFlexGrid. En el
formulario, ajustar el tamaño del control MSFlexGrid.
6. Añadir un control CommonDialog y tres controles Label al formulario
7. Asignar las siguientes propiedades a cada uno de los controles:
Control Propiedad Valor .
Form Name MantDatos
Caption Mantenimiento del archivo de alumnos
TextBox Name Campo
BorderStyle 0-None
Text “”
Visible False
CommandButton Name Corrsultar
Caption Consultar
CommandButton Name Guardar
Caption Guardar
CommandButton Name Modificar
Caption Modificar
CommandButton Name Eliminar
Caption Eliminar
CommandButton Name Salir
Caption Salir
MSFlexGrid Name Rejilla
AllowUserResizing 1 – flexResizeColumns

Ing. Hermas Herrera Callejas Página: 11 de 19


Computación para Ingeniería I y Laboratorio CAP 9 – Visual Basic – El control MSFlexGrid

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:

Ing. Hermas Herrera Callejas Página: 12 de 19


Computación para Ingeniería I y Laboratorio CAP 9 – Visual Basic – El control MSFlexGrid

Asociar un procedimiento a cada uno de los controles del formulario:


1. Hacer doble clic sobre el formulario. La ventana de código abre el procedimiento
Form_Load.
2. Digitar el siguiente código:
Dim AuxCéd, AuxCédula As String
Dim Fila, XFila As Integer
Private Sub Form_Load()
'Sitúa al formulario en el centro de la pantalla
Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2
'lnhabilita los botones Ingresar, Modificar y eliminar
Guardar.Enabled = False
Modificar.Enabled = False
Eliminar.Enabled = False
'Abre el archivo de alumnos, cuyo nombre se definió al crearlo en una práctica anterior
'El nombre de registro es Alumnos y se utiliza en la sentencia Open para abrir el archivo
Abrir.ShowOpen
Open Abrir.FileName For Random As #1 Len = Len(Alumnos)
End Sub
Asociar un procedimiento al botón de comando Consultar accionado por el suceso
Click. Cuando el usuario haga clic en este botón, los datos del archivo de alumnos, cuyo
nombre se definió al crearlo en una práctica anterior, deben aparecer en las celdas del
control MSFlexGrid.
1. Hacer doble clic en el botón de comando Consultar. La ventana de código muestra el
procedimiento Consultar_Click.
2. Digitar el siguiente código:
Private Sub Consultar_Click()
MantDatos.Caption = "Consulta de datos"
Mensaje1.Caption = "Haga clic con el botón izquierdo del mouse sobre un registro para eliminarlo."
Mensaje2.Caption = "Haga clic con el botón derecho del mouse para añadir un registro."
Mensaje3.Caption = "Presione la tecla Alt y haga clic sobre un campo para realizar modificaciones."
Guardar.Enabled = False 'Inhabilita 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
Rejilla.Enabled = True 'Habilita el control MSFlexgrid
'Líneas que muestran los datos del archivo de alumnos en las celdas del control MSFlexGrid.
TotalRegistros = LOF(1) \ Len(Alumnos)
Fila = 0
If TotalRegistros <> 0 Then
LimpiarRegistros 'Llama al procedimiento LimpiarRegistros
With Rejilla
For i = 1 To TotalRegistros
Get #1, i, Alumnos
If Alumnos.SW = "1" Then
Fila = Fila + 1
.TextMatrix(Fila, 0) = Alumnos.Cédula
.TextMatrix(Fila, 1) = Alumnos.Paterno
.TextMatrix(Fila, 2) = Alumnos.Materno
.TextMatrix(Fila, 3) = Alumnos.Nombres
.TextMatrix(Fila, 4) = Alumnos.Dirección
.TextMatrix(Fila, 5) = Alumnos.Fecha_Nac
.TextMatrix(Fila, 6) = Alumnos.Género
.TextMatrix(Fila, 7) = Alumnos.SW

Ing. Hermas Herrera Callejas Página: 13 de 19


Computación para Ingeniería I y Laboratorio CAP 9 – Visual Basic – El control MSFlexGrid

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

Ing. Hermas Herrera Callejas Página: 15 de 19


Computación para Ingeniería I y Laboratorio CAP 9 – Visual Basic – El control MSFlexGrid

Campo.Visible = True 'Visualiza el control TextBox


Campo.SetFocus
End Sub
Asociar un procedimiento más al control MSFlexGrid accionado por el suceso
LeaveCell. El suceso LeaveCell tiene lugar cada vez que una celda es abandonada,
cambiando el enfoque a otra celda. El procedimiento deberá copiar el contenido del cuadro
de texto Campo sobre la celda activa antes de ser abandonada.
1. Hacer doble clic en el control MSFlexGrid. En la ventana de código desplegar el cuadro
de lista Procedimientos y seleccionar el suceso LeaveCell. La ventana de código abre el
procedimiento Rejilla_LeaveCell.
2. Digitar el siguiente código:
Private Sub Rejilla_LeaveCell()
'Asigna el contenido del control TextBox a la celda activa antes de ser abandonada.
Rejilla.Text = Campo.Text
End Sub
Asociar un procedimiento al cuadro de texto Campo accionado por el suceso
KeyPress. Cuando el usuario introduzca los datos en este control y presione la tecla Enter,
este procedimiento deberá seleccionar la celda contigua a la derecha de la celda activa
1. Hacer doble clic en el cuadro de texto Campo. 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 Campo_KeyPress.
2. Digitar el siguiente código:
Private Sub Campo_KeyPress(KeyAscii As Integer)
'Selecciona la celda contigua a la derecha de la celda activa cuando la tecla Enter es presionada.
If KeyAscii = 13 Then
If Campo.Text <> " " Then
Rejilla.Row = Rejilla.RowSel
Rejilla.Col = Rejilla.ColSel + 1
End If
End If
End Sub
Asociar un procedimiento al botón de comando Guardar accionado por el suceso
Click. Cuando el usuario haga clic en este botón, los datos ingresados en la fila Fila + 1
deben ser almacenados en el archivo de alumnos, cuyo nombre se definió en una práctica
anterior.
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 procedimiento:
Private Sub Guardar_Click()
'lngresa nuevos registros en el archivo de alumnos cuyo nombre se eligió al crearlo anteriormente.
Alumnos.Cédula = Rejilla.TextMatrix(Fila + 1, 0)
Alumnos.Paterno = Rejilla.TextMatrix(Fila + 1, 1)
Alumnos.Materno = Rejilla.TextMatrix(Fila + 1, 2)
Alumnos.Nombres = Rejilla.TextMatrix(Fila + 1, 3)
Alumnos.Dirección = Rejilla.TextMatrix(Fila + 1, 4)
Alumnos.Fecha_Nac = Rejilla.TextMatrix(Fila + 1, 5)
Alumnos.Género = Rejilla.TextMatrix(Fila + 1, 6)
Alumnos.SW = "1"
TotalRegistros = LOF(1) \ Len(Alumnos)
Put #1, TotalRegistros + 1, Alumnos
Consultar_Click

Ing. Hermas Herrera Callejas Página: 16 de 19


Computación para Ingeniería I y Laboratorio CAP 9 – Visual Basic – El control MSFlexGrid

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

Ing. Hermas Herrera Callejas Página: 17 de 19


Computación para Ingeniería I y Laboratorio CAP 9 – Visual Basic – El control MSFlexGrid

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.

Ing. Hermas Herrera Callejas Página: 18 de 19


Computación para Ingeniería I y Laboratorio CAP 9 – Visual Basic – El control MSFlexGrid

Para modificar la información de un registro, mantener presionada la tecla Alt, situar el


puntero del mouse sobre uno de los campos del registro y hacer clic. El punto de inserción
aparecerá al inicio de la celda listo para realizar las modificaciones. Utilizar las teclas de
dirección flecha derecha o flecha izquierda para desplazar el punto de inserción.
Para ingresar nuevos datos al archivo de alumnos, situar el puntero del mouse sobre
el control MSFlexGrid y hacer clic con el botón derecho del mouse. El punto de inserción,
parpadeante, aparecerá después del último registro. Ingresar una cédula y presionar la tecla
Enter. Al presionar la tecla Enter, el punto de inserción aparecerá en la siguiente celda de la
derecha. Ingresar el apellido paterno del alumno y presionar Enter. Proceder así hasta llenar
todos los campos del registro. Finalmente, hacer clic en el botón Guardar.
Al presionar el botón derecho del mouse, el punto de inserción aparece después del
último registro listo para ingresar nuevos datos.

Ing. Hermas Herrera Callejas Página: 19 de 19


(15) Plan de pagos (Control MSFlexGrid) ‘ convertir los valores a números y cambiar a true el sw3
‘ Si los 3 switches están en true, debe habilitar el boton Calcular
‘ Caso de no haberse digitado números, debe enviar un mensaje,
‘ Inhabilitar el Botón Calcular y permanecer el sw3 en False
‘ Al presionar Enter (KeyAscii 13) ubicar cursor en Capital
‘ Al mover el mouse por el array de controles Image ejecutar:
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
Añadir Microsoft FlexGrid Control 6.0 al cuadro de herramientas End If
‘ El programa debe calcular un plan de pagos de un préstamo, Boton(1).Picture = SalirS.Picture
‘ determinando la cuota total constante, el interés de cada periodo y End Select
‘ la amortización periódica sobre la base de los datos entrados. ‘ Al clic del mouse en el array de botones, ejecutar lo siguiente:
‘ En tiempo de diseño se debe armar la interfaz como sigue: Dim fila As Integer
Arreglo Botón SalirS Salir SalirB Calcular Dim sumaamort, sumacuotas, amort, Intere, sumaint As Double
Cap = Val(Capital.Text)
Select Case Index
Case 0
If Boton(0).Picture = CalcularS.Picture Then
Boton(0).Picture = CalcularB.Picture
MousePointer = 11
limpiarrejilla
pag = (Cap * i * (1 + i) ^ n) / ((1 + i) ^ n - 1)
sumaint = 0: sumaamort = 0: sumacuotas = 0
With Rejilla
For fila = 1 To n
.TextMatrix(fila, 0) = fila
.TextMatrix(fila, 1) = Format(Cap, "###,##0.00")
Intere = Cap * i
.TextMatrix(fila, 2) = Format(Intere, "#,##0.00")
amort = pag - Intere
CalcularB CalcularI CalcularS .TextMatrix(fila, 3) = Format(amort, "#,##0.00")
.TextMatrix(fila, 4) = Format(pag, "#,##0.00")
Ci (1  i ) N
Utilizará la sgte. Fórmula P  Cap = Cap - amort
(1  i ) N  1 sumaint = sumaint + Intere
Donde P = Pagos periódicos constantes, C = Capital prestado sumaamort = sumaamort + amort
i = Tasa de interés por periodo, N = Plazo (Nro de periodos) sumacuotas = sumacuotas + pag
‘ Usar propiedad FormatString para títulos en columnas Next fila
‘ Definir variables para Capital, Interes, Periodos y Pagos de tipo .TextMatrix(fila, 2) = Format(sumaint, "##,##0.00")
‘ doble así como 3 switches (sw1, sw2, sw3) de tipo booleano .TextMatrix(fila, 3) = Format(sumaamort, "##,##0.00")
‘ Al cargar el formulario centrarlo en la pantalla .TextMatrix(fila, 4) = Format(sumacuotas, "###,##0.00")
‘ El Botón Calcular debe estar inhibido End With
‘ Al mover el mouse por el formulario MousePointer = 0
‘ Si los botones del array están sobrerelieve, deben normalizarse End If
‘ Si en Capital solo se entran números > o = 0 Case 1
‘ convertir los valores a números y cambiar a true el sw1 Boton(1).Picture = SalirB.Picture
‘ Se puede usar: If IsNumeric(Capital.Text) and Val(Capital.Text) >= 0 Then… End Select
‘ Si los 3 switches están en true, debe habilitar el botón Calcular ‘ Entrar procedimiento limpiarregilla para limpiar el MSFGlexGrid
‘ Caso de no haberse digitado números, debe enviar un mensaje, With Rejilla
‘ Inhabilitar el Botón Calcular y permanecer el sw1 en False .Rows = n + 4
‘ Al presionar Enter ubicar el cursor en Nro de periodos .Row = 1
‘ Si en Nro. Periodos solo se entran números > o = 0 .Col = 0
‘ convertir los valores a números y cambiar a true el sw2 .RowSel = .Rows - 1
‘ Si los 3 switches están en true, debe habilitar el botón Calcular .ColSel = .Cols - 1
‘ Caso de no haberse digitado números, debe enviar un mensaje, .FillStyle = flexFillRepeat
‘ Inhabilitar el Botón Calcular y permanecer el sw2 en False .Text = ""
‘ Al presionar Enter ubicar cursor en Interés por periodo End With
‘ Si en Interés por periodo solo se entran números > o = 0
Ing. Hermas Herrera Callejas Página : 1 de 3
(16) Edición de Datos (Control MSFlexGrid)

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.

Ing. Hermas Herrera Callejas Página : 3 de 3