Curso Visual Basic 4

  • October 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Curso Visual Basic 4 as PDF for free.

More details

  • Words: 1,607
  • Pages: 13
Cuarta sesión En esta sesión aprenderá como el programa puede responder a los eventos de teclado, a detectar si una tecla fue oprimida o liberada y a manejar los datos de entrada que vienen del teclado. •

• •

El evento KeyDown sucede cuando oprime cualquier tecla. Por ejemplo, si se oprime una tecla mientras un botón de comando llamado cmdpushme tiene el enfoque, se ejecuta automáticamente el procedimiento cmdpushme_KeyDown El evento KeyUp sucede cuando sueltan la tecla que se oprimió. Por ejemplo, si se suelta la tecla oprimida en el párrafo anterior, se ejecuta automáticamente el procedimiento cmdpushme_KeyUp El evento KeyPress sucede cuando oprime una tecla que tiene un carácter ANSI correspondiente. Por ejemplo, si oprime la tecla A, mientras un botón de comando tiene el enfoque, se ejecuta el procedimiento cmdpushme_KeyPress. Si oprime F1, el evento KeyPress no sucede, debido a que esta tecla no tiene un carácter ANSI correspondiente.

Programa Keys Este programa ilustra como se utilizan los tres eventos de teclado en un programa.

Tabla de propiedades del formulario frmkeys Objeto Propiedad Form Name Caption Command button Name Caption Command button Name Caption Label Name Alignment BorderStyle Caption •

Valor frmkeys Programa Keys cmdsalir &Salir cmdpushme &Oprime lblinfo 2-Center 1-Fixed Single Borra el texto

Teclee el siguiente código

‘todas las variables deben declararse option explicit Private sub cmdsalir_click() End End sub Private sub cmdpushme_KeyDown(KeyCode as integer, Shift as integer) Lblinfo.caption=”La tecla que oprimiste fue:”_ & str(Keycode) & “Shift:” & str(shift) End sub •

Graba y ejecuta tu programa.

Tabla de los valores posibles del segundo procedimiento cmdpushme_KeyDown. Seg. parámet. Estado de Alt Estado de Ctrl 0 No oprimido No oprimido 1 No oprimido No oprimido 2 No oprimido Oprimido 3 No oprimido Oprimido 4 Oprimido No oprimido 5 Oprimido No oprimido 6 Oprimido Oprimido 7 Oprimido Oprimido

parámetro

del

Est. de Mayús No oprimido Oprimido No oprimido Oprimido No oprimido Oprimido No oprimido Oprimido

Detección de una tecla liberada Private sub cmdpushme_KeyUp(KeyCode as integer, Shift as integer) Lblinfo.caption=”La tecla que oprimiste fue:”_ & str(Keycode) & “Shift:” & str(shift) End sub Detección de una tecla ANSI Private sub cmdpushme_KeyPress(KeyAscii as integer) Dim char Char=Chr(KeyAscii) Lblinfo.caption=”KeyAscii:” & str(KeyAscii) & “Char:” & char End sub •

Graba y ejecuta tu programa.

Controles para el sistema de archivos Se enfoca en el uso de controles para el sistema de archivos, para escribir un programa que le permite seleccionar un archivo de una unidad. Hay tres controles de este tipo: DriveListBox, DirListBox y FileListBox. En un programa tipico que permite seleccionar archivos de unidades, esos tres controles se usan en combinación. Cuando necesita seleccionar un archivo, se despliega en pantalla un cuadro de diálogo que incluye los tres controles, Luego puede elegir el archivo deseado seleccionando una unidad en el DriverListBox, un directorio en el DirListBox y un archivo en el FileListBox.

DriverListBox

DirListBox FileListBox

FielListBox

DirlistBox

DriverListBox

Objeto Form Label Text Box File List Box Label Combo Box Label Label Directory List Box Command Button Label Drive List Box Command Button

Propiedad Name Caption Name Caption Name Text Name Name Caption Name Style Name Caption Name Caption BorderStyle Name Name Caption Default Name Caption Name Name Caption Cancel

Valor frmsize Programa Size lblnombrearch Nombre del archivo txtfilename Borra el texto filfiles lblfiletype Tipo de Archivo cbofiletype 2-Dropdown List lbldirectories Directorio lbldirname Vacio 1-Fixed Single dirdirectory cmdok &Ok True lbldrive Unidad: drvdrive cmdcancel &Cancelar True



