UNIVERSIDAD MAYOR DE SAN ANDRÉS FACULTAD DE INGENIERIA CARRERA DE INGENIERIA PETROLERA
COMPUTA COMPUTACION CION PARA INGENIER INGENIERIA IA I Y LABORA LABORATORIO TORIO GUIA Y MATERIA MATERIAL L DE ESTUDIO ESTUDIO
Ing. Hermas Herrera Callejas
La Paz Paz,, Agos Agosto to de de 2015 2015
UNIVERSIDAD MAYOR DE SAN ANDRES FACULTAD DE INGENIERIA CARRERA DE INGENIERIA PETROLERA
PROGRAMA ANALITICO COMPUTACION ION P/ INGENI INGENIERI ERIA A I Y LABOR LABORATO ATORIO RIO ASIGNATURA: COMPUTAC
PET223 23 SIGLA: PET2
NIVEL: 5to SEMESTRE PERIODO DURACION DEL CURSO:
20 SEMANAS
HORAS HORAS DE CLASE CLASE POR SEMANA PRACTICAS CON TEORICAS: 4 HORAS AUXILIATURA: 2 HRS. PRE REQUISITOS:
LABORATORIOS: 4 HORAS
MAT102 CALCULO II MAT207 ECUACIONES ECUACIONES DIFERENCIA DIFERENCIALES LES
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 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, razón, el Ingeniero Petrolero Petrolero debe tener los conocimient conocimientos os necesarios 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 ayuda en el estudio estudio de las diferentes diferentes asignaturas asignaturas consider consideradas adas “troncales” “troncales” en la carrera. Desarrollar su creatividad. Ampliar su capacidad lógica 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, eficiente, dándol dándoles es la posibilidad posibilidad de desarrollar desarrollar programas programas computacionales 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 1.1. 1.2. 1.3. 1.3.1 1.3.2 1.3.3 1.4 1.4.1 1.4.2 1.4.3 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.6 1.7 1.7.1 1.7.2 1.7.3 1.7.4 1.8 1.9 1.9.1 1.9.2 1.10 1.10.1 1.10.2 1.10.3 1.10.4 1.10.4.1
CONCEPTOS DE PROGRAMACIÓN Introducción Aplicación o Sistema Informático Ciclo de Vida de la Aplicación Etapas del Desarrollo de Aplicaciones Documentación de loa Programas Etapas de la Implantación y Explotación Estructura de un Programa Entrada de Datos Proceso Salida de de Resultados Lenguajes de Programación Clasificación de los Lenguajes de Programación Lenguaje de Máquina Lenguaje Ensamblador Lenguajes de Alto Nivel Representación de de Da Datos: C Coodificación Al Alfanumérica Técnicas de Programación Programación Convencional Programación Modular Programación Estructurada Estructuras de Control Programación Orientada a Objetos Algoritmos Importancia Características de los Algoritmos Métodos de Representación de los Algoritmos Lenguaje Natural Pseudocódigo Lenguajes de Programación Diagramas de Flujo Símbolos Página: 2
1.10.4.2 1.11
CAP CAPÍTULO 2 2.1 2.2 2.2.1 2.2.2 2.3 2.3.1 2.3.1.1 2.3.1.2 2.3.1.3 2.3.2 2.3.3 2.4 2.4.1 2.4.2 2.4.3 2.4.3.1 2.4.3.2 2.4.3.3 2.5 2.6 2.6.1 2.6.1.1 2.6.1.2 2.6.1.3 2.6.2 2.6.3 2.6.4
CAPÍTULO 3 3.1 3.2 3.2.1 3.2.2 3.2.3 3.3 3.4 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5
Tipos Ejercicios de Diagramas de Flujo
CONCEPTOS DE ARCH RCHIVOS Y BAS BASES DE DAT DATOS Introducción Archivos y Registros Registro Lógico Registro Físico o Bloque Clasificación de los Archivos Según su Uso Archivos Permanentes Archivos de Constantes Archivos Maestros Archivos Históricos Archivos de Movimientos Archivos de Trabajo. Organización de Archivos Organización Secuencial Organización Directa o Aleatoria Organización Indexada El Área Primaria El Área de Índices El Ár Área de Excedentes Métodos de Acceso Bases de Datos Modelos de Bases de Datos Modelo Jerárquico Modelo en Red Modelo Relacional Seguridad y Control de Datos Seguridad Contra Fallos del Sistema o del Soporte Seguridad Contra Usos Incorrectos o No Autorizado s
VISUAL BASIC – CONCEPTOS BÁSICOS Definición de Visual Basic Definición de Objeto Propiedades Métodos Sucesos Concepto de Proyecto Terminología de Visual Basic Controles Formulario Interfaz de Usuario Módulo Procedimientos Conducidos por Sucesos Página: 3
3.4.6 3.4.7 3.4.8 3.4.9 3.5 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.5.6 3.6 3.6.1 3.6.2 3.6.3 3.7 3.7.1 3.7.2 3.7.3 3.8 3.9 3.10
CAPÍTULO 4 4.1 4.1.1 4.2 4.2.1 4.2.2 4.2.3 4.3 4.3.1 4.4 4.4.1 4.4.2 4.5 4.5.1 4.5.2 4.6 4.6.1 4.6.2 4.7 4.7.1 4.7.2 4.7.3 4.8
Programación Controlada por Sucesos Sentencia de Programa Tiempo de Diseño Tiempo de Ejecución El Entorno de Programación de Visual Basic 6.0 La Barra de Menús La Barra de Herramientas Estándar El Cuadro de Herramientas La Ventana de Propiedades El Explorador de Proyectos Ventana de Posición del Formulario El Formulario Propiedades Sucesos Métodos Creación de una Aplicación Diseño de la Interfaz de Usuario Establecimiento de las Propiedades Escritura del Código Cómo Almacenar el Programa Ejecución del Programa Creación de un Archivo Ejecutable
VISUAL BASIC - CONTROLES BASICOS El Control Label Propiedades El Control TextBox Propiedades Sucesos Métodos El Control CommandButtom Propiedades El Control CheckBox Propiedades El Evento Clic El Control OptionButtom Propiedades El Evento Clic El Control Frame Propiedades Cómo Crear Grupos de Botones de Control El Control ListBox Propiedades Métodos Sucesos El Control ComboBox Página: 4
4.8.1 4.8.2 4.8.3 4.9 4.10 4.10.1 4.10.2 4.11 4.11.1 4.11.2 4.11.3 4.11.4 4.11.5
CAPÍTULO 5 5.1 5.1.1 5.1.2 5.1.3 5.2 5.3 5.3.1 5.4 5.4.1 5.4.2 5.4.3 5.4.4 5.4.5 5.4.6 5.5 5.5.1 5.5.2 5.5.3 5.5.4 5.6 5.7 5.8 5.9 5.10 5.10.1 5.10.1.1 5.10.1.2 5.10.1.3 5.10.2 5.10.2.1 5.10.2.2
Propiedades Sucesos Métodos El Control Timer Los Controles HScrollBar y VscrollBar Propiedades Sucesos Creación de Menús Opciones del Editor de Menús Orden de la Tabulación de Controles Cambiar el Orden de Tabulación de Controles Quitar un Control del Orden de Tabulación Tecla de Acceso Rápido a un Control
VISUAL BASIC - HERRAMIENTAS DE PROGRAMACIÓN Variables y Constantes Comentarios Una Constante Las Variables Declaración de Variables Tipos de Datos Declaración Explícita Ámbito de las Variables Variables Locales Variables Estáticas Variables a Nivel del Formulario Variables a Nivel del Módulo Variables Públicas Variables de Registros o Estructuras Operadores Los Operadores Aritméticos Los Operadores Relacionales El Operador & Los Operadores Lógicos Funciones Matemáticas Funciones de Conversión de Cadena Funciones para la Conversión de Datos Funciones de Fecha y Hora Estructuras de Control Estructuras de Decisión If...Then If...Then...Else Select Case Estructuras de Bucle Do...Loop For...Next Página: 5
5.10.2.3 5.10.3 5.10.4 5.11 5.11.1 5.11.2 5.11.3 5.11.3.1 5.11.4 5.11.5 5.11.6 5.12 5.12.1 5.12.2 5.12.3 5.12.4 5.12.5
For Each…Next Estructuras de Control Anidadas Salida de una Estructura de Control Procedimientos y Funciones Creación de un Procedimiento General Edición de un Procedimiento Procedimiento Function Llamada a una Función Procedimiento Sub Argumentos por Referencia y por Valor Funciones Recursivas Arrays Arrays Unidimensionales Declaración de un Array Arrays Bidimensionales Arrays Dinámicos Arrays de Controles
CAPÍTULO 6 VISUAL BASIC – USO DE ARCHIVOS Y BASES DE DATOS 6.1 6.1.1 6.1.2 6.1.3 6.1.3.1 6.1.3.2 6.1.3.3 6.1.3.4 6.1.3.5 6.2 6.3 6.3.1 6.4
Archivos de Datos Archivos Secuenciales Archivos Aleatorios Creación de un Archivo Aleatorio Definición del Registro Apertura del Archivo Escritura en un Archivo Aleatorio Lectura de un Archivo Aleatorio La sentencia Seek( ) Creación de Módulos El Control Data Creación de un Editor de Datos El Asistente para Formularios de Datos
CAPÍTULO 7 VISUAL BASIC - CONTROLES QUE MUESTRAN IMÁGENES Y GRAFICOS 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.2 7.3 7.3.1
El Control Image Carga de una Imagen en el Control Image Carga de una Imagen usando el Portapapeles La propiedad Stretch Carga de una Imagen en Tiempo de Ejecución Creación de Botones de Orden Gráficos El Control PictureBox Propiedades Sistema de Coordenadas Los Métodos Gráficos El Método Print Página: 6
7.3.2 7.3.3 7.3.4 7.4
CAPÍTULO 8 8.1 8.1.1 8.2 8.2.1 8.2.2 8.3 8.3.1 8.3.2 8.4 8.4.1 8.5 8.5.1 8.6 8.7
El Método Pset El Método Line El Método Circle Los Controles Line y Shape
VISUAL BASIC - CUADROS DE DIALOGO COMUNES El Control CommonDialog Colocar el Control CommonDialog en el Fotrmulario Los Cuadros de Diálogo Abrir y Guardar Propiedades Indicadores El Cuadro de Diálogo Fuente Propiedades Indicadores El Cuadro de Diálogo Imprimir Indicadores El Cuadro de Diálogo Color Indicadores Creación de un Mini Editor Creación de un Programa que Visualiza Imágenes
CAPÍTULO 9 VISUAL BASIC – EL CONTROL MS FLEXGRID 9.1 9.2 9.3 9.4 9.4.1 9.4.2 9.5 9.6
B.
El Control MSFlexGrid Propiedades Sucesos Introducir datos en una celda Selección de celdas Formato de celdas Despliegue de Información en las Celdas Edición de Datos en las Celdas
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 Programa con las Barras de Desplazamiento Horizontal y Vertical o o Programa con aplicación de Menús o Programa que trabaja con Archivos de Texto Programa que trabaja con Archivos Aleatorios o o Programa que trabaja con Bases de Datos Página: 7
o o o o o o
IV
Programa con el control ImageBox – Manipulación de Imágenes Programa con Manipulación de Imágenes y Sensibilidad del Cursor Programa con Trazado de Gráficos de funciones mediante puntos Programa con Trazado de líneas, círculos y ovalos Programa con uso del MSFlexGrid – Confección de un Plan de Pagos Programa con edición de datos mediante el MSFlexGrid
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
Capítulo 1 2 3 4 1a4 5 6
Mes 1 Tema
VS Basic - Controles que Muestran Imágenes y Gráficos 8 VS Basic - Cuadros de Diálogo Comunes 9 VS Basic - El Control MSFlexGrid 5 a 9 Segundo Examen Parcial 1 a 9 Examen final Registro de Notas 7
Hs 1
Conceptos de Programación Conceptos de Archivos y Bases de Datos Visual Basic - Conceptos Básicos Visual Basic - Controles Básicos Primer Examen Parcial VS Basic - Herramientas de Programación VS Basic - Uso de Archivos y Bases de Datos
Mes 2
2
3
4
5
6
7 8
9
Mes 3 Semanas 10 11 12
Mes 4 13
14 15 16
Mes 5 17 18 19
20
14 4 4 12 2 10 8 8 6 6 2 2 2
Página: 8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Cronograma de Laboratorios Casillas de Verificación (CheckBox) Selección de Opciones (OptionButton) Lista Simple (Control ListBox) Lista Combo (Control ComboBox) Uso del Control Timer (Reloj Digital) Barras de Desplazamiento (Mezcla de Colores) Confección de Menús (Menus y submenus) Uso de Archivos Secuenciales (Texto) Uso de Archivos Aleatorios (Alumnos) Uso de Bases de Datos (Tabla Clientes) Manipulación de Imágenes (Carga y Descarga) Imágenes en Movimiento (Sensibilidad al Cursor) Graficado de Funciones (PointSet) Trazado de Líneas y Círculos (Line y Circle) MSFlexGrid Plan de Pagos (Prestamos) MSFlexGrid Edición de Datos (Alumnos)
VII BIBLIOGRAFIA 1 E. Alcalde 2 George Jenkins 3 Lipschutz 4 IBM 5 IBM 6 IBM 7 Albert C. Gardner 8 Ruben Luna V 9 Brian Siler / Jeff Spots 10 Hermas Herrera Callejas
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
Informática Básica Information Systems Policies and Procedures Manual Matemáticas para Computación HIPO a Dessign Guide and Documentation Procedure Organizing the Data Processing Activity Systems Journal - Flowcharting Techniques Programación Estructurada Programación en Visual Basic 6.0 Para Principiantes y Avanzados Edición Especial Visual Basic 6 Pet223 Computación para Ingeniería I y Lab – Material de Estudio
Página: 9
COMPUTACION PARA INGENIERIA I Y LABORATORIO CAPITULO 1 CONCEPTOS DE PROGRAMACIÓN
1.1. 1.2. 1.3. 1.3.1 1.3.2 1.3.3 1.4 1.4.1 1.4.2 1.4.3 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.6 1.7 1.7.1 1.7.2 1.7.3 1.7.4 1.8 1.9 1.9.1 1.9.2 1.10 1.10.1 1.10.2 1.10.3 1.10.4 1.10.4.1 1.10.4.2 1.11
CONTENIDO DE LA ASIGNATURA
Introducción Aplicación o Sistema Informático Ciclo de Vida de la Aplicación Etapas del Desarrollo de Aplicaciones Documentación de loa Programas Etapas de la Implantación y Explotación Estructura de un Programa Entrada de Datos Proceso Salida de Resultados Lenguajes de Programación Clasificación de los Lenguajes de Programación Lenguaje de Máquina Lenguaje Ensamblador Lenguajes de Alto Nivel Representación de Datos: Codificación Alfanumérica Técnicas de Programación Programación Convencional Programación Modular Programación Estructurada Estructuras de Control Programación Orientada a Objetos Algoritmos Importancia Características de los Algoritmos Métodos de Representación de los Algoritmos Lenguaje Natural Pseudocódigo Lenguajes de Programación Diagramas de Flujo Símbolos Tipos Ejercicios de Diagramas de Flujo
CAPÍTULO 2
CONCEPTOS DE ARCHIVOS Y BASES DE DATOS
2.1 2.2 2.2.1 2.2.2 2.3 2.3.1 2.3.1.1 2.3.1.2 2.3.1.3 2.3.2 2.3.3 2.4 2.4.1 2.4.2 2.4.3 2.4.3.1 2.4.3.2 2.4.3.3 2.5 2.6 2.6.1 2.6.1.1 2.6.1.2 2.6.1.3 2.6.2 2.6.3
Introducción Archivos y Registros Registro Lógico Registro Físico o Bloque Clasificación de los Archivos Según su Uso Archivos Permanentes Archivos de Constantes Archivos Maestros Archivos Históricos Archivos de Movimientos Archivos de Trabajo. Organización de Archivos Organización Secuencial Organización Directa o Aleatoria Organización Indexada El Área Primaria El Área de Índices El Área de Excedentes Métodos de Acceso Bases de Datos Modelos de Bases de Datos Modelo Jerárquico Modelo en Red Modelo Relacional Seguridad y Control de Datos 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
2.6.4
Contenido de la Asignatura
Seguridad Contra Usos Incorrectos o No Autorizados
CAPÍTULO 3
VISUAL BASIC – CONCEPTOS BÁSICOS
3.1 3.2 3.2.1 3.2.2 3.2.3 3.3 3.4 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.6 3.4.7 3.4.8 3.4.9 3.5 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.5.6 3.6 3.6.1 3.6.2 3.6.3 3.7 3.7.1 3.7.2 3.7.3 3.8 3.9 3.10
Definición de Visual Basic Definición de Objeto Propiedades Métodos Sucesos Concepto de Proyecto Terminología de Visual Basic Controles Formulario Interfaz de Usuario Módulo Procedimientos Conducidos por Sucesos Programación Controlada por Sucesos Sentencia de Programa Tiempo de Diseño Tiempo de Ejecución El Entorno de Programación de Visual Basic 6.0 La Barra de Menús La Barra de Herramientas Estándar El Cuadro de Herramientas La Ventana de Propiedades El Explorador de Proyectos Ventana de Posición del Formulario El Formulario Propiedades Sucesos Métodos Creación de una Aplicación Diseño de la Interfaz de Usuario Establecimiento de las Propiedades Escritura del Código Cómo Almacenar el Programa Ejecución del Programa Creación de un Archivo Ejecutable
CAPÍTULO 4
VISUAL BASIC - CONTROLES BASICOS
4.1 4.1.1 4.2 4.2.1 4.2.2 4.2.3 4.3 4.3.1 4.4 4.4.1 4.4.2 4.5 4.5.1 4.5.2 4.6 4.6.1 4.6.2 4.7 4.7.1 4.7.2 4.7.3 4.8 4.8.1 4.8.2
El Control Label Propiedades El Control TextBox Propiedades Sucesos Métodos El Control CommandButtom Propiedades El Control CheckBox Propiedades El Evento Clic El Control OptionButtom Propiedades El Evento Clic El Control Frame Propiedades Cómo Crear Grupos de Botones de Control El Control ListBox Propiedades Métodos Sucesos El Control ComboBox Propiedades Sucesos
Ing. Hermas Herrera Callejas
Página: 2 de 4
Computación para Ingeniería I y Laboratorio
4.8.3 4.9 4.10 4.10.1 4.10.2 4.11 4.11.1 4.11.2 4.11.3 4.11.4 4.11.5
Contenido de la Asignatura
Métodos El Control Timer Los Controles HScrollBar y VscrollBar Propiedades Sucesos Creación de Menús Opciones del Editor de Menús Orden de la Tabulación de Controles Cambiar el Orden de Tabulación de Controles Quitar un Control del Orden de Tabulación Tecla de Acceso Rápido a un Control
CAPÍTULO 5
VISUAL BASIC - HERRAMIENTAS DE PROGRAMACIÓN
5.1 5.1.1 5.1.2 5.1.3 5.2 5.3 5.3.1 5.4 5.4.1 5.4.2 5.4.3 5.4.4 5.4.5 5.4.6 5.5 5.5.1 5.5.2 5.5.3 5.5.4 5.6 5.7 5.8 5.9 5.10 5.10.1 6.10.1.1 6.10.1.2 6.10.1.3 5.10.2 6.10.2.1 6.10.2.2 6.10.2.3 5.10.3 5.10.4 5.11 5.11.1 5.11.2 5.11.3 6.11.3.1 5.11.4 5.11.5 5.11.6 5.12 5.12.1 5.12.2 5.12.3 5.12.4 5.12.5
Variables y Constantes Comentarios Una Constante Las Variables Declaración de Variables Tipos de Datos Declaración Explícita Ámbito de las Variables Variables Locales Variables Estáticas Variables a Nivel del Formulario Variables a Nivel del Módulo Variables Públicas Variables de Registros o Estructuras Operadores Los Operadores Aritméticos Los Operadores Relacionales El Operador & Los Operadores Lógicos Funciones Matemáticas Funciones de Conversión de Cadena Funciones para la Conversión de Datos Funciones de Fecha y Hora Estructuras de Control Estructuras de Decisión If...Then If...Then...Else Select Case Estructuras de Bucle Do...Loop For...Next For Each…Next Estructuras de Control Anidadas Salida de una Estructura de Control Procedimientos y Funciones Creación de un Procedimiento General Edición de un Procedimiento Procedimiento Function Llamada a una Función Procedimiento Sub Argumentos por Referencia y por Valor Funciones Recursivas Arrays Arrays Unidimensionales Declaración de un Array Arrays Bidimensionales Arrays Dinámicos 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 6.1.1 6.1.1.1 6.1.1.2 6.1.1.3 6.1.1.4 6.1.2 6.1.3 6.1.3.1 6.1.3.2 6.1.3.3 6.1.3.4 6.1.3.5 6.2 6.3 6.3.1 6.4
Archivos de Datos Archivos Secuenciales Apertura de archivos secuenciales Lectura de archivos de texto Escritura de archivos de texto Cierre de archivos secuenciales Archivos Aleatorios Creación de un Archivo Aleatorio Definición del Registro Apertura del Archivo Escritura en un Archivo Aleatorio Lectura de un Archivo Aleatorio La Sentencia Seek Creación de Módulos El Control Data Creación de un Editor de Datos El Asistente para Formularios de Datos
7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.2 7.3 7.3.1 7.3.2 7.3.3 7.3.4 7.4
El Control Image Carga de una Imagen en el Control Image Carga de una Imagen usando el Portapapeles La propiedad Stretch Carga de una Imagen en Tiempo de Ejecución Creación de Botones de Orden Gráficos El Control PictureBox Propiedades Sistema de Coordenadas Los Métodos Gráficos El Método Print El Método Pset El Método Line El Método Circle Los Controles Line y Shape
CAPÍTULO 8
VISUAL BASIC - CUADROS DE DIALOGO COMUNES
8.1 8.1.1 8.2 8.2.1 8.2.2 8.3 8.3.1 8.3.2 8.4 8.4.1 8.5 8.5.1 8.6 8.7
El Control CommonDialog Colocar el Control CommonDialog en el Fotrmulario Los Cuadros de Diálogo Abrir y Guardar Propiedades Indicadores El Cuadro de Diálogo Fuente Propiedades Indicadores El Cuadro de Diálogo Imprimir Indicadores El Cuadro de Diálogo Color Indicadores Creación de un Mini Editor Creación de un Programa que Visualiza Imágenes
CAPÍTULO 7 VISUAL BASIC - CONTROLES QUE MUESTRAN IMÁGENES Y GRAFICOS
CAPÍTULO 9 VISUAL BASIC – EL CONTROL MS FLEXGRID
9.1 9.2 9.3 9.4 9.4.1 9.4.2 9.5 9.6
El Control MSFlexGrid Propiedades Sucesos Introducir datos en una celda Selección de celdas Formato de celdas Despliegue de Información en las Celdas 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
Presentación Diseño Programación
Pruebas
Reportes Formatos Bases de datos Programas Aprobación Algoritmo/Flujograma/Seudocódigo Codificación–Programa fuente, Prog estructurada Compilación – Programa Objeto (Errores: Sintaxis, Lógica) Enlace – Código ejecutable (Aplicación:Interactiva/por lotes/reportes/consultas) Unitarias Errores:Ejecución,Especificación Funcionales De conjunto De esfuerzo
D E S A R R O L L O
Evaluación
Aplicación aprobada Documentación
Capacitación
Manual Sistema Manual Usuario Manual Operación Manual Instalación Usuarios Técnicos
EXPLOTACION
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 – Co C onceptos 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 difíciles de corregir, pues corresponden corresponde n a incorrecciones sobrevenidas en la etapa del análisis, por lo que hay que modificar gran parte del trabajo realizado. Constituida por todos los 1.3.2 Docume 1.3.2 Documenta ntació ción n de tos program programas as .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 suficientes que posibiliten su su fuente . Debe incluir los comentarios explicativos suficientes comprensi comprensión ón y act actual ualiza izació ción. n. Asimism Asimismo, o, se deb debee utiliz utilizar ar 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 programa sin formar formar parte parte de él. Entre ellos ellos deben figurar figurar los los siguientes: • Especificaci Especificaciones ones del anál análisis. isis. • Descripción del diseño. • Descripción Descripción de las versiones, versiones, sí las hubiere. 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 la implantaci implantación ón y explotación 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 que denominamos explotación de la aplicación. Paralelamente al uso de la aplicación se realiza el mantenimiento de la misma, consiste consiste en su evaluación evaluación periódica periódica por parte del personal informáti informático, co, 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 – Co C onceptos 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 (Figura 1.3). Desde el el punto punto de vista vista funcional funcional,, un programa se estructura en tres pasos: instrucciones que toman los 1.4.1 Entrada de datos. Está formada por todas las instrucciones 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 Proceso de elaboraci elaboración. ón.
1.4.3 Salida de resultados . La constituyen las instrucciones que hacen que los datos resultantes resultantes del proceso proceso sean proporcionados proporcionados al exterior por medio de algún dispositivo (unidad de salida ). Estos tres tres component componentes es de todo programa (Figura (Figura 1.4) no aparecen aparecen separadamente, separadamente, sino que lo normal es encont encontrar rar las instrucciones instrucciones perteneciente pertenecientess a cada uno de los tres grupos mezcladas mezcladas entre entre si, pues en multitud multitud de ocasiones 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 Estructura funcional 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 programación, unos de propósito general, es decir, para todo tipo de aplicaciones, y otros de aplicación particular en alguno 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 – Co C onceptos de Programación
adecuadas para la realización de un determinado proceso. Un llenguaje enguaje 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 CLASI 1.5.1 CLASIFI FICA CACIO CION N DE LOS LOS LENGU LENGUAJ AJES ES DE PROG PROGRA RAMA MACI CIÓN Ó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 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 Instrucciones en lenguaje lenguaje de máquina máquina y sus equiv equivalentes alentes en el sistema 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 lenguaje ensamblador ensamblador es el primer intento intento de 1.5.3 Lenguaje ensamblador .- El lenguaje sustituir el lenguaje de máquina por otro más similar a los utilizados por las personas. En este este lenguaje, lenguaje, cada instrucción equivale a una instrucción en 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 – Co C onceptos 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 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 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, frecuente, como las de entrada/salida, funciones matemáticas, matemáti cas, manejo de tablas, tablas, etc., que fifiguran guran en una especie de librería 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 REPRESENTAC REPRESENTACION ION DE DATOS: DATOS: CODIFICA CODIFICACIÓN CIÓN ALFANUMERI ALFANUMERICA.CA.- Los datos e informaciones informaciones que se manejan internamente internamente en un sistema informático 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 permitirán manejar manejar datos, datos, informaciones informaciones,, instruccion instrucciones, es, órdenes ó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 0000 000 NUL 016 DLE 0001 001 SOH 017 DC1 0010 002 STX 018 DC2 0011 003 ETX 019 DC3 0100 004 EOT 020 DC4 0101 005 ENQ 021 NAK 0110 006 ACK 022 SYN 0111 007 BEL 023 ETB 1000 008 BS 024 CAN 1001 009 HT 025 EM 1010 010 LF 026 SUB 1011 011 VT 027 ESC 1100 012 FF 028 FS 1101 013 CR 029 GS 1110 014 SO 030 RS 1111 015 SI 031 US
0010
0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 032 SP 048 0 064 @ 080 P 096 ‘ 112 p 128 Ç 144 É 160 á 176 _ 192 ü 208 ð 224 Ó 240 033 ! 049 1 065 A 081 Q 097 a 113 q 129 ü 145 æ 161 í 177 _ 193 - 209 Ð 225 ß 241 ± 034 " 050 2 066 B 082 R 098 b 114 r 130 é 146 Æ 162 ó 178 _ 194 - 210 Ê 226 Ô 2 42 _ 035 # 051 3 067 C 083 S 099 c 115 s 131 â 147 ô 163 ú 179 ¦ 195 + 211 Ë 227 Ò 243 ¾ 036 $ 052 4 068 D 084 T 100 d 116 t 132 ä 148 ö 164 ñ 180 ¦ 196 - 212 È 228 õ 244 ¶ 37% 053 5 069 E 085 U 101 e 117 u 133 à 149 ò 165 Ñ 181 Á 197 + 213 i 229 Õ 245 § 038 & 054 6 070 F 086 V 102 f 118 v 134 å 150 û 166 ª 182 Â 198 ã 214 Í 230 µ 246 ÷ 039 ’’ 055 7 071 G 087 W 103 g 119 w 135 ç 151 ù 167 º 183 À 199 Ã 215 Î 231 þ 247 ¸ 040 ( 056 8 072 H 088 X 104 h 120 x 136 ê 152 ÿ 168 ¿ 184 © 200 + 216 Ï 232 Þ 248 ° 041 ) 057 9 073 I 089 Y 105 i 121 y 137 ë 153 Ö 169 ® 185 ¦ 201 + 217 + 233 Ú 249 ¨ 042 * 058 : 074 J 090 Z 106 j 122 z 138 è 154 Ü 170 ¬ 186 ¦ 202 - 218 + 234 Û 250 · 043 + 059 ; 075 K 091 [ 107 k 123 { 139 ï 155 ø 171 ½ 187 + 203 - 219 _ 235 Ù 251 ¹ 044 , 060 < 076 L 092 \ 108 l 124 | 140 î 156 £ 172 ¼ 188 + 204 ¦ 220 _ 236 ý 252 ³ 045 061 = 077 M 093 ] 109 m 125 } 141 ì 157 Ø 173 ¡ 189 ¢ 205 - 221 ¦ 237 Ý 253 ² 046 . 062 > 078 N 094 ^ 110 n 126 ~ 142 Ä 158 × 174 « 190 ¥ 206 + 222 Ì 238 ¯ 254 _ 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 3210 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
7654 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 0 NUL DLE DS SP & _ { } \ 0 1 SOH DC1 SOS a j ~ A J 1 2 STX DC2 FS SYN b k s B K S 2 3 ETX DC3 c l t C L T 3 4 PF RES BYP PN d m u D M U 4 5 HT NL LF RS e n v E N V 5 6 LC BS EOB UC f o w F O W 6 7 DEL IL ESC EOT g p x G P X 7 8 CAN h q y H Q Y 8 9 RLF EM . \ i r z I R Z 9 A SMM CC SM ¢ ! ’ : B VT . $ , # C FF IFS DC4 < * % @ D CR IGS ENQ NAK ( ) ’ E SO IRS ACK + ; > = 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
1.7
Cap. 1 – Conceptos de Programación
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.3.4.5.6.7.-
Hallar el área y perímetro de un rectángulo (Datos: base, altura) Sumar los números enteros, los cuadrados y los cubos de 1 a N (Dato: N) Decidir según moneda. Si al lanzar cae cara ir al cine, caso contrario estudiar Encontrar el MAYOR de 3 números diferentes (Datos: A, B, C) Encontrar el MAYOR y el MENOR de 3 números diferentes (Datos: A, B, C) 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) 9.- Evaluar la función: 10.-
Y
=
100 9 − 3 X
, donde x es la abscisa e Y es la ordenada. (Si
X = 3 no se puede dividir 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.12.-
13.-
Calcular el factorial de un número N introducido 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 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 14.-
Se ingresarán N valores para X. Calcular el valor promedio
15.-
La función e se puede calcular con la fórmula
16.17.18.19.20.21.22.23.-
x
e
x
= 1+
x
1
1!
+
X x
=
2
2!
+
i
i =1
N x
3
3!
+ .... +
x
n
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 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 Construir la matriz identidad de N x N 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 Dado un número, determinar si el mismo es par o impar Dado un número, determinar si el mismo es primo o no es primo Hallar la suma de los N primeros números pares 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) 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
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
24.-24.
Cap. 1 – Conceptos de Programación
Genera Gen erarr los los N pri primer meros os nú númer meros os primos primos Inicio
Def P(I), I, N, K, J, DIVE A Fin ?
Si
Fin
B
No A
No
Ejecutar ?
Si
No
Leer N A
N>0 ?
Si
DIVE>2 ?
No
N debe ser > 0
K=K+1 P(K) = J
K=N ?
No
J=J+1
Si J = 1,
Si
K=0
I = 1, N
C DIVE = 0
Imprimir P(I) I = 1, J I J Mod I = 0 ?
Si
No A
DIVE = DIVE + 1
I
B
Ing. Hermas Herrera Callejas
Página : 17 de 19
C
Computación para Ingeniería I y Laboratorio
25.-
Cap. 1 – Conceptos de Programación
Invert Inv ertir ir los los dígito dígitoss de un númer númeroo N entero, entero, pos positi itivo vo de dos ccifr ifras as o más más Inicio
Def A, N, N, N1, DIG A Fin ?
Si
Fin
No A
No
Inver Inverti tirr ?
Si Leer N
N>11 ?
No
N debe ser > 11
No
Desple Desplegar gar N1
A
Si A = N, N1 = 0
A>0?
A
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
26.-
Cap. 1 – Conceptos de Programación
Construir Constr uir una mat matriz riz de N x N con N impar impar y mayor mayor a 2. Calcul Calcular ar las las sumas 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
Si
Fin ?
No A
No
Fin
Ejecutar ?
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
J I
S = H + V – A(K, K)
Imprimir H, V, S
S = 0, K = N \ 2 + 1 A B
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
CAPITU CAPITULO LO 2 – CPNCEP CPNCEPTOS TOS DE ARCHI ARCHIVOS VOS Y BASES BASES DE DATOS 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 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 almacena almacenando ndo éstas en un archivador archivador (Figura (Figura 2.1). Por ejemplo ejemplo,, se tiene un archivo archivo de clientes en el que cada ficha contiene todos los 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. Archiv Archivoo manual 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 utilizan las computador computadoras as (Figura 2.2).
Figura 2.2. Soportes Soportes para el almacenamiento almacenamiento de datos. Las ventajas obtenidas se derivan de las características de los soportes y de las computadoras: - Gran capacid capacidad ad 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 conten contendrá drá un programa programa fuente (programa escrito escrito en un lenguaje 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
campo 1 campo 2 campo 3
Registro 2
Registro 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: 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 A rc hi vos Maes tros . - 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 A rc hivos Hi s tóri cos . - 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 .1. 1
A rc hi vos de C ons tantes .-
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 Posiciones
01
Registro 3 Registro 1 Registro 4 02
03
04
05
Registro 8 Registr 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
Área de índices 01 AC 04 FA Área de datos Área excedentes
AA -- AB 01 02
--
FM -- AN
--
Cap. 2 - Conceptos de Archivos y Bases de Datos
07 GK
AC 03
-- BC 04
-- CH 05
-- FA 06
--
GF 07
-- GJ 08
- GK
-
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 bas e 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
Ex eriencia
Familia
Lo ros
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 105 105 107
JULIÁN PÉREZ JULIÁN PÉREZ PEDRO ROSALES JULIÁN PÉREZ
LA PAZ COCHABAMBA SANTA CRUZ SUCRE
ELÍAS PEINADO ANA MARTORELL MARTA SÁNCHEZ JULIO CARRANZA
TOURISA PRISA TOURISA 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 componentes de la aplicación. * Un archivo para cada formulario.
.vbp .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.usuario
Medio de comunicación entre la aplicación y el
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.2.3.4.-
Situar el puntero del mouse sobre el botón Inicio y hacer clic Situar el puntero del mouse sobre la opción programas Situar el puntero del mouse en el grupo de programas Visual Studio 6.0 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
Cuadro de herramientas
Formulario
Explorador de proyectos
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
.- 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 Label Frame
PictureBox TextBox CommandButton
CheckBox
O tioButton
ComboBox
ListBox
HScrollBar
VScrollBar
Timer DirListBox Sha e Ima e
DriveListBox FileListBox Line 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 Barra de título
Maximizar 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.redimensionable.
Ing. Hermas Herrera Callejas
Permite definir una formulario con borde simple no
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 Activate Click Deactivate
Comentario Este suceso ocurre cuando el formulario se convierte en la ventana activa. Procedimiento llamado Form_Activate. Este suceso ocurre cuando el usuario hace clic sobre el formulario. Procedimiento llamado Form_Click. 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 Hide Refresh SetFocus Show
Comentario Oculta el formulario Actualiza el contenido del formulario. Le entrega el enfoque al formulario. 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
Com ando Saludo
Comando Salir
El siguiente cuadro presenta controles: Control Propiedad Forml Name TextBox Name Text Font Commandl Name Caption Command2 Name Caption
un resumen de las propiedades asignadas a los Valor Forml Mensaje “” Arial, Normal, tamaño 12 Saludo Saludo Salir 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
Alignment
0-Left Justify
Autosize
False
Backcolor BackStyle
White 1-Opaque
BorderStyle
0-None
Caption Enabled
Label1 True
Font
Ms Sans Serif
Forecolor Height Left
Black 375 1560
MousePointer 0-Default Name TabIndex Top
Label1
Visible Width WordWrap
True 1125 False
1200
Descripción
Determina si el mensaje aparece alineado a la izquierda, a la derecha o al centro de la etiqueta. Determina si la etiqueta cambia de tamaño de manera automática para mostrar todo el mensaje Devuelve o establece el color de fondo. 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. Devuelve/establece el estilo de borde. Elegir 1-FixedSingle y una línea bordeara la etiqueta Contiene el mensaje que aparece en la etiqueta. 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. 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. Devuelve o establece el color del mensaje. Devuelve o establece la altura de la etiqueta. Establece la distancia entre el borde izquierdo de la etiqueta y el borde izquierdo del formulario. Determina la forma del puntero del mouse al pasar este sobre la etiqueta. Nombre usado en el código para identificar a la etiqueta. Devuelve o establece el orden de tabulación del objeto. Devuelve o establece la distancia entre el borde superior de la etiqueta y el borde superior del contenedor. Determina si la etiqueta estará visible u oculta Devuelve o establece el ancho de la etiqueta. 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
Alignment
0-Left Justify
Backcolor BorderStyle
White 0-None
Enabled Font
True Ms Sans Serif
ForeColor Height Locked MaxLength
Black 375 False 0
MousePointer 0-Default MultiLine Name
False Text1
PasswordChar “ ” ScrollBars
0-None
TabIndex TabStop Visible Width Text ToolTipText
1 True True 1125 Text1 ““
Descripción
Determina si el texto aparece alineado a la izquierda, a la derecha o al centro del cuadro de texto. Devuelve o establece el color de fondo. Devuelve o establece el estilo de borde. Elegir 1-Fixed Single y una línea bordeará al cuadro de texto. Determina si un cuadro de texto está activo. 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. Devuelve o establece el color del texto. Devuelve o establece la altura del Control Determina si el usuario puede editar el texto. Específica el número máximo de caracteres que se puede escribir en un cuadro de texto. Determina la forma del puntero del mouse al pasar el puntero sobre el cuadro de texto Permite que el cuadro de texto acepte múltiples líneas. Nombre usado en el código para identificar al cuadro de texto. Determina el carácter que aparece cuando el usuario introduce una contraseña. Define si la caja de texto tendrá barra de desplazamiento vertical, horizontal o ambas. Especifica el orden de enfoque dado al cuadro de texto. Determina si el cuadro de texto puede recibir el enfoque. Determina si el cuadro de texto estará visible u oculto. Devuelve o establece el ancho del cuadro de texto. Contiene el texto del cuadro. 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 GotFocus KeyDown KeyPress Keyup LostFocus
Ocurre cuando cambia el texto que contiene el control. Ocurre cuando el control recibe el enfoque. Ocurre cuando el usuario presiona una tecla mientras el control tiene el enfoque. Ocurre cuando el usuario presiona y suelta una tecla. Ocurre cuando el usuario suelta una tecla mientras el control tiene el enfoque. Ocurre cuando el control pierde el enfoque.
4.2.3 Métodos del control TextBox Método
Descripción
Refresh SetFocus
Actualiza el texto del control TextBox. 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 com ando y hacer clic para ejecutar el procedimiento.
4.3.1 Propiedades del control CommandButton Propiedad
Valor par defecto
Cancel
False
Caption Default Enabled
Command1 False True
Height Left
495 3120
Name Top
Commandl 1615
Visible Width
True 615
Descnpcion
Establece si el botón de comando se comportará como el botón Cancelar en el formulario. Establece el texto que mostrará el botón de comando. Establece si el botón será activado con la tecla Enter. Devuelve o establece un valor que determina si el objeto puede responder a sucesos realizados por el usuario. Devuelve o establece la altura del objeto. Devuelve a establece la distancia entre el borde izquierdo del objeto y el borde izquierdo de su contenedor. Permite establecer el nombre que se utilizará en el código. Devuelve o establece la distancia entre el borde superior del objeto y el borde superior de su contenedor. Determina si el botón de comando estará visible u oculto. 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
Caption Enabled
Check1 True
Name
Check1
Value
0-Unchecked
Ing. Hermas Herrera Callejas
Comentario
Descripción que acompaña al control CheckBox. Devuelve o establece un valor que determina si el objeto puede responder a eventos realizados por el usuario. Devuelve o establece el nombre del objeto usado en el código. 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 Página : 3 de 25
Computación para Ingeniería I y Laboratorio
Visible
Cap. 4 – Visual Basic – Controles Básicos
0-Unchecked (Desactivada) 1- Checked (Activada) 2-Grayed (Atenuada) Devuelve o asigna un valor que determina si el objeto está visible u oculto.
True
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 CheckBox CheckBox CheckBox CheckBox Label
CommandButtom
Name Text Name Caption Name Caption Name Caption Name Caption Name Caption Name Caption
nnTextoPrueba ““ nnNegrita &Negrita nnCursiva &Cursiva nnMayúsculas &Mayúsculas nnColorRojo Color &Rojo Label1 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 nnSalir 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 Enabled
Optionl True
Name Value
Option1 False
Visible
True
Descripción que acompaña al control OptionButton. Devuelve o establece un valor que determina si el control esta habilitado para responder a eventos realizados por el usuario. Devuelve o establece el nombre del control usado en el código. 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. 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 Text OptionButton Name Caption OptionButton Name Caption Ing. Hermas Herrera Callejas
nnTextoPrueba ““ nnTamaño8 8 nnTamañol0 10 Página : 6 de 25
Computación para Ingeniería I y Laboratorio
OptionButton Name Caption Label Name Caption CommButton Name Caption
Cap. 4 – Visual Basic – Controles Básicos
nnTamaño12 12 Labell Introduzca un texto de prueba en la caja de texto y seleccione un tamaño de fuente. nnSalir 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 Name Visible
Frame1 Frame1 True
Descripción que acompaña al control Frame. Nombre del control usado en el código. 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 Columns List
True/False. Devuelve o establece un valor que determina si el control está habilitado para responder a eventos realizados por el usuario. 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). 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
List ListC Count ount List Listln lnde dex x MultiS MultiSele elect ct
Name NewInd NewIndex ex Selec Selecte ted d Sort Sorted ed Sty Style
Cap. 4 – Visual Basic – Co C ontroles Básicos
Númer úmero o tot total de elem elemen enttos de la lista ista.. Cont Contie iene ne el índi índice ce del elem elemen ento to sele selecc ccio iona nado, do, que es un núme número ro entr entre e 0 (pri (prime mer r elemento) elemento) y el el número número total de elementos elementos en la la lista -1 (ListC (ListCount ount - 1). El valor valor de Listlndex será será –1 si no se selecciona selecciona ningún elemento. elemento. Determi Determina na cómo cómo puede puede sele selecci ccionar onar el usua usuario rio los elemen elementos tos de la la lista lista.. Valore Valores s de la propiedad propiedad MultiSelec MultiSelect: t: 0 No se se permi permiten ten sele selecci ccione ones s múlti múltiple ples s (defec (defecto) to).. 1 Selección Selección múltiple múltiple sencil sencilla. la. Se Se seleccio selecciona na o se desacti desactiva va una una entrada 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 Selecc Selección ión múlt múltipl iple e extend extendida ida.. Para Para expand expandir ir la sele selecci cción ón se util utiliza iza la la tecla tecla Shift mientras mientras se se hace clic con el mouse. mouse. De esta forma forma se resaltan resaltan los elementos elementos que hay hay entre entre el primero primero selecciona seleccionado do y el actual. actual. Si se se pulsa pulsa la tecla Ctrl y se hace clic, se selecciona o se desactiva una entrada en la lista. Devue evuellve o establece el el no nombre de del co control rol us usado en en el el có código digo.. Contie Contiene ne el índic índice e del del último último elemen elemento to añadido añadido a la la list lista. a. Es útil útil si si se desea desea hacer algo con el elemento añadido, por ejemplo, que sea el elemento actualmente seleccionado. Arre Arreglo glo de val valore ores s lógic lógicos os par paral alel elo o y del del mism mismo o tamañ tamaño o al arr arreg eglo lo Lis List, t, ind indic ica a qué qué elementos elementos se han selecciona seleccionados dos (True) (True) de la lista. Se utiliza utiliza en lugar de ListIndex ListIndex cuando se establece establece la propiedad propiedad Multis Multiselect elect en 1 o 2. Tru True/Fa e/Fallse. se. Esta Establ blec ece e si los los elem elemen ento tos s se orde ordena nan n alfa alfabé béti tic cament mente e. Apar Apariienc encia del del cont contro rol. l. Puede uede tene tenerr valor alores es 0 (Es (Estánd tándar ar)) o 1 (Che (Chec ckBox kBox). ).
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 Listl.AddItem elemento elemento (, índice) í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. lista. Si está puesta como True la propiedad propiedad Sorted del control, control, la entrada se inserta en el lugar adecuado de la lista, sin tener en cuenta el
valor del argumento indice Remove RemoveIte Item m Permit Permite e elimin eliminar ar elemen elementos tos de de una lista lista.. Para Para borrar borrar un eleme elemento nto de una list lista, a, primero debemos averiguar su posición (índice) dentro de la lista, y pasársela al método RemoveIte RemoveItem. m. La sintaxis de este método es: Listl.Remov Listl.RemoveItem eItem índice índice El parámetro parámetro índice índice es el lugar que ocupa ocupa la entrad entrada a que se quiere quiere borrar y esta esta vez no es opcional. Clear Borra to todos lo los el elementos de de la la lilista. Su Su si 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 – Co C ontroles Básicos
La siguiente tabla muestra las propiedades de los controles incluidos en la interfaz: Control Propiedad Valor ListBox Label TextBox CommandButtom CommandButtom CommandButtom
Name Columns Sorted Name Caption Name Text Name Caption Name Caption Name Caption
nnPaises 0 True nnLabel1 Pais seleccionado nnPaisSelec ““ nnAñadirElemento Añadir nuevo elemento nnEliminarElemento Eliminar elemento nnSalir Salir
Guardar el formulario formulario con el nombre nombre ListadePaises.frm ListadePaises.frm y la aplicaci aplicación ón con el nombre ListadePaises.vbp. En el formular formulario, io, hacer hacer doble clic clic en el cuadro cuadro de lista lista nnPaíses. nnPaíses. En la ventana ventana de código, digitar digitar el siguiente siguiente código: 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 Hacer doble doble clic clic en el el botón botón de de coman comando do “Añadi “Añadirr nuevo nuevo elem element ento” o” y digi digitar tar 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 clic en el botón de comando comando ‘Eliminar ‘Eliminar elemento elemento y en la ventana ventana de código digitar: Private Sub nnEliminarElemento_Clic() ‘Elimina un elemento del cuadro de lista nnPaises If nnPaises.Lis nnPaises.ListIndex tIndex <> <> -1 Then nnPaises.RemoveItem nnPaises.ListIndex nnPaisSelec.Text = “ “ End If End Sub Hacer doble clic clic en el botón de comando Salir Salir y en la ventana de código, código, entre las sentencias sentencias Private Private Sub nnSalir_Clic nnSalir_Clic() () y End Sub, digitar digitar el comando comando End. Presiona Presionarr la tecla tecla F5 para ejecut ejecutar ar el el programa programa.. Hacer Hacer clic clic en en el botón botón “Aña “Añadir dir nuevo elemento” elemento” y en el cuadro de mensaje 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 – Co C ontroles Básicos
En el cuadro de de lista, hacer hacer clic en el nombre del país país que desea desea eliminar eliminar y seguidamente, seguidamente, hacer clic en el botón ‘Eliminar ‘Eliminar elemento. elemento.
4.8
El control ComboBox (Cuadro Combinado).- El control ComboBox es una
combinación combinación del control TextBox TextBox (cuadro de texto) y un control ListBox (cuadro (cuadro de lista). lista). Este control control permite permite que el usuario usuario seleccione seleccione un elemento; elemento; para ello, ello, escribir escribir el texto texto en el cuadro cuadro de texto texto o seleccion seleccionar ar un elemento elemento en la lista. 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 com combinado desplegable.
Cuadro combin binado simpl mple.
Cuadro comb combiinado de lista desplega egable.
4.8.1 Propiedades del control ComboBox ComboBox
Propiedad
Descripción
Enab Enable led d
True True/F /Fal alse se.. Devu Devuel elv ve o est estab able lece ce un valo valorr que que dete determ rmin ina a si si el el con contr trol ol está está habilitado para responder a eventos realizados por el usuario. Es un arregl reglo o que que contiene lo los ele element entos de la la lilista, comienza co con ín índic dice 0. 0. Núme Número ro tota totall de de el elemen emento toss de de la la lis lista ta.. Cont Contie iene ne el el índi índice ce del del ele eleme ment nto o sele selecc ccio iona nado do,, el cua cuall es un núm númer ero o entr entree 0 (pri (prime merr 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. Devue evuellve o establece el el no nombre de del co control rol us usado en en el el có código digo.. Cont Contie iene ne el el índ índic ice e del del últ últim imo o elem elemen ento to añad añadid ido o a la lis lista ta.. Tru True/Fa e/Fallse. se. Orde Ordena na alfa alfab bétic éticam amen ente te los los elem elemen ento tos s de la list ista. Est Establ ablece ece el el com compo port rta amien mientto del del cont contro roll Com Combo boBo Box x. Pue Puede de toma tomarr los los sigui iguien ente tes s valores: 0-Dropdown 0-Dropdown Combo.Combo.- Cuadro combinado combinado desple desplegable. gable. Incluye 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-Simp 1-Simple le Combo Combo..- Cuadro Cuadro comb combina inado do simpl simple. e. Inclu Incluye ye un cuad cuadro ro de text texto o y una lista que se presenta siempre. El usuario puede puede seleccionar datos en la lista o escribir escribir en el cuadro de texto. Al igual que el cuadro combinado combinado desplegable, desplegable,
Lis List List ListCo Coun untt ListI ListInd ndex ex
Name NewI NewInde ndex x Sort Sorted ed Sty Style
Ing. Hermas Herrera Callejas
Página : 11 de 25
Computación para Ingeniería I y Laboratorio
Text
Cap. 4 – Visual Basic – Co C ontroles 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 seleccionar un elemento elemento de la lista. Devuelve o establece el el te texto co contenido en en el el co control.
4.8. 4.8.22 Suce Suceso soss
Suceso
Descripción
Cli Click
Con cual cualqu quie iera ra de las lis listas, tas, ocur curre cuand uando o el el us usuari uario o sel selec ecc ciona iona un ítem tem de de la la lista para indicar sus preferencias. Ocur Ocurre re cuan cuando do el valo valorr de de la la pro propi pied edad ad Tex Text es modi modifi fica cado do..
Chan Change ge
6.8.3 Métodos
Método
Descripción
AddItem Permite añadir nuevos elementos a la lista. RemoveItem RemoveItem Permite Permite eliminar eliminar elementos elementos de una una lista. 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 control ComboBox. ComboBox. La interfaz interfaz debe tener tener el siguiente siguiente aspecto: aspecto:
La siguiente tabla muestra las propiedades de los controles incluidos en esta interfaz: Control Propiedad Valor ComboBox
Label TextBox CommandButton CommandButton
Name List
Sorted Style Text Name Caption Name Text Name Caption Name Caption
Ing. Hermas Herrera Callejas
nnFrutas Chirimoya Ciruela Fresa Lucuma Manzana Melocotón Naranja True 1-Simple Combo ““ Label1 Fruta seleccionada nnFrutaSelec ““ nnAñadirElemento Añadir nuevo el elemento nnEliminarElemento Eliminar elemento Página : 12 de 25
Computación para Ingeniería I y Laboratorio
CommandButton
Name Caption
Cap. 4 – Visual Basic – Controles Básicos
nnSalir 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 Label
Caption Name
Ing. Hermas Herrera Callejas
Reloj Digital Intermitente nnHora Página : 14 de 25
Computación para Ingeniería I y Laboratorio
Timer
Alignment Caption Font Tag Name Interval Enabled
Cap. 4 – Visual Basic – Controles Básicos
2-Center ““ Arial, Negrita, 18 puntos Mostrar Hora nnTimer1 500 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. Ocurre continuamente mientras el cuadro de desplazamiento es arrastrado de una posición a otra con el mouse.
Scroll
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
formulario: Control PictureBox Label Label Label HscrollBar
HscrollBar
HscrollBar
Cap. 4 – Visual Basic – Controles Básicos
Propiedad
Valor
Name Caption Caption Caption Name LargeChange Max Min SmallChange Value Name LargeChange Max Min SmallChange Value Name LargeChange Max Min SmallChange Value
nnColores Rojo Verde Azul nnRojo 20 255 0 2 0 nnVerde 20 255 0 2 0 nnAzul 20 255 0 2 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
Enabled Visible WindowList
Cap. 4 – Visual Basic – Controles Básicos
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. Permite hacer que un elemento aparezca en el menú. 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ú.
Lista Menús
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ú. 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
Caption
Name Text
&Formato &Fuente &Arial &Comic Sans MS C&ourier &Tamaño 10 12 14 &Salir &Varios &Reloj &Calculadora &Naipes
Name
nnTexto1 “ “
Shortcut
nnFormato nnFuente nnFuenteArial Ctrl + A nnFuenteComicSans Ctrl + C nnFuenteCourier Ctrl + O nnTamaño nnTamaño10 nnTamaño12 nnTamaño14 LineaSeparadora nnSalir Ctrl + S nnVarios nnReloj Ctrl + R nnCalculadora Ctrl + C 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 ...... &Comic Sans MS ...... C&ourier ... &Tamaño ...... 10 ...... 12 ...... 14 ... - Línea de separación ... &Salir &Varios ... &Reloj ... Calc&uladora ... &Naipes
Ctrl+A Ctrl+C Ctrl+O
Ctrl + S Ctrl + R Ctrl + U 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
Control TextBox
CheckBox CheckBox CheckBox CheckBox Label
Propiedad Name Text Name Caption Name Caption Name Caption Name Caption Name Caption
CommandButtom Name
Caption
Valor nnTextoPrueba ““ nnNegrita &Negrita nnCursiva &Cursiva nnMayúsculas &Mayúsculas nnColorRojo Color &Rojo Label1 “Seleccione una o más casillas de verificación para ver su efecto en el texto que se ha introducido en la caja de texto” nnSalir Salir
If nnCursiva.Value = 1 Then nnTextoPrueba.Font.Italic = True Else nnTextoPrueba.Font.Italic = False End If If nnMayusculas.Value = 1 Then nnTextoPrueba = UCase(nnTextoPrueba ) Else nnTextoPrueba = LCase(nnTextoPrueba ) End If If nnNegrita.Value = 1 Then nnTextoPrueba.Font.Bold = True Else nnTextoPrueba.Font.Bold = False End If
CommandButtom Name Caption Frame Name Caption OptionButton Name Caption OptionButton Name Caption OptionButton Name Caption OptionButton Name Caption
mismo” nnSalir Salir nnFrame2 Color Letras nnNegro Negro nnRojo Rojo nnVerde Verde nnAzul Azul
Código (02) Opciones Control TextBox
Frame OptionButton OptionButton OptionButton OptionButton Label
Propiedad Name Text Name Caption Name Caption Name Caption Name Caption Name Caption Name Caption
Ing. Hermas Herrera Callejas
Valor nnTexto1 ““ nnFrame1 Tamaño Letras nnTamaño8 8 nnTamaño10 10 nnTamaño12 12 nnTamaño14 14 Label1 “Introduzca un texto de prueba en el recuadro anterior y luego seleccione un tamaño y un color para el
RGB(Rojo%, Verde%, Azul%) If nnNegro.Value = True Then nnTexto1.ForeColor = RGB(0, 0, 0) End If If nnRojo.Value = True Then nnTexto1.ForeColor = RGB(255, 0, 0) End If If nnTamaño8.Value = True Then nnTexto1.FontSize = 8 End If Página : 1 de 4
CommandButtom Name Caption CommandButtom Name Caption
nnEliminarElemento Eliminar elemento nnSalir 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 ListBox
Propiedad Name Columns Sorted Label Name Caption TextBox Name Text CommandButtom Name Caption
Valor nnPaises 0 True nnLabel1 Pais seleccionado nnPaisSelec ““ nnAñadirElemento Añadir nuevo element
If nnPaises.ListIndex <> -1 Then nnPaises.RemoveItem nnPaises.ListIndex nnPaisSelec.Text = “ “ End If If nnPaises.ListIndex <> -1 Then nnPaisSelec.Text = nnPaises.List(nnPaises.ListIndex) End If CommandButtom
Caption Eliminar elemento Name nnSalir Caption Salir
Código (04) Lista Combo
Dim nnElementoNuevo As String nnElementoNuevo = InputBox("Ingrese un nueva Fruta:", "Nueva Fruta")
Control ComboBox
Propiedad Name List
Sorted Style Text Label Name Caption TextBox Name Text CommandButtom Name Caption CommandButtom Name
Ing. Hermas Herrera Callejas
Valor
nnFrutas Chirimoya Ciruela Fresa Lúcuma Manzana Damasco Mandarina Naranja Higo True 1-Simple Combo “ “ nnLabel1 Fruta seleccionada nnFrutaSelec “ “ nnAñadirElemento Añadir nuevo elemento nnEliminarElemento
If Len(Trim(nnElementoNuevo)) > 0 Then nnFrutas.AddItem nnElementoNuevo End If If nnFrutas.ListIndex <> -1 Then nnFrutas.RemoveItem nnFrutas.ListIndex nnFrutaSelec.Text = "" End If If nnFrutas.ListIndex <> -1 Then nnFrutaSelec.Text = nnfrutas.List(nnfrutas.ListIndex) Else nnFrutaSelec.Text = "" End If ‘Al modificar combo debe reflejarse en texto nnFrutaSelec.Text = nnFrutas.Text ‘Al modificar texto debe reflejarse en combo nnFrutas.Text = nnFrutaSelec.Text
Página : 2 de 4
Control Form Label
Timer
Timer
Propiedad Caption Name Alignment Caption Font Tag Name Interval Enabled Name Interval Enabled
Valor “Reloj Digital Intermitente” nnHora 2-Center ““ Arial, Negrita, 18 puntos “Mostrar ” nnTimer1 500 True nnTimer2 5000 True
Código (05) Reloj ‘Definiciòn de variable pùblica Public Contador As Integer ‘Cuando se carga el formulario Contador = 0 ‘Para el suceso Timer de nnTimer1 If nnHora.Tag = "Mostrar" Then nnHora.Caption = Time$ nnHora.Tag = "" Else nnHora.Caption = "" nnHora.Tag = "Mostrar" End If ‘Para suceso Timer de nnTimer2 Contador = Contador + 5 Form1.Caption = "Van " & Contador & " segundos"
TextBox TextBox TextBox
Name Text Name Text Name Text
nnText1 “” nnText2 “” nnText3 “”
Código (06) Barras ‘ En cada barra de desplazamiento, para chang e 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 PictureBox Label Label Label HscrollBar
HscrollBar
HscrollBar
Propiedad Name Caption Caption Caption Name LargeChange Max Min SmallChange Value Name LargeChange Max Min SmallChange Value Name LargeChange Max Min SmallChange Value
Ing. Hermas Herrera Callejas
Valor nnColores Rojo Verde Azul nnRojo 10 255 0 2 0 nnVerde 10 255 0 2 0 nnAzul 10 255 0 2 0
‘ En nnVerde para change y scroll Text2.Text = nnVerde.Value ‘Para Suceso click en nnColores ‘ Previamente se debe lograr el color del formulario nnColores.BackColor = RGB(240, 235, 219) ‘Para Suceso doble click en nnColores nnColores.BackColor = RGB(nnRojo.Value, nnVerde.Value, nnAzul.Value)
Página : 3 de 4
&Calculadora &Naipes
nnCalculadora 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 TextBox
Propiedad Name Text
Valor nnTexto1 “ “
Caption
Name
Shortcut
&Formato F&uente Arial Comic Sans MS Courier &Tamaño 10 12 14 &Salir &Varios &Reloj
nnFormato nnFuente nnFuenteArial nnFuenteComicSans nnFuenteCourier nnTamaño nnTamaño10 nnTamaño12 nnTamaño14 LineaSeparadora nnSalir nnVarios nnReloj
Ing. Hermas Herrera Callejas
‘Con doble click despliega el menú contex tual PopupMenu nnFormato
Ctrl + A Ctrl + C Ctrl + O
Página : 4 de 4
Computación para Ingeniería I y La boratorio
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 La boratorio
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. Tipo
Boolean Byte Integer Long Single Double Currency String Date Variant
Carácter de declaración del tipo Rango
Descripción Binario Entero corto Entero (2 bytes) Entero largo (4 bytes) Real simple precisión (4 bytes) Real doble precisión (8 bytes) Número con punto decimal fijo (8 bytes) Cadena de caracteres (4 bytes + 1 byte/car. hasta 64k) Fecha
% & ¡ # @
True o False 0 a 255 -32768 a 32767 -2.147.483.648 a 2.147.483.647 -3.40E+38 a 3.40E+38 -1 .79D+308 a 1.79D+308 -9.22E+14 a 9.22E+14
$
0 a 65500 caracteres
Fecha/ hora; números (ninguno) enteros, reales, o caracteres (16 bytes + 1 byte/car, en cadena de caracteres.)
1 de enero del 100 a 31 de dic de 9999. Indica también la hora, desde 00:00:00 a 23:59:59. F/h: como Date: números: mismo rango del tipo de valor almacenado
Otra forma de declarar una variable es utilizando los caracteres de declaración de tipo. Por ejemplo: Edad% Longitud# Dirección$ TipoInterés@
Variable de tipo Integer. Variable de tipo real de precisión doble Variable de tipo carácter. 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 La boratorio
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. 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.1
Variables Locales.-
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 reinicializa 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 La boratorio
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
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 5.4.4
Variables a Nivel del Módulo.-
Nombre de objeto del módulo (nombre que tendrá el módulo en el programa).
Ing. Hermas Herrera Callejas
Nombre de archivo del módulo.
Página : 4 de 24
Computación para Ingeniería I y La boratorio
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 La boratorio
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. operadores que soporta Visual Basic. Tipo Aritmético
Concatenación Relacional Lógico
La siguiente tabla muestra el conjunto de
Operación Exponenciación Cambio de signo Multiplicación y división División entera Resto de una división entera Suma y resta Concatenar o enlazar Igual, distinto, menor, mayor,.. Negación Conjunción Disyunción (Or inclusive) Disyunción (Or exclusiva) Equivalencia (opuesto a Xor) Implicación
Operador ^ *, / \ Mod +, & =, <>, <, >, <=, >= Not And Or Xor Eqv 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 Radio = 15 Area = PI*Radio^2
5.5.2
‘El valor 3.1416 se asigna a la variable PI ‘El valor 15 se asigna a la variable Radio ‘El producto de PI por Radio al cuadrada se asigna a la variable Area.
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 La bo boratorio
Cap.5–Visual Basic–Herramientas de Programación
5.5.4 Los Operadores Lógicos.- También conocidos como nexos lógicos permiten
combinar combinar dos a más comparaciones comparaciones en una sola comparación comparación compuesta. compuesta. Por ejemplo, ejemplo, la comparación compuesta: (Edad > 18) And (Edad < 45) Devuelve Devuelve True True si ambos lados de And And son True. De otro modo, la expresión expresión devuelve False. En la comparación compuesta: (Edad < 18) Or (Edad > 45) El operador operador Or devuelve devuelve True si alguno alguno de los lados de Or Or es True. Si ambos 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.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 Función Descripció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( Cos()) Devu Devuel elve ve el cose coseno no de de un un áng ángul ulo o en radi radian anes es.. Sintaxis: Cos(número) Donde el argumento número es un número número tipo Double Double o cualquier cualquier expres expresión ión numérica numérica válida válida que expresa un ángulo ángulo en radianes. radianes. La función función Cos toma el ángulo y devuelve devuelve la razón de dos lados lados de un triangulo triangulo rectángulo. rectángulo. La razón es la longitud longitud del lado adyacente adyacente al ángulo dividido dividido por la longitud longitud de la hipotenusa. hipotenusa. Para convertir convertir grados grados en radianes, radianes, se multiplica multiplica los grados por PI/180. PI/180. Para convertir convertir radianes radianes en en grados, grados, se multiplica multiplica los radianes 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 un númer número o tipo tipo Dou Doubl ble e o cual cualqui quier er exp expres resió ión n numérica válida. El valor de la constante e es 2.718282 aproximadamente. Int, Fix Devuelve Devuelve un valor valor del mismo mismo tipo tipo que el que se paso paso como como parámetro parámetro y que contiene 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 un número y devuelven 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 igual a núm númer ero. o. Por Por eje ejemp mplo lo,, Int Int conv convie iert rte e -8.4 -8.4 en en -9 y Fix Fix conv convie iert rte e -8.4 -8.4 a -8. -8. La función Fix(número) es equivalente a: Sgn(número)* Int(Abs(número)) Log() Log() Devu Devuel elve ve el loga logari ritm tmo o nat natura urall (ba (base se e) e) de un núme número ro.. Sintaxis: Log(número) Donde, número es cualqui cualquier er expresió expresión n numérica numérica válida válida mayor mayor que que cero. cero. Se Puede calcular logaritmos en base-n para cualquier número x dividiendo el logaritmo natural de x por el logaritmo logaritmo natural de n de la siguiente manera: Log(x) = Log(x) / Log(n) Sin( Sin()) Devue evuelv lve e el el sen seno o de de un un áng ángul ulo o en radi radian anes es.. Ing. Hermas Herrera Callejas
Página : 7 de 24
Computación para Ingeniería I y La bo boratorio
Cap.5–Visual Basic–Herramientas de Programación
Sintaxis:
Sin(número)
Sgn( Sgn())
Sqr( Sqr())
Tan( Tan())
5.7
Donde el argumento número es un número número tipo Double Double o cualquier cualquier expres expresión ión numérica numérica válida que expresa un ángulo en radianes. La función Sin toma un ángulo ángulo y devuelve 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. Devu Devuel elve ve el sign signo o de un núme número ro.. Sintaxis: Sgn(número) Donde número puede ser cualquier cualquier expresión numérica válida. válida. Si número es Sgn devuelve Mayor que cero 1 Igual a cero 0 Menor que cero -1 Devu Devuel elve ve la raíz raíz cuad cuadra rada da de un núme número ro Sintaxis: Sqr(número) Donde número es un número tipo Double Double o cualquier cualquier expresión expresión numérica numérica válida válida mayor o igual a cero. Devu Devuel elve ve la tan tange gent nte e de un áng ángul ulo o en rad radia iane nes. s. Sintaxis: Tan(número) Donde el argumento número es un número número tipo Double Double o cualquier cualquier expres expresión ión numérica numérica válida válida que expresa expresa un ángulo ángulo en radianes. radianes. La función función Tan Tan toma toma un ángulo ángulo y devuel devuelve ve 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. ángulo.
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 Función Descripción Descripción Asc() Esta función devuelve el código de d e 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 produce un error error en tiempo tiempo de ejecució ejecución. n. Ejemplos: Ejemplos: Código_Car = Asc(“C”) ‘Devuelve 67 Código_Car = Asc(“c”) ‘ Devuelve Devuelve 99 Chr() Chr() Esta Esta funció función n devuel devuelve ve un tipo tipo Strin String g que contie contiene ne el caráct carácter er asoc asociad iado o con con el códi código go de carácter especificado. Sintaxis: Chr(códigocar) Donde códigocar es un número tipo Long que identifica identifica a un un carácter 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 255. Ejemplo: Caracter.Text = Chr(70) ‘Devuelve F InStr() InStr() Esta función función busca busca una una cadena cadena dentro dentro de otra cadena y devuelv devuelve e un número indicando indicando la posición posición en la que encuentra encuentra la la cadena buscada; buscada; en en caso de no no encontrarse devuelve 0. Sintaxis: lnStr([Start ,] ,]string1,string2[,compare]) Donde: Expresión Expresión numérica numérica que estable establece ce la posición posición inicial inicial para para la búsqueda. búsqueda. Si se start 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 puede omitir omitir,, o puede puede ser ser 0 o 1 o 2. Se espec especific ifica a 0 para para realiz realizar ar una comparación comparación binaria. binaria. Se especifica especifica 1 para realizar realizar una comparación comparación de texto texto sin distinguir entre mayúsculas y minúsculas. Se especifica especifica 2 con distinción distinción de mayúsculas mayúsculas y minúsculas. minúsculas. Si se omite omite compare, compare, el valor valor Option Compa Compare re determina el tipo de comparación. Ing. Hermas Herrera Callejas
Página : 8 de 24
Computación para Ingeniería I y La bo boratorio
Cap.5–Visual Basic–Herramientas de Programación
LCase() LCase() Convierte Convierte una una cadena cadena a minúsculas. 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() Left() Devuel Devuelve ve un un número número especi especific ficado ado de carac caracter teres es del del lado lado izquie izquierdo rdo de de una una caden cadena. a. 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() Len() Devuel Devuelve ve el número número de de carac caracter teres es en en una cadena cadena o el núme número ro de bytes bytes neces necesari arios os 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 tipo Varian Variant, t, Len actúa igual que con un tipo String y siempre devuelve el número de caracteres caracteres que contiene. contiene. Se deben especifica especificarr uno (y sólo uno) de los dos argumentos posibles. Mid() Mid() Devu Devuel elve ve un un númer número o espe especi cifi fica cado do de car carac acte tere res s de una una caden cadena. a. 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 numero de caracteres caracteres en string, string, Mid devuelve 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 Devuelve una copia de una cadena determinada determinada sin espacios espacios a la izquierda (LTrim), sin espacios espacios a la derecha (RTrim) o sin espacios espacios ni a la derecha ni a la izquierda (Trim). Sintaxis: LTrim(cadena) RTrim(cadena) Trim(cadena) Right() Right() Devuelve Devuelve un número especificad especificado o de caracte caracteres res del del lado derecho de una cadena. 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( Str()) Esta Esta func funció ión n con convi vier erte te un núme número ro a cade cadena na.. Sintaxis: Str(número) Donde número es un un número número tipo tipo Long Long o contie contiene ne una una expres expresión ión numéri numérica ca váli válida. da. Al 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 La bo boratorio
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 cadena de espacios. 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 para dar formato a la salida y para borrar datos en cadenas de longitud fija. String() String() Devuelve Devuelve un (String) (String) tipo Variant que contie contiene ne una una cadena cadena de de caracte caracteres res que se se repite repite en la longitud longitud especifica especificada. da. Sintaxis: String(número, carácter) Donde: Longitud de la cadena devuelta. número Código de carácter que especifica el carácter o la expresión de cadena Carácter cuyo primer carácter se utiliza para construir la cadena devuelta. Val() Val() Esta Esta funci función ón devu devuelv elve e los número números s conten contenido idos s en en una cadena cadena como como un valo valorr numéri numérico co 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 parte de un número. Los símbolos y caracteres que se consideran a menudo parte de valores valores numéricos, como 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. Av. Los Ruibares”) 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
funcion funciones es de conve conversi rsión ón con los los que que se puede puede conver convertir tir valor valores es a tipos tipos de datos datos específicos. específicos. Por ejemplo, ejemplo, para convertir convertir un valor valor a tipo Integer se utiliza utiliza la función CInt. 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á producirá un error. error. Por ejemplo, ejemplo, si se intenta convertir convertir un tipo Long en un Integer, el tipo Long debe estar en el intervalo válido del tipo de dato Integer. 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:
5.9
Funcion Funciones es de Fecha Fecha y Hora.Hora.-
Func Función ión Descri Descripc pció ión n Date Devuelve lve la fec fecha actual del sistema. Sintaxis: Date Se use también la función función Date para establece establecerr la fecha del sistema. sistema. Ing. Hermas Herrera Callejas
Página : 10 de 24
Computación para Ingeniería I y La boratorio
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 La boratorio
Day()
Month()
Now
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. 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. 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. 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 La boratorio
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 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
Estructuras de Decisión.-
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 La boratorio
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 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 5.10.1.3
Select Case.-
Ing. Hermas Herrera Callejas
Página : 14 de 24
Computación para Ingeniería I y La boratorio
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 La boratorio
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 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. b) Do...Loop while.-
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 La boratorio
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 La boratorio
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 La boratorio
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. 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. 5.11.1
La ventana de código debe tener un aspecto similar al siguiente:
Entre Public Sub y End Sub se digita el cuerpo del 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.2
Edición de un Procedimiento. -
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 5.11.3
Procedimientos Function.-
Donde: Nombre: Argumentos As tipo Expresión Sentencias función. Exit Function
Es el nombre de la función Lista de variables utilizadas por la función. En esta cláusula se especifica el tipo de valor que devuelve la función (lnteger, Long, Single, Double, Currency, String o Variant). 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. Bloque de instrucciones que especifican la tarea que debe llevar a cabo la 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 La boratorio
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 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 5.11.4
Procedimientos Sub.-
Ing. Hermas Herrera Callejas
Página : 20 de 24
Computación para Ingeniería I y La boratorio
Cap.5–Visual Basic–Herramientas de Programación
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.5
Argumentos por Referencia y por Valor.-
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 La boratorio
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] Edad[1] Edad[2] ... Edad[39]
24 34 28 ... 34
Nombre del array: Subíndice Contenido
Edad [1], [2]... 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 La boratorio
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 La boratorio
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 ...&Nuevo ...&Abrir... ...&Guardar como... ...&Salir
MenuArchivo OpciónNuevo OpciónAbrir OpciónGuardarComo OpciónSalir
Ctrl+N Ctrl+A Ctrl+G 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 Nombres String Dirección String Teléfono String Edad Integer Se utiliza el siguiente código:
50 50 50 7
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 n-archivo longitud reg
es la ruta y el nombre del archivo. es un número entre 1 - 255 para referenciar al archivo. 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 n-registro variable
es el número con el que se abrió el archivo. es el número del registro. Si se omite se toma el número siguiente al utilizado en la última sentencia Put 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 n-registro
es el número con el que se abrió el archivo. 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. Esta variable almacena los datos del registro leído del archivo.
variable
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 posición
es el número con el que se abrió el archivo. 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 Título Autor Editorial Año_Publ Stock_Actual Stock_Mínimo Precio Sw
String String String String lnteger lnteger lnteger Double String
5 50 50 50
Ing. Hermas Herrera Callejas
1 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
ListBox Name Label Caption Label Caption Label Caption Label Caption Label Caption Label Caption Label Caption Label Caption Label Caption Array de controles Name TextBox Text índex CommandButton Name Caption Enabled CommandButton Name Caption Enabled CommandButton Name Caption Enabled CommandButton Name Caption CommandButton Name Caption
Valor
Código Seleccione código Código Título Autor Editorial Año Publicación. Stock Actual. Stock Mínimo. Precio Campo ““ 0, 1, 2…7 Guardar Guardar False Modificar Modificar False Eliminar Eliminar False Ingresar Ingresar Salir 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 Registro anterior
Ultimo registro de la base de datos 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
Control
Propiedad
Valor
Label
Caption Font Caption Caption Caption Caption Caption Caption Caption Caption Caption Nombre Nombre Nombre Nombre Nombre Nombre Nombre Nombre Nombre
Clientes Arial, Negrita, 14 Id Cliente Nombre Compañía Nombre Contacto Dirección Ciudad Región País Teléfono Fax IdCliente NombreCompañia NombreContacto Dirección Ciudad Región País Teléfono Fax
Label Label Label Label Label Label Label Label Label TextBox TextBox TextBox TextBox TextBox TextBox TextBox TextBox TextBox
Cap.6–Visual Basic–Uso de Archivos y Bases de Datos
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 DataSource DataField Nombre DataSource DataField Nombre DataSource DataField Nombre DataSource DataField Nombre DataSource DataField Nombre DataSource DataField
IdCliente Datal IdCliente NombreCompañia Datal NombreCompañia NombreContacto Datal NombreContacto Dirección Datal Dirección Ciudad Data1 Ciudad Región Datal Región
TextBox TextBox TextBox TextBox TextBox
Ing. Hermas Herrera Callejas
Página : 15 de 17
Computación para Ingeniería I y Laboratorio
TextBox TextBox TextBox
Nombre DataSource DataField Nombre DataSource DataField Nombre DataSource DataField
Cap.6–Visual Basic–Uso de Archivos y Bases de Datos
País Datal País Teléfono Data1 Teléfono Fax Data1 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) Cierra el archivo abierto Ejm: Close #1 •
•
• •
•
Caption &Archivo ...&Nuevo ...&Abrir... ...&Guardar como... ...&Salir
Name MenuArchivo OpciónNuevo OpciónAbrir OpciónGuardarComo OpciónSalir
Shortcut
•
Ctrl+N Ctrl+A Ctrl+G Ctrl+S
Al hacer click en el menú Guardar como: Muestra el cuadro de diálogo con método ShowSave Ejm: Dialogo.ShowSave Abre el archivo seleccionado en modo Output como Nro 1 Ejm: Open Dialogo.FileName For Output As #1 Escribe el contenido del cuadro de texto en el archivo Ejm: Print #1, Texto.Text Cierra el archivo abierto Ejm: Close #1 •
•
Para incluir el control cuadro de diálogo comun en el cuadro de herramientas, seleccionar el comando Componentes del menú Proyecto, habilite la casilla Microsoft Common Dialog Control 6.0 y haga clic en Aceptar. En el cuadro de herramientas, haga doble clic en el control CommonDialog.
•
•
Al cargar el formulario: Centrar el formulario en la pantalla Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2 Definir fuente por defecto, Arial para el cuadro de texto Definir el tamaño por defecto de la fuente en 10
Al hacer click en el menu Salir Finaliza el programa
•
•
• •
•
(09) Archivos Aleatorio •
• • •
o o •
•
o
Crear un arreglo de controles llamado CAMPOS Comandos Guardar, Modificar y Eliminar inhabilitados en tiempo de desarrollo Estructura del archivo (crear a nivel módulo desde menú proyecto) Nom campo Tamaño Tipo de dato Cédula 10 posiciones Alfanumérico Paterno 20 posiciones Alfanumérico Materno 20 posiciones Alfanumérico Nombres 30 posiciones Alfanumérico Dirección 40 posiciones Alfanumérico Fecha_Nac 8 posiciones Fecha Sexo 1 posición Alfabética Switch 1 posición Alfabética Luego de definir la estructura, definir una variable de ese tipo que contendrá los registros del archivo Incorporar Cuadro de Diálogo Común Al cargar el formulario Centrar formulario en la pantalla
o o • • •
• • •
• • •
Abre el archivo en modo Random (Open archivo For Random As #n-arch 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) Lee un registro (Get [#]n-archivo, [n-registro], variable) 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 Leer registro Si el CI del item seleccionado es igual al CI del registro Mueve los campos del registro a los textos del formulario Inhabilita el comando Guardar Inhabilita el comando Modificar Habilita el comando Eliminar Al presionar el comando Ingresar Ejecutar el procedimiento LimpiarDatos Habilita el comando Guardar Inhabilita los comandos Modificar y Eliminar Al presionar Guardar toma la información del formulario, arma el registro y lo guarda Mueve los campos del formulario a los campos del registro Pone 1 en el Switch Calcula el número de registros existentes en el archivo
•
Ing. Hermas Herrera Callejas
Página : 1 de 2
•
• • •
•
o
o
o o
•
o o
Guarda el registro en la siguiente posición disponible del archivo (Put [#]n-archivo, [n-registro], variable) Vuelve a llenar la lista del ComboBox Ejecuta el procedimiento LimiarDatos Inhabilita el comando Guardar Al presionar el comando Modificar Iterativamente hasta encontrar el registro apropiado (o para todo el archivo) Leer un registro del archivo (Get [#]n-archivo, [n-registro], variable) Si el CI del formulario es igual al CI del registro en el archivo Mover los campos del formulario a los campos del registro Guardar el registro en el archivo (Put [#]n-archivo, [nregistro], variable Inhabilitar el comando Modificar LimpiarDatos Al presionar el comando Eliminar se le pone un 0 en el Switch del registro Iterativamente para todo el archivo (o hasta encontrar el registro apropiado) Leer un registro Si el CI del formulario es igual al CI del registro en el archivo
• • • • •
Poner 0 en Switch Guardar el registro de nuevo Llenar la lista del ComboBox LimpiarDatos Inhabilitar los comandos Eliminar y Modificar Al modificar cualquier campo del formulario El Comando Modificar habilitarlo o inhabilitarlo de modo que sea lo contrario del comando Guardar en cuanto a su habilitación Inhabilitar el comando Eliminar Al presionar la tecla ENTER (KeyAscii = 13) y para los índices menores a 6 el cursor debe colocarse en el siguiente campo (campos(i+1).SetFocus), en el último debe volver al primero
o
LimpiarDatos Limpia todos los cuadros de texto Iterativamente y para cada campo Mueve blancos al campo Ubica el cursor en el primer campo Al concluir Cierra el archivo Termina el programa
(10) Editor de Datos
TextBox
Aplicación que permitirá editar datos de la tabla Clientes contenida en la base de datos access NWIND .
TextBox
TextBox
TextBox
TextBox
TextBox
TextBox
Control Label
Label Label Label Label Label Label Label Label Label TextBox
TextBox
Propiedad Caption Font Caption Caption Caption Caption Caption Caption Caption Caption Caption Nombre DataSource DataField Nombre DataSource DataField
Ing. Hermas Herrera Callejas
Valor CLIENTES Arial, Negrita, 14 Id Cliente Nombre Compañía Nombre Contacto Dirección Ciudad Región País Teléfono Fax IdCliente Data1 IdCliente NombreCompañia Data1 NombreCompañía
Data
Nombre DataSource DataField Nombre DataSource DataField Nombre DataSource DataField Nombre DataSource DataField Nombre DataSource DataField Nombre DataSource DataField Nombre DataSource DataField Name Connect DatabaseName RecordSource Caption
NombreContacto Data1 NombreContacto Dirección Data1 Dirección Ciudad Data1 Ciudad Región Data1 Región País Data1 País Teléfono Data1 Teléfono Fax Data1 Fax Data1 Access C:\ruta archivo\NWIND Clientes “Haga clic para controlar el despliegue”
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
Stretch=False
Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos
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 Stretch
1- Fixed Single True
Luego de establecer las propiedades de los controles Image, asignar las siguientes propiedades al botón de comando Command1: CommandButton
Name Caption
Mostrar 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
Ing. Hermas Herrera Callejas
y
la
aplicación
con
nombres
SensibilidadCursor.frm
y
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
N
Cursiva
K
Subrayado
S
NegritaSob
CursivaSob
SubrayadoSob
NS
KS
SS
NegritaBaj
NB
CursivaBaj
SubrayadoBaj
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) Align
Nombre del control usado en el código. Permite que el control PictureBox se sitúe automáticamente en la parte superior, inferior, izquierda o derecha del formulario.
Valor
AutoRedraw
AutoSize DrawStyle
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. 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. Establecer esta propiedad a True para hacer que el control se ajuste al tamaño de la imagen. Determina el estilo de la línea para el resultado de métodos gráficos. Presenta las siguientes opciones:
Valor
DrawWidth FillColor FillStyle
Height Picture ScaleHeight ScaleLeft ScaleMode ScaleTop ScaleWidth Width
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. Devuelve o establece el ancho de la línea para el resultado de métodos gráficos. Devuelve o establece el color usado para rellenar figuras, círculos y cuadros. Devuelve o establece el estilo de relleno de una figura. Presenta las siguientes opciones:
Valor
Font ForeColor
Descripción
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. Facilita la manipulación de los atributos de texto. Devuelve o establece el color de primer plano utilizado para mostrar textos y gráficos en un objeto. Devuelve o establece el alto del control. Devuelve o establece el gráfico que se mostrará en el control. Devuelve o establece el número de unidades verticales del interior de un objeto. Devuelve o establece la coordenada horizontal para el borde izquierdo de un objeto. 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. Devuelve o establece la coordenada vertical del borde superior de un objeto. Devuelve o establece el número de unidades horizontales de medida del interior de un objeto. 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 1 2 3 4 5 6 7
Sistema de coordenadas definido por el usuario. Twips (escala por defecto). 1,440 twips por pulgada. Puntos. 72 puntos por pulgada Píxeles. Un píxel es la unidad más pequeña de resolución de un monitor. Caracteres. Un carácter es un área de 120 Twips de ancho y 240 twips de alto. Pulgadas. 1 pulgada es igual a 25,4 milímetros. Milímetros 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
Label Label TextBox
Caption Caption Nombre Text TextBox Nombre Text UpDown Name BuddyControl BuddyProperty Increment Max Min SyncBuddy UpDown Name BuddyControl BuddyProperty Increment Max Min SyncBuddy PictureBox Nombre BackColor CommandButton Nombre Caption CommandButton Nombre Caption
Valor
Valor más bajo Valor más alto Min ““ Max ““ UpDown1 Min Text 1 10 0 True UpDown2 Max Text 1 160 0 True Gráfico &H80000009& Dibujar Dibujar Salir 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 Doub le ‘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 Label Label Label TextBox
Caption Caption Caption Caption Name MaxLength Text Name
Trazado de Líneas Introduzca los datos requeridos Horizontales Verticales Horiz 4 ““ Vert.
TextBox
Ing. Hermas Herrera Callejas
Página : 13 de 21
Computación para Ingeniería I y Laboratorio
UpDown
UpDown
PictureBox CommandButton CommandButton CommandButton CommandButon CommandButon
MaxLength Text BuddyControl BuddyProperty Increment Max Min SyncBuddy BuddyControl BuddyProperty Increment Max Min SyncBuddy Name Backcolor Name Caption Name Caption Name Caption name Caption Name Caption
Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos
4 ““ Horiz Text 1 1600 1 True Vert Text 1 1600 1 True Gráfico Blanco TrazarHorizontales Trazar Horizontales TrazarVerticales Trazar Verticales TrazarDiagonales Trazar Diagonales LimpiarCuadro Limpiar Cuadro Salir 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
Form Label Label TextBox
Caption Caption Caption Name Text TextBox Name Text UpDown BuddyControl BuddyProperty Increment Max Mim SyncBuddy PictureBox Name Backcolor CommandButton Name Caption Ing. Hermas Herrera Callejas
Valor Circunferencias Circulos Aspecto Círculos ““ Aspecto ““ Circulos Text 1 230 1 True Gráfico Blanco Trazar Trazar Página : 16 de 21
Computación para Ingeniería I y Laboratorio
CommandButton Name Caption CommandButton Name Caption
Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos
Limpiar Limpiar Salir 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
BorderWidth BorderColor Visible
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. Permite establecer el ancho del borde. Permite colorear la línea con cualquiera de los colores estándar de Visual Basic. 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 FillColor FillStyle
Permite especificar un color para el borde de la figura. Permite especificar el color de relleno de la figura. Permite establecer un patrón para el color de relleno. Presenta las siguientes opciones:
Valor
Descripción
0-Solid 1-Transparent 2-Horizontal Line 3-Vertical Line 4-Upward Diagonal 5-Downward Diagonal 6-Cross 7-Diagonal Cross
Sólido. Transparente. Línea horizontal. Línea vertical. Diagonal hacia arriba. Diagonal hacia abajo. Cruz. Diagonal cruzado.
Ing. Hermas Herrera Callejas
Página : 18 de 21
Computación para Ingeniería I y Laboratorio
Shape
Visible
Cap.7–Visual Basic–Controles que muestran Imágenes y Gráficos
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. 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 Label Label ComboBox
Caption Caption Caption Name Style List
ComboBox
Name Style List
Frame Shape CheckBox CommonDialog CommandButton
Caption Nombre Nombre Nombre Nombre Caption Nombre Caption
Figuras geométricas Figura Estilo relleno Figura 2-Dropdown List Rectángulo Cuadrado Ovalo Círculo Rectángulo redondeado Cuadrado redondeado EstiloRelleno 2-Dropdown List Sólido Transparente Líneas horizontales Líneas verticales Diagonales ascendentes Diagonales descendentes Cruces Cruces diagonales Muestra Forma CasillaOcultar DiálogoColor BotónColor Color de relleno Salir Salir
CommandButton
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 CommandButton
BorderStyle Stretch Name Caption
1- Fixed Single True Mostrar “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 i magen, é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 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 control kb insértele el icono CursivaBaj. Al control sb insértele el icono SubrayadoBaj. ‘ Agregue 4 controles Image al formulario, con los nombres:. Boton, f, fs y fb
Ing. Hermas Herrera Callejas
Salir SalirSob SalirBaj La interfaz de usuario debe tener el siguiente aspecto:
‘ Al cargar el formulario Lo Sitúa en el centro de la pantalla • Move (Screen.Width - Wídth) \ 2, (Screen.Height - Height) \ 2 • Carga imágenes en matriz de controles Botón(0).Picture = n.Picture Botón(1).Picture = k.Picture Botón(2).Picture = s.Picture Botón(3).Picture = f.Picture Página : 1 de 3
‘ Al mover el mouse por el formulario: • Cambia imágenes a normales If Botón(0).Picture = ns.Picture Then Botón(0).Picture = n.Picture End If If Botón(1).Picture = ks.Picture Then Botón(1).Picture = k.Picture End If If Botón(2).Picture = ss.Pictune Then Botón(2).Picture = s.Pictune End If If Botón(3).Picture = fs.Picture Then Botón(3).picture = f.Picture End If ‘ Al mover el mouse por el arreglo Boton se eleven los iconos Select Case Index Case 0 If Botón(0).Picture = n.Picture Then Botón(0).Picture = ns.Picture End If If Botón(1).Picture = ks.Picture Then Botón(1).Picture = k.Picture End If If Botón(2).Picture = ss.Picture Then Botón(2).Picture = s.Picture End If Case 1 If Botón(0).Picture = ns.Picture Then Botón(0).Picture = n.Picture End If If Botón(1).Picture = k.Picture Then Botón(1).Picture = ks.Picture End If If Botón(2).Picture = ss.Picture Then Botón(2).Picture = s.Picture End If Case 2 If Botón(0).Picture = ns.Picture Then Botón(0).Picture = n.Picture End If
If Botón(1).Picture = ks.Picture Then Botón(1).Picture = k.Picture End If If Botón(2).Picture = s.Picture Then Botón(2).Picture = ss.Picture End If Case 3 Botón(3).Picture = ss.Picture End Select ‘ Al hacer clic en un icono deben verse sus efectos en el texto Select Case Index Case 0 If Botón(0).Picture = ns.Picture Then Botón(0).Picture = nb.Picture Label1.FontBold = True Else If 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 Else If 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 ‘Al Mouse Up en el icono Salir finaliza el programa 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 SyncBuddy True ‘ Al cargar el formulario centrarlo en la pantalla ‘ Al presionar el commando Trazar debe dibujar la función seno
‘ La interface del usuario contiene 2 controles UpDown (nuevos) ‘ Para usar UpDown debemos habilitar el componente “Microsoft Common Controls-2.5.0(SP2)” o bien el “Microsoft Common Controls-2.6.0”. Las propiedades principales son las siguientes Control Propiedad Valor TextBox Name Min Text “” TextBox Name Max Text “” UpDown Name UpDown1 BuddyControl Min Ing. Hermas Herrera Callejas
Dim varx, funy, xmin, xmax, ymin, ymax As Double Gráfico.Cls Gráfico.ScaleMode = 3 xpixeles = Gráfico.ScaleWidth xmin = Val(Min) xmax = Val(Max)
Página : 2 de 3
‘Se buscan valores máximos y mínimos en términos de pixeles For i = 1 To xpixeles varx = xmin + (xmax - xmin) * i / xpixeles funy = Sin(varx) If funy > ymax Then ymax = funy If funy < ymin Then ymin = funy Next i ‘Se define nueva escala basada en las dimensiones introducidas Gráfico.Scale (xmin, ymin)-(xmax, ymax) ‘Se procede a trazar la curva For i = 1 To xpixeles varx = xmin + (xmax - xmin) * i / xpixeles Gráfico.PSet (varx, Sin(varx)) Next i
‘ Al presionar Salir debe terminar el programa ‘ Al presionar una tecla en el cuadro de texto Max
(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) NY1 = Grafico.Height / (lineas + 1) Y1 = NY1 X1 = 0 X2 = Grafico.Width - NX2 Y2 = Grafico.Height For i = 1 To lineas Grafico.Line (X1, Y1)-(X2, Y2) Y1 = Y1 + NY1 X2 = X2 - NX2 Next i ‘ Al clic en Circunferencias traza las circunferencias requeridas ‘ con centro en medio del PintureBox y según valor de aspecto aspec = Val(Aspecto) If aspec = 0 Then aspec = 1 x = Grafico.Width / 2 y = Grafico.Height / 2 Ncirc = Val(Circulos) NR1 = y / Ncirc radio = NR1 For i = 1 To Ncirc Grafico.Circle (x, y), radio, , , , aspec radio = radio + NR1 Next i ‘ Al clic en Diagonales principales traza las diagonales principales ‘ que unan los 4 vértices ‘ Al clic en Limpiar debe limpiar el PintureBox ‘ Al clic en Salir debe terminar el programa
‘ Al cargar el formulario debe centrarlo en la pantalla ‘ En los cuadros de texto solo debe permitirse ingreso de números ‘ (0 a 9), caso contrario debe sonar la alarma (Beep) y el cursor ‘ permanecer en su lugar (KeyAscii=0 ‘ En Aspecto solo debe aceptar números (0 a 9) y el punto decimal, ‘ caso contrario sonar la alarma y el cursor permanecer en su lugar ‘ Al clic en Horizontales traza las líneas horizontales requeridas Dim lineas As Integer lineas = Val(Horiz) X1 = 0 NY1 = Grafico.Height / (lineas + 1) Y1 = NY1 For i = 1 To lineas Grafico.Line (X1, Y1)-(Grafico.Width, Y1) Y1 = Y1 + NY1 Next i ‘ Al clic en Verticales traza las líneas verticales requeridas Dim lineas As Integer lineas = Val(Vert) Y1 = 0 NX1 = Grafico.Width / (lineas + 1) X1 = NX1 For i = 1 To lineas Grafico.Line (X1, Y1)-(X1, Grafico.Height) X1 = X1 + NX1 Next i ‘ Al clic en Diagonal sup traza diagonales superiores requeridas Dim lineas As Integer lineas = Val(Diagi)
Ing. Hermas Herrera Callejas
Si la tecla es Enter (Ascii 13) debe ubicarse el cursor en Min Si la tecla no es un número (0 a 9) o un signo menos (-) o el punto decimal (.) debe sonar la alarma (Beep) y el cursor permanecer en su lugar (KeyAscii = 0) ‘ Al presionar una tecla en el cuadro de texto Min Si la tecla es Enter (Ascii 13) debe ubicarse el cursor en Max Si la tecla no es un número (0 a 9) o un signo menos (-) o el punto decimal (.) debe sonar la alarma (Beep) y el cursor debe permanecer en su lugar (KeyAscii = 0)
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 ShowOpen ShowSave ShowColor ShowFont ShowPrinter ShowHelp
Acción Muestra el cuadro de diálogo Abrir Muestra el cuadro de diálogo Guardar como Muestra el cuadro de diálogo Color Muestra el cuadro de diálogo Fuente Muestra el cuadro de diálogo Imprimir 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 CancelError
DefaultExt
Filter
FilterIndex
FileName
Descripción 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. 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. 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” 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. 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
FileTitle MaxFileSize
InitDir
DialogTitle
Cap.8–Visual Basic–Cuadros de Diálogo Comunes
utilizar para abrir el archivo y leer o escribir en él. Esta propiedad devuelve sólo el nombre del archivo que se va a abrir o guardar, sin incluir la ruta de acceso. 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. 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 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 cdIOFNReadOnly
Descripción 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 FontName FontBold FontItalic FontStrikethru FontUnderline FontSize Color
Descripción Devuelve el nombre de la fuente seleccionada. Será True si tiene puesto el atributo “Negrita”. Será True si tiene puesto el atributo “Cursiva”. Tendrá el valor True si se seleccionó el efecto “Tachado”. Asignar la constante CFEffects a la propiedad Flags para usar este efecto. Tendrá el valor True si se seleccionó el efecto “Subrayado”. Asignar la constante CFEffects a la propiedad Flags para usar este efecto. Devuelve el tamaño de la fuente seleccionada. 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 cdICFTTOnIy cdICFScreenFonts
Descripción Hace que el cuadro de diálogo muestre sólo fuentes True Type. 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
cdICFNoSizeSel cdICFNoStyleSel cdICFHelpButton
Cap.8–Visual Basic–Cuadros de Diálogo Comunes
No seleccionar el tamaño de fuentes. No seleccionar ningún estilo. 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 Copies (Copias) FromPage (Desde la página) ToPage (Hasta la página) HDC PrinterDefault
Descripción Especifica el número de copias que se van a imprimir. Especifica la página en la que comenzará la impresión Especifica la página en la que se detendrá la impresión Específica el contexto del dispositivo de la impresora seleccionada 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 cdIPDAIIPages cdIPDPageNums cdIPDNoPageNums cdIPDSelection cdIPDNoSelection cdIPDDisablePrintToFile cdIPDHldePrintToFile cdIPDPrintToFile
Descripción Devuelve o establece el estado de la opción Todo. Devuelve o establece el estado de la opción Páginas. Desactiva el botón de opción Páginas. Devuelve o establece el estado de la opción Selección. Desactiva el botón de opción Selección. Desactiva la casilla de activación Imprimir en un archivo. Oculta la Casilla de activación Imprimir en un archivo. 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 cdCCFullOpen
Descripción 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 1. 2. 3.
Cap.8–Visual Basic–Cuadros de Diálogo Comunes
Hacer clic en la opción Nuevo proyecto del menú Archivo para crear un nuevo proyecto. Hacer clic sobre el formulario para seleccionarlo. 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 &Archivo Archivo ....&Nuevo ArchivoNuevo ....&Abrir ArchivoAbrir ....LíneaSeparadoral ....&Guardar ArchivoGuardar ....LíneaSeparadora2 ....&Imprimir ArchivoImprimir ....LíneaSeparadora3 ....&Salir ArchivoSalir &Edición Edición ....&Copiar EdiciónCopiar ....C&ortar EdiciónCortar ....&Pegar EdiciónPegar &Formato Formato ....&Fuente FormatoFuente 4 Si el cuadro de herramientas
Shortcut Ctrl+N Ctrl+A Ctrl+G Ctrl+I Ctrl+S Ctrl+C Ctrl+O Ctrl+P Ctrl+F
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 Form
TextBox
Propiedad Name Caption Icon Name Multiline ScrollBars Text
Valor Forml Mi Editor C:\Gráficos\Note14.icon Text1 True 3-Both (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 ImageList Appearance Style Ing. Hermas Herrera Callejas
Valor ImageList1 1-cc3D 1-tbrFlat 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 Imagenl Imagen2 Imagen3 Imagen4 Imagen5 Imagen6 Imagen7
Index 1 2 3 4 5 6 7
Key BotónNuevo BotónAbrir BotónGuardar BotónImprimir BotónCopiar BotónCortar BotónPegar
ToolTipText Nuevo Abrir Guardar Imprimir Copiar Cortar Pegar
Image Enables 1 2 3 4 5 Deshabilitado 6 Deshabilitado 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 Panel 1 Panel 2 Panel 3
Index 1 2 3
MinimumWidth 1800 1440 144000
Picture C:\Graficos\Nota.bmp C:\Graficos\Mano_tecla.bmp 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 e l 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 Form
Label
Label
PictureBox
Propiedad Name Caption BorderStyle BackColor Name AutoSize BackStyle BorderStyle Caption Font ForeColor Name AutoSize BackStyle BorderStyle Caption Font ForeColor Name BorderStyle Visible
Valor Form1 Imágenes 5-Sizable ToolWindow &H80000001& Label1 True 0-Transparent 0-None Abrir imagen Comic Sans MS &H000000FF& LabeI2 True 0-Transparent 0-None Salir Comic Sans MS &H000000FF& Picture1 0-None 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 ....&Nuevo ArchivoNuevo Ctrl+N ....A&brir 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+X ....&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)
Propiedad ImageList Appearance Style Index Imagenl 1 Imagen2 2 Imagen3 3 Imagen4 4 Imagen5 5 Imagen6 6 Imagen7 7
Valor ImageListl 1-cc3D 1-tbrFlat Key ToolTipText BotónNuevo Nuevo BotónAbrir Abrir BotónGuardar Guardar BotónImprimir Imprimir BotónCopiar Copiar BotónCortar Cortar BotónPegar Pegar
Image 1 2 3 4 5 6 7
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 Panel 3
2 3
1440 C:\Graficos\Mano_tecla.bmp 144000 C:\Graficos\Relojl .bmp
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 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 o desactiva la opción Pegar del menú Edición 'dependiendo de si el portapapeles contiene o no texto EdiciónPegar.Enabled = (Len(Clipboard.GetText()) > 0) 'Desactiva la opción Fuente del menú Formato FormatoFuente.Enabled = False 'Habilita o deshabilita el botón pegar de la barra de herramientas 'dependiendo de si el portapapeles 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 Private Sub Form_Resize() Text1.Top = 440 Text1.Left = 0 Text1.Width = ScaleWidth Text1.Height = ScaleHeight - 740 End Sub Private Sub ArchivoNuevo_Click() ‘ Call llama al procedimiento Nuevo Call Nuevo End Sub Private Sub ArchivoAbrir_Click() Call Abrir ‘CalI llama al procedimiento Abrir. End Sub Private Sub ArchivoGuardar_Click() Ing. Hermas Herrera Callejas
Call Guardar ‘Call llama al procedimiento Guardar. End Sub Private Sub ArchivoImprimir_Click() Call Imprimir ‘Call 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 llama al procedimiento Copiar Call Copiar End Sub Private Sub EdiciónCortar_Click() ‘Call llama al procedimiento Cortar Call Cortar End Sub Private Sub EdiciónPegar_Click() Call Pegar ‘Call llama al procedimiento Pegar End Sub Private Sub FormatoFuente_Click() ‘Call llama al procedimiento Fuente Call Fuente End Sub Private Sub Toolbar1_ButtonClick(ByVal MSComctlLib.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
Button
As
Public Sub Nuevo() 'Procedimiento para editar un nuevo archivo '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 Form1.Caption = "(Sin título)" 'Borra el contenido actual del cuadro de texto Text1 Text1.Text = " " Text1.FontName = "Arial" 'Establece la fuente de tipo arial Página : 2 de 6
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) 'Desactiva la propiedad FontUnderline(Subrayado) Text1.FontUnderline = False 'Desactiva la propiedad FontStrikethru(Tachado) Text1.FontStrikethru = False 'Establece un color (negro) para el texto Text1.ForeColor = RGB(0, 0, 0) 'Desactiva el indicador de Modificado Modificado = False 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 'Si ocurre un error, ejecutar ManipularErrorAbrir On Error GoTo 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 'Generará un error cuando pulse cancelar en diálogo abrir .CancelError = True 'Filtros .Filter = "Archivo de texto|*.txt|Todos los archivos|*.*" 'Filtro por defecto .FilterIndex = 2 'Extensión por defecto que se añadirá al nombre del archivo .DefaultExt = "Txt" 'El usuario solo podrá introducir nombres de archivos existentes .Flags = cdlOFNFileMustExist 'Visualiza el cuadro de diálogo Abrir .ShowOpen 'Obtiene un número de canal libre Canal = FreeFile Open .FileName For Input As Canal 'Muestra el nombre del archivo en la barra de título del formulario Form1.Caption = .FileName End With 'Borra el texto actual del control Text1 Ing. Hermas Herrera Callejas
Text1.Text = " " 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 'Borra el mensaje del primer panel de la barra de estado StatusBar1.Panels(1).Text = " " 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 'Muestra el cuadro de diálogo Guardar como .ShowSave 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 Página : 3 de 6
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 'Muestra el cuadro de diálogo Imprimir .ShowPrinter copias = .Copies End With 'Fijar el número de copias Printer.Copies = copias 'Tomar el estilo de texto Printer.Font = Text1.Font 'Imprimir el texto actual Printer.Print Text1.Text 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 'Activa la opción Pegar del menú Edición EdiciónPegar.Enabled = True 'Activa el boton Pegar de la barra de erramientas Toolbar1.Buttons(7).Enabled = True End Sub Public Sub Cortar() 'Una copia del texto seleccionado en el cuadro de texto 'Text1 pasa al portapapeles (Clipboard) Clipboard.SetText Text1.SelText 'Borra el texto seleccionado Text1.SelText = "" 'Inhabilita la opción Copiar del menú Edición EdiciónCopiar.Enabled = False 'Habilita la opción Pegar del menú Edición EdiciónPegar.Enabled = True 'Inhabilita la opción Fuente del menú Formato Ing. Hermas Herrera Callejas
FormatoFuente.Enabled = False 'Inhabilita el boton Copiar de la barra de herramientas Toolbar1.Buttons(5).Enabled = False 'Inhabilita el boton Cortar de la barra de herramientas Toolbar1.Buttons(6).Enabled = False 'Habilita el boton Pegar de la barra de herramientas Toolbar1.Buttons(7).Enabled = True 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 'Fijar el estilo actual en el cuadro de diálogo .FontName = Text1.FontName .FontSize = Text1.FontSize .FontBold = Text1.FontBold .FontItalic = Text1.FontItalic .FontUnderline = Text1.FontUnderline .FontStrikethru = Text1.FontStrikethru .Color = Text1.ForeColor .Flags = cdlCFBoth Or cdlCFEffects 'Muestra el cuadro de diálogo Fuente .ShowFont 'Aplica al cuadro de texto Text1 el estilo elegido Text1.FontName = .FontName 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 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 Página : 4 de 6
Else Call Guardar End If End If End Sub Private Sub Text1_Change() Modificado = True End Sub 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
(17) Visualiza Imágenes
Control Form1
Propiedad Name Caption BorderStyle BackColor Label1 Name AutoSize BackStyle BorderStyle Caption Font ForeColor Label2 Name AutoSize BackStyle BorderStyle Caption Font ForeColor PictureBox Name BorderStyle Visible
Valor Form1 Imágenes 5-Sizable ToolWindow &H80000001& Labell True 0-Transparent 0-None Abrir imagen Comic Sans MS &H000000FF& LabeI2 True 0-Transparent 0-None Salir Comic Sans MS &H000000FF& Picturel 0-None False
Private Sub Label1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) On Error GoTo ManipularErrorAbrir 'Limpia el control Picture Box Ing. Hermas Herrera Callejas
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) '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
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 'Asigna el color rojo al control Label1 Label1.ForeColor = &HFF& Exit Sub ManipularErrorAbrir: If Err.Number = 32755 Then Exit Sub Else MsgBox "Error desconocido al abrir el archivo" End If End Sub 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 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 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 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. ColW idth 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
ScrollBars
SelectionMode
FillStyle
CAP 9 – Visual Basic – El control MSFlexGrid
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. 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. 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 EnterCell LeaveCell
Descripción Este suceso se produce cuando se selecciona una nueva celda. 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 CellFontBold CellFontItalic CellFontUnderlíne CellAlignment
CellFontName
Formato Establece el estilo negrita al texto de las celdas seleccionadas. Ejemplo: MSFlexGrid1.CellFontBold = True Establece el estilo cursiva al texto de las celdas seleccionadas. Ejemplo: MSFlexGrid1.CellFontItalic = True Establece el estilo subrayado al texto de las celdas seleccionadas. Ejemplo: MSFlexGrid1.CellFontUnderline = True 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 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
CellFontSize CellForeColor CellBackColor ColAlignment
CAP 9 – Visual Basic – El control MSFlexGrid
Establece el tamaño de la fuente, en puntos. Ejemplo: MSFlexGrid1 .CellFontSize = 14 Establece el color del texto de las celdas seleccionadas. Ejemplo: MSFlexGrid1.CellForeColor = “Red” Establece el color del fondo de las celdas seleccionadas. Ejemplo: MSFIexGrid1.CellBackColor = “Blue” 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: P
Ci (1 i )
(1 i )
N
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 Name AllowUserResizing Cols FormatString Rows ScrollBars
Valor Rejilla 1- FlexResizeColumns 7 " | > Capital|>Interes| >Amortización|>Cuotas| |" 20 3-FlexScrollBarBoth
7. Añadir tres controles Label y tres controles TextBox al formulario. Asignar estas propiedades: Control Form Label Label Label TextBox TextBox TextBox
Propiedad Name Caption Name Caption Name Caption Name Caption Name Text Name Text Name Text
Valor Form1 Plan de pagos Label1 Capital Label2 Nro de periodos (Plazo) Label3 Interés por periodo Capital Periodo Interés
Completar a 9 los controles Image en el formulario y asignarles los siguientes nombres: Boton
SalirS
CalcularB
Salir
CalcularI
SalirB
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 CalcularIn.bmp
Salir.bmp
SalirBaj.bmp
CAP 9 – Visual Basic – El control MSFlexGrid SalirSob.bmp
Calcular.bmp
CalcularBaj.bmp
CalcularSob.bmp
El siguiente cuadro resume las propiedades asignadas a cada uno de los controles: Control Image
Image
Image
Image
Image
Image
Image
Image
Image
Propiedad Name Index Picture Name Index Picture Name Picture Visible Name Picture Visible Name Picture Visible Name Picture Visible Name Picture Visible Name Picture Visible Name Picture Visible
Valor Boton 0 CalcularIn.bmp Boton 1 Salir.bmp Salir Salir.bmp False SalirB SalirBaj.bmp False SalirS SalirSob.bmp False Calcular Calcular.bmp False CalcularB CalcularBaj.bmp False CalcularS CalcularSob.bmp False CalcularI CalcularIn.bmp 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 Form TextBox
CommandButton CommandButton CommandButton CommandButton CommandButton MSFlexGrid
Propiedad Name Caption Name BorderStyle Text Visible Name Caption Name Caption Name Caption Name Caption Name Caption Name AllowUserResizing
Ing. Hermas Herrera Callejas
Valor . MantDatos Mantenimiento del archivo de alumnos Campo 0-None “” False Corrsultar Consultar Guardar Guardar Modificar Modificar Eliminar Eliminar Salir Salir Rejilla 1 – flexResizeColumns Página: 11 de 19
Computación para Ingeniería I y Laboratorio
Rows Cols Enabled FixedRows FixedCols FormatString
CommonDialog Label
Label
Label
ScrollBars Name Name Caption AutoSize Name Caption AutoSize Name Caption AutoSize
CAP 9 – Visual Basic – El control MSFlexGrid
25 12 False 1 0 Cédula |
|
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
If Fila >= 21 Then .AddItem (" ") End If Next i Campo.Text = .TextMatrix(1, 0) End With Else Exit Sub End If End Sub
CAP 9 – Visual Basic – El control MSFlexGrid
’Añade una nueva fila al control MSFlexGrid
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. 2. 3. 4. 5. 6.
Borrar el contenido del cuadro de texto Campo. Ocultar el cuadro de texto Campo. Situar el cuadro de texto Campo sobre la celda seleccionada y ajustar su tamaño al de ésta. Asignar el contenido de la celda seleccionada a la propiedad Text del cuadro de texto Campo. Visualizar el cuadro de texto Campo. 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
Campo.Visible = True Campo.SetFocus End Sub
CAP 9 – Visual Basic – El control MSFlexGrid
’Visualiza el control TextBox
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
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 End Sub
CAP 9 – Visual Basic – El control MSFlexGrid
’lnhabilita el botón Eliminar
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 Unload Me End End Sub
’Cierra el archivo de alumnos ’Finaliza la ejecución del programa
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)
Añadir Microsoft FlexGrid Control 6.0 al cuadro de herramientas ‘ El programa debe calcular un plan de pagos de un préstamo, ‘ determinando la cuota total constante, el interés de cada periodo y ‘ la amortización periódica sobre la base de los datos entrados. ‘ En tiempo de diseño se debe armar la interfaz como sigue: Arreglo Botón SalirS Salir SalirB Calcular
CalcularB
CalcularI
CalcularS
N
Utilizará la sgte. Fórmula P
Ci (1 i )
(1 i ) N
1
Donde P = Pagos periódicos constantes, C = Capital prestado i = Tasa de interés por periodo, N = Plazo (Nro de periodos) ‘ Usar propiedad FormatString para títulos en co lumnas ‘ Definir variables para Capital, Interes, Periodos y Pagos de tipo ‘ doble así como 3 switches (sw1, sw2, sw3) de tipo booleano ‘ Al cargar el formulario centrarlo en la pantalla ‘ El Botón Calcular debe estar inhibido ‘ Al mover el mouse por el formulario ‘ Si los botones del array están sobrerelieve, deben normalizarse ‘ Si en Capital solo se entran números > o = 0 ‘ convertir los valores a números y cambiar a true el sw1 ‘ Se puede usar: If IsNumeric(Capital.Text) and Val(Capital.Text) >= 0 Then…
‘ Si los 3 switches están en true, debe habilitar el botón Calcular ‘ Caso de no haberse digitado números, debe enviar un mensaje, ‘ Inhabilitar el Botón Calcular y permanecer el sw1 en False ‘ Al presionar Enter ubicar el cursor en Nro de periodos ‘ Si en Nro. Periodos solo se entran números > o = 0 ‘ convertir los valores a números y cambiar a true el sw2 ‘ Si los 3 switches están en true, debe habilitar el botón Calcular ‘ Caso de no haberse digitado números, debe enviar un mensaje, ‘ Inhabilitar el Botón Calcular y permanecer el sw2 en False ‘ Al presionar Enter ubicar cursor en Interés por periodo ‘ Si en Interés por periodo solo se entran números > o = 0 Ing. Hermas Herrera Callejas
‘ 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 End If Boton(1).Picture = SalirS.Picture End Select ‘ Al clic del mouse en el array de botones, ejecutar lo siguiente: 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 End Select ‘ Entrar procedimiento limpiarregilla para limpiar el MSFGlexGrid With Rejilla .Rows = n + 4 .Row = 1 .Col = 0 .RowSel = .Rows - 1 .ColSel = .Cols - 1 .FillStyle = flexFillRepeat .Text = "" End With 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: AllowUserResizing 1 – flexResizeColumns Control Propiedad Valor . 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|= 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 i zquierdo 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 registro seleccionado." El título del formulario debe ser “ Consulta de datos" 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