Abrir el menú de navegación
Cerrar sugerencias
Buscar
Buscar
es
Change Language
Cambiar idioma
Cargar
Iniciar sesión
Iniciar sesión
Descargar gratis durante días
83%
(6)
83% encontró este documento útil (6 votos)
924 vistas
632 páginas
Aprenda Visual Basic Practicando
Cargado por
wilfot_2
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido,
reclámalo aquí
.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
Descargar
Guardar
Guardar Aprenda Visual Basic Practicando para más tarde
Compartir
83%
83% encontró este documento útil, undefined
17%
, undefined
Imprimir
Insertar
Reportar
83%
(6)
83% encontró este documento útil (6 votos)
924 vistas
632 páginas
Aprenda Visual Basic Practicando
Cargado por
wilfot_2
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido,
reclámalo aquí
.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
Carrusel anterior
Carrusel siguiente
Descargar
Guardar
Guardar Aprenda Visual Basic Practicando para más tarde
Compartir
83%
83% encontró este documento útil, undefined
17%
, undefined
Imprimir
Insertar
Reportar
Descargar
Guardar Aprenda Visual Basic Practicando para más tarde
Está en la página 1
/ 632
Buscar
pantalla completa
Genere poderosas aplicaciones para VW i S 6 7 aN L plataforma Windows [ o=t = 2 - con-acceso a bases de datos B ASI Lo corporativas José Felipe Ramirez R.PEARSON EDUCACION, México, 2001 ISBN: 970-26-0285-8 Arca: Universitarios Formato: 18.5 x 23.5 em Eulitor: José Luis Vazquez Chavarria e-mail: luis vazquez@ pearsoned.com Editor de desarrollo: Antonio Néfiez Ramos ‘Supervisor de produccién: José D. Herndndez Garduiio Diseiio de portada: Iiana H. Gonzalez Villafin PRIMERA EDICION, 2001 DR. © 2001 por Pearson Educacién de México, $.A. de C.V. Atlacomulco Nim. 500-5* Piso Col. Industrial Atoto 53519, Naucalpan de Juérez, Edo, de México E-mail: editorial universidades@ pearsoned.com ‘Cémara Nacional de la Industria Editorial Mexicana. Registro No. 1031 Reservados todos los derechos. Ni la totalidad ni parte de esta publicacién pueden reproducirse, registrarse o transmi- tirse, por un sistema de recuperacién de informacién, en ninguna forma ni por ningiin medio, sea electrénico, mecéini- £0, fotoquimico, magnético o electrodptico, por fotocopia, grabacién o cualquier otro, sin permiso previo por escrito del editor. El préstamo, alquiler 0 cualquier otra forma de cesién de uso de este ejemplar requerird también la autorizacién del editor o de sus representantes. Impreso en México. Printed in Mexico 1234567890 - 030201 meindice de priicticas, enarrsommannenrnnnnnnnXY Lo inesperado. o ssa Prélogo, Forma y contenido del WTO .....cscssessussscssssessnssesscoseerssseseesensnsssssecsensassessscnnsssesseccrenssssessennssseee XX Agradecimientos ..nnmnnmnnumnmnnnnnnnnnsnnnnnnnnnnnennninnnnnnnie seen XV Parte 1: Entorno Integrado de Desarrollo Capitulo 1: Visual Basic como plataforma de desarrollo ssssssssseusssssensssensessesanenserneeninsd ‘Objeto de la programacién Visual Basic: ms que un lenguaje de programacisa Entomo Integrado de Desarrollo z Ediciones de Visual Basic Elementos de! IDE BBiolane Formalario (Form) .. Modo de trabajo con formularios: SDI y MDI Teenlogh orem a coms y View Bai Controles... 5 BoB Propiedades .. Meétodos Ejemplifcacion de objeto ~ propiedad ~ método Explorador de proyectos Tiempos de desarrollo de Visual Basic Ventana Propiedades .. ‘Ventana Posicién del formulario Pasos para crear una aplicacién en Visual Basic. Resumen ‘Algunas respuestas a RBSRRERSES pjervicios Capitulo 2: Creacién de la interfaz de Usuario sone El punto de partida: {Qué desea hacer? Paso 1: Crear la interfaz de usuario viContenido vii Insercién de objetos Propiedades de posicién y dimensiGn Organizacién de los objetos en el formulario ‘Cémo establecer las aplicaciones para diferentes resoluciones de monitores ‘Algunas respuestas a los ejercicios Capitulo 3: Cémo establecer las propiedades de los objetos ‘Consideraciones de discfio cn Visual BASC nnnnnnstinnnnnnnnnnnsnninnsiinnnnininnsSB Paso 2: Establecer las propiedades de los objetos Validar que ya se tienen todos los objetos que se requieren ‘Cémo asignar el nombre adecuado a cada uno de los objeto. ‘Como establecer las propiedades de apariencia y comportamient Tablas de objetos y propiedades ...... Resumen Capitulo 4: Escritura del c6digo de los eventos sauce Paso 3: Escribir el digo de los eventos El editor de c6digo de Visual Basic... Elementos de la ventana C6digo Caracteres especiales Asistencia en la ediciGn de c6digo El evento predeterminado de los objetos.. ‘Convenciones para la codificacién Especificaciones de codificacin Qué hacer con los procedimientos de evento sin c6digo? ‘Resumen. ‘Algunas respuestas a los ejercicios Como ejecutar su aplicacién .... Depuracién y control del programa ... Indicadores de margen La ventana Cédigo al depurar una aplicacion jecucién paso @ ps0 nono Puntos de iMteMTUPCH60 cients ena]? ‘Cémo generar un archivo ejecutable (EXE) _ Forma esquemiética de presentaci6n de aplicaciones Resumen ‘Algunas respuestas a los ejercicios Parte 2: Elementos de programacion Capitulo 6: Variables y tips de datos . MegB0x Constante de Visual Basic .viii Contenido Funciones de limite de posiciones Option Explicit ... Algunas respuestas a los ejercicios .. Capitulo 7: Operadores y estructuras de COMPO! wnnmmnnnnnmnnnnnnrnnnnnrnnn 6D ‘Operadores aritméticos . Operadores comparativos im (Cédigo ASCH. 173 Operadores l6gicos .... 174 Prioridad entre operadores .s.2.0 177 Instruccién If (condicional) Select Cai For Next Q9_Loop Resumen Algunas respuesta alos ejercicios Capitulo 8: Funciones de manipulacién de dat0S ..nmmnnnnnnnninminnnmnnnnnnsnmnel93 Qué son las funciones: Procedimientos que no utilizan argumentos y no devuelven valores Procedimientos que no utilizan si devuelven valores Procedimientos que utilizan argumentos . Especificacién de argumentos opcionales ‘Valores predeterminados para argumentos opcionales Funciones con ntmero incierto de argumentos Resumen...Contenido ix Parte 3: Controles graficos y programacién orientada a eventos Capitulo 10: Controles basicos para la introduccién de d2t0$ nnn ‘Controles bisicos para el acceso de datos . Capitulo 11: Programacién extent BEVEMLOS sercssseesen Eventos y su clasificacién .... Arguments impliCit08 «0 Resumen de las categoras de eventos, consideradas de uso een ‘Objetos contenedores .. Frame CheckBox ..... ‘Matriz de controles ... Colores en Visual Basic utilizando RGB y QBColor 23 RGB .. OBCOLOE enn : a = ee 324 OptionButton 2 25 WScroll8ar y 30 Resumen .. Concepto de colecci6n Listas desplegables: ListBox y x ‘Cémo agregar y climinar opciones de las listas desplegables Propiedad ListCount Propiedad List ..... Propiedades Selected y Listindex “ = ‘Método Remavel tem dT Método Clear = Resumen .. Capitulo 14: Editor de ments y manejo del Portapapeles -munsemenennnnnneannennee3TA EL Editar che meri Cémo invocar el Editor de mends .. 373x Contenido Manejo det Portapapeles Len: longitud de! texto. Propiedades del objeto fuente: Se1Start, SelLength y SelText Métodos del objeto Clipboard: Clear, SetText y GetText Resumen .. Capitulo 15: Manejo de imagenes wnvennnennrrnnnnnnnane 3S Controles basicos fase ‘mostrar imégenes Image PictureBox .... ‘Adicién de componentes al proyecto ‘Almacenamiento de imagenes ... Inagel ist (@ Microsoft Windows Common Controls 6.0) Resumen .. ‘Algunas respuestas a los ejercicios. Capitulo 16: Arrastrar y COlOCAE neeensnnennnnnnnmeinnnnmninnnnnennnnmannennd 2] Arrastrar y colocar 422 Estados de transicién Punteros predefinidis del entorno de Windows Manejo en modo manual de arrastra y COlOCAP Resumen ... Capitulo 17: Control del tempo semnememnennenennnen ‘Control basco para controlar el tiempo Capitulo 18: Manejo del sistema de archivOs cesses Bl-sistema de archivos. ‘Controls bésicos para el manejo del sistema de archivos DirListBox... FileListBox Manco del oben Filesystem lacién de subdirectorios Maripulacge de archivos . RESID, nenrenerne Capitulo 19: Cuadros de didlogo comUMeS .....:ssesssseseemeseeneeenseeenansernsseeennesernseersnesennseee TT Cuaudros de dislogo comunes 478 CommonDialog (& Microsoft Common Dialog Controt 6.0) 478, Indicadores 480 Manejo de errores 481 Cuadro de didtogo Color _. 482 Cuadro de didlogo Fuente 485 Cuadro de diélogo ImpeimirContenido xi Capitulo 20: Cémo trabajar en una interfaz de miiltiples documentos rns 508 Pundamentos del entorme MDE... Limitaciones que implica el uso de un formulario MDI Cémo prepara su aplicaciéa para compilacin y distribociéa oo su Resumen ... - tunes de Windows. Bar (Wl Microsoft Windows Common Controls 6.0) ‘Treeview (2 Microsoft Windows Common Controls 6.0) ‘Cémo agregar opciones a un sistema TreeView ..... ‘StatusBar (@ Microsoft Windows Common Controls 60) ‘Cémo agregar opciones a un objeto basado en StatusBar ToolBar (Q Microsofi Windows Common Controls 6.0). emo ares opciones aun objeto basa en StatusBar Resumen - Capitulo 22: Bases de datos y DAO munnunnenmnnunnnnnanenmemannmennnnsmennnnaeS4 | ‘Conceptos de hases de datos Be Gedo table. ein y cargo Clave primar Clave externa y relaciones Integridad referencia .. Indices El motor de base de datos Microsoft Jet so... La interfaz de usuario y el eédigo de apaciones . El motor de base de datos E] almacén de datos . DAO Cases, abjetos y colecciones Divisiones de la programacién de bases de datos »... Lenguaje de Definiciin de Datos Lenguaje de Manipalacién de Datos .. Resumen ‘Algunas respuestas a los ejercicios Capitulo 23: Lenguaje de Definicién de Datos ¥ DAO ensnnmnnsninneemrnnsnnesniie S89 Lenguaje de Definicién de Datos - ~ Tipos de objetos en DAO ‘Simaxis para el uso de Colecciones Variables objeto assane Espacio de trabajo ¢ ‘megracién de le base de datos Métodos Create Bloque With... End With: Blementos requeridos para agregar objetos .xii Contenido ‘Cémo trabajar con las colecciones de DAO Resumen ..... ee SM ‘Algunas respuestas a los ejercicios 59S Capitulo 24 de Maniputacion de Datos y DAQ wenenrnennnnr SIT Lenguaje de Manipulacién de Datos: ” on 598 ‘Validaciones a nivel tabla .. 599 Validaciones a nivel hase de datos : ‘Operaciones basicas de eles een ce ete e ‘Tareas de apertura de base de datos Opendatapase . OpenRecordset Tipos de Recordset Close ve ‘Tareas de escritura de datos (parte!) ..... AdgNew y actualizacién al almacén de datos “Tareas de bisqueda de datos (parte 1) . Seek Propiedad Tnex Propiedad NoWlatch ‘Tareas de escritura de datos (parte 2) Edit ‘Tareas de movimiento entre datos Tareas de ago de dats (pane 2 Condicién Métodos Find Resumen Capitulo 25: Controles Data y FLOxXGPE4 ssnnnnnnnnnmnnnnnemnnennimannnnmnnssins639 Control Date ..... Obdjetos vinculados a campos de base de datos FlexGric - La necesidad de capacidades multiusuario ‘Cémo abrir la base de datos en modo compartido ‘Cémo abrir los Recordsets en modo compartido .. Problemas al escribir concepto de Bloque... Bloqueo pesimista y optimist : Bloqueo pesimista Bloquco optimists Aclaracin del “bloqueo de registros"™ Manejo de errores para el modo multiusuario On Error .. Briquetas GotoContenido xiii Resume 666 Err y Error 666 Exit Sub 666, Resumen .. 672 Capitulo 27: Archivos planos para transferencia de 2105 unmnmemmnnnansennmeeen6TS Los archivos planos siguen vigentes un Creacién y lectura de archivos Lease OPED ern FreeFile ‘Tipos de datos definidos por el usuario Cémo escribir e0 M AFCIVO vs a Inpet .. Resumen Capitulo 28: Manejo de bases de datos corporativas usando ADO. eecmsnnsnnnnnnnns689 Bases de datos mis alli de la computadora personal... ce 690 Objeto de Datos ActiveX Pubs: La base de datos de ejemplo Ejecucién front ~ end a través de ADO Conexidn a una base de datos comporativa mediante ADO Peticiones al servidor de bases de datos utilizando ADO 693 694 701 DataGrid (W Microsoft DataGrid Control OLEDB) ononnnn OA SQL “ i 709 720 732 733 ADO a través de ODBC ... ConexiGn a través de DSN almacenado en el Registro Conexién a través de DSN almacenado en archivo DSN 733 MDAC y cuties conmnt ol sace 735 Resumen... i 736 Capitulo 29: Data Environment sveressssseesseresstssesseessessnsssissnsterstenssensennerssennn 7ST ‘Onganizacién de enlaces a datos utlizando el Data Environment 738 Estructura jerdrquica del Data Environment... 739 Resumen ... sigan case mea i TD Capitulo 30: Data Report scsmesenuenemmenninansentsitennrnamnesnnmnnnenaintn Informes a través del Data Report (Como agregar un Data Report a un proyecto Objetos del Data Report. Secciones del Data Report ~. Controles del Data Report... Desarrollo de un informe {Qué queremos? La imagen visual del informe .. ‘Cémo agregar campos del Data Environment al Como agregar objetos al Data Report Informes con grupos de datos .. Data Environment para informes con grupos .. Como se organizan las secciones ... Campos calculades y objetos rptFunction .. Resumenxiv Contenido Parte 5: Apéndices Apéndice I: Convenciones s.vm:nninnnnmnnennnnninnnemmneinnnnnnnnmnnnnnnnnnnnn TDL Prefijos para los controles ‘ refijos sugeridos para DAO Prefijos sugeridos para mends Seleccién de prefijos para otr0s COMtTOIES so. Convenciones de nombres de constantes y variables. Prefijos de alcance de variables Constantes ... Variables Tipos de datos de variables .. Nombres descriptivos de variables y procedimientos ‘Tipos definidos por el usuario .. Convenciones de codificacién estructurada ‘Convenciones de comentarios al e6digo Cémo formatear el e6digo ‘Agrupacién de constantes .. Operadores & y + CCreacién de cadenas para MsgBox, InputBox y consultas SQL “301 Apéndice Il: Service Pack 5.0 de Visual Studio 6.0. ...scocssseseeesseeenseeensesennseeenseeeneess BOS ‘Consideraciones de instalacign ... ‘Actualizaciones de productos relativos a Visual Basie non Microsoft® Agent 2.0 . Visual Studio Installer Problemas con los controles, resueltos con SPS .... Articulos de Microsoft Knowledge Base sobre los e I een an eanR EDParte 1: Entorno Integrado de Desarrollo Capitulo 1: Visual Basic como plataforma de desarrollo 0.01 Cémo iniciar sesiGn em Vista BASIC. nnnnnnnnnnnnninnsnnnni® 01.02 Cémo cerrar una sesiGn en Visual Basi 01.03 Cémo activar los elementos del IDE 2 cn 0.1.04 Cémo establecer ef entomo de desarrOll0 @ SDI iii 01.05 Ubicacién de los controles .06 Cémo ocultar y mostrar formularios. 01.07 Uso de la ventana Propiedades ‘Capitulo 2: Creacién de la interfaz de usuario (02.01 Cémo insertar un objeto en la interfaz.... (02.02 Cémo cambiar la posicién o las dimensiones de un objeto. (02.03 Cémo seleccionar un formulario. (02.04 Cémo cambiar el tamaito de un (02.05 Cémo guardar su trabajo. 02.06 Cémo agregar objetos en modo de trazo.. (02.07 Seleccién de objeto activo, en forma individual o en modo de grupo (02.08 Cémo determinar la posicién de un formulario en la pantalla... (02.09 Como establecer las Gufas de resolucién (02.10 Cémo utilizar las herramientas del mend Formato para organizar objetos Capitulo 3: Cémo establecer las propiedades de los objetos (03.01 Cémo validar la cantidad y el tipo de objetos requeridos en una aplicacién 03.02 Como modificar la propiedad Name de los objetos. (03.03 Cémo modificar Ins propiedades de apariencia y comportamiento. Capitulo 4: Escritura del eédigo de los eventos 04.01 Como abrir la ventana C6dIg0 ror (04,02 C6émo manejar los componentes de la ventana Cédigo (04.06 Uso de los cuadros Objeto y Evento para la seleccién y codificacién de un procedimiento 04.07 Uso de! cardcter de subrayado y la ayuda contextual en modo de edicién.. Capitulo $: Cémo guardar y ejecutar aplicaciones 05.01 Archivos de trabajo en Visual Basic 05.02 Cémo abr un 05.03 Cémo ejecutar e interrumpir su programa... 05.04 Cémo seleceionar el proyecto inicial xvxvi indice de practicas (05,05 Cémo seleccionar el objeto de inicio en un proyecto.. (05.06 Despliegue de errores en tiempo de ejecucidn (05.09 Cémo agregar y eliminar un punto de interrupcin, 05.10 Cémo compilar un proyecto para generar un ejecutable en Visual Parte 2: Elementos de programacién Capitulo 6: Variables y tipos de datos (06.01 MsgBox: ereaciGn de cuadros de informaci6n y confirmacién de manera ripida . (06.04 Determinacién del nombre, tipo de datos y alcance indicado para las variables de memoria, (06.05 Uso de matrices y determinacién de limites minimos y méximos del intervalo de subndices.... (06.06 Declaracién automatica de variables en Visual Basic. =e 06.07 Uso de Option Explicit (requerir la declaracién de variables de manera explicita) (06.08 Cémo establecer Option Explicit de manera automética para todos los formularios nuevos.. (06.09 Uso de funciones de conversiGn. 06.10 Uso de la funci6n Format .. (06.11 Uso de la funcién Format, en formatos definidos por el usuari Capitulo 7: Operadores y estructuras de control 107.01 Uso de los operadores aritméticos.. (07.02 Cémo se resuelven las condiciones que incluyen operadores de comparacién. $7.0 Cio eopecfin a peferenin recive: condiciones, meat lwo 6 puted 07.04 Us0 de FOF NOX wns 07.05 Uso de Exit For 07.06 Uso de Do Loo} ce 8: Funciones de de datos (08.01 Uso de funciones de fecha y bora (08.02 Uso de funciones de manipulacién de cadenas. (08.03 Uso de funciones numéricas y de decisién.. Capitulo 9; Procedimientos y funciones definidas por el usuario (09.01 Creacién de un procedimient0 ..n.nunn (09.02 Creacién de un procedimiento que no utiice argumentos y devuelva valores. ania (09.08 Creacién de un procedimiento que utilice argumentos y devuelva valores. (09.04 Creacién de un procedimiento que utilice argumentos opcionales y devuelva valores IS Cir Ai uphina lieenee cio westerns yy devuelva valores. (09.06 Creacién de un procedimiento que utilice un nimero de argumentos inciero Parte 3: Controles graficos y programacién orientada a eventos ‘Capitulo 10: Controles basicos para la introducci6n de datos 10.01 Uso de objetos basados en los controles Label, TextBox y CommandBUtt0n nu.indice de practicas xvii 10.02 Uso de botones predefinidos de aceptacién y cancelacién y cuadros de texto multlineas, de capacidad limitada.. 10.03 Uso de caracteres para escritura oculta y validaciGn inmediata de caracteres, sepa la captura de caracteres en mayéscula, Habilitar ¢ inhabilitar botones. Capitulo 11: Programacién orientada a eventos 11.01 Demostracién de algunos de los eventos de tipo Clic, Cambios y Enfoque . 1,02 Demostracién de algunos de los eventos de tipo Teclado .. 11.03 Demostracién de algunos de los eventos de tipo Ratén 11.04 Cémo darle riqueza visual a un programa, mediante el evento MouseMove.... 11.05 Elaboracién de un programa que le permita visualizar la prioridad en la ejecuci6n de los eventos... 11.06 DemostraciGn de la precedencia del evento Mouselove sobre el evento C1ici Capitulo 12: Controles contenedores y controles de seleccién 12.01 Cémo utilizar un objeto contenedor para darle funcionalidad a una aplicacién. 12,02 Uso de un control CheckB0x para Seleccionar varias caracteristicas de manera simulténea 12.03 Uso de una matriz de controles y su uso a través de For Next y For Each. 12.04 Uso de funciones RGB y QBCo2or para la manipulacién de colores e323 12.05 Uso de objetos tipo Opt ionBut ton y Shape, y de una matriz de controles 12.06 Uso de barras de desplazamiento y némeros aleatorios Capitulo 13: Controles de listas desplegables 13.01 lizacién de un objeto ListBox, agregindole y elimindndole elementos de forma dindémica, 13,02 Uso de objetos ListBox de seleccién multiple, que pasan clementos de una lista a otra 13.03 Uso de un objeto ListBox con estilo CheckBox... 13.04 Uso de los objetos ComboBox y ListBox para crear un explorador de fuentes. 13.05 Uso de un objeto ComboBox sensible a la escritura... a Capitulo 14: Editor de ments y manejo del Portapapeles 14.01 Como se agrega un objeto de tipo mend. o 14.02 Cémo introducir o6digo a una opcién de mend y utilizar un meat... 14.03 Activacién dindmica de opciones. 14.04 Modificacién del tipo de letra utilizando e! meng. 14.05 Opciones de mend mutuamente excluyentes 14.06 Cémo se maneja el Portapapeles en Visual Bi Capitulo 15: Manejo de imagenes 15.01 Uso de objetos basados en el control Image y carga de imagenes con LOAdPLCTURE eens 398 15.02 Uno de objetos brads nl contol PictureBox modiicaiindndmica de imigees 15.03 Cémo agregar componentes a un proyecto de Visual Basic... 15,04 Almacenamiento de imigenes en un objeto InageL is: 15.05 Uso de una coleccién de imigenes InageList 602 Programa qu omprush as operaciones de array colon cusndo el cbjeto de destino 10 ¢8 de tipo Fors.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookErrores en tiempo de disefio Apertura no solicitada de la ventana Cédigo. ‘Changed database context to “Database”. Especificacién de alcance de procedimiento no requerida Formato regional de Windows afecta el valor devuelto de la funcién Format. Las secciones del informe no coinciden con el origen de datos No aparece la ventana Nuevo proyecto. ‘No hay ninguna fuente . No se encontré campo
‘No se encuentra Data Environment en el menti Proyecto ‘No se puede colocar el control
en esta seccién. No se recuperan datos. Errores de compilacién (orden alfabético) xx Bloque if sin end if Do sin Loop . El Character de decaracn dtp no coincide con el ipo de dais declared El Character no es vilido El numero de dimensiones es incorrecto End if sin bloque if. End Select sin Select Case For sin Net .. Loop sin Do «. Nett sin For : No coinciden los tipos .. No se encontré el método 0 el dato miembro . No se enconiré método o elemento de datos No se ha definido el tipo definido por el usuario No se ha encontrado el archivo No se puede asignar @ una matriz. Origen de datos no vilido.. Procedimiento Sub 0 Function no definido Referencia de variable de control Next no vélida Se esperaba “)", “( Se esperaba el fin de la instruce Se esperaba fin de la funcién Select Case sin End Select Uso no vélido de una propiedada You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookxxiv Forma y contenido del libro Notas Practicas convenciones de la programacién en Visual Basic, asi como las mejoras relacio- nadas con el Service Pack 5.0 de Visual Studio. Cada parte se divide a su vez. en capitulos; cada uno de los cuales tiene una organi- zaciGn consistente que facilita la presentacién de! material. Cada capftulo tiene el tamafio adecuado para manejar un tema de manera com- pleta, sin ser muy extenso; la idea es que no interrumpa un tema sin agotarlo. ‘Cada capitulo inicia con una seccién de Objetivos, la cual describe de manera répida lo que se pretende aprender en dicho capitulo. A final de cada capitulo se encontraré una seccién de Resumen, en la cual se enumeraran los puntos mas importantes, principalmente los que serdn indispen- sables para capitulos posteriores, En el resumen también podré encontrar res- puestas relativas a algunas priicticas del capitulo. Las notas que aparecen en ef contenido de este libro pueden ser de los siguientes tipos: Las referencias marcadas como Nota contienen informacion suplementaria, que ‘no repercute en fa realizacién de una tarea, pero que sin duda enriqueceré su acervo de conocimientos relativos a Visual Basic. Las notas marcadas como Lo inesperado contienen explicaciones de aquello que le puede suceder y que no esperaba que ocurriera; comportamientos extra- fos, errores, situaciones imprevistas de toda {ndole. Por lo general, seguirin de précticas que con toda intencién generan el error, a efecto de que usted lo pueda analizar y prevenir. Este tipo de notas sera vital para usted, ya que los errores mas comunes y la forma de solucionarlos se detailardn en el momento oportuno, Las précticas que se encuentren en este libro (que son muchas) estardn presen- tadas como listas numeradas (1, 2, 3, y asf sucesivamente). Una vifieta triangular (®) indica el inicio de una prictica. Las pricticas estarén numeradas por Capitu- lo,Practica; las précticas serén su guia para saber cémo hacer algo, En el desarrollo de las pricticas ser muy frecuente el uso de los mentis de Visual Basic; algunos de ellos tienen diferentes niveles de profundidad, es decir, de una You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book1 Entorno Integrado de Desarrolloa You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book6 Parte 1; Entorno Integrado de Desarrolio Visual Basic lleva en su nombre los dos elementos generales que lo conforman. ® Su parte “Visual” indica que es una interfaz grdfica de usuario (GUD, que en lugar de requerir e] uso de comandos escritos para realizar tareas, slo requiere el uso de herramientas gréficas, de tal forma que desarrollar se asemeja mucho a cestur “dibujando” el trabajo. Esta parte esté compuesta por el IDE, que ocupa casi todo este capitulo. Su parte “Basic” indica que aquellas tareas que no se pueden realizar a través de las herramientas grificas (que no pueden ser dibujadas), son posibles a través de un lenguaje de programacién basado en el legendario lenguaje de propésito general llamado Cédigo de instrucciones Simboticas Multiproposito para Princi- piantes (BASIC) con el que practicamente se puede desarrollar cualquier cosa. Visual Basic no es s6lo producto, también es tecnologia aplicada: su parte “Visual” est basada en tecnologia orientada a objetos (OO), su parte “Basic” es de tipo procedu- ral, y la mezela de estas dos tecnologias dan lugar a productos hibridos, orientados a eventos (EO). Entorno Integrado de Desarrollo AL iniciar una sesi6n en Visual Basic, entra en contacto con lo que se lama IDE. Este entorna es un conjunto de herramientas y elementos que le permiten diseflar y programar aplicaciones interactuando con Visual Basic. Nota: Es el momento adecuado de que instale los archivos que complementan este libro, mismos que se encuentran en el sitio Web http: //wwa enlace net /ramirez2; descargue el archive AVBP.ZIP en el directorio raiz de su disco duro, y ejectitelo para su instalaci6n, > Cémo iniciar sesin en Visual Basic. (01.01) A continuacién aprenderd la forma de iniciar una sesién de trabajo en Visual Basic. 1. Enel escritorio de Windows haga clic en el botén Inicio, seleccione Programas, Microsoft Visual Basic 6.0 y \a opcién Microsoft Visual Basic 6.0.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book10 Parte 1: Entorno Integrado de Desarrollo Figura 1.2 Entorno itegrado de Desarrollo en Visual Basic para Aplicaciones (nuevo manejo de macros de la Suite Microsoft Office), por lo que identificarse con la distribuciGn de los elementos para aprender ‘Visual Basic proporciona el beneficio adicional de reducir la curva de aprendizaje que usted tendré si desea aprender otras herramientas. EL IDE contiene todos los elementos y herramientas grificas que Visual Basic pro- porciona para desarrollar una aplicacién. No todos los elementos se requieren todo el tiempo, por lo que a través del mend Ver puede decidir qué elementos desea utilizar, y por tanto, tener presentes en la pantalla, Esto es importante porque en ocasiones el espacio en la pantalla es muy preciado. Nota: Al estar desarrollando en Visual Basic, es importante disponer del mayor numero de elementos del IDE para realizar las tareas. Esto se dificulta en virtud de que el espacio en la pantalla es reducido y los elementos aparecen demasiado amon- tonados. Si desarrollar4 profesionalmente un monitor de 17” o mds, seria una verda- dera bendicién; si su presupuesto no se lo permite, aumente la resolucién maxima soportada por su monitor, aunque su vista pediré un poco de piedad ante lo diminuto de ciertas figuras.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book14. Parte 1: Entorno Integrado de Desarrollo Figura 1.6 Cuacro de logo Opciones de este tipo de aplicaciones es WinWord.exe; se pueden tener muchos documen- tos abiertos al mismo tiempo, y cada uno es un formulario. Al cerrar un docu- mento (formulario dependiente) no necesariamente se cierra Word (formulario maestro). ‘Trabajemos en SDI o MDI, siempre habré un formulario principal (objeto inicial), La diferencia entre SDI y MDI es que en SDI el formulario maestro es el tinico que existe. Podemos configurar el entorno de Visual Basic de tal forma que resulte conveniente para el trabajo, dependiendo de si elaboramos una aplicacién SDI o MDI. Actual- mente tenemos el entorno adecuado para MDI, pero los primeros programas que desarrollaremos serin de un solo formulario, por lo que resultarfa conveniente cam- biar el entorno a SDI. De manera predeterminada Visual Basic se instala en MDI. Cémo establecer el entorno de desarrollo a SDI. [01.04] A continuacién aprender a establecer su entorno de desarrollo en modo SDI. Observe el entorno tal y como lo tiene actualmente. 1. Seleccione el ment Herramientas — Opciones... — Avanzado, Apareceri el cua- dro de didlogo que se muestra en la figura 1.6. 2. Active la casilla de verificacién Entorno de desarrollo SDI. 3. Haga clic en el botdn de comando Aceptar.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book26 Parte 1: Entorno Integrado de Desarrollo Figura 1.11 Ventana Explorador de proyectos de constantes, variables y procedimientos externos, procedimientos de evento, y procedimientos generales. Médulos de clase (extensiGn .CLS). Son similares a los médulos de formulario, a excepcién de que no tienen una interfaz visible. @ ~©Médulos estdndar (extensién .BAS). Pueden contener declaraciones piblicas 0 a nivel médulo de tipos de datos, constantes, variables, procedimientos externos. Y procedimientos puiblicos. La ventana Explorador de proyectos muestra una estructura de jerarquia similar a la del Explorador de Windows; los componentes que se pueden seleccionar se encuen- tran a nivel médulo. En la figura 1.11 se puede apreciar que est4 seleccionado el tnico formulario, Forat (Format), que se tiene en el proyecto. En la parte superior de la ventana aparecen tres botones: a Dyer cédigo. Permite ver el cédigo que se ha escrito del médulo que esté seleccionado. » Bye objeto. Permite ver el objeto en el IDE. | mB Atternar carpetas. Oculta y muestra las carpetas en el Explorador de Proyectos, ‘Cémo ocultar y mostrar formularios. [01.06] A continuacién aprenderé a ocultar y mostrar formularios ut plorador de proyectos.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book30 Parte 1: Entorno Integrado de Desarrollo Figura 1.14 Cuadvicula de propiedades Algunos valores de las propiedades se pueden modificar directamente, editando el valor que aparece en Ia columna derecha de la propiedad que queremos modificar; algunas propiedades tienen valor abierto, es decir, se puede colocar cualquier cosa como valor, mientras que otras propiedades tienen valor limitado, es decir, tienen un universe reducido de valores vélidos que les pueden ser asignados, mismos que aparecerdn a manera de listas desplegables. De una w otra forma, Visual Basic siempre sugiere, a través de los valores predeterminados, qué tipo de valor puede asignarse a cada propiedad (texto, nfimero, booleano, representacién hexadecimal) y si el valor ¢s abierto o limitado. En la parte inferior de la ventana Propiedades aparece el nombre de la propiedad en Ja que esté trabajando y la explicacién de su utilidad, es decir, para qué sirve. A esta rea se le conoce como Cuadro de informacién de propiedades. ‘Uso de la ventana Propiedades. [01.07] A continuaciGn aprenderd algunas de las capacidades de 1a ventana Propiedades. 1, Observe los grificos utilizados en este texto y apéyese en el proyecto que actual- mente tiene en su computadora. Haga clic en el formulario que se encuentra en su IDE. Conteste lo siguiente: a) La ventana Propiedades indica que esta trabajando sobre tun objeto. ;Cémo se llama? (Idersifiquelo por el texto en negritas en Ia Lista desplegable de objetos; también basta con ver el titulo de la ‘ventana Propiedades, que diri Propiedades -
)a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book54 Parte 1: Entorno Integrado de Desarrollo » Cémo utilizar las herramientas del mend Formato para organizar objetos. [02.10] A continuacién aprenderd a organizar los objetos con las herramientas que Visual Basic tiene en su meni Formato. También aprenderé por qué es importante el orden en que los objetos sean seleccionados. 10, ML. 12, 13. Seleccione el objeto Labe1t y el mend Formato ~ Centrar en el formulario — Horizontalmente. Seleccione en modo de grupo los objetos Compand1 y Command2. Asegdirese de que Conmandt, que es e! botdn de comando més grande, quede como objeto prin- cipal del grupo (controladores de tamafio en azul). Seleccione el formulario, lo que implica dejar de tener seleccionados los botones de comando, Haga clic en el objeto Comnandt, presione la tecla Mayas y no la suelte, haga clic en el objeto Connand2, deje de presionar la tecla Mayis. Los controladores de tamaiio del objeto Command? deberin ser blancos, mientras que los del objeto Conmand2 son azules. El iltimo objeto integrado al grupo permanece como obje~ to principal de grupo. Seleccione el ment Formato ~ Igualar tamaiio — Ambos. Observe que los obje- tos del grupo siguen las caracterfsticas del objeto principal del grupo. Deshaga la modificacidn que acaba de realizar, Para ello seleccione el meni Edicién — Deshacer tamaio (también puede presionar Ctrl+2Z). Para seleccionar otro objeto como objeto principal de grupo, haga clic en el abje- to que desee como objeto principal del grupo. Teniendo seleccionados en modo de grupo a los objetos Conmandt y Conmand2, haga clic en el objeto Conmandt. Los controladores de tamafio del objeto Conmand2 deberdn ser blancos, mientras que los del objeto Command deberin ser azules. Seleccione el menti Formato ~ Igualar tamaiio — Ambos. Observe que los obje- {os del grupo siguen las caracteristicas del objeto principal de! grupo. Todavia teniendo los objetos Command! y Conmand2 seleccionados en modo de grupo, seleccione el menti Formato ~ Espacio horizontal - Aumentar. Seleccione el ment Formato - Bloquear controles. Trate de mover cualquier objeto dentro del formulario. Comprobard que no se puede; asimismo, cada que seleccione un objeto, los controladores de tamaito no serdn azules como lo eran antes, ahora son blancos. Seleccione el mend Formato - Bloquear controles. Se deshabilitard el bloqueo de los objetos; ahora ya podri moverlos. Su formulario deber4 verse aproximadamente como se muestra en la figura 2.14,a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book58 Parte 1: Entorno Integrado de Desarrollo Consideraciones de disefio en Visual Basic El disefio de las aplicaciones en Visual Basic no es tan sencillo como parece; no es s6lo agregar objetos en un formulario de manera estética y proporcionada. En Visual Basic el desarrollo es minimalista, detallado, especifico. Esto no puede ser de otra manera debido a que la plataforma es orientada a eventos, es decir, cualquier cosa que suceda en a interfaz de usuario, por minima que sea, puede desencadenar una tarea. Hacer un clic con el rat6n, presionar una tecla determinada, pasar el puntero de! ratén sobre un objeto, arrastrar un objeto, cualquier cosa puede disparar una acciGn; es donde las cosas se complican ya que usted tiene que anticiparse y prevenir todo lo que puede pasar. Lo primero que puede hacer para que su aplicacién haga solamente lo que usted desea, es establecer las propiedades adecuadas, Ai principio, la aplicacién Saludo parecfa muy sencilla. Al momento de estar dise~ ‘tando a aplicacién los detalles aparecen por todos lados, Es un hecho que su aplica- cidn, tal como esté, ni luce como usted quiere, ni hace lo que usted quiere. Observe las especificaciones de la aplicacién desde el punto de vista de diseio de Visual Basic, es decir, cdimo se espera que se vean y sucedan las cosas: = En la barra de t/tulo del formulario debe aparecer Mensaje. 1 Alejecutarse Ia aplicacién, el formutario debe colocarse en el centro de fa pan- talla, © Aliniciar la ejecucién de la aplicacién, Ia etiqueta donde se mostrar el mensaje no debe tener contenido. La ctiqueta donde aparecerd el mensaje {j;Bienvenido a Visual Basic!!! debe estar bordeado con el efecto 3-D estandar de Windows. El botdn de comando (CommandButton) que sirva para desplegar el mensaje de bienvenida debe decir Mostrar Mensaje; ademds, debe establecerse como tecla de método abreviado para ese botén la combinacién Alt+M, siendo visible dicha capacidad en el estindar de Windows (Ia letra “M” debe aparecer subrayada). EL botén de comando que sirva para salir de la aplicacién debe decir Salir; ade- mis, debe establecerse como tecla de método abreviado para ese hotén Ia com- binacidn AltsS, siendo visible dicha capacidad en el esténdar de Windows (la letra “S” debe aparecer subrayada), Hacer clic en el bot6n de comando Mostrar Mensaje debe provocar que en la eti- queta aparezca jjjBienvenido a Visual Basic! ™ Hacer clic en el botén de comando Salir debe provocar la salida de la aplicacién (terminacién de la ejecucién),a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book62 Parte 1: Entorno Integrado de Desarrollo Si tiene la cantidad de objetos correcta, pero uno no es del tipo que espera- a, Deberd seleccionar e1 objeto basado en un control equivocado, y eliminarlo presionando la tecla Supr; posteriormente deberd agregar el objeto que haga falte con el tipo de control correcto. Cémo asignar el nombre adecuado a cada uno de los objetos En un formulario puede tener tantos objetos como la memoria RAM de la compu- tadora lo permita; esto puede significar muchos objetos, algunos basados en el mismo control. Ya hemos visto que Visual Basic asigna un nombre predeterminado a cada uno dle los objetos que es agregado al formulario, a través de la propiedad Nae (Forat, Label1, Conmandt, Connand2, son ejemplos de ello). Nota: Un solo proyecto puede contener hasta 32,000 “identificadores” (cualquier palabra clave no reservada), asociados a nombres de formularios, controles, médulos, variables, constantes, procedimientos, funciones y objetos. El nimero real de identi- ficadores se limita a la memoria disponible. Utilizar los nombres proporcionados de manera predeterminada a los objetos no oca- siona problemas en aplicaciones pequefas, pero suponga que tiene un formulario con diez botones de comando (Command, Command2,... ., Comaand1@) y cada uno de ellos tiene una funcién especifica e importante que no debe confundirse con la funcién de los otros botones de comando; en este caso, seria complicado mantener la referencia de los objeto, Para evitar estas complicaciones, Visual Basic permite modificar la propiedad Name de los objetos, de tal forma que éstos sean identificados con un nombre acorde a su funcién, Aqu{ surge una problemética nueva: aparte de que puede haber varios obje~ tos basados en un mismo control, puede haber objetos basados en otres controles. Para aquel que desarrolla aplicaciones en Visual Basic, lo ideal es tener un nombre de objeto altamente significativo, que dé a entender para qué sirve un objeto deter- minado, asf como en qué control esté basada. De esi manera podré saber qué propiedades estaran disponibles, asi como el comportamiento y la apariencia que es posible defin Por ejemplo, si tiene una etiqueta (Label) que servird para desplegar un texto deter- minado, podria asignarle el siguiente nombre: Textoa You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book66 Parte 1: Entorno Integrado de Desarrollo Figura 3.2 Fm: Ps qu loa spar grit rer, scorn i chen ae Nombressugeridos para lo objec, femMensaje dependiendo de tpoxss tind Label: Enea wat egg ‘eto ora cra a eo vlan Itexto CommandButton: Es nomads conte bocca i epg emer nk ai paar a pact Sian ccometrmgadapen cieton qedlckeese lane ae emdSalir emaDeepiega > Cémo modificar la propiedad Nane de los objetos. [03.02] A continuaciGn aprenderé a modificar la propiedad Name de los objetos. 1. 2 3. Seleccione el formulario. Asegtirese de que la cuadricula de propiedades esté en orden alfabético. Haga doble clic en la cuadricula de propiedades donde diga Nane. Observe que el valor asignado actualmente, en este caso Form, se sombrea en azul al hacer doble clic en el valor asignado a la propiedad. Escriba fraMtensaje. Presione la tecla Intro. Nota: Las propiedades se asignan cuando presiona la tecla Intro, o bien cuando traslada el control hacia otra propiedad u objeto: dice que la propiedad se acepra. Mientras no acepte un nuevo valor para una propiedad, puede presionar la tecla Ese y dar marcha atrés a los cambios que haya realizado. a Vea que en Ia lista desplegable de objetos apareceri fraMlensaje For, lo que indica que el objeto de tipo Form ahora se llama freMensaje. Usted ha cam! do el nombre del objeto. En Ia lista desplegable de objetos seleccione Labe11 Label; haga doble clic en la cuadricula de propiedades donde diga Name, escriba 1biTexto.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book70 Parte 1: Entorno Integrado de Desarrollo valor a la propiedad usted mueve el formulario de posicién, ya sea arrastrando el for- mulario por su barra de titulo o utilizando la ventana Posicién del formulario, la propiedad cambiard de forma automética a 0 (Manual). Al ejecutar Ia aplicacién se preguntars :por qué no se colocé en el centro si yo se lo especifiqué? Simplemente porque hizo algo en tiempo de disefio que ocasioné modi- ficaciones automdticas en la propiedad que asf lo establecfan, EJ disefto nos dice: Al iniciar Ia ejecuci6n de ia aplicacién, la etiqueta donde se mostrard el mensaje no debe tener contenido, La etiqueta donde parecer el mensaje ;j;Bienvenido a Visual Basic!!! debe estar bordeado con el efecto 3-D estindar de Windows. Seleccione el objeto indicado, en este caso 1b1Texto. (La ventana Propiedades debe decir en su barra de titulo Propiedades ~ IbI Texto.) Localice en la cuadrfcula de propiedades la propiedad Caption, haga doble clic en el nombre de la propiedad, y presione la tecla Supr para eliminar el con- tenido; acepte la propiedad. En tiempo de ejecucidn el cédigo que modificaria la propiedad seria: Ib1Texto.Caption = Localice en la cuadricula de propiedades la propiedad BorderStyle, haga doble clic en el nombre de la propiedad y seleccione el valor 1 — Fixed single. Esto seria en tiempo de disefio; en tiempo de ejecucidn el cédigo que modificarfa la propiedad seria: Abltexto.forderstyle = 1 El disefio nos dice: El botén de comando que sirva para desplegar el mensaje de bienvenida debe decir Mostrar Mensaje; ademds, debe establecerse como tecla de método abre- viado para ese botén de comando la combinacién Alt+M, siendo visible dicha capacidad en el estindar de Windows (la letra “M” debe aparecer subrayada). Seleccione el objeto indicado, en este caso endDespliega. (La ventana Propie- dades debe decir en su barra de titulo Propiedades — emdDespliega.) Localice en la cuadricula de propiedades Ia propiedad Caption, haga doble clic en el nombre de la propiedad, escriba &Mostrar Mensaje. Esto serfa en tiempoa You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book74 Parte 1; Entorno Integrade de Desarrollo Resumen En este capitulo: '& Vimos que algo simple en teoria, se puede complicar al especificar el diserio de la aplicacién, Vimos cémo validar la cantidad y tipos de objeto que se requieren para una apli- cacién. © Vimos emo establecer el valor de la propiedad de identificacién. & Vimos cémo utilizar la ventana Propiedades. © Vimos las convenciones para identificar objetos en Visual Basic, atendiendo a la funcién y el tipo de control en ef que estén basados los mismos. & Vimos cémo establecer valores a las propiedades de apariencia y comportamien- to, tanto en tiempo de disefio como en tiempo de ejecucién, ‘§ Vimos cémo se conforma una tabla de objetos y propiedades, herramienta que nos seri de mucha utilidad en el desarrollo de programas detallados de este libro. Es importante que comprenda muy bien todos estos puntos antes de continuar con el libro.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book78 Parte 1: Entorno Integrade de Desarrallo Figura 4.2 Ejemplo de un procedimiento de eto Figura 43 Diagrara estrc tual de un pro- cedimiento de evento Analicemos la estructura de los procedimientos de evento. Tomaremos el provedi- miento que se ¢jecutaré cuando haga clic en el objeto enddespliega (vea la figura 42). ‘Sub cudDespliega_Click() Lbltexto.Caption = "iiiBienvenido a Visual Basic!!!" End Sub Se ve simple. Analicémoslo. e e po Sub cmdDespliega Click() abTexto.Caption = "11 iBienvenddo a Visual Basie!!!" @ | Lint © 010 10s procedimientos de evento tienen un inicio (Sub) y un fin (End Sub). EI inicio y el fin delimitan la totalidad del eédigo que se va a ejecutar cuando suceda el evento, © Eevento crsck existe para todos los objetos que lo permiten. Por tal motivo, es necesario identificar a qué objeto le sucede el evento. El nombre del procedimiento de evento siempre estard compuesto por el nombre del objeto .. @ ... yc1 nombre det evento, separados por un cardcter de subrayado. © Todas tas tineas de c6digo que se encuentren entre el inicio y el fin del procedi- miento de evento se llama cddigo de evento. El eédigo de evento es lo que se ejecutard de manera secuencial en el momento en que sucede un evento.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book82 Parte 1: Entorno Integrado de Desarrollo = & otén Ver médulo completo. Muestra todo el c6digo del médulo. La figura 4.4 muestra dénde se localizan cada uno de los componentes, Figura 4.4 mean ee Elementos de la — ventana Céigo Trivets Be coabeapliage c1ier) oon > Cémo manejar los componentes de la ventana Cédigo. [04.02] A continuacién aprender a manejar los elementos de la ventana Cédigo. 1. Seleccione el objeto frailensaje. 2. Presione la tecla F7. 3. Haga clic en el botn Ver procgdimiento. Observe que solamente se mostraré el procedimiento que tiene el enfoque. Nota: En Visual Basic, aquel objeto o elemento que posee el cursor (que puede res- ponder al teclado) tiene el enfoque.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book86 Parte 1: Entorno Integrado de Desarrollo Figura 4.6 Vista parcial del ‘jerciio de edicion de cédigo, hasta el momento Hasta el momento su cédigo debe lucir como se muestra en la figura 4.6. por el altavoz Beep End Sub > Compilacién y deteccién de errores en modo de edicién. [04.04] 1. Continde editando el c6digo; escriba la siguiente linea (escriba hasta el punto, pero NO ACEPTE LA LINEA TODAVIA): Mi0bjeto. GExiste algtin objeto en su formulario llamado Mi0bjeto? {Al teclear el punto Visual Basic respondié de alguna forma?a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book90 Parte 1: Entorno Integrado de Desarrollo El evento predeterminado de los objetos Como puede ver, Visual Basic y su editor de cédigo permiten una interaccidn intuiti- va entre los objetos y lo que puede hacer con ellos; ya comprobs que cada abjeto, al momento de hacer doble clic en él en tiempo de disefio, activa la ventana Cédigo en el procedimiento de evento que Visual Basic considera como el més usual, a lo que lamaremos evento predeterminado. Por ejemplo, cada objeto creado basado en el control ConmandButton tendra como evento predeterminado al evento ¢1ick; ,para qué puede servir un botén, sino es para hacer clic en él? No obstante, en ocasiones no desea editar el evento predeterminado. Para editar cual- quier otro evento, puede utilizar el cuadro Objeto (la lista desplegable que aparece a la izquierda, debajo de la barra de titulo de ta ventana Cédigo) y del cuadro Proce- dimiento/Evento (la lista desplegable que aparece a la derecha, debajo de la barra de titulo de la ventana Cédigo). Puede, sin necesidad de estar haciendo doble clic en los objetos que tiene en modo de disefio, editar todos los procedimientos de todos los obje~ tos disponibles en la interfaz. > Uso de los cuadros Objeto y Evento para la selecci6n y codificacién de un proce- dimiento de evento determinado. [04.06] 1. Haga doble clic en el objeto enddespliega {Qué procedimiento de evento se puso en modo de edicién? 2. _Escriba el siguiente cédigo en dicho procedimiento: Private Sub cndDespliega_Click() " Instruceién que emite sonido por el altavoz Beep * Cambia en modo de ejecucién 1a propiedad * Caption del objeto ibiTexto AblTexto.Caption = "iiiBienvenido a Visual Basic!!!"a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book94 Parte 1: Entorno Integrado de Desarrollo 6, Estando en la ventana Cédigo, presione Alt+F4 para cerrar dicha ventana. Una de las cosas més importantes al estar codificando en Visual Basic es la de dar mér- genes a la izquierda, a Jo que se llama sangria, Vea lo siguiente: A B Private Sub cndbesplie Private Sub ondoespliega_click() “Instruccién que emite sonido “ Instrucesén que emite sonido ' por el altavoz ' por el altavoz Beep Beep UblTexto.Caption = _ LblTexto.Caption = "THiBienvenido a Visual Basic!!!" i1Bienvenido a Visual Basic! 11° End sub End Sub Observe que la distribucién A deja en claro cul es el eédigo de evento, dénde inicia y
Cémo abrir un proyecto previamente guardado. {05.02} A continuacién aprender como abrir un proyecto existente 1, Abra un proyecto existente, utilizando el mend Archivo — Abrir proyecto, o bien presionando Ctri+, 2. Abra el archivo que se encuentra en el directorio \avbp\e02, llamado Saludo.vbp. 3. Siel formulario no aparece en primera instancia, expanda la jerarqufa en la ven- tana Explorador de proyectos, hasta que vea el formulario Forat (frawensaje) Haga clic en el botéa Ver objeto, de la misma ventana, Recomendaciones para nombrar archivos en Visual Basic Actualmente ya sabe cémo guardar su trabajo. Unas dltimas recomendaciones para nombrar los archivos: Es recomendable que el archivo de formulario (frm) se lame igual que la pro- piedad Name del formulario que almacena. En nuestro ejemplo, el objeto basado enel control Fora se llama fraMensaje, y por tanto, el archivo de formulario ter- min6 Ilaméndose fraensa je. fra. Ex recomendable que el archivo de proyecto (.vbp) se llame de una forma repre- sentativa de la aplicacién que contiene. Esto es importante, ya que el proyecto se compilard para generar un programa ejecutable (.exe), y su nombre debe ser natural y atractivo. Nota: Un ejemplo de la conveniencia de la representativided del nombre del pro- grama ejecutable es el siguiente: la mayoria de los programas instaladores se Taman Instalar.exe o Setup.exe; el nombre del programa da una idea clara de la funciGn que realizan, Si el programa instalador se lamara inpvb60.exe (porque es la Instalacién de su Nuevo Proyecto en Visual Basic 6.0), el nombre seria poco natural y hasta inade~ cuado. El programa ejecutable puede lamarse de manera diferente al proyecto a par- tir del cual se genere, pero le sugerimos que no complique las cosas; procure que el programa ejecutable se ame de la misma forma que el proyecto a partir del cual se genera. Esto, en tiltima instancia, tendré injerencia en la forma en que el proyecto sea nombrado. @ Esrecomendable que el archivo del grupo de proyectos se llame de una forma re- presentativa a lo que agrupa; no lame al grupo de programas igual que un pro-a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 5: Cémo guardar y ejecutar aplicaciones 111 3. Haga clic en el botén Salir. Vea cémo el programa responde como se esperaba, terminando la ejecucién de la apticacién, 4, Wil diagactic en el botén Iniciar o presione ta tecla FS para iniciar nuevamente Ja ejecucién. 5. WD saga cticen et botén Interrumpir. {En qué modo se encuentra? 6. Haga clic en el botsn Salir. La ejecucién de la aplicacién no se dio por concluida, en otras palabras, el botén Salir no hizo lo que debfa. ,A qué se debis? 7. BIBE rtaga clic en of bots Iniciar o presione la tecla FS para reanudar la eje- cucién, 8. MBE tage ctic en el born Terininar para conclu con la ejecucién de a apli- cacién, Al iniciar la ejecucién, Visual Basic opts por ejecutar el formulario framensaje; eso es obvio y comprensible, ya que es el Gnico formulario del tinico proyecto que se en- cuentra actualmente cargado en la sesi6n de Visual Basic. Pero ,qué pasa cuando hay varios proyectos cargados y éstos tienen varios formularios? En ese caso, debe es cificar claramente cudl es el proyecto inicial, y en dicho proyecto inicial, el objeto ini- cial (formulario), El objeto inicial siempre pertenece al proyecto inicial. Cémo seleccionar el proyecto inicial. [05.04] A continuaci6n aprender a determinar qué proyecto de entre varios ser4 el inicial, . Bo Haga clic en el botin Agregar proyecto de EXE esténdar. Tendra lo que se muestra en la figura 5.4:a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 5: Como guardar y ejecutar aplicaciones 115 y utiliza en tiempo de ejecucién una propiedad 0 método no disponible para dicho objeto (por ejemplo, Text 0 Value). Este error también sucede cuando comete un error al escribir el nombre de la propiedad o del método. Soluciones: escriba bien el nombre de la propiedad o método, utilice una propiedad o méto- do que sea valido. § Procedimiento Sub o Function no definido (error de compilacién). Sucede cuan- do escribimos mal una instruccién, de tal forma que Visual Basic piensa que es tun procedimiento definido por usted, mismo que no existe. También sucede cuando usted hace un llamado a algtin procedimiento existente, pero que al es- cribir el nombre comete un error. Soluciones: escriba correctamente las instruc- ciones de Visual Basic, si est haciendo una llamada a un procedimiento, asegdrese de que antes de ejecutar su programa, dicho procedimiento ya haya sido creado. Se requiere un objeto (error 424 en tiempo de ejecucién). Asi como se genera un error cuando se aplica una propiedad o método que no es vélido para un deter- minado objeto, también se puede cometer un error al escribir el nombre del obje- to. En ese caso estaremos haciendo una llamada a un objeto que no existe y Visual Basic lo requeriré. Este error es muy frecuente cuando pensamos que definimos un nombre para un objeto y realmente no lo hicimos; al hacer uso de ese objeto el error aparecerd. Soluciones: escriba correctamente el nombre del objeto que esté mal escrito, revise que el objeto que usted cree que ya existe no tiene ain el nombre asignado de manera predeterminada por Visual Basic. Indicadores de margen ‘Visual Basic proporciona elementos visuales al momento de editar el c6digo que tienen injerencia en tiempo de ejecucién. En la ventana Cédigo aparece un pequefio margen gris a la izquierda, Hamada barra indicadora de margen; en dicha barra pueden aparecer iconos, llamados indicadores de margen. Veremos dos de estos indicadores de margen:a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 5: Como guardar y ejecutar aplicaciones 119 > Cémo ejecutar un programa linea por linea. [05.08] A continuacién aprenderd a ejecutar un programa paso a paso, 1. Presione la tecla F8. El programa se comenzard a ejecutar paso a paso. 2. Haga clic en el botSn Mostrar Mensaje. 3, Elicono Call Stack Marker aparecerd en la barra indicadora de margen de la ventana Cédigo, justo en la linea de inicio del procedimiento end pliega_click. 4. Presione FB varias veces y vea qué hace cada una de las lineas que se estén ejecu- tando, Deje de presionar F8 hasta que ya no se vea el icono Call Stack Marker (una vez que se ejecutan todas las Iineas del procedimiento).. El icono Calll Stack Marker no se colocé en Ja Iinea de comentario, ,Por qué? 5. Haga clic en el bot6n Salir. Presione F8 varias veces, hasta que 1a aplicacién eje- cute la instrucci6n End y se termine la ejecucién. Puntos de interrupcién Una de las particularidades del modo de interrupeién es que se mantienen los valores que la aplicacién guarda hasta el momento. Suponga que su interfaz pregunta diez cosas que son obligatorias y al capturar la oc- tava genera error. No ser to mismo corregit en modo de interrupei6n y reanudar la ejecucién donde se qued6, que iniciarla nuevamente. Si la iniciara nuevamente, ten- dria que probar nuevamente su interfaz y capturar todos los elementos que anteceden ‘al que generd el error. El modo de interrupeién es muy stil, pero hasta ahora slo ha visto que puede entrar ese modo si la aplicacién genera error o si se hace clic en Interrumpir; en caso de «que quiera entrar en modo de interrupeién de manera voluntaria, 18 segunda opcién resulta ser la m4s recomendable, pero requiere precisién para poder hacerlo en ka linea exacta. ‘Una forma més préctica es haciendo clic en la barra indicadora de margen, justo al lado de la linea en que quiera que Visual Basic entre en modo interrupeién; hacer estoa You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 5: Como guardar y ejecutar aplicaciones 123 Ya compilé a ejecutable su programa, lo que generé un programa llamado Saludo.exe, de un tamaiio muy pequefo: tan sélo 20 KB. Un programa por més simple que sea, que pueda ubicarse dentro de la pantalla, que tenga todos los atributos de un programa de Windows, tales como minimizar, maxi mizar, cerrar, movimiento de la ventana, cambio de tamafio de la ventana, sens dad a eventos, etoétera, no puede ser tan pequefio, FI secreto es que el programa utiliza tuna biblioteca llamada Msvbvm60.dll, que tiene un tamaio de 1,376 KB y que debe estar presente en su equipo para que el programa funcione. Dicha biblioteca se instala junto con Visual Basic, casi siempre en el directorio \Windows\system; cuando genere los discos de instalacién puede seleccionar que la biblioteca se agregue o no a los discos. El archivo de biblioteca es grande en tamaio, pero una vez que ya lo tiene en su equipo, podré ejecutar cualquier programa ejecu- table creado en Visual Basic, sin necesidad de tener que instalarlo més de una vez. Saludo.exe ya incluye todos los archivos involucrados en el proyecto, por lo que no es necesario distribuirlos con su aplicacién, Lo tinico que debe agregar para su apli- cacién ejecutable son otras bibliotecas ActiveX (.ocx), bases de datos (.mdb) u otros archivos que usted designe para controlar su aplicaciGn (.ini). Nota: Puede distribuir libremente tanto su programa ejecutable como la biblioteca Msvbym60.dll, sin incurrir en violaciones a los derechos de autor. Si su proyecto involucra componentes ActiveX (.oex) 0 bibliotecas (.dll) generadas por terceros, cer- ciGrese de que no esté distribuyendo componentes sin pagar los derechos corres- pondientes. En todos los casos, revise la licencia de uso y distribucién del producto. Forma esquematica de presentacién de aplicaciones Hasta este punto ya hemos desarrollado una aplicacién, Como podré haberse dado cuenta, el camino para desarrollar una aplicacién simple fue largo, en virtud de que nos aprovechamos de ella para explicar a detalle los elementos de Visual Basic.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 5: Como guardar y ejecutar aplicaciones 127 Ejecucién Haga clic en el botén de comando Mostrar Mensaje. El procedimiento cadDespliega_Click emite un sonido y posteriormente modi- fica la propiedad Caption del objeto 1b1Texte a efecto de que adquiera como valor jjjBienvenido a Visual Basic!!!; eso se representa visualmente como un mensaje desplegado, Haga clic en el botén de comando Satir. El procedimiento cadSalir_¢liek sdlo contiene la instruccién Ené, que da por terminada la sesi6n de trabajo. Resumen En este capitulo: ‘Vimos cémo se almacena el trabajo en Visual Basic. Vimos algunas extensiones asociadas a los archivos de trabajo en Visual Basic. Vimos la jerarquia de contenedores manejada en Visual Basic. Vimos sugerencias para nombrar archivos en Visual Basic. Vimos la forma en que se puede ejecutar una apticacién en Visual Basic. Vimos cémo seleccionar un proyecto como proyecto de inicio, asimismo, vimos c6mo seleccionar un objeto como objeto de inicio. Vimos qué son los indicadores de margen y la barra indicadora de margen. Vimos el uso y funcionamiento de los indicadores de margen Call Stack Marker y Breakpoint. Vimos emo ejecutar un programa linea por linea. Vimos cémo establecer y remover puntos de interrupcién. §Vimos Ia forma en que se esquematizarén los programas en el resto del libro Es necesario que entienda los conceptos anteriores antes de continuar,a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book132 Parte 2: Elementos de programacién MsgBox A partir de este capitulo comenzaré a programar de manera regular y progresiva; con ello adquirira la destreza necesaria para desarrollar aplicaciones profesionales en Visual Basic, Si entendid los fundamentos tratados en Ia parte I, la tarea sera facil. Usted puede comenzar a desarrollar en Visual Basic, y ser habil en el manejo de la in- terfaz y rapido para implementar visualmente tas aplicaciones que desea; no obstante, de nada le servird disefiar una pantalla bonita si carece de sentido, es decir, si no hace nada. Antes de dominar todos los objetos que puede manejar en Visual Basic, son necesa 0s algunos elementos de codificacién que le permitan darle sentido a las cosas a tra- vés de una funcionalidad que resulte explicativa. Al menos en este capitulo, olvidese de que existen los objetos y los controles en Visual Basic: trabajara précticamente en cl terreno del cédigo puro (lo que algunos llaman hardcore code), donde no importa lo bonito sino lo eficiente. 1 MsgBox le permite indicar la aparicién de una ventana de notificacién en Vi- :, también lamadas cuadros de didlogo, en el formato estindar de Windows La sintaxis de la funcién es Ia siguiente: MsgBox{ Mensaje (, CédigoDeBotdn [, TitwloDeVentana}] ) Los elementos de la sintaxis son los siguientes: El Mensaje es un argumento requerido. Consiste en una expresién String (texto) que representa el mensaje que aparecerd en el cuadro de didlogo. La longitud maxima de mensaje es de aproximadamente 1024 caracteres, segdn el ancho de los caracteres utilizados. Si el mensaje consta de més de una linea, puede separarlas utilizando un Character de retorno de carro (¢hr(13)), un Character de avance de linea (Chr(10)) © una combinacién de caracteres de retomo de carro/avance de linea (Chr(18)_ y che (10) entre cada linea y ta siguiente. Nota: Posteriormente vera que Visual Basic le asiste en el uso de valores constan- tes; Chr(13) + Chr (18) es igual a vbCrLf. El CédigoDeBotén es un argumento opcional. Consiste en una expresién numérica que corresponde a ta suma de los valores que especifican el niimero y el tipo de losa You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book136 Parte 2: Elementos de programacién Y siel mimero de cédigo 1 equivale en Visual Basic (vb) a ver el bot6n Aceptar (0K) y Cancelar (Cancel) , ;qué nombre le daria a ese uno para identificarlo de manera sig- nificativa? Qué Ie parece lo siguiente: 1 > vb0Kcancel, Si en lugar de escribir 0 escribiera vb0KOnly, o bien, si en lugar de 1 escribiera la palabra veOkGancel, sin duda alguna obtendrfa un cédigo mas claro para usted y para los demds que lean su programa. En isgBox, los niimeros de e6digo ademés de determinar el comportamiento del cua- dro de didlogo y 1a cantidad de botones que han de mostrarse, determinan la aparien- cia que identifica el propésito del cuadro de dislogo; para ello basta hacer la suma de los diferentes valores, por ejemplo: MsgBox("Desea borrar el archivo", 1 + 48) Le indican a Visual Basic que deben aparecer dos botones, Aceptar y Cancelar (ni- mero de eédigo 1) y que ademas debe aparecer como icono del cuadro de didlogo la figura de advertencia esténdar de Windows (nimero de cédigo 48). Sin la existencia de constantes de Visual Basic, el eédigo seria muy oscuro. Vea como luce el e6digo utilizando constantes de Visual Basic; MsgBox "De: borrar el archivo", vb0KCancel + vbExc! tion) A continuacién se muestra una lista de las constantes de Visual Basic que se aplican a MsgBox, para efecto de mostrar el cuadro de didlogo. Nota: Las constantes son de Visual Basic, no de MsgBox; por tal motivo, se encon- trard estas mismas constantes en otros elementos de programacién, con la misma fun- cionalidad.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book140 Parte 2: Elementos de programacién mensaje es de aproximadamente 1024 caracteres, seguin el ancho de los caracteres uti- lizados. Si el mensaje consta de més de una linea, puede separarlos utilizando un Character de retorno de carro (Chr (13) ) 0 un Character de avance de linea (Chr (10)) (© una combinaciGn de caracteres de retorno de carro/avance de linea (Chr(13) y Ghr(1@)) entre cada I{nea. El argumento Titulo es opcional. Consiste en una expresién String que se muestra en Ja barra de titulo del cuadro de didlogo. Si se omite Tino, en la barra de titulo se coloca el nombre de Ia aplicacién. El argumento Predeterminado es opcional. Consiste en el valor sugerido que apare- ceri al inicio en el cuadro de didlogo. El argumento PosX es opcional. Consiste en especificar la posicién horizontal donde debe desplegarse el cuadro de didiogo (eje de las X). El argumento PosY también es opcional, Consiste en especificar la posicién vertical donde debe desplegarse el cuadro de didlogo (eje de las Y). > InputBox: acceso rapido de datos. [06.03] A continuacién aprender a utilizar InputBox, a declarar variables de memoria para uti- lizarse en los programas y a colocar comentarios en las Iineas sin afectar Ia ejecucin. 1, Genere un nuevo proyecto EXE esténdar (Ctrl+N). ® Editar codigo: Form, Evento: Activate. * Define una variable de tipo Integer para utilizarla * en el programa Dim mstrSoftware As String ' Definicién de la variable * Usos de InputBox mstrSoftwareS = InputBox("éCudl es su software preferido?") Print “Captura: * & mstrSoftwares.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book144 Parte 2: Elementos de programacién Integer (int) Long Integer 4 (ant) Single Precision 4 (sng) Double Precision —-& (ab) currency 8 (cur) string L por cardcter (ste) 2 8 (00 (no ~3.042823E38 a 3.042823E38 922,337 0.065,535 caracteres 01/01/100 al 31/12/9999 ! Dim NuseroMesa As Integer Numerollesa® = 12 Dim PoblactonNacionalé Dim PoblacionNacional As Long PoblacionNacionalé = 18000000 Estatural = 1.82 Din Pi Dis Pi As Double = 3.1418926535 Dim IngresosAnualese Dim IngresosAnuales As Currency = 3798268280.54 pin bin As String Dim Animal As String * 30 ‘Aninals = rot Die ‘As Boolean ‘Activado = True FechaCorte As Date Fechacorte 09/908a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book148 Parte 2: Elementos de programacién Figura 6.1 Composicion adecuada de un Nombre El nombre debe ser claramente representativo de lo que almacena y ademés debe incluir como prefijo los aplicables al alcance y tipo de datos que se pretende almace- nar. Suponga que en una aplicacién dada, en un formulario dado, desea utilizar una variable que almacene las ventas acumuladas de un mes, misma que pueda ser uti- lizada por cualquier procedimiento dentro del mismo médulo, gesmo se deberia Ila- mar la variable? La figura 6.1 nos resuelve esa inedgnita: ‘nombre de variable, acorde 3 las convendiones internacionales sugeridas por Microsoft para la coificacion en Visual Basic mcurVentasAcumuladas@ Prefijo de Prefijo de tipo de datos Nombre Character de definicion > Determinacién del nombre, tipo de datos y alcance indicado para las variables de memoria. [06.04] Con respecto a las variables de memoria, aprender a determinar cual es el tipo de datos adecuado para una necesidad de almacenamiento y de alcance, as{ como darle nombre a las variables respetando las convenciones internacionales sugeridas por Mi- crosoft para la codificaci6n en Visual Basic. Conteste segin el ejemplo. 2: Declare una variable que almacene el tipo de cambio peso—délar, que pueda ser utilizada en cualquier parte de una aplicacién de instrumentos de inversién, Global Sing! a0 b) Prefijo: [g 4) Prefijo: [ sng TipoDeCandio g) Nombre final de Ia variable: | gsngTipodeCanbio! (bedefre) Se requiere crear un efecto visual en un procedimiento, consistente en manipula- cién aleatoria de colores; en Visual Basic los colores RGB se representan a travésa You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book152. Parte 2: Elementos de programacion curVentas@(0) curVentas@(1) ourventas@(2) curVentas@(3) curventas@(4) curventas@(5) Es decir, 6 posiciones. En resumen: esto es una matriz llamada curVentas, tiene una sola dimensién, almacena 6 elementos y el intervalo de sus subindices va de 0a 5. Si regresamos a la idea original, quiz4 resulte extrailo que curVentas(@) almacene las ventas del mes 1, que curVentas(1) almacene las ventas del mes 2, y asf sucesivamente; no resulta natural. Para omitir el comportamiento predeterminado de Visual Basic, puede indicar de manera explicita qué mimeros de subindices desea, por ejemplo: Dim curVentas(1 to 6) As Currency Equivale a: curventas@(1) curventas@(2} curventas@(3) curventas@(4) curventas@(5) curventas®(6) Con lo que tendria una representacién natural, acorde a lo que quiere. Las matrices pueden ser de 2 y 3 dimensiones, es decir, incluir doble o triple sub- indice. Suponga que ya no le basta saber cudnto se vendié en cada uno de los pri- meros 6 meses: desea saber cudinto se vendié en cada uno de los meses del segundo semestre del ailo (meses del 7 al 12) y ademas desea conocer de manera especifica cuanto se vendié de cada uno de los tres productos que maneja la compafifa (pro- ductos A, B y C). Una solucién podria ser la siguiente: Dim curventas(7 to 12, 1 to 3) As Currencya You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book164 Parte 2: Elementos de programacion Print “Légicos - bollogico = ( 4 > 3) ' Esto es Verdadero Print bolLogico Print Format (bolLogico Print Format (bolLogico, Print Format(bolLogico,*On/Off*) 2. Ejecute su e6digo. En caso de que desee especificar sus propios formatos, tiene una amplia gama de posibilidades; usted dispone de los siguientes caracteres: Marcador de posicion de digito; imprime un cero a la izquierda o a la derecha en esa posicién, si corresponde. Marcador de posicién de digito; nunca imprime ceros a la izquierda ni a la derecha. Marcador de posicién decimal. ‘Character literal; los caracteres se presentan exactamente como estin escritos en Ia cadena de formato. Por ejemplo, vea lo que devolveria la siguiente aplicacién de la funcién Forna Format (9515.4, "00000. Format (6315.4, "####H.##*) Format (8315.4, ‘##,##0.00") Por otro lado, las fechas tienen su particular forma de ser representadas, para ejem- plificarlas utilizaremos la palabra reservada Now, que devuelve la fecha y hora actuales del sistema: a Format (Now, “mda” Format (Now, “dad min 3") foraet tion, “damm oicienore 0a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book: Capitulo Operadores y estructuras de control Objetivos Conocer las diferentes estructuras de control que pueden utilizarse en Visual Basic, a efecto de programar iteraciones y arboles de toma de decisiones. También se pretende que sepa claborar expresiones légicas y aritméticas, determinando 1a precedencia de Ia solucién de las expresiones. Al finalizar este capftulo deberd: Conocer y saber utilizar los operadores aritméticos Conocer y saber utilizar los operadores comparativos Conocer y saber utilizar los operadores l6gicos Dominar el uso de la instruccién 1 Dominar el uso de la instruccién Select Case Dominar el uso de la instruccién For Next Dominar el uso de Ia instruccién Do Loop Este capitulo seguir la pauta marcada por el capitulo anterior: la codificacién lo es todo, No se desespere: conociendo los elementos de la codificacién, la creacién de la interfaz es més sencilla y divertida, 169a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 7: Operadores y estructuras de control 173 Cédigo ASCII El juego de caracteres de 7 bits denominado Cédigo Estindar Estadounidense para el Intercambio de Informacién (ASCI) es ampliamente utilizado para representar letras y simbolos de en un teclado estandar de EE.UU. El juego de caracteres ASC es igual que los primeros 128 caracteres (0-127) del juego de caracteres ANSI, uti- lizado por las méquinas antiguas. Es importante que conozca algunas referencias del cédigo ASCII que pueden serle de utilidad, Cédigo Representa 8 BackSpace (retroceso) 9 Enter (Intro) 10 SpaceBar (Barra espaciadora) W 92 “n 48 al S7 “o" al “a” 65 al 90 “x” ala “2” 97 al 122 “a” ala“2” 255, 233, 237, 243, 250, 241 man, Algunas personas, sobre todo aquellas que no tienen su teclado configurado ade- cuadamente, saben que si mantienen oprimida la tecla Alt y teclean en el teclado numérico un cédigo ASCH, éste upareceré. Para ello es necesario que el teclado nu- mérico esté activado (teniendo e} Blog Num / NumLock activado). De tal forma que: Alt+<64> = @ Visual Basic, por otro lado, tiene funciones que permiten obtener la representacién grifica de un c6digo ASCII, asf como de obtener el c6digo ASCII a partir de una re- presentacién gréfica. Las funciones que lo permiten son Chr(_) y Asc(_), respecti- vamente,a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 7: Operadores y estructuras de control 177 {Cémo cambiarfa la condicién, mediante el uso de paréntesis, para que el resultado fuera verdadero? Soluciones: (°S* < "s* OR ( 2 >= 2 AND 1> @.5 AND ‘AT = “B")) De esta forma, forzamos a que en primera instancia se resuelva el paréntesis de mayor profundidad, que contiene la segunda, tercera y cuarta condiciones (True AND ‘True Ano False -> False); el resultado se resuelve con la primera condicién, por ser el siguiente paréntesis de mayor profundidad (True OR False > True). Considere como regla que siempre tiene que cerrar los paréatesis que abra. Una colocacién inadecuada de condiciones puede arrojar resultados erréneos; le recomendamos que aunque de forma predefinida existe una preferencia, usted deter- mine claramente qué preferencia desea, utilizando paréntesis cuando tenga mas de tuna condicién por resolver. > Cémo especificar la preferencia al resolver condiciones, mediante el uso de paréntesis, [07.03] A continuacién aprender a manipular la preferencia de resolucién de condiciones utilizando paréntesis. Considere que la variable Sueldo tiene un valor de 1200. 1, Coloque los paréntesis para que el resultado siempre sea Verdadero : 30 > 1@ OR "Robles" > “Zeragoza* AND Sueldo = 10000 2. Coloque los paréntesis para que el resultado siempre sea Falso : 30 > 1@ OR "Robles* > “Zaragoza* AND Sueldo = 10000 Prioridad entre operadores Cuando hay varias operaciones en una misma expresién, cada parte de la misma se evalda y se resuelve en un orden predeterminado, segiin la prioridad de los operadores. Cuando hay expresiones que contienen operadores de més de una categoria (arit- méticos, de comparacién y légicos), se resuelven antes las que tienen operadores aritméticos, a continuacién las que tienen operadores de comparacién y por dltimo las de operadores l6gicos. Esto tiene sentido si toma en cuenta que la materia prima para los operadores aritméticos son valores numéricos o cadenas, para generar un nuevoa You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 7: Operadores y estructuras de control 185 Si al momento de evaluar Condicién, un determinado valor de ExpresiénAEvaluar se cumple en dos casos, se ejecutaré para el primero que se encuentre. El caso Else se aplica cuando el valor de ExpresiénAEvaluar no se cumple en ninguno de los casos anteriores dentro de la estructura Lo inesperado: ‘Cuando trabaja con la instrucci6n 11, los errores més comunes son: Select Case sin End Select (error de compilacién). Sucede cuando se abre un bloque Select Case pero nunca se concluye dicho bloque con un End Select. Solucioncs: verifique que el niimero de Select Case y End Select sea el mismo, Es recomendable que sangre el cédigo para guardar 1a proporcién del programa. End Select sin Select Case (error de compilacién). Sucede cuando se cierra (End Select) un bloque Select Case que nunca fue abierto. Soluciones: veri- fique que el ndmero de Select Case y End Select sea el mismo, Es recomen- dable que sangre el cédigo para guardar la proporcién del program: Para ver cémo funciona esta instruccién, imaginese la siguiente situaciGn hipotética: una compafia tiene 35 categorias de empleados; cada categoria tiene un ingreso determinado, en donde las categorias de nimero mas alto son las de mayor ingreso por salario, y existe una relacién directamente proporcional entre categoria y sueldo. Se acaba de autorizar un aumento de sueldo general en la compaiia, bajo las guientes politicas: el personal de alto nivel (categoria superior a 19) no tendré aumen- to; las categorfas 18, 17 y 14 recibirdn el 15 por ciento de aumento; de la categoria 8 a la 13, recibirdn el 10 por ciento de aumento, a excepciGn de la categoria 10, que ¢s la categoria més rezagada con respecto al salario, pues recibird el 25 por ciento. Al resto del personal, se le dard un 5 por ciento de aumento. iC6mo codificaria una estructura Select Case que atendiera esta necesidad? Veamos: Select Case Categoria Case Is > 19 Aumento = 0 Case 18, 17, 14 Aumento = 0.15 Case 10 Aumento = 0.25 Case 8 To 13 Aumento = 0.1 Case Else Aumento = End Selecta You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookDo Loop Capitulo 7: Operadores y estructuras de control 189 de For y Next sea el mismo. Es recomendable que sangre el c6digo para guardar la proporcién del programa. Next sin For (error de compilacién), Sucede cuando cierra (Next) un bloque For que nunca abrié. Soluciones: verifique que el néimero de For Case y Next sea el mismo. Es recomendable que sangre el cédigo para guardar ta proporcién del Programa. © Referencia de variable de control Next no vdlida (error de compilacién). La variable utilizada en una instraccién For Next, determina el control iterativo; la misma variable que se utiliza en el For debe ser utilizada en el Next. El error se presenta cuando el primer Next encontrado no utiliza la variable utilizada en el dltimo For abierto, Soluciones: verifique que los nombres de variables tanto en el For como en el Next sean los mismos. En el caso de For Next anidados, verifique que el sitio abierto sea el primero en cerrarse. Do Loop es una estructura iterativa que permite repetir la ejecucién de un conjunto de instrucciones un mimero desconocido de veces, determinada por el cumplimiento de una condicién. ‘Su sintaxis es: Do {Whsle | Until} Condicién Instrucciones Loop Donde Condicién es la expresién logica que mientras su valor sea True, mantendré el proceso iterativo, ejecutando Instrucciones. Do inicia la estructura de control, mien- ‘tras que Loop indica el final de dicha estructura. Ejemplo: Lo siguiente despliega un ntimero mientras éste sea menor o igual a 10. Dim intNumero As Integer Do While intNumero’ <= 10 intNumero’ = intNumero’ + 1 Print intNunero’ Loopa You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book| ; Capitulo Funciones de manipulacion de datos Objetivo Conocer las funciones més importantes que tiene Visual Basic para manejar tiempo, ndimeros y cadenas. Al finalizar este capitulo deberd: Saber qué son las funciones Conocer y saber utilizar las funciones de fecha y hora Conocer y saber utilizar las funciones de manipulacién de cadenas Conocer y saber utilizar las funciones mateméticas Conocer y saber utilizar las funciones trigonométricas Saber calcular algunos resultados para los cuales Visual Basic no tiene funciones implicitas Estamos seguros de que este capitulo le serviré de referencia 193a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 8: Funciones de manipulacién de datos 197 DateDiff Tipo de datos que devuelve: Variant (Long) Devuelve Ia cantidad dada de un intervalo que existe de diferencia entre dos fechas. Sintaxis: DateDift (Interval, Fecha! , Fecha2) Donde Jntervalo puede ser cualquiera de los intervalos mostrados en la funci6n DateAdd. Fechal y Fecha2 son las fechas entre las que se determinaré la diferencia. DatePart Tipo de datos que devuelve: Variant (Integer). Devuelve ef niimero correspondiente a una parte de la fecha, misma que es especifi- cada como un intervalo. Sintaxis: DatePart (Intervalo, Fecha) Donde Intervalo puede ser cualquiera de los intervalos mostrados en la funcién DateAdd. Fecha es la expresion de tipo Date/Time a partir de la cual se va a determi- nar la parte de la fecha. Day Tipo de datos que devuelve: Variant (Integer) Devuelve el ntimero del dia (1 a 31) de una fecha dada, Sintaxis: Day (Fecha) Donde Fecha es la expresién de tipo Date/Time a partir de la cual se va a determinar el nimero de dia.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 8: Funciones de manipulacién de datos 201 Year Tipo de datos que devuelve: Variant (Integer) Devuelve ef nimero del afio de una fecha dada. Sintaxis: Year (Fecha) Donde Fecha es la expresién de tipo Date/T3t el afio. a partir de la cual se va a determinar Uso de funciones de fecha y hora. [08.01] A continuacién aprenderd a utilizar las funciones de fecha y hora. 1. Genere un nuevo proyecto EXE esténdar (Ctrl+N). ™ Editar cédigo: Form, Evento: Activate, Print Print Time Print Print "La fecha de hoy es: * & Now Print "Afo: Print "Mes: Print “Dia: * & Year(Now) * & Month (Now) * & Day(Now) Print *-- Usando DatePart - Print * & DatePart(‘yyyy", Now) Print t('m", Now) Print rt("d", Now) Print ‘Ubicacién en el afo* Print ‘Trimestre: " & DatePart("q", Now) Print ‘Semana: * & DatePart(*ww", Now) Print "Dia de la semana: * & DatePart(*w", Now) Print "Dia del afo: " & DatePart("y", Now) Print *= - Print "Falta para el fin de ano del 201° Print (DateSerial(2@01, 12, 31) - Now) & * dias*a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 8: Funciones de manipulacién de datos 213 Sqr Tipo de datos que devuelve: Double. Devuelve la rafz cuadrada de un mimero. Sintaxis: Sqr (Niimero) Donde Niimero es el valor base del célculo. Funciones de deci Resumen de funciones a re en esta clasificacién: choose ——_Devuelve un valor de una lista de argumentos, mur Devuelve uno de entre dos valores, dependiendo de una condiciGn Choose Tipo de datos que devuelve: segiin los argumentos. Selecciona o devuelve un valor de entre una lista de argumentos. ‘Sintaxi Choose (Indice, Opcidn_l { , Opcidn2.... fOpciénN }1) Donde /ndice es el elemento a devolver y Opeidn! a OpcidnN, la lista de elementos.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 8: Funciones de manipulactén de datos 217 (Devuelve un tipo Double que indica el pago de una anualidad basada en pagos pcriddicos constantes con un tipo de interés también constante. ‘Devuelve un tipo Double que indica el pago nominal correspondiente a un periodo determinado de una anualidad basada en pagos periédicos y constantes con un tipo de interés también constante. Devuelve un tipo Double que indica el valor actual de una anualidad basada en pagos periddicos constantes que se van a realizar en el futuro, con un tipo de interés también constante Devuelve un tipo Double que indica el tipo de interés por periodo de una anvalidad. Devuelve un tipo Double que indica la depreciacién lineal de un bien durante un tnico periodo Fun nes trigonométricas jar | Devuelve un tipo Double que especifica el arcotangente de un némero, Devuelve un tipo Double que especifica el coseno de un angulo. Devuelve un tipo Double que especifica el seno de un angulo. Devuelve un tipo Double que especifica la tangente de un dngulo. Si los célculos que requiere hacer son més complicados y necesita otras funciones més elaboradas, tal ver le sea ttil ver algunas funciones derivadas: ” es el niimero base para el cdleulo. = 1 / Sin{x) = Atn(x 7 sar(-X* x +1) = Atn(X 7 Sar(x = X + 9)) + 2 * ANT) = AEX) Sark XH) + Som) — 2 * AMMa You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 9: Procedimientos y funciones definidas por el usuario 221 Ejecucién de procedimientos Una vez definido un procedimiento, éste puede ser ejecutado desde cualquier otro procedimiento. La forma de invocar a los procedimientos es a través del nombre que lo identifica, por ejemplo, si tiene un procedimiento que no utiliza argumentos y no deyuelve valores, que se llama CaleTot, la forma de ejecutarlo es la siguiente: GalcTot Visual Basic revisa que la palabra no sea una palabra reservada del lenguaje (instruc- cin © constante), en caso de no reconocer la palabra, revisa si en el médulo que se esté ejecutando existe un procedimiento con ese nombre; si no lo encuentra, buscar en otros médulos dentro del proyecto y después en médulos o bibliotecas especificas, asociadas al proyecto. Es posible que para un programador que no conozca mucho el lenguaje Visual Basic, CaleTot pueda pasar por una instruccién implicita del lenguaje. Usted puede hacer que su programa sea mis claro si agrega la instruccién Call y ejecuta el procedimiento de ejemplo de la siguiente forma: Call CalcTot De esta forma, ¢s fiicil saber que se trata de un procedimiento y no de una instruccién implicita del lenguaje. También es posible que su procedimiento, al igual que algunas instrucciones de Visual Basic, utilice argumentos; en ese caso deberd saber si devolveri algin valor 0 no, a fin de saber cémo ejecutarlo. Si no devuelve algin valor, puede invocarlo como procedimiento normal, con los argumentos separados por comas. MsgBox *iBienvenido!", vbInformation Por otro lado, si el procedimiento o instruccién, devuelve un valor, es necesario que Jos argumentos estén encerrados entre paréntesis después del nombre de dicho pro- cedimiento y éste debe ser utilizado en su cardcter de expresiGn, ya sea como asig. nacién de valor a una variable... intvariables = MsgBox(*2Desea continuar?", vbOKCancel)a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 9: Procedimientos y funciones definidas por el usuario 229 1, Utilice e1 mismo proyecto que utilizé para la prictica 09.01. 2. Abra la ventana Cédigo (F7). 3. Vaya al meni Herramientas - Agregar procedimiento. En cl cuadro Nombre coloque RecibeDevuelve. En Tipo especifique Funcién; y en Aleance, Privado. ® Editar cédigo: (General), Evento: RecibeDevuelve. Private Function RecibeDevuelve(Mensaje As String) As Integer RecibeDevuelve = MsgBox (Men! vbOKCancel + _ vbduestion, "Funci6n RecibeDevuelve") End Function ‘@ Modificar codigo: Form, Evento: Activate. Private Sud Form Activate() Gall NoRecibeNoDevuelve Dim intRespuesta as Integer intRespuesta’ = SoloDevuelve() Print intRespuesta® AntRespuesta’ = RecibeDevuelve(*Funcién con argumentos") Print intRespuestas End sub Especificacién de argumentos opcionales En ocasiones los argumentos que se les proporcionan una funcién son opcionales. Para indicarle a Visual Basic que un argumento es opcional, es necesario colocar la palabra Optional antes del nombre del argumento, al momento de declararlo. Aunque quiz4 sobre decirlo, los argumentos opcionales deberdn ser preferentemente Jos que se encuentren més a la derecha o bien, todas, Al momento de darle opcionalidad a un argumento, es necesario controlar lo que sucederé cuando dicho argumento no se proporcione, ya que puede sobrevenir un error por la falta del valor. Volviendo al ejemplo de la fecha después de 90 dias, ,qué pasarfa si el célculo no fuera necesariamente a partir del dia de hoy? En otras palabras, el cdleulo puede ha- cerse a partir de cualquier fecha dada, pero en el caso de que no se proporcione unaa You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 9: Procedimientos y funciones definidas por el usuario 233 > Creacién de un procedimiento que utilice argumentos opcionales con valor pre- determinado y devuelva valores. [09.05] A continuacién aprender a definir procedimientos que realizan una tarea, utilizan argumentos opcionales con valor predeterminado y devuelven valores. Esta fun- cién ... m Desplegaré un cuadro de didlogo con un mensaje que usted le proporcione a través de un argumento llamado Mensaje, que es de tipo String y es opcional. Tendré un botén Aceptar y otro Cancelar. La barra de titulo diré “Funcién DatoOpcional”. En caso de que usted omita el argumento Mensaje, se tomara de manera prede- terminada el mensaje “Proceso realizado”. Esta funci6n devolverd un valor de tipo Integer, correspondiente al botén en el que se haya hecho clic, El ejemplo desplegard en pantalla el valor devuelto. 1. Utilice el mismo proyecto que utitiz6 para la préctica 09.01. 2. Abra la ventana Cédigo (F7).. @ = Modificar codigo: (General), Evento: DatoOpcional. Private Function DatoOpcional (Optional Mens: As String = Proceso realizado") As Integer DatoOpcional = MsgBox(Mensaje, vbOKCancel, _ “Funcién DatoOpcicnal*) End Function Funciones con numero incierto de argumentos Hasta el momento hemos trabajado con procedimientos y funciones que reciben un iimero determinado y conocido de argumentos, Esto no siempre sucede. {Qué pasaria si necesitdiramos una funcién que indicara cul es el niimero mayor de una serie’? Como puede ver, la redaccién no nos revela cudintos mimeros componen Ia serie, es una serie de tres niimeros, de diez, de cien? Tal vez. alguien piense que una funcién con un ntimero elevado de argumentos opcionales, que en caso de no ser utilizados no figuren en el cdlculo, pudiera ser la soluci6n, sin embargo no es lo éptimo, ya quea You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book242 Parte 3: Controles graficos y programacién orientada a eventos En este capitulo verd los controles basicos de Visual Basic para el desarrollo de inter- faces de introducciGn de datos. Son tres: Label, TextBox y ConmandButton. Controles basicos para el acceso de datos A Label Etiqueta, Sirve para insertar etiquetas en Ia interfaz. Se utiliza para colocar en la interfaz el texto que no va a cambiar, aunque también se utiliza para enviar mensajes contextuales y de apoyo a la captura. La propiedad esencial de los objetos basados en este control es Caption, ya que re- presenta lo que se desplegard en Ia etiqueta; dicha propiedad tiene un limite de 1024 bytes. Lo més relevante de este control es: [Alignment Autosize Borderstyle caption Nota: Como ya sabe, cuando hace doble clic en un objeto, Visual Basic abre la ven- tana Cédigo en un procedimiento de evento que considera el mas comin para dicho objeto. En la columna Eventos de la tabla de Propiedades - Métodos ~ Eventos, se locard en negritas-itdlicas el evento que sea considerado como més frecuente.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book246 Parte 3: Controles graficos y programacién orientada a eventos Tabla de objetos y propiedades de frminfoGen | frainfoGen Informacién General [txtTelefono Elimine el textoa You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book250 Parte 3: Controles graficos y programacién orientada a eventos Figura 10.2 ‘Secuencia de ‘tabulacién. Los riimeras en cielo es la propiedad ‘Tabindex secuencia de tabulacién. Cuando en la secuencia de tabulacién se llega al iltimo objeto que pueda obtener el enfoque, el enfoque se trasladard al primer objeto que lo pueda tener, formando un ciclo ininterrumpido. Todos los objetos que puedan tener el enfoque, también tendrén una propiedad Ma- mada Tabindex, que determina su posicién dentro de la secuencia de tabulacién; Ia propiedad TabIndex siempre comienza su valor de cero y la poseen todos los objetos, sin importar si pueden o no adquirir el enfoque. Si desea que algin objeto no sea considerado en la secuencia de tabulacién, puede utilizar la propiedad TabStop: si dicha propiedad tiene el valor False, el objeto no seré considerado en la secuencia de tabulacién, No obstante, el objeto sf puede obtener el enfoque, ya sea haciendo clic en él 0 mediante programacién. Nota: En caso de que no desee que el objeto obtenga el enfoque dentro de la secuencia de tabulaciGn, puede utilizar la propiedad Enabled con un valor False. Esta solucién es un poco extrema si lo que desea es simplemente que no sea considerada en la secuencia de tabulacién, ya que no podré obtener el enfoque en el uso de la inter- faz. Cuando un objeto no tiene el enfoque y luego lo obtiene, se dice que adquiere el enfoque; si un objeto tiene el enfoque y luego deja de tenerlo, se dice que pierde el enfoque. En ‘Visual Basic, todos los objetos que pueden tener el enfoque, por esa simple capaci- dad, tendrén dos procedimientos de evento, llamados GotFocus para cuando obtienen el enfoque y LostFocus para cuando lo pierden. Adicionalmente, tendrén un méto- do llamado SetFocus, que le proporciona el enfoque al objeto determinado,a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book258 Parte 3: Controles graficos y programacién orientada a eventos Propiedades nuevas en frmAcceso Permiten o no utilizar un objeto como parte de la interfaz. | Sin embargo, el objeto, permanece visible. | Protege la entrada en el cuadro de texto, de tal forma | que lo que se escriba no esté visible. Todo lo que introduzca sera sustituido por el Character que defina como Passwordchar; por lo general, el Character utili- zado es el asterisco. Eventos nuevos en frmAcceso Se ejecuta cuando teniendo el enfoque en el cuadro de texto se presiona cualquier tecla. fuostFocus _| Se ejecuta cuando el cuadro de texto pierde el enfoque. Codificacién de frmacceso © Editar c6digo: ectUswario, Evento: LostFocus. KeyAscii = Asc(UCase(Chr(KeyAscii)))a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book262 Parte 3: Controles graficos y programacién orientada a eventos Si capturd el Password y la Confirmacién del password, se habilitard el botén de comando Validar. Al hacer clic en dicho botén se procede a verificar si los passwords son validos. Al hacer clic en el botén de comando Validar (cudvalidar) se ejecutari el pro- cedimiento de evento endValidar_Click. Lo que hace este procedimiento es que si el contenido de los cuadros de texto Password y Confirmar Password es el mismo (txtPassword.Text = txtCPassword.Text), entonces envia el mensaje “Identificaci6n correcta” y cierra la aplicacién. En caso de que no concuerden, se envia el mensaje “Los passwords no concuerdan”, se inhabilitard el botén Validar (endValidar) y se trasladaré el enfoque al cuadro de texto en donde se debe capturar el password correctamente. Presione la tecla Escape Se ejecutard el procedimiento de evento cad8alir_click, ya que dicho botén esta definido como cancel; teclear Escape equivale a hacer clic en el botén de comando Salir (emdSa1ir). Resumen En este capitulo: ‘Vimos las particularidades del control Label. Vimos las particularidades del control TextBox. 1m Vimos las particularidades del control ConmandButton 4 Vimos en qué consiste el enfoque y cudles son algunos de los procedimientos y métodos relativos al manejo del enfoque. m Vimos emo a través del procedimiento KeyPress se pueden realizar modifica- ciones a Jo que se captura e incluso restringir la captura. Es importante que domine el contenido del capitulo para poder continuar, ya que en el resto del libro se manejardn, de manera intensiva, abjetos basados en estos controles.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book266 Parte 3: Controles graficos y programacién orientada a eventos Argumentos implicitos Al igual que existen algunas funciones que reciben argumentos, hay algunos eventos que los reciben también, Quizé se pregunte zquién le proporciona los argumentos a los eventos? Es el mismo sistema quien lo hace. La secuencia que sigue Visual Basic para la ejecucidn de eventos es la siguiente: El usuario realiza algo sobre un objeto que es reconocido como un evento (el evento ocurre). Visual Basic revisa si para ese objeto hay algo codificado para el evento que le sucedié (procedimiento de evento). Sino hay nada codificado, no pasa nada; en caso de que sf existan instrucciones, Visual Basic revisa si existen argumentos implicitos, para el evento en cuyo caso, toma los valores que el sistema le proporciona. © Procede a la ejecucién de las instrucciones del procedimiento de evento, en caso de que aplique. Resumen de las categorias de eventos, consideradas de uso general No todos los eventos se aplican para todos los objetos, sin embargo, de las categorias que mencionamos, 5 de ellas son practicamente utilizables para la mayoria de los objetos, sin importar en qué control estén basados, Por tal motivo, Jes lamamos a dichas categorias de uso general. Se trata de las si- guientes: De tipo Clic De tipo Cambios De tipo Enfoque De tipo Teclado De tipo Raton Las categorias de eventos que no son consideradas de uso general frecuentemente estdn orientadas a los objetos basados en un contro! especifico; la totalidad de ellas se verdn en los capftulos que traten de manera particular los controles a los que se aplican.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book270 Parte 3: Controles graficos y programacién orientada a eventos Private Sub txtNombre Validate(Cancel As Boolean) If txtNombre.Text = "* then MsgBox "No debe omitir el nombre* Cancel = True Este mismo manejo puede realizarse a través del evento LostFocus, en conjunto con el método SetFocus. Utilizar Validate es més prictico y puede evitar que cause un ciclo indefinido en su programa, Nota: Dependiendo de la versién de Visual Basic que disponga, asf como el len- ‘guaje (espafiol, francés, inglés, etcétera), el nombre de los argumentos implicitos puede variar. Por ejemplo, el argumento Cancel en ocasiones puede Hamarse KeepFocus. Independientemente del caso que se presente, haga referencia al argu- mento bajo el nombre predeterminado que Visual Basic le asigne automdticamente. Tipo Enfoque ‘Ocurre cuando un objeto recibe el enfoque, ya sea mediante una accién del usuario, como utilizar la tecla Tab o hacer clic en el objeto o cambiando el enfoque en tiem- po de ejecucién mediante el método SetFocus. Un formulario recibe el enfoque slo cuando todos los controles visibles estén desactivados. Ocurre cuando un objeto pierde el enfoque, ya sea por una accién del usuario, como utilizar la tecla Tab © hacer clic en otro objeto, o bien mediante un cambio del enfoque en tiempo de ejecucién con el método SetFocus.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book278 Parte 3: Controles graficos y programacién orientada a eventos Si tiene dudas de qué es lo que hace KeyASCIT en KeyPress, quiz modificando ef c6digo amterior de la siguiente forma comprenda mejor: Private Sub txtClave_KeyPress(KeyAscii As Integer) KeyAscii = 64 End Sub El eédigo 64 es el correspondiente a la arroba (@). En este caso, no importa lo que teclee en el objeto txt¢lave, todo se traducint a cédigo 64. Algunas teclas especiales, tales como Alt, Ctrl, Mayds, las flechas de direceién y Supr entre otras, no causan la ejecucién de KeyPress, por lo que siguen teniendo la misma funci6n que tengan predefinida. Una de las aplicaciones mds ttiles de KeyPress es para la captura secuencial de datos de tipo numérico. Hay muchas aplicaciones cuya captura consiste en dos o mas nd- meros; por ejemplo, en el caso de transacciones con tarjeta de crédito, podria pre- ‘guntarse lo siguiente: nimero de cuenta, mes de expiraci6n, aflo de expiracién, monto de la transaccién, Pensando en Ia facilidad que podemos brindarle al usuario, to ideal es que la tecla Intro (cédigo 13 0 bien la constante voCr) asuma que se da por aceptado un dato y transfiera el enfoque al siguiente dato, de tal forma que toda la captura pueda rea- lizarse de manera répida a través del bloque de teclas numéricas que por lo general se encuentra en la parte derecha de los teclados. Una cajera experimentada le agradecerd esa consideracidn, en lugar de que la obligue a alternar en cada campo con Ia tecla ‘Tab o bien con el uso del ratén. Suponga que los datos son capturados ea los siguien- tes objetos: txt Cuenta, txtMesExp, txtAndoExp y txtlonte, en ese orden. Puede codificar txtCuenta_KeyPress de la siguiente forma: Private Sub txtCuenta_KeyPre: (KeyAscii As Integer) If (KeyAscdi >= 48 And KeyAscii <= 57) Or KeyAscdi = 8 Then KeyAscii = KeyAscis Else If KeyAscii = vbCr Then ‘txtlesexp, SetFocus Else Beep KeyAscii = 0 End If End If End Suba You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book282 Parte 3; Controles graficos y programacién orientada a eventos Editar c6digo: (General), Evento: (Déclarations). Dim intEstadoAlt As Integer M Eéitar codigo: 4611, Evento: Click, 1bl1.Font.Bold = (intEstadoAlt’ = vbAltMask) Editar cédigo: 1612, Evento: Click. 1bl2.Font.Bold = (intEstadoAlte = vbAltMask) Editar cédigo: 1613, Evento: Click, 1b13.Font.Bold = (intEstadoAlt’ = vbAltWask) Ejecucién & Antes de ejecutar 1a aplicacién, asegiirese de que fa tecla Blog Mayts (CapsLock) no esté activada. Presione la tecla “a’ Aunque usted no se dé cuenta, ya se ejecutaron tres eventos: txtCaptut KeyDown, cuando presioné la tecla “a”, txtCaptura_KeyPress porque presiond una tecla reconocida por ANSI y txtCaptura_KeyUp, cuando dejé de presionar la tecla “a”, El proceso provoca que se actualicen los argumentos implicitos de los eventos, mismos que se despliegan en los objetos Label incluidos en la inter- faz para tal efecto. KeyCode es igual a 65, correspondiente a la letra “a”, Shift es igual a cero, porque no esté utilizando ninguna tecla especial y KeyASCHT es igual a 97, e6digo ASCII correspondiente a la letra “a” en mintiscula. Active la tecla Blog Mays (CapsLock). Observe que KeyCode cambia a 20, correspondiente a la tecla Blog Maytis, pero KeyASCII no cambia. Esto se debe a que KeyASCII realmente no se ha actualiza- do, porque después de la primera letra “a” que tecle6, no ha presionado ninguna tecla con valor ANSI.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book286 Parte 3: Controles graficos y programacién orientada a eventos Tabla de objetos y propiedades de frmRaton Caption _|v —_ StartUpPosition | 2-CenterScreen 1-Fixed Single Elimine el texto Codificacién de frmRaton '® Editar cédigo: Form, Evento: MouseMove, Privat Sub Form MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single) IblAccion.Caption = “Button:" & Button & * Shift:' & Shift & "xX: AK a AY End Suba You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book290 Parte 3: Controles graficos y programacién orientada a eventos Propiedades nuevas en frmDestinos Habilita un botén como Default; si presiona Intro, sin im- portar qué objeto tenga cl enfoque, se ejecutard el evento Click del botén habilitado como Default. En el caso de Form: permite asignar un mapa de bits como fon- do del formulario (papel tapiz). En el caso de ComnandButton: permite asignar un mapa de bits Tool! ‘Envia un mensaje de ayuda Toalipfessm al momento que el puntero del ratén se encuentre en el objeto. Eventos nuevos en fraDestinos Se ejecuta cuando se modifica el contenido de un cuadro de texto (propiedad Text). Métodos nuevos en frmDestinos Codificacién de frmbestinos Editar cédigo: emdMundo, Evento: MouseMove. cmdilundo.Font.Bold = True omdMexico.Font.Bold = False omdEU.Font.Bold = False ondCanada.Font.Bold = False ‘omdwundo. SetFocusa You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book294 Parte 3: Controles graficos y programacién orientada a eventos Prioridad de los eventos Cuando trabaja con eventos, debe ser muy cuidadoso de que éstos no produzcan comportamientos contrapuestos con otros. Es posible que usted provogue un ciclo indefinido con eventos que actiian uno contra otto. El ejemplo clisico es el de la validacién contra vacios. Suponga que tiene en su inter- fax dos cuadros de texto, uno llamado txtNombre y otro llamado txtDireeeion, los cuales se encuentran uno después del otro. Suponga que tanto el Nombre (capturado en txtNonbre) como la Direccién (txtDireceion) son datos imprescindibles, por lo cual el usuario no debe omitirlos. Usted codifica de tal forma que al salir de cada uno de los dos objetos, se valide si se omitieron fas datas, en cuyo caso regresard el enfogue al cuadro de texto que debe ser complementado. Private Sub txtNombre_LostFocus() If txtNombre.Text = ** Then MsgBox "El nombre no se puede onitir” txtNombre. SetFocus End If End Sub Private Sub txtOireccion_LostFocus() If txtDireccien.Text = ** Then MsgBox "La direccién no se puede omitir® txtDireccion. SetFocus End If End. Sub Usted omite el nombre (presiona Tab estando en el objeto txtNombre) y genera un ciclo infinito que s6lo podré romper con Ctri+ Inter. {Dénde esté el problema? Resulta que cuando se ejecuta txtNombre_LostFocus, el objeto txtNombre ya no tiene el enfoque, es decir, el enfoque ya lo tiene otro objeto, en este caso txtDireceion, El procedimiento txtNombre_LostFocus, al detectar que se omitié la captura del nombre, envia un mensaje de error y utiliza la instruccién SetFocus, para asignar e! enfoque al objeto txtNombre; esto provoca que ‘txtDireccion, después de tener el enfogue, lo pierde estando vacfo, lo cual también causa error y le asigna el enfoque a txtDireccion, jpero otra vez txtNonbre esti vacfo, marca error y cambia el enfoque! Asf sigue infinitamente. La soluci6n: utilizar el evento adecuado, Como vimos en nuestro ejemplo, el even- to LostFocus no nos sirve porque cuando ocurre, el objeto ya no tiene el enfoque:a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book298 Parte 3: Controles graficos y programacién orientada a eventos Editar cédigo: cmdObjeto3, Evento: Click. tetMuestra.Text = txtMuestra.Text & "Obj-3: Click" & vbNewLine '™ Editar cédigo: emdObjeto3, Evento: MouseMove. txtMuestra.Text = txtMuestra.Text & "Obj-3: MouseMove" & vbNewLine Editar cédigo: emdObjeto3, Evento: MouseDown. txtMuestra.Text = txtMuestra.Text & *0bj-3: MouseDown* & vbNewLine Editar cédigo: emdObjeto3, Evento: MouseUp. txtMuestra.Text = txtiuestra.Text & "Obj-3: MouseUp" & vbNewLine Editar cédigo: extObjeto2, Evento: Click. txtMuestra.Text = txtMuestra.Text & "Obj-2: Click" & vbNewLine ‘® Editar cédigo: txtObjeto2, Evento: DbIClick. txtMuestra.Text = txtiluestra.Text & *Obj-2: DblClick" & vbNewLine Ejecucién MH Alejecutar el programa, antes de que usted interactde con él, el primer objeto en la secuencia de tabulacién adquiere el enfoque. El objeto txtobjetot adquiere el enfoque por ser el primero en la secuencia de tabulaciGn que puede hacerlo, Se produce el evento txtObjeto1_GotFocus, El cuadro de texto multilinea (txtMuestra) se actualizaré, mencionando que el evento en cuestién se ha ejecutado. Como puede ver, la propiedad Text de txtMuestra acumula los resultados obtenidos, separéndolos con chr(13) + chr(10), en su forma de constante Visual Basic vbNew.ine, lo que da la aparien- cia de ir listando los resultados. Esto sucedera en todos los procedimientos de evento del programa, donde s6lo cambiaré la referencia del objeto (0bj-1, 2 0 3) y el nombre del evento que se ha desencadenado.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book302 Parte 3: Controles graficos y pragramacién orientada a eventos Tabla de objetos y propiedades de frmmueve —_|Haga clic aqui [2000 2000 Métodos nuevos en frmlueve Move x,y ‘Mueve un objeto, variando las propiedades Top y Left, a | 1a posicién x, y especificada. Codificacion de frmiueve ‘Editar cédigo: emdClic, Evento: MouseMove. If cmdlic.Top = 2000 Then cndClic.Move 100, 100 Else cndClic.Move 2000, 2000 End If SES Enda You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookFigura 12.1 Apaiencia de la aplicacion frmDatos en tiempo de ejecucion Capitulo 12: Controles contenedores y controles de seleccin 307 Nota: Es curioso que el evento predeterminado sea DragDrop. Esto es comprensible debido a que Frame realmente no desarrolla tareas de interaccién con el usuario. Su finalidad principal es contener otros objetos. Cémo utilizar un objeto contenedor para darle funcionalidad a una aplicacién. (12.01) frmDatos.frm A continuacién aprenderé a utilizar un objeto contenedor, que seri activado 0 desac- tivado en base a una condicién, Crearé un formulario que altere su tamafio con base en la utilizacién de un campo, que utilice constantes para modificacién répida de valores y que manipule las diferentes acciones que el usuario realice, habilitando e inhabilitando objetos. Implementacién visuala You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 12: Controles contenedores y controles de seleccion 311 Solo se activaré cuando en el cuadro de texto Nombre (txtNonbre) se haya introducido algo. Para ello, cada que usted teclea algo en dicho cuadro de texto, sucede el evento Change (txtNembre_Change), mismo que evalia si la propiedad Text del objeto txtNombre es diferente a vacio (""), En caso de que no esté vaci habilita el objeto cmdMas y habilita el Frame fraComplemento (aunque de ‘momento no se vea), Haga clic en e] botén Mds >> (cmdltas). Se ejecutard el procedimiento endlas_Click. El objeto endMas tiene dos papeles: actiia como bot6n SMds >> para extender el formulario y mostrar el objeto Fram y como botén << Menos para reducir el formulario de tal forma que el objeto Frane no esté visible. ‘Si la altura dei formulario es igual al valor de la constante intReducido%, entonces s¢ hizo clic en el botén cuando actuaba como Mas >> y por tanto cam- bia la altura del formulario al valor de la constante intAmpliado', lo que hace que el formulario se expanda de tal manera que el objeto Frame esté visible. Como el batén no puede actuar como Mas >> si el formulario esta expandido, coloca el botén como << Menos. jine el contenido del objeto txtNosbre. Cuando el Frame esta visible (la altura del formulario es intAmpliado’), puede ¢liminar usted el contenido del cuadro de texto. En ese caso, al haber eliminado el ltimo caricter del cuadro de texto, el procedimiento txtNombre_Change detectaré que la propiedad Text del objeto txtNoabre no es diferente a vacio (°), por lo tanto inhabilita el uso del Frame. Si no dispusiera del objeto Frame, para inhabilitar los datos relativos a la direc- cin (txtDireccion), edad (txtEdad) y fecha de ni nto (txtFechaNac), tendrfa que inhabilitar a cada uno de los objetos por separado. La utilidad det Frame es que tanto la propiedad Enabled como Visible, se aplican por herenci 4 los objetos contenidos en él. Si el Frame esti habilitado, todo lo que esté den- tro de él esta habilitado, si el Frame esta visible, todo lo contenido en él esté visible, No obstante, usted puede manipular las propiedades Enabled y Visible para cada uno de los objetos contenidos; si tiene conflictos de propiedades, por ejemplo que inhabilite el Frame y de manera particular habilite uno de los abje- tos contenidos en dicho Frame, tendré prioridad Ia especificacién hecha al Fram es decir, podria disponer del objeto, siempre y cuando pudiera disponer det Frane. Escriba nuevamente su nombre. Haga clic en el botin Mas >> y escriba los datos de complemento. Luego haga clic en ei botén << Menos. Si ta altura del formulario no es igual al. valor de Ix constante intReducido's, entonces tendri el valor de la constante intAmp1iado%, y por lo tanto el formu- lario estard extendido, Usted podra introducir los datos de complemento. Mien-a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 12: Controles contenedores y controles de seleccién 315 Editar cédigo: chkSubrayadas, Evento: Click. If chkSubrayadas.Value = vbChecked Then Ibliuestra.Font Underline = True Else Ibliluestra.Font.Underline = False End If Editar cédigo: cmdAumentar, Evento: Click. If Iblmuestra.Font.Size >= 38 Then Beep Else Ipliluestra.Font.Size = lblMuestra.Font.Size + 2 End If Editar c6digo: eméReducir, Evento: Click. If lblMvestra.Font.Size <= @ Then Beep Else AblMuestra.Font-Size = Lblilyestra.Font.Size - 2 End If Editar c6digo: emdSatir, Evento: Click. End Ejecucién ® Aliniciar la ejecuci6n, el texto de muestra (txtuestra) no tiene ninguno de los atributos de Font posibles en el ejemplo, Su tamafio es el que tenga de manera predeterminada su sistema. Haga clic en la casilla de verificacién Negritas (chkNegritas), para marcarla. El procedimiento chkNegritas_Click se ejecutaré. Al momento de que se eje- cuta el procedimiento ¢1ick, el objeto ya tiene 1a propiedad Value actualizada, acorde a lo que manifiesta la interfaz,a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 12: Controles contenedores y controles de seleccin 335 Editar cédigo: Form, Evento: Load, Call Colorear Editar cédigo: ksbAzul, Evento: Change. Call Colorear Editar cédigo: hsbRojo, Evento: Change. Call Colorear Editar cédigo: hsbVérde, Evento: Change! call Colorear Editar cédigo: emdAleatoria, Evento: Click. hsbRojo.Value = Int(And * 255) hsbVerde.Value = Int(Rnd * 255) hsbAzul.Value = Int(And * 255) Editar cédigo: emdSatir, Evento: Click. End Ejecucién Al iniciar Ia ejecucién, Form_toad ejecuta el procedimiento definido por el usuario Colorear. La aplicacién tiene una etiqueta que desplegard los resultados (1b1eo20r). Es- te objeto verd modificada su propiedad BackColor, que establecerd el color de fondo, y su propiedad ForeColor, que modificard el color del texto que se en- cuentre en el objeto, La Igica del programa nos indica que mediante la manipu- lacién de las barras de desplazamiento se alterard el valor relativo de rojo, verdea You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookControles de listas Capitulo desplegables Objetivo Conocer el uso de los controles que generan listas desplegables, analizando sus par- ticularidades y capacidades. Al finalizar este capitulo deberd: Entender el concepto de Coleccién Dominar ef uso del control ListBox Conocer c6mo agregar y eliminar elementos de un control de lista desplegable Saber manejar objetos List8ox que permitan seleccionar miltiples opciones Saber cémo definir abjetos ListBox de estilo Check Dominar el uso del control comb Saber cémo desarrollar un ComboBox sensible al teclado 339a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 13: Controles de listas desplegables 343 La figura 13.2 muestra la forma en que lucen en una interfaz los objetos de lista desplegable. Figura 13.2 Los bjetos de lita deplegable, en una intrfaz Objeto ListBox bjeto ComboBox 1 Porte seeccion 1 Permits selecconar una ods opcion una opi. * Cuenta con una Cuenta con uns fecha que perme barra de deslaza ver la opciones aque se cloca aut ‘spontbies on amente en ex30 forma deste uel rea del ob espigabie 00 suflcerte 1 Se proctce ol overto para contener od ick cuando oie fas opciones ave tuna open doin see defiaron sta delegate 1 Cuenta con un 1 Se pratuce of eve Chek cuss hace Gunso oe exo, che on of objeto, 1 Se produce o evento seleezonando Un Change vendo las opsones cambiaetcontaniso ol euacro de toa Cémo agregar y eli desplegables inar opciones de las listas Los objetos de lista desplegable permiten la seleccién de opciones, eso esté muy claro, pero {dénde se definen las opciones? En el caso de este tipo de objetos, las opciones no pueden ser definidas en tiempo de disefio, por lo cual su adicién debe ser mediante c6digo; debido a eso, su actualizacién se realiza en tiempo de ejecucién, de forma dinémica. Método AddItem Para agregar opciones a un objeto de lista desplegable, debe utilizar el método AddItea. Sintaxis: ObjetoListaDesplegable AddItem Elemento {| , Indice }a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 13: Controles de listas desplegables 347 Dim intContador As Integer For intContadors = @ to lstOpciones.ListCount - 1 If IstOpcione: jelected(intContadors) = True Then Print “El elemento * & intContador’ " esté seleccionado” End If Next intContadors Por ejemplo, si al ejecutar el c6digo estuvieran seleccionados los elementos 1, 2 y 4, el resultado seria: El elemento 1 esta seleccionado El elemento 2 est seleccionado El elemento 4 esta seleccionado En caso de que usted s6lo seleccione una opeién, puede conocer cual fue selecciona- da sin necesidad de explorar todos los elementos para conocer cudi tiene la propiedad Selected establecida a True. La propiedad ListIndex proporciona ese valor. En nuestro ejemplo, para conocer cual ha sido seleccionada, puede escribir el si- guiente cédigo para el evento CLick del objeto 1stopciones: Private Sub 1stOpciones_Click(} MsgBox *Seleccionado el elemento: * & _ IstOpciones.Listindex MsgBox “Su especificacién Elenento:* & _ AstOpoiones.List(Listt .LastIndex) End Sub Método Removeltem Si desea climinar un elemento de un objeto de lista desplegable, debe utilizar el méto- do Removelten.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 13: Controles de listas desplegables 351 Propiedades nuevas en frmVisita Devuelve la especificacién Elemento (texto que aparece como. | opcidn) de un elemento contenido en un objeto de lista des- plegable. Listcount ‘Devuelve el niimero de elementos que contiene un objeto de lista desplegable. Selected Determina si un elemento contenido en un objeto de lista des- | plegable est seleccionado o no. TEn el caso de List#ox, indica el estilo del objeto, que puede | ser 0 (vbListBoxStandard), que sélo contiene opciones de | modo texto, 0 1 (vbListBoxCheckBox), donde cada una de las | opciones se presentan como objetos CheckBox. Métodos nuevos en frmVisita ga un elemento al obj de ist dow ier Actualiza visualmente los elementos de un aie de lista des- plegable. [Renoveltem _| Elimina un elemento al objeto de lista desplegable. Listindex Devuelve la especificacion Indice del elemento que fue selec cionado. Codificacin de fravisita Editar cédigo: emdAgregar, Evento: Click. If txtRespuesta.Text = ** Then MsgBox "Nada qué agregar", vbInformation, "Visitante* Exit Sub End If If IstCiudades.ListCount > @ Then Dim intContador As Integer For intContador® = @ To IstCiudades.ListCount - 1 If txtRespuesta.Text = 1stCiudades.List(intContadors) Then MsgBox *Esa ciudad ya existe’, vbInformation, *Visitante’a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 13: Controles de listas desplegables 355 Tabla de objetos y propiedades de frmbeporte FrmDeporte caption 2oué deporte practica? |StartUpPosition| 2-CenterScreen CagEliminar Propiedades nuevas en frmbeporte luultiselect | Establece la capacidad de un ListBox de aceptar la selecci6n de mas de una opcién de manera simultanea. ‘sorted Establece que los elementos del objeto de lista desplegable apa- rezcan alfabéticamente. Codificacién de frmbeporte ™@ Editar cédigo: Form, Evento: Activate, AstIzquierda. AddItem AstIzquierda.Additen IstIzquierda.Addrtem AstIzquierda.additen “Aerobics” "Karate” “Futbol soccer* "Futbol americano”a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 13: Controles de listas desplegables 359 [instalar [rue Eventos nuevos en frminstala Sucede cuando se activa o desactiva uno de los elementos del objeto ListBox, cuando éste se encuentra en estilo CheckBox. Este evento tiene un argumento implicito llamado Elemento, que devuelve el niimero del indice del elemento que se esta mo- dificando. Nota: Para guardar coherencia con la terminologia manejada hasta ahora, lo ideal es que el argumento implicito se Hamara Indice y no Elemento, ya que Visual Basic describe como Elemento a la especificacién String del elemento, e Indice esté aso- cciado al niimero de elemento. Hacemos la anotacién para evitar confusiones. Codificacion de frminstala @ Editar cédigo: (General), Evento: (Declarations). Dim dblConsumo(@ To 5) As Double Dim dblRequerido As Double ™ Editar cédigo: Form, Evento: Load. AstComponentes.AddItem *Contabilidad* LstComponentes.AddItem "Cuentas por pagar* AstComponentes.AddItem "Cuentas por cobrar* AstConponentes.AddItem *Chequera* AstComponentes.AddItem "Facturacién* AstComponentes.AddItem *Inventarios*a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 13: Controles de listas desplegables 363 ___| cboTananio cboTamafo Borderstyle | 1-Fixed Single ‘Caption Esta es una muestra Eventos nuevos en frmFuente En el caso de los objetos ComboBox, se ejecuta cuando se selec- ciona algin elemento de la lista desplegable. Codificacion de frmFuente ™ Editar cédigo: Form, Evento: Load. Dim intContador As Integer For intContador’ = @ To Screen.FontCount - 1 IstFuentes.AddIten Screen.Fonts(intContador%) Next intcontadors AstFuentes.Selected(@) = True cboTamanio.Additem & cboTamanio.Additem 10 cboTamanio.AddItem 12 cboTamanio.Additem 18 cboTamanio.AddItem 24 cboTamanio.Text = cboTamanio.List(0) Abliluestra.Font.Name = lstFuentes.List(®) IblNuestra.Font.Size = cboTamanio.List(@)a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 13: Controles de listas desplegables 367 cbowarca.AddItem "Chrysler cboMarca.AddItem *Audi* cbotarca.AddItem "Nissan* cboMarca.AddItem "Mercedez Benz” Editar cédigo: choMarea, Evento: Change. Oim strLetras As String Dim intContador As Integer strLetras$ = Trim(cbolarca. Text) If chollarca.Text <> "* Then For intContadors = @ To cbotlarca.ListCount - 1 If Len(strLetrass) <= _ Len(Trim(cbotarca.List(intContador’) }) Then If Mid(cboWarca.List(intcontadors), 1, _ Len(strietrass}) = strletrass Then choMarca.Text = cbollarca.List (intContadors) cboMarca.Selstart = 0 cbollarca.SelLength = Len(cboWarci Exit For xt) End If End If Next intContador® End If Ejecucion ® Al momento de cargar el formulario, se ejecuta el procedimiento Form_Load, que se ocupa de cargar todos los elementos al objeto ConboBox (cboMarca’ = Escriba en el cuadro de texto del ConboBex (empezando con maytiscula) una letra “M”. Se ejecutard el provedimiento ebowarca_change. El procedimiento definira una variable de trabajo de tipo String (strLetrass) y una de tipo contador (intCon- tador®). La variable de trabajo String toma el valor de lo que haya tecleado en el cuadro de texto; si ésta tiene un valor diferente a vacio (“"), inicia un cicloa You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book372 Parte 3: Controles graficos y programacién orientada a eventos El Editor de menus El Editor de mentis es la herramienta que Visual Basic proporciona para elaborar los sistemas de meni clisicos del entorno, en donde se define una barra de mends que contiene opciones generates (opciones de primer nivel), de las cuales dependerin otras (opciones de ejecucién) de las que también pueden depender otras (también de ejecucién), y asi sucesivamente, La barra de mends que se genera a través del Editor de meniis forma un sistema, ‘compuesto por opciones que ejecutan tareas al ser seleccionadas. Por tal motivo, cada tuna constituye un abjeto, mismo que puede ser utilizado a través de un procedimien- to de evento denominado Click. Las reglas que es conveniente observar ai crear un sistema de mentis son las si- guientes: 1 Deben existir opciones de primer nivel: identifican una funcién, tienen como propésito concentrar opciones dependientes relativas a dicha funciGn. Por ejem- plo, en todas las aplicaciones de Windows hay una opcién de primer nivel lla- mada Archivo (funcién de manipular archivos), de la cual dependen opciones que le son relativas: Nuevo, Abrir, Cerrar, Guardar, Guardar como, etcétera (también Hamadas de ejecucién). _Deben existir opciones de ejecucién: tienen como objetivo ordenar la ejecucién de una tarea; también pueden servir para concentrar otras opciones mis particu- lares. En el ejemplo anterior, serian de ejecucién las opciones Nuevo, Abrir, Cerrar, etcétera. Las opciones de primer nivel no dependen de ninguna otra opeién; las de ejecu- cidn siempre dependen de una de primer nivel, o bien, de otra de ejecucién. Las opciones de ejecucién pueden tener definidas teclas de atajo método abreviado, de tal forma que presionarlas sea equivalente a utilizar el ment y seleccionar la opcién deseada, No confundir con el acceso rapido que brinda la definicién “&” en la propiedad Capt ion de los objetos. Si una opcién de ejecucién s6lo sirve para mostrar otras iguales, no se recomien- da la colocacién de teclas de método abreviado. ® Revise cudles son las convenciones de Windows al momento de definir teclas de método abreviado; por ejemplo, al manejar el Portapapeles en Windows, la opcidn Copiar tiene como estandar la tecla de método abreviado Ctrl+C, Cortar tiene Ctrl+X y Pegar tiene Ctrl+V. ;Para qué modificar el estindar general- mente aceptado de Windows? Es posible que usted piense que para la opcién Pegar es més conveniente Ctrl+P que Ctrl+V; estamos de acuerdo, pero ;c6mo establecer su convencién de Ctrl+P si millones de personas ya utilizan Ctrl+V y dan por entendido que es la convencisn utilizada en su aplicacién?a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book376 Parte 3: Controles graficos y programacién orientada a eventos Figura 14.3 ‘Vista parcial del de una opcion de timer nivela You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book380 Parte 3: Controles graficos y programacién orientada a eventos Figura 14:5, ‘Vista final del Editor de menus usado en frmFormato; las ‘opciones de mnuSalir no aparecen, pero deben estar Vea la sangria; en tiempo de ejecucié tepresenta el cuerpo de! mena Después de insertar todos los objetos de menti, el Editor de meniis debe lucir de la siguiente forma: > Cé6mo introducir cédigo a una opcién de mend y utilizar un mend. [14.02] A continuacién aprenderé cémo se agrega el c6digo en un menti y c6mo utilizar dicho mend. 1. Utilice el formulario #raFormate del ejemplo 14.01. 2. En tiempo de disefio, seleccione Salir — Salir de la aplicacién. 3. Se abrird la ventana Cédigo en el evento mnuSalir_Salir_ Click.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book384 Parte 3: Controles graficos y programacién orientada a eventos > Opciones de ment mutuamente excluyentes. [14.05] A continuaci6n aprender4 a codificar el uso de opciones de mend mutuamente ex- cluyentes, es decir, seleccionar slo una de entre varias, Se apoyard con la propiedad Checked. Verd cémo se comportan las opciones de 3er nivel. 1. Edite el siguiente e6digo y ejecute la aplicacién. © Editar codigo: mnuFormato_Tamanio_T10, Evento: Click. nnuFormato_Tamanio_Tt®.Checked = True anuFormato_Tananio_T14.checked = False mnuFormato_Tamanio_T24.Checked = False AblEjemplo.Font.Size = 10 Editar cédigo: meeFormato_Tamanio_T14, Evento: Click. nnuFornato_Tamanio_T10.Checked = False mnuFormato_Tamanio_T14.Checked = True nuFormato Tamanio124.Checked = Fal: IDLE jemplo.Font Size = 14 Editar cédigo: mnuFormato_Tamanio_T24, Evento: Click. anuFormato Tananio_T10.Checked = False mnuFormato_Tananio_T14.Checked = False anuFormato_Tananio_T24.Checked = True Abl€jemplo.Font.Size = 24 Ejecucién © Haga clic en ef ment de ta aplicaciGn Formato — Tamatto ~ 14 puntos, Formato - Tamaio ~ 24 puntos y Formato ~ Tamaiio — 10 puntos, Formato — Tamaito — 14 puntos. Compruebe que las modificaciones en el texto de ejemplo se realizan en cuanto al tamafio. La forma en que opera cada una de las opciones seleccionadas es la siguiente: establecen a False a la propiedad Checked de aquellas opcionesa You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book392 Parte 3: Controles graficos y programacién orientada a eventos & Haga clic en el meni Edicion, Observe que la opcién Pegar no esté disponible, El procedimiento mnuedi- Click genera una variable temporal para comprobar si el Portapapeles con- tiene algo. Se asigna el contenido del Portapapeles a una variable: si la longitud de dicha variable es mayor a cero, entonces el Portapapeles tiene algo. Hacemos uso de la variable en virtud de que el Portapapeles no tiene propiedades, y por tanto es imposible evaluar la longitud del Portapapeles. En caso de que el Portapapeles contenga algo, se habilita la opcién Pegar del men (anuEditar_Pegar), y de lo contrario, se inhabilita. En nuestro caso, no disponemos de nada en el Portapapeles, por lo que la opcién referida no esta disponible. Siempre que se desee ejecutar una opeién de! mend, sea de primero o segundo nivel, se ejecutard el procedimiento anu ditar_Cliek, incluso cuando se utilicen las teclas de método abreviado que tienen algunas de las opciones de ejecucidn. @ Escriba Ja siguiente frase: “Esta aplicacién demuestra el uso del Portapapeles”. El procedimiento txtOrigen_change se encarga de ejecutar el procedimiento Inforaar cada vez que el contenido del cuadro de texto se modifica, por lo que usted verd la actualizacién dindmica de valores en las etiquetas de Ia interfaz. Deberd tener lo siguiente al terminar de teclear la frase que se indic6: 46, 46, 0. Seleccione la palabra “uso” de la frase, Haga clic en el menti Edicién ~ Copiar. Al marcar el texto, se prepara internamente al sistema para considerar una operacién que involucre al Portapapeles. Al hacer clic en el meni Edicién — Copiar, se ejecuta el procedimiento mnu€ditar_Copiar_Click, el cual se encarga de eliminar cualquier contenido que tenga el Portapapeles, para posteriormente cargar en el Portapapeles (C1ipboard.SetText) el texto que se tenga seleccionado (txtorigen.selText). A continuacién se ejecuta el procedimiento Intormar, que i manifestar 46, 29, 3, que corresponde a la longitud de la frase, posicién ial de lo marcado y longitud de lo seleccionado. @ Coloque el cursor al final de la frase de ejemplo, Haga clic en el ment Edicién, Haga clic en el meni Edicién — Pegar. Observe que la opcidn Pegar ya esti disponible, en virtud de que el procedimiento nuEditar_CLick determina que el Portapapeles ya contiene algo. Al hacer clic en Edicién ~ Pegar se ejecuta el procedimiento anu€ditar_Pegar_Click; hay que mencionar que cuando usted se movié al final de la frase, txtOrigen.sestart tuyo el valor de la nueva posicin del cursor (47) y txtOrigen.SelText no twvo valor (*") ya que no hubo nada seleccionado. Consideramos importante mencio- nar estos pormenores, ya que las etiquetas de la interfaz sélo se actualizan al uti- lizar las opciones del mend y no cuando Visual Basic realiza las actualizaciones internamente, lo que seria lo ideal.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book396 Parte 3: Controles graficos y programacién orientada a eventos Controles basicos para mostrar imagenes Imagen. Es un control que permite mostrar grificos a partir de mapas de bits, iconos, metarchivos, metarchivos mejorados, y otros formatos comprimidos como gif y jpeg. La propiedad esencial de este tipo de controles es Picture. En ella se especifica qué grifico deberd ser mostrado en el objeto. Lo mis relevante de este control es: Borderstyle Picture stretch ToolTipText LoadPicture {Como asignar un gréfico a un objeto basado en Image a través de la propiedad Picture? La cosa parece sencilla. En tiempo de diseffo, a través de la ventana Propiedades, basta encontrar la propiedad Picture, hacer clic en el batén de seleccin (...), selec cionar un archivo de imagen vélido y eso es todo: Ia imagen apareceré automética- mente en la interfaz. En tiempo de ejecucién es més complicado. Suponga que desea cargar en un objeto basado en el control Taage (de nombre imgGrafico) la imagen contenida en el archi- vo tierra.jpg. En cédigo no podriamos asignarla de 1a siguiente forma: imgGrafico.Picture = “tierra. jpg" ‘Ya que estariamos cargando un dato de tipo String, es decir, una cadena de caracteres.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookFigura 15.2 Apariencia de la aplicacion {frmDibujo en ‘tempo de ejecucion Capitulo 15: Manejo de imagenes 401 Nota: La propiedad stretch de los objetos basados en Image permite que las ima- genes a cargar se ajusten al tamafio del objeto que las contiene. La propiedad Auto- ize de los objetos basados en PictureBox permite que el objeto se adapte al tamaiio de la imagen que va a contener. Utilice objetos basados en Tmage cuando no conoce el tamafio de las imagenes y s6lo pretende mostrarlas. Uso de objetos basados en el control PictureBox y modificacién dinémica de imagenes. [15.02] frmDibujo.frm A continuacién aprenderé a trabajar con objetos basados en el control PictureBox, y un poco en relacién con los métodos disponibles para dichos objetos. Implementaci6n visuala You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 15: Manejo de imagenes 407 Figura 153 ‘Apariencia de! uadro de dislogo ‘Componentes 5. Busque Microsoft Windows Common Controls 6.0. Active la casilla de verifi- caciGn y haga clic en el bot6n de comando Apliar. En este momento, usted acaba de agregar un componente a su proyecto. 6. {Qué aparece en la parte inferior del cuadro de didlogo, a manera de Frame, con encabezado Microsoft Windows Common Controls 6.0? 7, Cuantos controles tiene el Cuadro de herramientas en estos momentos? . El Cuadro de herramientas debe lucir mas © menos como se muestra en la figura 15.4:a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book414 Parte 3: Controles graficos y programacién orientada a eventos 9. Agregue las siguientes imagenes (todas se encuentran en la ruta e:\avbp\eap15\): ee 10, Para aceptar los cambios, le recomendamos hacer clic en el botén Aplicar, y posteriormente en el botén Aceptar, Puede ingresar en cualquier momento a la pagina de propiedades y modificar lo ya definido. Mediante el control YnageList almacené imdgenes para su uso dedicado en su apli- cacién, Seguramente se generard un archivo de extensi6n fx, homénimo al de médu- lo (extensidn frm), en donde quedarin almacenadas las imagenes. Al momento de compilar a exe, las imagenes se agregardn al archivo ejecutable. El control TmageList genera objetos de tipo coleccién; hay un objeto general que cuenta con elementos que le son dependientes. Tanto el objeto general como los ele ‘mentos tienen sus propiedades. En resumen, tendrfamos lo siguiente: Un objeto de tipo coleccién Hamado: —_iml Imagenes. ‘Key __ Index__ Que contiene los siguientes elementos: Tierra 1 Drag 2 Drop 3 No 4 Se puede hacer un amplio manejo de la coleccién, identificada por Visual Basic como Listim través de las diversas propiedades que posee el objeto : Para contar (Count) la cantidad de im4genes contenidas en Ia lista de imagenes (ListImages) que constituye el objeto (4mLImagenes): imLImagenes.. ListImages.Counta You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 16: Arrastrar y colocar 425 Codificacién de frmarrastra @ Editar cédigo: Form, Evento: DragOver. “axee lblMensaje.Caption = * "ay ‘@ Editar cbdigo: Forms, Evento: DragDrop. Abluensaje.Caption = "Soltd el objeto fuente. Nueva ubicacion* omdFuente.Left = x ondFuente.Top = Y Ejecucién M Arrastre el botén Arrdstreme (cadFuente), pero no lo coloque (operacién de arrastre). Visual Basic detectaré que esté arrastrando el objeto endFuente sobre el objeto fraarrastra. Debido a eso, en cada variacién de posicién del puntero del ratén se ejecutard el evento Form_DragOver. que se encargaré de modificar la propie- dad Caption del objeto LbiMensaje, y mostraré el valor de los atributos implici- tos de! procedimiento de evento. En todo momento, e1 procedimiento Dragover sabe qué objeto es el que se esté moviendo sobre el objeto de destino, y en qué posicién se encuentra el objeto fuente (X, Y). & Coloque el objeto. Al colocar el objeto que estaba arrastrando, el objeto fraarrastra detecta que un objeto fuente se ha colocado sobre él, causando el evento Form_Oragdrop, que se encarga de modificar la propiedad Caption del objeto 1biMensaje, y muestra un mensaje de que el objeto se ha colocado. Para comprobar 1a variabilidad de los argumentos implicitos, el valor de las propiedades Left y Top toman el valor de la posicién del puntero del ratén al mo- ‘mento de colocar el objeto fuente (X, ¥). Como podré comprobar, efectivamente Jos argumentos implicitos cambian de acuerdo a las acciones que usted reatice en su interfaz.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book432 Parte 3: Controles graficos y programacién orientada a eventos to fuente se le asigna una imagen nula utilizando LoadPicture, con lo que su contenido desaparece. Se hace lo mismo con el icono de arrastre. Para evitar que se intente arrastrar otra vez el objeto fuente, la propiedad DragMode se establece 40, que equivale a modo manual, con lo que ya no son posibles las operaciones realizadas por el programa, més que mediante el uso de métodos y otra forma de programacién. Estados de transicién y punteros predefinidos Dentro de las operaciones de arrastrar y colocar, Visual Basic siempre sabe en qué estado de la operacién nos encontramos: sabe si estamos arrastrando el objeto 0 no, sabe si estamos arrastrdndolo sobre un espacio sobre el que no se puede colocar el objeto, o bien si el espacio sobre el que lo arrastramos es un espacio valido. Todos estos momentos en la operacién de arrastrar y colocar no llegan a ser relevantes como para constituir eventos nuevos; sin embargo, es posible utilizarlos. Mediante el evento Dragover, y a través del argumento implicito state, se puede obtener la informacién que Visual Basic procesa internamente del proceso de arras- trar y colocar, al momento en que un objeto es arrastrado. State puede tener los siguientes valores: Entrar (el control de origen se esté arrastrando dentro del intervalo {de un destino). [Sali (el control de origen se esté arrastrando fuera del intervalo de lun destino). eo Sobre (el control de origen se ha movido de una posicién del destino a otra). Los estados que acabamos de ilustrar ocurren internamente cuando se desarrolla una operaci6n de arrastrar y colocar; la forma mAs préctica y comin de poner de mani- fiesto los cambios de estado es a través de los punteros del ratén que Windows adop- ta. Por ejemplo, es muy comin que cuando se arrastra un objeto sobre un lugar en el que no se puede colocar, aparezca un puntero de prohibicién. En este capitulo ya vimos la manera en que se puede alterar el icono de arrastre a través de la propiedad Dragrcon.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 16: Arrastrar y colocar 437 InageList, por lo que deberd habilitar el componente Microsoft Windows Common Controls 6.0, como se vio en el capitulo anterior. EI siguiente es el comportamiento que se desea para el programa: El programa simula la asignacién de permisos para el manejo de archivos. ™ Hay dos Listas habilitadas de tipo ListBox para seleccién miltiple (u1tiSelect); una contiene los permisos disponibles para su asignacién, y la otra contiene la lista de los permisos asignados. H _Debido a que los objetos basados en ListBox son sensibles al clic, ya que me- diante é1 asumen la seleccién o liberacién de los elementos contenidos en la lista, se deberd presionar el bot6n derecho del ratén para activar el proceso de arrastrar y colocar, ® El icono de arrastre deberd denotar la transferencia de opciones de una lista a otra, @ La funcionalidad de arrastrar y colocar deberd estar habilitada para ambas listas, por lo que ambas pueden ser fuente y destino. Implementacién visuala You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book444 Parte 3: Controles graficos y programacién orientada a eventos Control basico para controlar el tiempo 6) Figura 17.1 Apariencié de la aplicacion frmRelo} en tiempo de diseflo Timer Este objeto le permite controlar acciones en intervalos de tiempo calculados en mili- segundos. El evento més importante de los objetos basados en este control es Timer, mismo que se ejecuta de manera periédica con base en un intervalo de tiempo determinado. La propiedad esencial de este tipo de controles es la propiedad Interval. En ella se specifica el intervalo, expresado en milisegundos, de cada cuindo se ejecutaré el pro- cedimiento de evento Timer. Lo més relevante de este control es: Interv El control Tiner es invisible en tiempo de ejecucién. Uso del control Timer como valor absoluto. Un reloj. [17.01] fraReloj.frm A continuacién aprenderé a crear una aplicacién que muestre un reloj digital, utili- zando el control Timer. Implementacién visuala You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book452 Parte 3: Controles graficos y programacién orientada a eventos El sistema de archivos Uno de los elementos mas importantes de todo sistema operativo es el sistema de archivos; dicho elemento es el ordenamiento l6gico, sistemético, por medio del cual los archivos son organizados, identificados, almacenados y recuperados, dentro de un medio de almacenamiento. La eficiencia de un sistema de archivos radica en la velocidad de entrada y salida que permite, el aprovechamiento del medio de almacenamiento (todo sistema de archivos desperdicia espacio), y la seguridad en la informacién que proporciona. Algunos incluso dan algunas ventajas adicionales como la compresién implicita de datos, entre otras cosas. En este capitulo veremos la forma en que Visual Basic permite manejar el sistema de archivos de la computadora, La herramienta puede hacerlo a través de los controles basics de manejo del sistema de archivos, o bien, a través del objeto Filesystem. Controles basicos para el manejo del sistema de archivos DriveListBox Es un control que explora el sistema de archivos y determina cudntas unidades de almacenamiento se tienen, para después desplegarlas en una interfaz tipo ComboBox y permitir su seleccién. El evento mds importante de los objetos basados en este control es Change, que se eje- cuta cuando usted selecciona una de las unidades de almacenamiento reconocidas por el sistema. Nota: Las unidades de almacenamiento reconocidas por el control DriveList8ox pueden ser fisicas y légicas, Cualquier unidad l6gica (referencia, a manera de Drive, a un recurso compartido den- tro de la red), es manejada de la misma forma que las unidades de almacenamiento fisico que se encuentran en su computadora. El sistema operativo se encargaré de los permisos y accesos a las mismas.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 18: Manejo del sistema de archivos 459 Ejecucién © Tareas repetitivas que se ejecutarin en Ia aplicacién, ActualizaResumen y Verificadtributos La aplicacién muestra un resumen de unidades de almacenamiento disponibles enel sistema, asf como el nimero de directorios disponibles en dichas unidades de almacenamiento, ademds del nimero de archivos disponibles en un deter- minado directorio que se encuentre seleccionado. Asimismo, puede variar el nti- mero de archivos que estén disponibles para su seleccién, dependiendo de sus atributos de archivo (modificado, s6lo lectura, sistema, oculto, etcétera). Atender todas estas variantes generaria una repeticién innecesaria de e6digo para poder mantener un resumen actualizado y verdadero. Para automatizar el proceso informative de 1a aplicacién, se generaron dos procedimientos definidos por el usuario, El procedimiento Actualizaesumen se encarga de establecer la propiedad Path del objeto dirDirectorio a la unidad de disco seleccionada en el objeto drvDisco: también establece la propiedad Path del objeto #11Archivo al valor de la propiedad Path del objeto dirDirectorio. De esa manera, ¢l objeto drvDisco determina el contenido de dirDirectorio, y la seleccisn en dirDirectorio determina el con- tenido de #41arehivo. Esto genera una coberencia en el contenido de los objetos. Una vez mantenida ia coherencia, se actualiza la informacién de resumen, misma que se actualiza con la informacién de la propiedad ListCount de cada uno de los objetos basicos de control del sistema de archivos; dicha propiedad siempre alma- cena la cantidad de elementos que hay en cada uno de ellos, Para guardar un aspec~ to agradable, se proporciona una viste a través de la funcién Format. Por otro lado, el procedimiento Veriticadtributes se encarga de revisar los valores de cada uno de los elementos de la matriz de controles chkAtributo; cada ‘uno representa la visualizacidn (vbChecked) o no visualizacién (vbUnchecked) de Jos determinados atributos de archivo, Las propiedades Archive, Hidden, Normal, System y ReadOnly aceptan un valor logico (True o False); recuerde que los obj tos CheckBox tienen tres valores posibles (vbChecked, vbUnchecked y vbGraye { Por tanto su valor es numérico, no I6gico. Por tal motivo, y considerando que nos interesa saber si est marcado 0 no el CheckBox, el procedimiento se encarga de un sencillo manejo, de asignar a las propiedades de atributo de archivo el valor Iégico resultante de saber si esté marcado el CheckBex. A cada uno de ios atributos de archivo le corresponde un elemento de la matriz. de controles ehkatributo, Una vez hecho esto, se procede a actualizar el contenido del objeto Ta1Archive a través del método Refresh, Se procede a actualizar el resumen, ya que el cam- bio de atributos de archivo puede repercutir en la aparicién de més © menos archivos en el objeto filArchivo.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book466 Parte 3: Controles graficos y programacién orientada a eventos Filesystem.CnDir (FileSystem.CurDir & *\ dirDirectorios.Path = FileSystem.CurDir dirDirectorios.Refresh Ablinfo.caption = FileSystem.CurDir ‘M Editar codigo: cmdCrearDirectorio, Evento: Click. Dim strNombreDir As String strNombreDir$ = InputBox(*Nombre del nuevo directorio:*) If strNombrepirs <= ** Then If Dir(FileSystem.CurDir & *\" & strNombreDirs) <> ** Then MsgBox "Ese directorio ya exist Else FileSystem.MkDir FileSystem.CurDir & "\" & _ strNombreDirs dirDirectorios.Path = FileSyst strNombreDirs CurDir & End If End If dirDirectorios.Refresh AbLinfo.Caption = FileSystem.curDir Dim strRuta As String strRutaS = FileSystem.CurDir If MsgBox("Esté seguro de querer eliminar * & vbCrLf & _ strRutaS, vbOKCancel + vbExclamation) = vbOK Then FileSystem.chDir strautas & * dirDirectorios.Path = FileSystem.CurDir dirDirectorios.Refresh FileSystem.RmDir strAutas dirDirectorios.Refresh End If IblInfo.Caption = FileSystem.curDira You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book482 Parte 3: Controles graficos y programacién orientada a eventos Cuadro de didlogo Color El Cuadro de didlogo Color se presenta mediante el método ShowColor del control CommonDialog. Dicho cuadro de didlogo permite que el usuario seleccione un color de una paleta o que cree y seleccione un color personalizado. Para usar el cuadro de didlogo Color, establezca las propiedades pertinentes del con- trol CommonDialog. Después utilice el método Showcoler, para activar el cuadro de didlogo, y la propiedad Color, para obtener el color seleccionado. Las definiciones Fags para el cuadro de didlogo Color son: Se presenta todo el cuadro de disilogo, leaccruLlopen inchyendo ls la seccién Definir colores Hace gue eeu el cuadro de diillogo presente aon Desactiva el botén de comando Definir edlCCPreventFull0pen colores personalizados y evita que el usuario defina colores personalizados. Establece el valor de color inicial del > [exc De todas las definiciones Flags, cd1CCRGBInit es la més importante, ya que es la que se encarga de preparar el entorno para la activacién del cuadro de didlogo Color. Nota: El valor de las constantes Flags es numérico. Asignar a la propiedad Flags cl valor resultante de 1a suma del valor correspondiente de dos o més constantes, es lo mismo que colocar las constantes separadas por Or. > Uso del contro! ConnonDiaiog para manipular el color en el formato estindar de ‘Windows. [19.02] frmColor.frm A continuacién aprender a utilizar el control CommonDialog, del componente Mi- crosoft Common Dialog Control, con la finalidad de poder seleccionar colores en la interfaz estindar de Windows.a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book488 Parte 3: Controles graficos y programacion orientada a eventos Figura 19.2 Aparencia de la aplicacion ‘frmFuente en tiempo de disefio To Tnesperado: Tiene que establecer Ia propiedad Flags a cdiGFScreenFonts, cdloFPrinterFonts 0 cdlcFBoth antes de presentar el cuadro de diflogo Fuente. De Jo contrario, se produce el error No hay ninguna fuente. De todas las definiciones Flags, cd1¢FBoth y cdlCFEt fects son las mas importan- tes, ya que proporcionan las opciones disponibles (fuentes), asf como los atributos especiales para la modificaci6n del tipo de letra (atributos), respectivamente, Uso del control ConmonDialog para manipular las fuentes (tipos de letra) en el formato estiindar de Windows. [19.03] frmFuente.frm A continuacién aprenderé a utilizar el control CommonDialog, del componente Micro- soft Common Dialog Control, con la finalidad de poder seleccionar las fuentes en la interfaz estindar de Windows. Implementacién visuala You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this bookCapitulo 19: Cuadros de didlogo comunes 497 clic en Cancelar), el control de la ejecucién se trasladard al segmento ManejoError, dentro del mismo procedimiento, que muestra un mensaje explica- tivo y se encuentra el fin del procedimiento. Se procede a activar el cuadro de didlogo a través del método ShowPrinter. Realice las modificaciones a la configuracién, segin desee. Al aceptar los cam- bios que realice, se declararén variables de trabajo para almacenar los valores que se hayan especificado en el cuadro de didlogo; una vez, que se asignan los valores seleccionados a las variables, éstos se imprimen en el formulario. En el caso del niimero de copias, se hace un pequefio ejercicio, utilizando el mé- todo PrintForn del objeto fratmpresora, a fin de comprobar el funcionamiento de dicho valor. La instruccién Exit Sud nos indica que queremos que el procedimiento se dé por terminado antes de su final, por lo que ManejoError: ya no se ejecuta, Si no se especificard Exit Sub, el programa se seguiria ejecutando, haciendo caso omiso de la etiqueta de referencia (ManejoError:), que sélo sirve para indicar dénde comienza el segmento del procedimiento llamado a través de GoTo. Cuadro de didlogo Abrir/Guardar como Los cuadros de didlogo Abrir y Guardar como se presentan mediante los métodos ShowOpen y ShowSave del control CommonDialog. La diferencia entre un cuadro y otro se presenta s6lo en el titulo del mismo, asi como en el método que se debe utilizar para invocarlos. Ambos cuadros de dislogo permiten que el usuario especifique una unidad, un directorio, una extensién de nombre de archivo y un nombre de archivo. En tiempo de ejecucién, cuando el usuario elige un archivo y cierra el cuadro de didlogo, la propiedad FileName contendré el nombre de archivo seleccionado 0 introducido. Puede establecer la propiedad Filter de forma que el cuadro de didlogo presente s6lo ciertos tipos de archivos, como archivos de texto, bases de datos, documentos y otros claramente diferenciados por su extensién. La propiedad Filter require las especificaciones separadas por canalizaciones (|) y distribuidas en pares; por ejem- plo, para determinar dos tipos de archivo, tendria que hacer lo siguiente: Todos | *.* | Documentos | *.doc EI primer elemento de cada par indicaria lo que aparece en l ComboBox de seleccidn de tipo de archivo, mientras que el segundo elemento de cada par indica el patron de filtro de los archivos. Hay otra propiedad, llamada IndexFilter, que permite definira You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book504 Parte 3: Controles graficos y programacién orientada a eventos Resumen En este capitulo: Vimos Ia forma de agregar el componente Microsoft Common Dialog Control a un proyecto. | Vimos cl uso del control CommonDialog, en sus modalidades Color, Fuente, Imprimir y Abrir/Guardar como. 1 Vimos la forma en que se puede controlar, a través de una rutina de manejo de errores, la seleccién Cancelar de los cuadros de didlogo. portancia de los indicadores al utilizar objetos basados en Es importante que incluya cuadros de didlogo comunes en sus aplicaciones; esto tiene miltiples beneficios, entre los que se encuentran la reduccién de la curva de aprendizaje requerida para aprender lo que usted desarrolla, el aspecto profesional de sus aplicaciones, y la reducci6n en el tiempo de desarrollo (aproveche lo ya desa- rrollado).a You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this booka You have elther reached a page that is unavailable for viewing or reached your viewing lil far this book| autor de este libre ha dicho: “E! ejercicio de Ia VISUAL Los 146 ejercicios Completos; los 65 errores yentados y Ia gran cantidad-de consejos Contenidos en el libro, derfiuestran lo que «autor Sostiene: ningin otro libro tiene tantas pricticay, ni plantea taritas solucionés. Este libro es referencia obligadd, tanto para el estudiante como para el profesional con responsabilidades de programacién, porque cubre todos los aspettos de Visual Basic indispensables-para los desarrolladores’de sistemas’en las empresas, y los tréfa a fondo de ‘manera pFaictica, reduciendo asi la curva de apréndizaje. m este Hbro encontrara: + Manejo del Entorno Integrado de “ Sn de aplicaciones de bases de datos Desarrollo: en ewibie ce Thultiusuario, con bloqueo optimista + Técnicas de programacién oriefitadaa _y pesimigta ‘objetas y manejo de eventos. + Estructuras de control, comandos; funciones y operadlras et Ienguajs, Reference thnice de conmulea. + Pi + Arrastrar y Colocar, creacién de meniis, manejo del Portapapeles. + Manejo de bibliotecas de interfaz del sistema operative y el sistema de archivos. + Manejo de base de datos a través de DAO, usando programacion para manipular bases de datos en Access 97/Access 2000, + Lenguaje de Definicién de Datos y Lenguaje de Manipulacién de Datos usando DAO y ADO. 1587 Introduction to programing with Mlerosoft Visual” “Basig 6 303 Mastering Visual Basic 6 Fundamentals ~ Profesional o Empresarial 4.0 (disponible de manera grotuita en el sto Web de Microsoft) 2 5-0-superion de MicrosofY). ISBN 970-26-0285-8 ) | | | | |_Visitenos en: ——olres7oMeozess www.pearsoneducacion.net
También podría gustarte
02 Formateo de Datos
PDF
Aún no hay calificaciones
02 Formateo de Datos
36 páginas
SDK CONTPAQi
PDF
Aún no hay calificaciones
SDK CONTPAQi
308 páginas
1a30-003-001 Recuperacion Paritaria
PDF
Aún no hay calificaciones
1a30-003-001 Recuperacion Paritaria
138 páginas
Aprenda VB en 21 Dias
PDF
Aún no hay calificaciones
Aprenda VB en 21 Dias
681 páginas
Diccionario de Datos (Version 2) - Modulo SNO
PDF
Aún no hay calificaciones
Diccionario de Datos (Version 2) - Modulo SNO
405 páginas
Manual MAGIX Web Designer 6 en Español
PDF
100% (3)
Manual MAGIX Web Designer 6 en Español
379 páginas
Curso de Visual Basic para Word
PDF
100% (2)
Curso de Visual Basic para Word
46 páginas
Regla 14
PDF
Aún no hay calificaciones
Regla 14
89 páginas
Mayo 2025-1
PDF
Aún no hay calificaciones
Mayo 2025-1
3 páginas
Ingenieria - Inversa-Aprende El Arte de La IngInversa
PDF
Aún no hay calificaciones
Ingenieria - Inversa-Aprende El Arte de La IngInversa
563 páginas
Tu Saldo Total Es de
PDF
Aún no hay calificaciones
Tu Saldo Total Es de
3 páginas
Persotv
PDF
Aún no hay calificaciones
Persotv
3 páginas
Factura Enero 2025
PDF
Aún no hay calificaciones
Factura Enero 2025
3 páginas
Manual Practico Visual Basic 6.0
PDF
Aún no hay calificaciones
Manual Practico Visual Basic 6.0
214 páginas
610674161-Factura-Personal-Flow - PDF (2) - 1.pdf - 20250114 - 114211 - 0000
PDF
Aún no hay calificaciones
610674161-Factura-Personal-Flow - PDF (2) - 1.pdf - 20250114 - 114211 - 0000
2 páginas
2025 01 13 12 46 30611 0400receipt
PDF
Aún no hay calificaciones
2025 01 13 12 46 30611 0400receipt
1 página
Reglamento 11 Regimen Unico de Infracciones y Sanciones
PDF
Aún no hay calificaciones
Reglamento 11 Regimen Unico de Infracciones y Sanciones
39 páginas
Tu Saldo Total Es de
PDF
Aún no hay calificaciones
Tu Saldo Total Es de
3 páginas
Libro Visual Basic
PDF
Aún no hay calificaciones
Libro Visual Basic
178 páginas
Visual Basic - Lo Básico Que Debe Saber - Compressed
PDF
Aún no hay calificaciones
Visual Basic - Lo Básico Que Debe Saber - Compressed
83 páginas
La Integracion Fisica de America Latina y Las Actividades Logisticas PDF
PDF
Aún no hay calificaciones
La Integracion Fisica de America Latina y Las Actividades Logisticas PDF
69 páginas
Manual para El Arrendamiento de Bienes Inmuebles
PDF
Aún no hay calificaciones
Manual para El Arrendamiento de Bienes Inmuebles
6 páginas
Base de Datos Excel en Word
PDF
Aún no hay calificaciones
Base de Datos Excel en Word
43 páginas
Manual de Procedimientos Lactario
PDF
100% (2)
Manual de Procedimientos Lactario
172 páginas
Tu Saldo Total Es de $ 45.209,51 y Vence El Día 12/04/2024
PDF
Aún no hay calificaciones
Tu Saldo Total Es de $ 45.209,51 y Vence El Día 12/04/2024
3 páginas
Tu Saldo Total Es de $ 92.364,66 y Vence El Día 14/03/2024
PDF
Aún no hay calificaciones
Tu Saldo Total Es de $ 92.364,66 y Vence El Día 14/03/2024
3 páginas
4-2018 Normas Seg. de La Navegacion en Areas Fluviales y Maritimas
PDF
Aún no hay calificaciones
4-2018 Normas Seg. de La Navegacion en Areas Fluviales y Maritimas
26 páginas
Teoria Lenguaje I
PDF
Aún no hay calificaciones
Teoria Lenguaje I
38 páginas
Instalar El Entorno de Trabajo SAP Logon
PDF
Aún no hay calificaciones
Instalar El Entorno de Trabajo SAP Logon
15 páginas
Cómo Depurar Un Programa de Java en NetBeans
PDF
Aún no hay calificaciones
Cómo Depurar Un Programa de Java en NetBeans
11 páginas
Sistema Experto Swi Prolog
PDF
100% (1)
Sistema Experto Swi Prolog
18 páginas
El Despertar Del Tercer Ojo
PDF
100% (1)
El Despertar Del Tercer Ojo
16 páginas
Cartilla Unidad 1 Cátedra Pablo Oliverosf
PDF
Aún no hay calificaciones
Cartilla Unidad 1 Cátedra Pablo Oliverosf
30 páginas
MySQL 1
PDF
Aún no hay calificaciones
MySQL 1
41 páginas
Ord. 2-86 - Inspecciones Seguridad - CNSN
PDF
Aún no hay calificaciones
Ord. 2-86 - Inspecciones Seguridad - CNSN
10 páginas
Los Contratos Bancarios en El Nuevo Código Civil Final
PDF
Aún no hay calificaciones
Los Contratos Bancarios en El Nuevo Código Civil Final
26 páginas
My Business Pos 2011
PDF
Aún no hay calificaciones
My Business Pos 2011
106 páginas
UNIDAD No. 2 EVALUACIÓN DE CONTROL INTERNO
PDF
Aún no hay calificaciones
UNIDAD No. 2 EVALUACIÓN DE CONTROL INTERNO
19 páginas
Prefectura Naval Argentina: Ordenanza Maritima #5/89
PDF
Aún no hay calificaciones
Prefectura Naval Argentina: Ordenanza Maritima #5/89
12 páginas
01 2025 Factura 11 03 2025-18 40 25
PDF
Aún no hay calificaciones
01 2025 Factura 11 03 2025-18 40 25
2 páginas
Tiquet 1-15448
PDF
Aún no hay calificaciones
Tiquet 1-15448
1 página
Practico 2 - Nifi
PDF
Aún no hay calificaciones
Practico 2 - Nifi
25 páginas
Plan Nacional de Desarrollo Portuario
PDF
Aún no hay calificaciones
Plan Nacional de Desarrollo Portuario
71 páginas
Reglamento de Inspeccion de Seg. Maritima
PDF
Aún no hay calificaciones
Reglamento de Inspeccion de Seg. Maritima
28 páginas
Organigrama Banco Mundial
PDF
Aún no hay calificaciones
Organigrama Banco Mundial
1 página
Ordenanza 1-08 Medidas Seguridad de La Navegacion
PDF
Aún no hay calificaciones
Ordenanza 1-08 Medidas Seguridad de La Navegacion
11 páginas
Capitulo VII Diccionario de Aplicaciones
PDF
Aún no hay calificaciones
Capitulo VII Diccionario de Aplicaciones
33 páginas
3.1 El Transporte Fluvial Boliviano en La Cuenca Del Plata - HPP
PDF
Aún no hay calificaciones
3.1 El Transporte Fluvial Boliviano en La Cuenca Del Plata - HPP
101 páginas
Comunidad de Visual FoxPro en Español - ActiveX
PDF
Aún no hay calificaciones
Comunidad de Visual FoxPro en Español - ActiveX
49 páginas
Manejo de Handle Desde VFP
PDF
Aún no hay calificaciones
Manejo de Handle Desde VFP
8 páginas
Aprenda A Programar en Visual Basic - 5ac258171723dd9672582e07
PDF
Aún no hay calificaciones
Aprenda A Programar en Visual Basic - 5ac258171723dd9672582e07
75 páginas
Desarrollo de Aplicaciones Multiplataforma Temarios
PDF
Aún no hay calificaciones
Desarrollo de Aplicaciones Multiplataforma Temarios
15 páginas
6542 - Principios - Generales - de - Control - Interno
PDF
Aún no hay calificaciones
6542 - Principios - Generales - de - Control - Interno
21 páginas
Guia Usuario Add PDF
PDF
Aún no hay calificaciones
Guia Usuario Add PDF
42 páginas
Portafolio Escuela Gastronomia
PDF
Aún no hay calificaciones
Portafolio Escuela Gastronomia
12 páginas
Laravel 62652fecd82350a
PDF
Aún no hay calificaciones
Laravel 62652fecd82350a
14 páginas
Herencia POO
PDF
Aún no hay calificaciones
Herencia POO
36 páginas
Hidrovia Panama Paraguay
PDF
Aún no hay calificaciones
Hidrovia Panama Paraguay
10 páginas
Encriptación Simétrica
PDF
Aún no hay calificaciones
Encriptación Simétrica
6 páginas
Patrón MVVM PDF
PDF
Aún no hay calificaciones
Patrón MVVM PDF
13 páginas
Camplos Blob Mysql VFP
PDF
Aún no hay calificaciones
Camplos Blob Mysql VFP
7 páginas
Transferencias Bancarias Entre Cuentas de La Organización
PDF
Aún no hay calificaciones
Transferencias Bancarias Entre Cuentas de La Organización
5 páginas
El Objeto Datawindow
PDF
Aún no hay calificaciones
El Objeto Datawindow
9 páginas
Access Excel VBA
PDF
Aún no hay calificaciones
Access Excel VBA
4 páginas
Comandos VFP
PDF
Aún no hay calificaciones
Comandos VFP
2 páginas
Modelos de Documentos
PDF
Aún no hay calificaciones
Modelos de Documentos
3 páginas