Teclee el siguiente código

‘todas la variables deben declararse. Opcion explicit Private sub form_load ‘llena el combo cbofiletype cbofiletype.additem “Todos los Archivos (*.*)” cbofiletype.additem “Archivos Texto (*.TXT)” cbofiletype.additem “Archivos Doc (*.DOC)” ‘inicializa el combo en el elemento #0 cbofiletype.listindex=0 ‘actualiza la etiqueta lbldirname con la ruta lbldirname.caption=dirdirectory.path End sub Private sub drvdrive_change() ‘la siguiente instrucción puede causar un error ‘por lo que ponemos una captura de errores. On error resume next ‘cambia la ruta del control dirlistbox ‘hacia la nueva unidad dirdirectory.path=drvdrive.drive if err.number<>0 then driveerror: ‘sucedió un error hay que informar al usuario y restaurar la unidad msgbox “Error de unidad”, vbexclamation, “Error” err.number=0 drvdrive.drive=dirdirectory.path end if End sub Private sub dirdirectory_change() ‘un directorio a acaba de ser seleccionado por el usuario ‘por lo que actualiza la ruta del control filelistbox adecuadamente filfiles.path=dirdirectory.path ‘tambian actualiza la etiqueta lbldirname lbldirname.caption=dirdirectory.path End sub Private sub filfiles_click()

‘actualiza el cuadro de texto txtfilename con el ‘nombre de archivo que se acaba de seleccionar txtfilename.text=filfiles.filename End sub Private sub cmdok_click() Dim pathandname as string Dim filesize as string Dim path as string ‘si no hay archivo selecionado, le indica al usuario ‘y sale del procedimiento if txtfilename.text=”” then msgbox “Primero selecciona una archivo” exit sub end fi ‘se asegura de que la ruta termine con (\) if rigth(filfiles.path, 1)<> “\” then path=filfiles.path & “\” else path=filfiles.path end if ‘obtiene la ruta y el nombre del archivo seleccionado if txtfilename.text=filfiles.filename then pathandname= path & filfiles.filename else pathandname=txtfilename.text end if ‘la siguiente instrucción puede causar un error ‘por lo que se establece una captura de error on error resuma next ‘obtiene el tamaño del archivo if err.number=0 then ‘despliega el tamaño del archivo msgbox “El tamaño de: ” & pathandname & “ es:” & filesize “ bytes” else

filelenerror: ‘sucedió un error, por lo tnato, despliega un mensaje de error

msgbox “No se puede calcular el tamaño:” & pathandname err.number=0 end fi End sub Private sub filfiles_dblclick() ‘asigna al cuadro de texto txtfilename el ‘nombre el archivo en el que se acaba de hacer doble clic txtfilename.text=filfiles.filename ‘ejecuta el procedimiento cmdok_click cmdok.value=true End sub Private sub cmdcancel_click() end End sub Como tener acceso a archivos Muchos programas necesitan leer y escribir datos en archivos en disco. En esta parte apredera a crear, leer y escribirlos en archivos. •

Hay tres formas para accesar archivos en VB. Acceso aleatorio, Acceso secuencial, Acceso binario

Programa Teléfonos Esta programa ilustra la manera de crear y manejar archivos de acceso aleatorio. El programa permite mantener un archivo de datos llamado PHONE.DAT que guarda registros de personas y sus números telefónicos.

Objeto Form

Propiedad Name

Valor frmtelefono

Text Box Text Box Text Box

Command Button Command Button Command Button Command Button Label Label Label



Caption MaxButton Name text MaxLength Name Text MaxLength Name text MaxLength MultiLine ScrollBars Name Caption Name Caption Name Caption Name Caption Name Caption Name Caption Name Caption

Programa Teléfonos False txtnombre Vacío 40 txttelef Vacío 40 txtcoment Vacío 100 True 2-Vertical cmdnew &Nuevo Cmdnext &Siguiente cmdprevious &Anterior cmdexit Sa&lir lbl1 Comentario lbl2 Teléfonos lbl3 Nombre

Teclee el siguiente código.

‘todas la variables DEBEN declararse Option explicit ‘declara un tipo definido por el usuario que corresponde a un ‘registro en el archivo PHONE.DAT Private type Persona Nombre as string * 40 Telef as string * 40 Coment as string * 100 End type

‘declara variables que deben ser visibles ‘en todos los procedimientos del formulario Private gpersona as persona

Private Private Private Private

gfilenum as integer grecordlen as long gcurrentrecord as long glastrecord as long

Public sub salvaRegistro ‘llena a gpersona con los datos desplegados gpersona.nombre=txtnombre.text gpersona.telef=txttelef.text gpersona.coment=txtcoment.text ‘guarda gpersona en el registro actual Put #gfilenum, gcurrentrecord, gpersona End sub Public sub MuestraRegistro ‘llena a gpersona con los datos del registro actual get #gfilenum, gcurrentrecord, gpersona ‘despliega a gpersona txtnombre.text=trim(gpersona.nombre) txttelef.text=trim(gpersona.telef) txtcoment.text=trim(gpersona.coment) ‘despliega el número de registro actual ‘en el título del formulario frmtelefono.caption=”titulo” & “Registro:” & str(gcurrentrecord) & _ str(glastrecord) End sub Private sub form_load() ‘calcula la longitud de un registro grecordlen=len(gpersona) ‘obtiene el siguiente numero de archivo disponible gfilenum=freefile ‘abre el archivo para acceso aleatorio, si al archivo no existe lo crea Open “PHONE.DAT” For Random As gfilenum len=grecordlen ‘actualiza gcurrentrecord gcurrentrecord=1 ‘encuentra cual es el ultimo numero de registro del archivo glastrecord=lof(gfilenum)/grecordlen

‘si el archivo acaba de ser creado ‘establece glastrecord a 1 if glastrecord=0 then glastrecord=1 end if ‘despliega el registro actual muestraregistro End sub Private sub cmdnew_click() ‘guarda el registro actual salvaregistro ‘añade un nuevo registro en blanco glastrecord=glastrecord+1 gpersona.nombre=” ” gpersona.telef=” ” gpersona.coment=” ” put #gfilenum, glastrecord, gpersona ‘actualiza a gcurrentrecord gcurrentrecord=glastrecord ‘despliega el registro que acaba de crear muestraregistro txtnombre.setfocus End sub Private sub cmdnext_click() ‘si el registro actual es el ultimo registro, emite un sonido ‘y despliega un mensaje de error, en caso contrario, guarda ‘el registro actual y salta al siguiente registro if gcurrentrecord=glastrecord then Beep MsgBox “Fin del Archivo”, vbexclamation else salvaregistro gcurrentrecord=gcurrentrecord+1 muestraregistro end if txtnombre.setfocus End sub

Private sub cmdprevious_click() ‘si el registro actual es el primer registro, emite un sonido ‘y despliega un mensaje de error, en caso contrario, guarda ‘el registro actual y salta al anterior registro if gcurrentrecord=glastrecord then Beep MsgBox “Fin del Archivo”, vbexclamation else salvaregistro gcurrentrecord=gcurrentrecord-1 muestraregistro end if txtnombre.setfocus End sub Private sub cmdexit_click() ‘guarda el registro acual salvaregistro ‘ cierra el archivo close #gfilenum End End sub •

Graba y ejecuta tu programa

Modificación al programa



Teclea el siguiente código

Private sub cmdsearch_click() Dim Dim Dim Dim

busca as string found as integer recnum as long tmp as persona

‘obtiene del usuario el nombre a buscar busca=inputbox(“Nombre a Buscar:”, “Busqueda”) ‘si el usuario no da el nombre if busca=” ” then txtnombre.setfocus exit sub end if ‘convierte el nombre del usuario a buscar a mayúsculas busca=ucase(busca) ‘inicializa el indicador found en false found=false

‘busca el nombre que introdujo el usuario for recnum=1 to glastrecord

get #gfilenum, recnum, tmp if busca=ucase(trim(tmp.nombre)) then found=true exit for end if next ‘si encuentra el nombre despliega el registro if found=true then salvaregistro gcurrentrecord=recnum muestraregistro else MsgBox “Nombre: ” & busca & “ no existe” end if txtnombre.setfocus End sub •

Graba y ejecuta tu programa

La opción borrar queda de tarea para la siguiente clase, no quiero el código, quiero el algoritmo.

Related Documents

Curso Visual Basic 4
October 2019 14
Temario Curso Visual Basic
October 2019 21
Curso Visual Basic 1
October 2019 21
Curso Visual Basic 5
October 2019 16
Curso Visual Basic 6
October 2019 15
Curso De Visual Basic
November 2019 18