Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual de Visual Basic 5.0
Manual de Visual Basic 5.0
co
pu
ce
nt
er
1@
ar
ne
http://www.pdf4free.com
t.c
Pgina 1
om
.a
Todo esto tiene un precio; antes de la existencia de Visual Basic, el desarrollo de aplicaciones para Windows era mucho ms complicado que desarrollar aplicaciones para DOS. Los programadores tenan que preocuparse ms de lo que estaba haciendo el ratn, de dnde estaba el usuario dentro de un men y de si estaba realizando un clic o un doble clic en un punto determinado. El desarrollar aplicaciones para Windows requera expertos programadores en C, e incluso stos tenan problemas.
co
Visual Basic ha cambiado esta situacin. Se pueden desarrollar aplicaciones para Windows ms rpidamente. Los errores de programacin no se generan tan frecuentemente y, si lo hacen, son ms sencillos de depurar. Adems incluye dos conceptos importantes: Un mtodo visual de creacin de aplicaciones, incluyendo formularios (ventanas), controles y, componentes del formulario. La habilidad de asociar cdigo directamente a cada evento de cada elemento del diseo visual. Pgina 2
pu
ce
nt
er
1@
ar
Las interfaces grficos de usuario (GUI) han revolucionado el mundo informtico. Quiz ms importante a largo plazo es el hecho de que las aplicaciones Windows tienen una interfaz de usuario consistente, es decir, los usuarios tienen ms tiempo para dominar la aplicacin sin tener que preocuparse de las teclas que deben pulsarse dentro de los mens y cuadros de dilogo.
ne
http://www.pdf4free.com
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 1.2.- DESARROLLO DE APLICACIONES EN WINDOWS. Windows 95 ha sido diseado para tomar las ventajas de las nuevas tecnologas de hardware y software. Entre las innovaciones ms importantes de la programacin con Windows 95 tenemos: API (Application Programming Interface) de 32 bit, compatible con la API soportada en Windows NT.
Etc.
1.3.- LA PROGRAMACIN VISUAL Y GUIADA POR EVENTOS. Un programa realizado en DOS es un conjunto de sentencias que se ejecutan de arriba a abajo ms o menos, en el orden que el programador ha diseado. Una aplicacin en Windows presenta todas las opciones posibles en uno o ms formularios para que el usuario elija entre ellas. La secuencia en la que se ejecutarn las sentencias no puede ser prevista por el programador. Esto da lugar a la Programacin Orientada a Eventos. Para programar una aplicacin en Windows hay que escribir cdigo separado para cada objeto en general, quedando la JDMR , Academia Jos Lerma Pgina 3
co
pu
ce
nt
Introduccin de un nuevo modo de presentacin de las aplicaciones, incluyendo la barra de tareas, controles de ficha y, ficheros de ayuda.
er
1@
Optimizacin del registro central para almacenar informacin de las aplicaciones. sto sustituye a los ficheros INI utilizados en Windows 3.x para mantener informacin acerca del sistema y las aplicaciones.
ar
La adaptacin de los controles OLE (OCXs) en lugar de los controles VBX para utilizarlos en programacin.
ne
La capacidad de incrustar objetos OLE entre la inmensa mayora de aplicaciones Windows 95 con solo arrastrar y soltar.
http://www.pdf4free.com
t.c
Un modelo de memoria sin muchas de las restricciones de versiones anteriores de Windows, lo que significa que las cadenas ya no estn limitadas a 65.535 caracteres, pudiendo alcanzar casi los 2 billones de caracteres de longitud.
om
.a
Curso de Visual Basic Avanzado 5.0 aplicacin dividida en pequeos procedimientos, conducido cada uno de ellos por un suceso. Un suceso es una accin reconocida por un objeto (formulario o control) el suceso puede ser causado por el usuario o, indirectamente por el cdigo. En Visual Basic cada formulario y cada control tienen predefinidos un conjunto de sucesos. Cuando ocurren estos sucesos, Visual Basic invoca al procedimiento asociado con el objeto para ese suceso. Para desarrollar una aplicacin en Visual Basic, los pasos que se seguirn son: 1. Crear la interfaz de usuario. 1. Modificar las propiedades de cada objeto. 1. Escribir el cdigo asociado a los eventos de cada objeto.
Barra de mens.
Visualiza las rdenes que se utilizan para desarrollar, probar y archivar una aplicacin. Los mens que nos encontramos son:
Ver da acceso rpido a todas las partes del programa. Proyecto contiene las ordenes necesarias para manejo de proyectos.
co
Herramientas contiene algunos instrumentos tiles para la creacin de los programas. Complementos contiene las utilidades para el manejo de bases de datos. Ventana opciones para el manejo y apariencia de la aplicacin. Ayuda. Pgina 4
pu
ce
nt
er
1@
ar
ne
http://www.pdf4free.com
t.c
om
.a
Ventana o barra de herramientas. Facilita el uso a las rdenes ms comunes. De izquierda a derecha los iconos que aparecen permiten:
Agregar formulario insertar un nuevo tipo de formulario. Editor de Mens visualiza la ventana de diseo de mens. Abrir Project permite abrir un proyecto. Guardar Proyecto permite guardar un proyecto. Inicio. Interrumpir. Terminar.
Examinador de Objetos muestra las clases, mtodos, propiedades, etc. de los objetos disponibles en la aplicacin. Proyecto visualiza la ventana de proyecto. Explorador de proyectos abre la ventana de exploracin de proyectos.
Ventana de posicin muestra la ventana de posicin del formulario. Examinador de Objetos muestra las clases, mtodos, propiedades, etc. de los objetos disponibles en la aplicacin. Ventana de herramientas muestra la caja de herramientas.
co
pu
ce
nt
er
1@
ar
ne
Pgina 5 http://www.pdf4free.com
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 Caja de herramientas. Provee de un conjunto de herramientas que permiten colocar los controles en el formulario durante el diseo del proyecto. Ventana de proyecto. En esta ventana estn especificados los ficheros (formularios, mdulos, etc.) que forman la aplicacin y, dnde se seleccionarn para crearlos o modificarlos. Esto se debe a que hay ficheros que pueden utilizarse en ms de una aplicacin. Adems contiene dos botones: Ver Formulario que visualiza el formulario seleccionado y; Ver Cdigo que visualiza el cdigo del fichero seleccionado.
Ventana de posicin del formulario. Es una ventana mediante la cual podemos ver la posicin que ocupar el formulario en la pantalla una vez la aplicacin est fucionando.
co
Los eventos que tendrn lugar a la hora de ejecutar una aplicacin son: 1. Form_Initialize 2. Form_Load 3. Form_Resize JDMR , Academia Jos Lerma Pgina 6
pu
ce
nt
er
Especifica las propiedades de cada uno de los objetos. En cada momento mostrar las propiedades del objeto seleccionado en el formulario. Est formada por dos partes: la lista desplegable de objetos que visualiza el nombre del objeto seleccionado y, la lista de propiedades del objeto seleccionado.
1@
Ventana de propiedades.
ar
Es la ventana que da lugar a la interfaz de usuario. Es la ventana que se personalizar. Los puntos que aparecen sobre el formulario, forman una rejilla que ayuda a la hora de alinear los controles que se sitan sobre el mismo. Esta rejilla desaparece en tiempo de ejecucin. Para eliminarla en tiempo de diseo se acceder a la opcin Herramientas/Opciones/Ficha Entorno/Mostrar Cuadrcula.
ne
http://www.pdf4free.com
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 4. Form_Activate 5. Form_GotFocus 6. Form_Paint (solo en el caso de que la propiedad AutoRedraw del formulario est establecida a False)
1. Form_Terminate 2. Form_Unload
co
Capacidad de reaccionar de manera distinta ante un mensaje idntico, dependiendo del objeto que lo reciba, p.e. un clic del ratn recibido por un botn de comando o por una caja de texto. Herencia: Capacidad de derivarse a partir de otro objeto. JDMR , Academia Jos Lerma Pgina 7
Polimorfismo:
pu
La utiliza de manera diferente a C++. Los objetos Visual Basic tienen propiedades como color, tamao, tipo de letra y, adems incorporan unos mtodos que responden a mensaje como clics de ratn, pulsacin de teclas, etc. En los que se puede integrar cdigo.
ce
nt
Encapsulacin:
er
Visual Basic 5.0 es la primera versin realmente orientada a objetos. Cumple los tres conceptos clave:
1@
ar
Normalmente, se escribe cdigo a los eventos a los que se quiera dar respuesta. Si el evento no tiene respuesta o no se produce, Visual Basic no har nada, es decir no se ejecutar cdigo alguno. Para poder ejecutar cdigo, se tendr que haber dado respuesta a algn evento de algn control y, que dicho evento tenga lugar.
ne
http://www.pdf4free.com
t.c
om
.a
y, antes de descargar un formulario de memoria, los eventos que tienen lugar son:
TEMA 2
co
Los formularios se archivan con la extensin .FRM y contienen una imagen del formulario y, de todos los controles que pertenecen a l, incluidas sus propiedades. Tambin pueden contener subrutinas de manejo de eventos, procedimientos generales, declaraciones de variables y de constantes a nivel de formulario y, procedimientos externos.
Un mdulo estndar contiene cdigo Visual Basic que no est asociado a ningn formulario en particular. Los procedimientos que se encuentran en el mdulo, JDMR , Academia Jos Lerma Pgina 8
pu
ce
Aunque Visual Basic almacena separadamente los archivos que forman un proyecto, hace un seguimiento de dnde estn los archivos. Crea un archivo con la extensin .VBP de Visual Basic Program/Project. Visual Basic permite tener varios proyectos abiertos en un momento determinado.
nt
er
1@
Dado que es muy comn en aplicaciones Visual Basic compartir cdigo o formularios personalizados, Visual Basic organiza las aplicaciones en lo que denomina proyectos. Cada proyecto puede tener varios formularios y, el cdigo que activa los controles de un formulario es archivado con el formulario en archivos separados. El cdigo general compartido por todos los formularios de una aplicacin puede ser dividido en varios mdulos, que tambin se archivan separadamente. En Visual Basic 5.0 un proyecto puede tener, adems, mdulos de clase y ficheros de recursos.
ar
ne
http://www.pdf4free.com
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 pueden ser accedidos desde cualquier otro procedimiento de la aplicacin. Se almacenan con la extensin .BAS. Los mdulos de clase tienen la extensin .CLS y contienen cdigo, incluido subrutinas, funciones, mtodos y procedimientos para crear descripciones genricas de objetos. Estos mdulos contienen propiedades que describen el comportamiento de una clase, as como el cdigo que define las propiedades y los mtodos de la clase.
EJEMPLO:
co
En la parte superior encontramos a la izquierda una lista desplegable correspondiente a los objetos del formulario (en este caso ninguno) y, precedido por Objeto. A la derecha la lista desplegable que aparece corresponde a la lista de procedimientos y viene precedido por Procedimiento. Esta lista muestra todos los procedimientos que puede reconocer el objeto Visual Basic que se encuentra en la lista Objeto. En la parte inferior y, con fondo blanco, se encuentra la zona de escritura de cdigo donde se escribir el cdigo. En este momento aparece la plantilla de procedimiento para un suceso.
Private Sub Form_Load() End Sub
pu
ce
nt
Realizaremos el primer programa en Visual Basic. Para ello, una vez arrancado Visual Basic mostraremos la ventana de cdigo, para lo que se har doble clic en cualquier parte del formulario. En la ventana que aparece se escribir el cdigo Visual Basic. Esta ventana est formada por las siguientes partes:
er
1@
ar
Despus de arrancar Visual Basic, aparece un proyecto y un formulario por defecto. Si se quiere iniciar un nuevo proyecto, se acceder a Archivo/Nuevo Proyecto, o bien se abrir un proyecto existente.
ne
http://www.pdf4free.com
t.c
Pgina 9
om
Los archivos de recursos se almacenan con la extensin .RES y contienen bitmaps, cadenas de texto, o cualquier otra informacin que pueda ser cambiada sin tener que reeditar el cdigo de la aplicacin. Un proyecto solo puede contener un archivo de recursos.
.a
Curso de Visual Basic Avanzado 5.0 Supongamos que queremos escribir un mensaje cada vez que se haga clic en el formulario. Para ello cambiaremos el procedimiento seleccionando, para el objeto Form, el suceso Clic. Una vez seleccionado, se escribir:
Private Sub Form_Click() Print "Has hecho un clic con el ratn" End Sub
Por lo general, los procedimientos de suceso asociados a un formulario empiezan por: Private Sub Form_NombreDelSuceso()
EJEMPLO:
Modificaremos las propiedades de los controles. El botn debe visualizar "Presiname", para lo cual modificaremos las propiedades del botn. Una vez visualizada la ventana de propiedades del botn (con el icono, con F4 o desde Ver/Propiedades) seleccionaremos la propiedad Caption y cambiaremos el texto por "Presiname". Como valor de la propiedad Name asignaremos cmdPrimerBoton. A la caja de texto cambiaremos el valor de la propiedad Name para que muestre txtPrimeraCaja. La propiedad Text la dejaremos vaca. Pgina 10
co
pu
Ahora seleccionamos el botn de comando (2 fila, control ms a la derecha) y lo situamos a la derecha de la caja de texto.
ce
De la caja de herramientas seleccionamos el control Caja de texto, indicado por ab| y, lo situamos en la esquina superior izquierda del formulario.
nt
er
La aplicacin que vamos a realizar estar formada por una caja de texto y un botn de comando. Para ello los pasos a seguir son:
1@
ar
1. Se hace clic sobre la caja de herramientas, sobre el control a situar. Se lleva el puntero del ratn al formulario. Se dibuja un rectngulo del tamao que ser el control.
ne
http://www.pdf4free.com
t.c
om
.a
Para ejecutar la aplicacin pulsaremos F5 y, cuando se haga clic sobre el formulario, aparecer el mensaje. Para detener la aplicacin, pulsaremos el botn de Parada o, Ejecutar/Terminar.
Curso de Visual Basic Avanzado 5.0 Supongamos que queremos escribir en la caja de texto un mensaje de bienvenida. Para ello cambiaremos el procedimiento seleccionando, para el objeto cmdPrimerBoton, el suceso Clic. Una vez seleccionado, se escribir:
Private Sub cmdPrimerBoton _Click() txtPrimeraCaja.Text = "Bienvenido a Visual Basic" End Sub
GUARDAR FORMULARIOS, MDULOS Y PROYECTOS En el men Archivo tenemos 4 opciones para guardar:
EJEMPLO:
Como se ha podido apreciar, la forma de referirse a una propiedad es Objeto.Propiedad, donde Objeto es el nombre del formulario o del control (valor de la propiedad Name) y Propiedad es el nombre de la propiedad a la que se quiere acceder.
co
pu
ce
Modificaremos la aplicacin para que, cuando el usuario escriba en la caja de texto, en el botn aparezca el mensaje "Restaurar mensaje". Para ello mostraremos la ventana de cdigo asociada a la caja de texto haciendo doble clic sobre ella. El evento que se produce cuando el usuario escribe en una caja de texto es Change, por lo que el cdigo a escribir ser:
nt
er
1@
Guardar Archivo Como... Se puede escoger un nuevo nombre para el formulario/mdulo actual.
ar
Guardar Archivo
ne
Guardar Proyecto Como... Se puede escoger un nuevo nombre para el proyecto actual y guarda todos los archivos asociados con el proyecto actual.
http://www.pdf4free.com
t.c
Guardar Proyecto Guarda todos los archivos asociados con el proyecto actual.
om
Pgina 11
.a
Curso de Visual Basic Avanzado 5.0 PROPIEDADES MS COMUNES DE LOS FORMULARIOS AutoRedraw (Redibujado automtico) Gestiona la manera de redibujar las imgenes en pantalla. Puede tomar los valores True/False.
1 - Fixed Single Tamao fijo con borde no dimensionable. Puede incluir men de control, barra de ttulo, botn de maximizar y botn de minimizar. 2 - Sizeable Valor por defecto.
3 - Fixed Dialog Tamao fijo del borde, no dimensionable. Puede incluir men de control, barra de ttulo. No puede incluir botn de maximizar y botn de minimizar. 4.- Fixed ToolWindow Bajo aplicaciones de 16 bits o Windows NT 3.51 o anteriores funciona como Fixed Single, sin visualizar los botones de maximizar y minimizar. Con Windows 95 visualiza el botn de cerrar y, no aparece en la barra de tareas. 5.- Sizeable ToolWindow Bajo aplicaciones de 16 bits o Windows NT 3.51 o anteriores funciona como Sizeable, sin visualizar los botones de maximizar y minimizar. Con Windows 95 visualiza el botn de cerrar y, no aparece en la barra de tareas.
Caption (Leyenda)
co
Establece el texto de la barra de ttulo de la ventana del formulario. Esta propiedad indica lo que el usuario visualiza. No confundir con la propiedad Name. Propiedad comn a muchos controles.
pu
ce
nt
er
1@
ar
ne
http://www.pdf4free.com
t.c
Solo se puede determinar en modo de diseo. Modifica el borde del formulario en el momento de ejecucin. Puede tomar los siguientes valores:
om
Pgina 12
.a
Curso de Visual Basic Avanzado 5.0 ControlBox (Cuadro de control) Tiene efecto en tiempo de ejecucin. Puede tomar los valores True/False. Permite visualizar o no tanto el men de control como el botn de cerrar en Windows 95. Enabled (Habilitado)
Font (Fuente)
Icon (Icono)
co
El valor de esta propiedad (True/False) ser ignorado si se ha establecido la propiedad BorderStyle a 0 - None. Solo es visible en tiempo de ejecucin. MousePointer (Puntero del ratn) Determina la forma en que se mostrar el puntero del ratn.
pu
Determinan la posicin del formulario dentro de la pantalla. Funcionan de manera idntica a las propiedades Height y Width descritas anteriormente. Se miden en twips.
ce
nt
Representa al formulario cuando est minimizado o cuando se convierta en una aplicacin independiente en el escritorio de Windows.
er
1@
Determinan la anchura y altura del formulario. Se miden en Twips (1/20 punto o lo que es lo mismo, 567 twips en 1 centmetro) Determinan el tamao del formulario cuando se imprima, no cuando sea visualizado en pantalla. A menos que el usuario modifique el borde cambiando la propiedad BordeStyle, el usuario podr modificar el tamao y la forma de los diversos formularios de la aplicacin sin tener en cuenta esta propiedad.
ar
ne
http://www.pdf4free.com
t.c
Determina el tipo de letra, atributos, etc. para impresin. El texto ya escrito no se ver afectado por un cambio en estas propiedades, pero s el texto impreso posteriormente.
om
Pgina 13
.a
Curso de Visual Basic Avanzado 5.0 Name (Nombre) Propiedad MUY importante y comn a todos los objetos de Visual Basic. Define el nombre del objeto en el cdigo del programa. Para poder acceder a un control habr que hacerlo a partir de su nombre. No disponible en tiempo de ejecucin.
Determina la forma en la que aparece el formulario durante la ejecucin. ScaleMode (Modo de la escala)
ScaleHeight, ScaleWidth (Escala de la Altura y la Anchura) Sirven para establecer una escala propia para la altura y anchura del formulario. Tiene efecto colateral sobre la propiedad ScaleMode, que se establece a 0. ScaleLeft, ScaleRight (Escala de Izquierda y Derecha) Sirven para establecer una escala propia para los mrgenes izquierdo y superior del formulario. El valor original de estas propiedades es 0.
co
pu
ce
nt
er
1@
ar
Permite cambiar las unidades de medida empleadas en el sistema de coordenadas interno del formulario.
ne
http://www.pdf4free.com
t.c
om
Pgina 14
.a
Picture (Dibujo)
Caption (Leyenda)
Establece el texto que el usuario visualizar. No confundir con la propiedad Name. Text (Texto)
Propiedad MUY importante. Define el nombre del control en el cdigo del programa. No confundir con las propiedades Caption o Text que es lo que el usuario visualiza. TabStop (Punto de Tabulacin)
TabIndex (ndice de tabulacin) Indica el nmero de orden en el que el control recibir el foco cuando el usuario, en tiempo de ejecucin, pulse la tecla Tab para recorrer los controles. A medida que se van situando controles en el formulario, Visual Basic incrementa en una unidad, el valor de esta propiedad para el nuevo control y, lo decrementa en caso de eliminar algn control. El valor para el primer control es 0.
co
pu
ce
nt
Si el valor es True, el control ser susceptible de recibir el foco durante la ejecucin de la aplicacin.
er
1@
Name (Nombre)
ar
Acta igual que la propiedad Caption para aquellos controles que no dispongan de dicha propiedad, p.e. las cajas de texto. Muestra el contenido del control y, por tanto, tambin contiene los caracteres introducidos por el usuario. No confundir con la propiedad Name.
ne
http://www.pdf4free.com
t.c
om
Pgina 15
.a
Los controles que se pueden incluir en el formulario aparecen en la caja herramientas. No es necesario recordar la posicin o forma de cada control. Visual Basic 5.0, cuando el cursor se sita sobre un control de la caja herramientas, aparece una pista recordando el control que permite crear. Todos controles tienen algunas propiedades comunes como pueden ser:
de En de los
Curso de Visual Basic Avanzado 5.0 PROPIEDADES DE LAS ETIQUETAS Label (1 fila, icono de la derecha). Es un rea dentro del formulario donde el usuario puede visualizar texto sin modificarlo. Alignment (Alineacin)
La primera propiedad permite que la etiqueta crezca horizontalmente en funcin de su contenido. La segunda propiedad permite que el crecimiento sea vertical.
Text Box (2 fila, icono de la izquierda). Es un rea dentro del formulario donde el usuario puede escribir texto o visualizarlo. MaxLength (Tamao mximo)
Determina el nmero mximo de caracteres que puede aceptar la caja de texto. MultiLine (Lneas Mltiples)
ScrollBars (Barras de desplazamiento) Controla si en la caja de texto aparecern las barras de desplazamiento o no.
Permite mostrar un carcter clave en vez de los introducidos por el usuario. Locked (Bloqueada)
co
Permite bloquear la caja de texto para que el usuario en tiempo de ejecucin, no modifique el contenido de la caja. Esta propiedad es nueva en Visual Basic 5.0 SelLength (Longitud del texto seleccionado) Nmero de caracteres seleccionado actualmente. Accesible durante la ejecucin. JDMR , Academia Jos Lerma Pgina 16
pu
ce
nt
er
Permite que la caja de texto admita varias lneas con la pulsacin de la tecla INTRO. Normalmente se combina con la propiedad ScrollBars.
1@
ar
ne
http://www.pdf4free.com
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 SelStart (Comienzo de la seleccin) Indica dnde comienza el texto seleccionado (la posicin del cursor). Si el valor es 0, el texto seleccionado empieza delante del primer carcter de la caja de texto. Si es igual a la longitud del texto de la caja, indica la posicin detrs del ltimo carcter del texto. Accesible en tiempo de ejecucin.
Enabled (Habilitado)
EJERCICIOS:
co
1. Crear una aplicacin que traslade el contenido de lo que el usuario escriba en una caja de texto a otra, que ser solo de lectura. 2. Crear una aplicacin para que al pulsar un botn, muestre en una caja de texto, un mensaje de presentacin. Al pulsar otro botn, se debe borrar el contenido de la caja de texto. JDMR , Academia Jos Lerma Pgina 17
pu
Establecer el valor de esta propiedad a True, hace que el botn responda a la pulsacin de la tecla INTRO como si se hubiera hecho clic sobre l. Al igual como antes, en un formulario solo puede haber un botn con esta propiedad establecida a True.
ce
nt
Default (Defecto)
er
Establecer el valor de esta propiedad a True, hace que el botn responda a la pulsacin de la tecla ESC como si se hubiera hecho clic sobre l. En un formulario solo puede haber un botn con esta propiedad establecida a True.
1@
Cancel (Cancelar)
ar
ne
Command Button (2 fila, icono de la derecha). Se utiliza para ejecutar la accin asociada a la pulsacin de dicho botn.
http://www.pdf4free.com
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 3. Crear una aplicacin con las siguientes caractersticas: en la barra de ttulo del formulario debe aparecer el texto "Modificando las propiedades"; muestre una caja de texto inicialmente vaca; se visualicen tres botones de comando: uno con el texto "Haga clic aqu", otro con el texto "?" y, el tercero con el texto "Salir". Cuando se pulse el botn "Haga clic aqu", se mostrar en la caja de texto, el nombre del programador. Al pulsar el botn "?", se mostrar el mensaje "Contento?" y, al pulsar el botn "Salir", finalice la aplicacin. Inicialmente, el botn "?" estar desactivado y se activar al pulsar el botn "Haga clic aqu".
Variable_de_cadena = InputBox ("Pregunta_a_realizar" [," Ttulo_Caja", Valor_por_Defecto]) MsgBox ("Mensaje_a_mostrar", Tipo_Caja, "Ttulo_Caja")
EJERCICIO:
co
pu
Crear una aplicacin que pregunte al usuario su nombre y, una vez contestado, le d la bienvenida.
ce
nt
donde el parmetro Tipo_Caja permite controlar el icono y los botones que aparecern en el cuadro de mensajes.
er
1@
ar
Para permitir al usuario introducir valores, se utilizan las cajas de texto, pero en un momento determinado, puede interesar la detencin momentnea de la ejecucin y, mostrar un cuadro de dilogo para que el usuario introduzca algn dato. Del mismo modo, se puede mostrar un cuadro de mensaje al usuario para advertirle de cualquier circunstancia. Para ambos casos tenemos respuesta en Visual Basic.
ne
http://www.pdf4free.com
t.c
om
Pgina 18
.a
Curso de Visual Basic Avanzado 5.0 PROPIEDADES DE LOS CUADROS DE IMAGEN Image (1 fila, icono central). Se utiliza cuando se quiere visualizar una imagen que el programador dibuja con cdigo o que importa de algn fichero. Picture (Imagen)
Stretch (Extensin)
AutoSize (Extensin)
co
pu
Determina si el control de imgenes se ajusta a la imagen o, es la imagen la que se ajusta al tamao del control. El valor True hace que el control imagen se ajuste al tamao de la imagen, mientras que el valor False (valor por defecto), hace que sea la imagen la que se ajuste.
ce
nt
er
Picture (Imagen)
1@
Picture Box (7 fila, icono de la izquierda). Se utiliza cuando se quiere visualizar una imagen que el programador dibuja con cdigo o que importa de algn fichero. Se diferencia de la caja de imgenes en la forma de presentacin.
ar
ne
Pgina 19 PDF Creator - PDF4Free v2.0 http://www.pdf4free.com
t.c
Determina si el control de imgenes se ajusta a la imagen o, es la imagen la que se ajusta al tamao del control. El valor True hace que el cuadro de imgenes se ajuste al tamao de la imagen, mientras que el valor False, hace que sea la imagen la que se ajuste.
om
.a
Curso de Visual Basic Avanzado 5.0 PROPIEDADES DEL CONTROL DE FORMAS O FIGURAS Shape (6 fila, icono central). Se utiliza para aadir rectngulos, cuadrados, elipses o crculos a un formulario. Shape (Forma)
BackStyle (Color de fondo) Determina si el fondo ser transparente o no. BorderColor (Color del borde) Determina el color del contorno del objeto a dibujar. BorderWidth (Ancho del borde)
Determina el grosor del contorno del objeto a dibujar. BorderStyle (Estilo del borde)
FillColor, FillStyle (Color de fondo y estilo de relleno) El valor por defecto de la propiedad FillStyle es 1 - Transparent, por lo que si no se cambia, el valor de la propiedad FillColor no tendr efecto.
co
El formulario a disear deber tener los siguientes controles con las propiedades: CONTROL PROPIEDAD Caption Name Salir cmdSalir Pgina 20 VALOR
Command Button
pu
Crearemos una aplicacin que encienda y apague una bombilla al mismo tiempo que en un botn de comando el mensaje que aparece cambia a ON y OFF. Se debe aadir un botn con el mensaje Salir.
ce
EJEMPLO:
nt
er
1@
Determina la forma del contorno del objeto a dibujar. Si el valor de la propiedad BorderWidth es mayor que uno, no tendr efecto el valor de esta propiedad.
ar
ne
http://www.pdf4free.com
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 Command Button Caption Name Picture Box BorderStyle Name Picture ON cmdOnOff 0-None
Picture Box
0-None PicOn
co
pu
Private Sub cmdOnOff_Click() Cambiar la linterna de ON a OFF o viceversa If cmdOnOff.Caption = "ON" Then cmdOnOff.Caption = "OFF" picOn.ZOrder 0 Traer la linterna encendida delante Else cmdOnOff.Caption = "ON" picOff.ZOrder 0 Traer la linterna apagada delante End If End Sub
ce
nt
Private Sub Form_Initialize() Left = (Screen.Width - F.Width) / 2 Centrar el formulario Top = (Screen.Height - F.Height) / 2 picOn.Left = 1200 Posicionar las linternas en la misma posicin picOn.Top = 600 picOff.Left = 1200 picOff.Top = 600 picOff.Zorder 0Asegurarse que el programa empieza con la linterna apagada End Sub
er
1@
ar
ne
vb\icons\misc\Lighton.ic o
http://www.pdf4free.com
t.c
om
Pgina 21
vb\icons\misc\Lightoff.i co
.a
picOff
Curso de Visual Basic Avanzado 5.0 PROPIEDADES DE LOS CUADROS DE LISTA List Box (4 fila, icono izquierdo) Permite ofrecer al usuario una serie de opciones para que elija. Visual Basic aadir barras de desplazamiento al cuadro de lista si la lista completa es demasiado larga para ser vista toda a la vez. El contenido de un cuadro de lista no se puede definir durante el diseo. En su lugar se utilizar el mtodo AddItem para introducir elementos en la lista. List (lista)
Text (texto)
No se puede modificar directamente, contiene el texto del elemento ms recientemente seleccionado. Los mtodos utilizados con los cuadros de lista son: AddItem (aadir elemento) permite insertar una lnea de texto en el cuadro de lista. Su sintaxis es objeto.AddItem texto[, ndice] . Clear (borrar) sirve para eliminar todos los elementos del cuadro de lista. Su sintaxis es: objeto.Clear. RemoveItem (eliminar elemento) permite eliminar una lnea del cuadro de lista. Su sintaxis es: objeto.RemoveItem ndice.
co
pu
ce
nt
er
Sorted (ordenada)
1@
Indica el nmero de la lista ms recientemente seleccionado. El valor del primer elemento es 0, el del segundo, 1, y as sucesivamente. Si no hay ningn elemento seleccionado, la propiedad tendr un valor de -1.
ar
ne
http://www.pdf4free.com
t.c
Esta propiedad no se puede modificar en fase de diseo, contiene la matriz de todos los valores almacenados en el cuadro de lista. Para acceder a un elemento de la lista se seguir la sintaxis: Objeto.List(ndice).
om
Pgina 22
.a
Curso de Visual Basic Avanzado 5.0 PROPIEDADES DE LOS CUADROS COMBINADOS Combo Box (3 fila, icono derecho) Puede combinar un cuadro de texto y un cuadro de lista en un solo control. Style (estilo)
Listado1.AddItem Elemento_A_Aadir
Listado1.ItemData(Listado1.NewIndex) = Datos_Del_Entero
co
En Visual Basic existen dos clases de procedimientos: procedimientos generales o procedimientos de evento. Un procedimiento de evento es invocado cuando un objeto en la aplicacin reconoce que el evento ha tenido lugar. Los procedimientos de eventos para un control combinan el nombre del objeto con un subrayado y, el nombre del evento. P.e. cmdOK_Click. Los procedimientos de eventos para un formulario combinan la palabra reservada Form con un subrayado y, el nombre del evento. P.e. Form_Load. Los procedimientos de eventos para un formulario MDI combinan la palabra reservada MDIForm con un subrayado y, el nombre del evento. P.e. MDIForm_Unload.
Un procedimiento general indica cmo realizar una tarea determinada. Se ejecutar solo si es invocado especficamente en la aplicacin. JDMR , Academia Jos Lerma Pgina 23
pu
ce
nt
er
1@
ar
Los procedimientos descritos en el apartado anterior sirven para este tipo de control. Ambos tipos de control permiten asociar a los elementos del listado un nmero entero. Para ello se debe utilizar la matriz ItemData, que es una propiedad de estos controles. Para aadir los datos numricos a esta matriz, se debe conocer el ndice matriz del elemento, para lo que se utilizar la propiedad NewIndex del control. Es decir, se necesitar escribir cdigo parecido a:
ne
http://www.pdf4free.com
t.c
Contiene el texto del elemento seleccionado o introducido por el usuario en el rea de edicin.
om
Text (texto)
.a
Determina el tipo de cuadro combinado y cmo se comporta. Puede tomar los siguientes valores: 0 - Dropdown Combo; 1 - Simple Combo; 2 - Dropdown List.
TEMA 3
String Integer
ce
TIPO
DESCRIPCIN Carcter Entero Entero largo Real simple Real doble Moneda
nt
er
en la seccin de declaraciones del formulario. Una vez procesada esta instruccin, no se permitirn variables no declaradas. Para declarar una variable la instruccin adecuada es:
1@
Option Explicit
TAMAO OCUPADO 1 Byte por carcter 2 Bytes 4 Bytes 4 Bytes 8 Bytes 8 Bytes
ar
Las variables en Visual Basic no necesitan ser declaradas, en el momento en que son necesitadas pueden aparecer en el cdigo. Sin embargo, puede ser til el exigir la declaracin de todas las variables que aparezcan en el cdigo. Para ello, se utilizar la instruccin:
ne
t.c
IDENTIFICADOR $ % & ! # @
co
Long
Single
Double
Currency
pu
http://www.pdf4free.com
om
Pgina 24
.a
MBITO DE LAS VARIABLES EN VISUAL BASIC Se entiende por mbito de una variable el espacio de la aplicacin donde la variable es visible y por tanto se puede utilizar. Los distintos alcances que puede tener una variable declarada en Visual Basic son: 1. Las variables declaradas con Dim o utilizadas directamente en un procedimiento, son variables locales, es decir, accesibles solamente desde el procedimiento que las declara. JDMR , Academia Jos Lerma Pgina 25
co
pu
ce
Simblicas o definidas por el usuario. Es una buena idea el declarar las constantes simblicas con el prefijo con, p.e. Const conPi = 3.141592
nt
Intrnsecas o definidas por el sistema, proporcionadas por Visual Basic o cualquier otra aplicacin que provee una librera de objetos. Para ver una lista de estas constantes, se acceder a Ver/Examinador de Objetos. En la lista desplegable superior, se seleccionar VB-Objects and Procedures. De la lista de la izquierda se har doble clic en cualquier opcin acabada en Constants.
er
1@
ar
ne
http://www.pdf4free.com
t.c
om
.a
(ninguno)
Curso de Visual Basic Avanzado 5.0 2. Si las variables se declaran en la seccin de declaraciones del formulario o del mdulo, son variables a nivel de formulario o de mdulo. Una variable declarada a nivel de formulario es accesible desde cualquier procedimiento del formulario y lo mismo para las variables a nivel de mdulo: una variable declarada a nivel de mdulo es accesible desde cualquier procedimiento de ese mdulo, pero no desde otros mdulos. Estas variables se declaran con Dim o Private. 3. Las variables pblicas son declaradas en la seccin de declaraciones de un mdulo con la sentencia Public y, podrn ser accesibles desde cualquier mdulo.
co
Private Sub cmdParada_Click() HParada = Now Tiempo = HParada - HInicio txtHParada.Text = Format$(HParada; "hh:mm:ss") txtTTranscurrido.Text = Format$(Tiempo; "hh:mm:ss") cmdInicio.Enabled = True cmdParada.Enabled = False End Sub
En este ejemplo se deben declarar las variables HoraInicio, HoraParada y Tiempo como variables a nivel de formulario (en la seccin de declaraciones Pgina 26
pu
ce
Private Sub cmdInicio_Click() HInicio = Now txtHInicio.Text = Format$(HInicio; "hh:mm:ss") cmdInicio.Enabled = False cmdParada.Enabled = True End Sub
nt
er
1@
Crear un formulario con dos botones de comando (cmdInicio y cmdParada), tres etiquetas (lblHInicio; lblHParada y lblTTranscurrido) y, tres cajas de texto (txtHInicio, txtHParada, txtTTranscurrido). Inicialmente, el botn cmdParada estar desactivado. Se pretende que, cuando el usuario pulse el botn cmdInicio, en la caja de texto asociada a la etiqueta lblHInicio, aparezca la hora actual y, al mismo tiempo, se active el botn cmdParada y se desactive el de cmdInicio. Al pulsar el botn cmdParada, se mostrar la hora de parada, el tiempo transcurrido, se desactivar el botn de cmdParada y, se habilitar el de cmdInicio. El cdigo asociado ser:
ar
ne
http://www.pdf4free.com
t.c
EJEMPLO:
om
.a
Curso de Visual Basic Avanzado 5.0 del formulario) para que sean accedidas desde cualquier procedimiento asociado al formulario. Por tanto, el mbito de una variable determina qu procedimientos podrn acceder a esa variable. Cualquier sentencia Dim declarada en cualquier procedimiento tiene preferencia con respecto a variables declaradas a nivel de mdulo. Siempre que una variable aparece por primera vez, es inicializada al valor por defecto (0 para variables numricas y cadena vaca para tipo String) Para que una variable mantenga el valor en cada ejecucin del procedimiento donde se utiliza, se debe declarar con la instruccin: Static Nombre_Variable [As Tipo]
Se mantiene la palabra reservada Global por compatibilidad de la versin 3.0, pero es preferible utilizar la palabra reservada equivalente: Public.
co
Para refererirse a un determinado campo del registro, se utiliza la notacin variable.campo P.e: Alumno.Nombre. Un tipo definido por el usuario no puede contener un array dinmico, pero s esttico.
Una vez definido un tipo de datos, se pueden declarar variables del mismo tipo. P.e:
Dim Alum As Ficha
pu
Type Ficha Nombre As String Direccin As String * 40 Telfono As Long DNI As Long End Type
ce
nt
er
Se pueden definir tipos por parte del usuario para crear registros (structs en C, Record en Pascal). Un registro puede definirse como una coleccin de datos de diferentes tipos relacionados entre s. Para crear un registro se necesita la sentencia Type ... End Type. Esta sentencia solo puede aparecer en la seccin de declaraciones de un mdulo estndar y pueden ser declarados como Private o Public. P.e:
1@
ar
ne
Pgina 27 http://www.pdf4free.com
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 EJEMPLO: Crear un formulario que acte como un reloj despertador, de forma que visualice la hora actual y, si el usuario ha activado la alarma, cuando la hora actual sea la misma que la alarma, se debe emitir un pitido. Para ello, aadiremos los siguientes controles al formulario.
CONTROL Label Caption Name BorderStyle Label Text Box Caption Text Name Option Button Caption Name Option Button Caption Name Value PROPIEDAD (ninguno) lblPantalla 1-Fixed Single Alarma VALOR
(ninguno)
1@
nt
Timer
er
Interval Name
Inicialmente, la alarma debe estar desactivada y no se permitirn valores distintos del carcter : o cualquier dgito. El cdigo asociado ser:
Dim AlarmaOn As Boolean Private Sub txtAlarma_KeyPress(KeyAscii As Integer) Dim Key As String Comprobar que se escriben dgitos o el carcter : Key = Chr(KeyAscii) If (Key < "0" Or Key > "9") Then If Key <> ":" Then Beep KeyAscii = 0 End If End If End Sub
co
pu
ce
ar
ne
True 1000
txtAlarma
tmrReloj
http://www.pdf4free.com
t.c
Pgina 28
om
.a
FORMULARIOS MLTIPLES
co
El formulario inicial en cualquier proyecto, se consigue accediendo al men Herramientas/Opciones/Ficha Proyecto y, de la lista Formulario Inicial, escogeremos el nombre del formulario con el que se quiere iniciar la aplicacin. Con cualquier formulario las operaciones posibles sern: Show (Mostrar) Sirve para mostrar en Nombre_Formulario.Show JDMR , Academia Jos Lerma primer plano el formulario. La sintaxis es:
pu
Nombre_Formulario!Nombre_del_Control
ce
Los formularios mltiples aaden flexibilidad a las aplicaciones. Para poder acceder a un control en un formulario distinto del que contiene el foco, es necesario nombrar al control por su nombre completo, es decir, utilizando la sintaxis:
nt
er
1@
Cada vez que el usuario presiona una tecla, se generan los eventos KeyDown, KeyUp y KeyPress. El evento KeyPress devuelve el cdigo ASCII de la tecla presionada. Los eventos KeyDown y KeyUp se producen cuando el usuario presiona o libera una tecla y reciben dos argumentos: KeyCode que mantiene el cdigo ANSI de la tecla presionada y, Shift que indica el estado de las teclas Shift, Alt y Ctrl.
ar
ne
NOTA:
http://www.pdf4free.com
t.c
Pgina 29
om
.a
Curso de Visual Basic Avanzado 5.0 Load (Cargar) Lleva a memoria el formulario, pero no lo visualiza. La sintaxis es: Load Nombre_Formulario Hide (Ocultar)
co
BUCLES INDETERMINADOS
Do [{While | Until} Condicin]Do [Declaraciones] [Declaraciones] [Exit Do] [Exit Do] [Declaraciones] [Declaraciones] Loop Loop [{While | Until} Condicin]
pu
ce
nt
er
1@
Crear una aplicacin que muestre un formulario inicial preguntando la contrasea. Dicha contrasea no debe visualizarse en la pantalla. Si la contrasea es correcta, se mostrar un nuevo formulario que mostrar la hora y fecha actual y, tras introducir el usuario la fecha de su nacimiento, permita obtener los aos vividos por esa persona. En caso que sea el cumpleaos, se debe felicitar al usuario. El nmero de intentos permitidos para introducir la contrasea es de tres. En caso de superar los intentos, el programa debe dar un mensaje de error al usuario y, tirarlo de la aplicacin.
ar
ne
EJERCICIO:
http://www.pdf4free.com
t.c
Descarga de memoria el formulario, perdindose toda la informacin de sus variables. La sintaxis es: Unload Nombre_Formulario
om
Pgina 30
Unload (Descargar)
.a
SELECCIN SIMPLE If Condicin_1Then Declaraciones_1 [ElseIf Condicin_2 Then Declaraciones_2]... [Else Declaraciones_n] End If
SELECCIN MLTIPLE Select Case Condicin_de_testeo Case valor1 [Declaraciones_1] [Case valor2 [Declaraciones_2]]... [Case Else [Declaraciones_n]] End Select
donde valor1,... puede tomar cualquiera de las siguientes formas: expresin1[, expresin2]... expresin1 To expresin2 Is operador_relacional expresin
EJEMPLO:
Label
ce
CONTROL
nt
er
Crear una aplicacin que permita obtener el cdigo ASCII de una tecla pulsada. Se necesita un botn que permita borrar la tecla anterior. Para ello, aadiremos los siguientes controles al formulario.
1@
PROPIEDAD
ar
ne
VALOR Pulsa una tecla lblPulsaTecla txtPulsaTecla (ninguno) Valor ASCII lblValor (ninguno)
Text Box
co
Label
Label
pu
http://www.pdf4free.com
t.c
Pgina 31
om
.a
co
Private Sub txtPulsaTecla_KeyDown(KeyCode As Integer, Shift As Integer) Const vbKeyDelete = 46 Const vbKeyInsert = 45 Const vbKeyEnd = 35 Select Case Keycode Case vbKeyDelete lblResultado.Caption = "Presionado Suprimir" txtpulsaTecla = "[[Suprimir]" Case vbKeyInsert lblResultado.Caption = "Presionado Insertar" txtpulsaTecla = "[Insertar]" Case vbKeyEnd lblResultado.Caption = "Presionado Fin" txtpulsaTecla = "[Fin]" Case Else End Select End Sub
pu
ce
nt
er
1@
ar
ne
Pgina 32 http://www.pdf4free.com
t.c
om
.a
True
CLng(expresin)
Conversin a tipo Long. etc.
CDate(expresin)
Conversin a tipo Date.
nt
FUNCIONES DE CALENDARIO
er
ce
pu
Month(Nm_serie)
co
1@
CInt(expresin)
ar
IsDate(expresin)
Verifica si un valor es del tipo Fecha/Hora.
Time
Devuelve la hora actual.
Day(Nm_serie)
Devuelve un entero entre 1 y 31.
Year(Nm_serie)
Devuelve un entero entre 1753 y 2078.
ne
Pgina 33 http://www.pdf4free.com
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 FUNCIONES DE CADENA Space(Num_espacios) Mid(expr_cadena, Inicio[, Long] )
Permite extraer subcadenas.
Crea una cadena formada por Num_espacios. Crea una cadena de caracteres repetidos.
RTrim(expr_cadena)
Elimina los espacios del final.
LTrim(expr_cadena)
Format(expresin[, formato] )
Permite dar a una cadena o a un nmero un formato especfico.
EJEMPLO:
Dim AlturaPixel As Single, AnchuraPixel As Single Dim XPunto As Single, YPunto As Single Private Sub Form_Load() AutoRedraw = True ScaleMode = 3 'Pixels AlturaPixel = ScaleHeight AnchuraPixel = ScaleWidth XPunto = AnchuraPixel / 2 YPunto = AlturaPixel / 2 End Sub Private Sub Form_Resize() AlturaPixel = ScaleHeight AnchuraPixel = ScaleWidth End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Dim sino As Integer Select Case KeyCode Case vbKeyLeft If XPunto <= 0 Then XPunto = 0
co
pu
ce
nt
er
1@
ar
Vamos a construir una aplicacin que, al desplazarse el usuario con las teclas de cursor, se van iluminando los pixeles por los que pasa. Se necesitar un formulario para el rea de dibujo con la propiedad AutoRedraw establecida a True. Finaliza al pulsar la tecla Fin
ne
http://www.pdf4free.com
t.c
Pgina 34
om
StrComp(cadena_1, cadena_2)
Trim(expr_cadena)
.a
Extrae los Nmero caracteres de la derecha. Indica si cadena_2 est contenida en cadena_1
co
pu
ce
nt
er
1@
ar
ne
http://www.pdf4free.com
t.c
Pgina 35
om
.a
ARRAYS ESTTICOS
co
Para declarar un array dinmico, formado por un nmero variable de elementos, Visual Basic utiliza una sintaxis parecida a la declaracin anterior. El espacio necesario para un array dinmico ser asignado durante la ejecucin del programa. Un array dinmico puede ser redimensionado en cualquier momento durante la ejecucin. Para redimensionarlos se utiliza la sentencia ReDim. Esta sentencia puede aparecer solamente en un procedimiento y permite cambiar el nmero de elementos del array, no el nmero de dimensiones. Por ejemplo:
Dim Array_A() As String
declara un array unidimensional dinmico. Ms tarde, un procedimiento puede utilizar la sentencia ReDim para asignar el espacio, p.e. ReDim Array_A(4,4) Pgina 36
pu
ce
ARRAYS DINMICOS
nt
er
bidimensional
1@
ar
de
4x6
ne
Para declarar un array esttico, formado por un nmero fijo de elementos, Visual Basic utiliza una sintaxis parecida a la declaracin de variables. Veamos algunos ejemplos:
elementos:
t.c
http://www.pdf4free.com
om
Un array permite referirse a una serie de elementos del mismo tipo por un mismo nombre y referenciar un nico elemento de la serie utilizando un ndice. Los arrays deben ser declarados explcitamente.
Array_B(0,1),
.a
Curso de Visual Basic Avanzado 5.0 Cada vez que se ejecuta la sentencia ReDim, todos los valores en el array se pierden. Cuando interese conservar los valores del array, se utilizar la sentencia ReDim Preserve. Slo se puede cambiar el lmite superior de la ltima dimensin.
LBound Devuelve el ndice ms bajo posible de un array. UBound Devuelve el ndice ms alto posible de un array. En general, la orden LBound(Nombre_Matriz, I)
co
Cuando un procedimiento es llamado para su ejecucin, Visual Basic lo busca en el formulario o en el mdulo donde se encuentre en ese momento. Si no lo encuentra, contina la bsqueda en el resto de los mdulos de la aplicacin. Para crear un procedimiento general, desde la ventana de cdigo se acceder a herramientas/Agregar Procedimiento. JDMR , Academia Jos Lerma Pgina 37
Para evitar duplicar cdigo en los procedimientos de evento, se deben utilizar los procedimientos generales. stos deben escribirse como un procedimiento Sub o como una funcin Function.
pu
ce
nt
er
Las rdenes LBound y UBound permiten copiar arrays de diferentes lmites, siempre que el nmero total de filas y columnas sea el mismo. (Al sustraer LBound de UBound para cada dimensin, se puede comprobar si coinciden)
1@
ar
ne
http://www.pdf4free.com
t.c
da el lmite inferior para la dimensin Y (para un array unidimensional, la I es opcional). Por tanto, en el siguiente ejemplo:
om
.a
FUNCIONES ASOCIADAS
Curso de Visual Basic Avanzado 5.0 Las funciones en Visual Basic son declaradas en los mdulos o en la seccin de declaraciones de un formulario y devuelven un valor al procedimiento que la invoc. La sintaxis empleada es la siguiente:
[Private | Public ][Static ]Function nombre [(lista_argumentos) ][As tipo] [Declaraciones]
donde:
co
Private indica que el procedimiento solo es procedimientos del mdulo en que est declarado.
pu
Public indica que el procedimiento es accesible desde otros procedimientos en cualquier mdulo. Si se utiliza en un mdulo privado, no estar disponible fuera del proyecto.
ce
nt
er
1@
[Declaraciones]
ar
ne
Los procedimientos generales necesitan ser invocados explcitamente para poder ser ejecutados. No devuelven ningn valor. La sintaxis para declarar procedimientos generales es:
t.c
accesible
om
desde los Pgina 38 http://www.pdf4free.com
Static indica que las variables locales al procedimiento mantendrn el valor entra llamadas al procedimiento. Lista_argumentos es una lista de los argumentos que se pasan al procedimiento. Los argumentos mltiples van separados por comas. Puede tomar la forma siguiente:
.a
[nombre = expresin]
donde: Optional indica que el argumento no se necesita. Todos los argumentos opcionales deben ser de tipo Variant.
PASO DE PARMETROS
co
Cuando se llama a una funcin o a un procedimiento, se podr especificar que el valor de un argumento sea pasado por valor, poniendo dicho argumento entre parntesis en la llamada. Otra forma de especificar que un argumento ser siempre pasado por valor es anteponiendo la palabra ByVal a la declaracin del parmetro en la cabecera del procedimiento.
pu
ce
Por defecto, los argumentos son pasados por referencia.; de este modo cualquier cambio de valor que sufra un parmetro en el cuerpo de la funcin o del procedimiento tambin se produce en el argumento correspondiente de la llamada a la funcin o procedimiento.
nt
er
1@
Call nombre_procedimiento[(argumentos)]
ar
ne
http://www.pdf4free.com
t.c
ParamArray utilizado para indicar que el argumento final es una lista opcional de argumentos. Proporciona una forma de pasar un nmero arbitrario de argumentos. No puede utilizarse con ByVal, ByRef o con Optional.
om
Pgina 39
.a
Curso de Visual Basic Avanzado 5.0 4.3- MATRICES DE CONTROLES Una Matriz de Controles es un grupo de controles que comparten el mismo nombre y tipo. A su vez, comparten los mismos procedimientos de eventos, pero son controles fsicamente separados y cada uno posee su propio conjunto de propiedades. Una matriz de controles tiene al menos un elemento y no puede exceder de 254. Para crear una matriz de controles es suficiente con asignar el mismo nombre a dos o ms controles (propiedad Name) durante el diseo de la aplicacin, o bien asignar un valor a la propiedad Index de un control. En el ltimo caso se genera una matriz de un solo elemento, lo cual es til cuando se quieren crear controles en tiempo de ejecucin. Cuando Visual Basic crear una matriz de controles, asigna por defecto los ndices 0, 1, ..., los cuales pueden modificarse a voluntad del usuario cambiando el valor de la propiedad Index. Esta operacin solo puede hacerse durante el diseo. Cuando cualquier control de la matriz reconoce un suceso, Visual Basic pasa el ndice como argumento extra y, sirve para determinar que control ha recibido el suceso. Un elemento de la matriz de controles puede referenciarse escribiendo NombreMatriz(Index)
AADIR Y RETIRAR CONTROLES EN TIEMPO DE EJECUCIN Una vez se ha creado una matriz de controles durante el diseo, se pueden aadir controles mientras se ejecuta la aplicacin. Cuando Visual Basic crea un nuevo control en una matriz de controles, el objeto es invisible. El resto de propiedades se copian del elemento de la matriz con menor ndice. Como lo controles creados se apilan unos sobre otros, deben moverse con el mtodo Move. Para eliminar elementos de una matriz de controles, se utilizar la sentencia
EJEMPLO: Crear un formulario con dos cajas de texto a las que se les haya cambiado la
co
propiedad Name para que ponga, en ambas, "Prueba". De esta forma tenemos creada una matriz de controles. Vamos a escribir un procedimiento de evento asociado a las dos cajas de texto. Private Sub Prueba_Change(Index As Integer) If Index = 0 Then Print "Ha escrito en la caja de texto 0" Else Print "Ha escrito en la caja de texto 1" End If End Sub
pu
Unload Nombre_Matriz(ndice)
ce
nt
er
1@
ar
ne
http://www.pdf4free.com
t.c
om
Pgina 40
.a
Curso de Visual Basic Avanzado 5.0 Ahora modificaremos el ejemplo para que, al cargar el formulario, se aadan cuatro cajas de texto nuevas a la matriz de controles.
Private Sub Form_Load(Index As Integer) Dim I As Integer For I = 2 To 5 Load Prueba(I) Prueba(I).Text = "Caja de texto " & Str(I) Prueba(I).Move 0, 495 * (I - 2) Prueba(I).Visible = True Next I End Sub
VARIABLES DE OBJETO
Para asignar un objeto especfico a una variable objeto, se utiliza la sentencia Set:
Set VarObj = RefObj
Para pasar una variable objeto a un procedimiento se debe definir en la cabecera del procedimiento los parmetros que se necesitan de tipo de objeto genrico (Form, Control y MDIForm) y especfico (TextBox, etc.). Un parmetro declarado de tipo Form puede actuar sobre cualquier formulario, un parmetro declarado de tipo Control puede operar sobre cualquier control. JDMR , Academia Jos Lerma Pgina 41
co
Cuando una variable objeto no se refiere a un determinado objeto, tiene asignado el valor especial, Nothing.
pu
ce
donde TipoObj puede ser: un formulario existente o las palabras reservadas Form, Control MDIForm, TextBox, ...
nt
er
1@
Igual que se tienen variables para manipular enteros, cadenas, etc. se pueden utilizar variables para manipular objetos de Visual Basic. Utilizando variables objeto se podr crear en tiempo de ejecucin mltiples instancias de formularios, escribir procedimientos que modifiquen cualquier formulario o control y construir arrays de formularios. Un ejemplar o instancia de un formulario es una copia que existe con independencia del original. Una variable objeto no contiene una copia de un objeto, sino una referencia a dicho objeto.
ar
ne
http://www.pdf4free.com
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 Para determinar el tipo de una variable objeto se puede utilizar alguna de las sentencias siguientes:
{If | ElseIf} TypeOf VarObj Is TipoObj Then
Foms(ndice)
[formulario.]Controls(ndice)
App
Clipboard
pu
Visual Basic provee de cinco objetos especiales para obtener informacin acerca del entorno en el cual se est trabajando. Estos objetos son:
Suministra informacin especfica de la aplicacin. Permite manipular texto y grficos a travs del portapapeles.
co
Debug Permite enviar informacin a la ventana de depuracin. Printer Permite enviar texto y grficos a la impresora. Screen Indica el formulario activo, control activo y otros datos.
ce
nt
er
1@
La coleccin de controles permite referirse solamente a los controles cargados en un formulario. Cuando en un formulario hay array de controles, cada elemento de cada array es incluido en la coleccin. La sintaxis para referirse a la coleccin de controles es:
ar
ne
http://www.pdf4free.com
t.c
Una coleccin se define como un grupo de objetos. Visual Basic provee de colecciones que se pueden utilizar para acceder a todos los formularios de una aplicacin, o a todos los controles de un formulario particular. Una aplicacin tiene una coleccin de formularios global y cada formulario tiene una coleccin de controles. La coleccin de formularios contiene los formularios cargados. La sintaxis para referirse a la coleccin de formulario es:
om
Pgina 42
.a
Curso de Visual Basic Avanzado 5.0 EJEMPLO: Disear un formulario que permita obtener una lista de las fuentes de la pantalla:
Private Sub Form_Click() Dim I As Integer For I = 1 To Screen.FontCount - 1 Font.Name = Screen.Fonts(I) Print "Escrito en letra "; Screen. Fonts(I) Next I End Sub
DEPURACIN
Durante el diseo y puesta en marcha de una aplicacin, hay tres modos en los que se puede estar: diseo, ejecucin y pausa. Modo Diseo, caracterizado porque en l se realiza la mayor parte del trabajo de creacin de la aplicacin. Para pasar al modo ejecucin, se ejecutar Ejecutar/Inicio, se pulsar F5 o se har clic en el icono Ejecutar; para pasar al modo pausa se ejecuta la orden Ejecutar/Paso a paso por instrucciones, Ejecutar/Paso a paso por procedimiento, pulse F8, pulse Mays + F8, hacer clic en el icono Paso a paso o en el icono Paso procedimiento. Modo Ejecucin caracterizado porque la aplicacin toma el control. Para pasar al modo de diseo, se acceder a Ejecutar/Terminar o se har clic en el icono Detener; para pasar al modo pausa, se pulsar el icono pausa. JDMR , Academia Jos Lerma Pgina 43
co
pu
ce
nt
er
Los errores lgicos se producen cuando siendo la aplicacin sintcticamente correcta, se ejecuta sin producirse errores en tiempo de ejecucin, pero los resultados obtenidos no son correctos.
1@
Los errores de ejecucin ocurren cuando al ejecutar una aplicacin una sentencia intenta una operacin imposible de realizar.
ar
ne
Los errores de sintaxis son el resultado de escribir incorrectamente una sentencia. Para activarlos tan pronto como se producen se debe tener activada la opcin Herramientas/Opciones/Ficha Editor/Verificacin Automtica de Sintaxis.
http://www.pdf4free.com
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 Modo Pausa caracterizado por permitir ejecutar la aplicacin paso a paso. Para pasar de este modo al de ejecucin, se acceder a Ejecutar/Inicio, pulsar la tecla F5 o se har clic en el icono Ejecutar. Para pasar al modo de diseo se acceder a Ejecutar/Terminar o se har clic en el icono Detener. Para depurar una aplicacin, se debe entrar en el modo pausa. Para ejecutar el cdigo paso a paso desde un punto determinado, se insertarn puntos de parada, que detienen la ejecucin de la aplicacin pasando del modo de ejecucin al de pausa.
Debug.Print Var_A_Depurar
4.5- CONTROL DE ERRORES EN TIEMPO DE EJECUCIN Cuando se produce un error en tiempo de ejecucin, Visual Basic detiene la aplicacin. Para habilitar la captura de errores en tiempo de ejecucin para su uso posterior, se tendr que utilizar la sentencia:
co
donde los tres puntos indican la etiqueta que define la captura del error. El cdigo etiquetado debe estar en el procedimiento actual. Una etiqueta es un identificador que finaliza con dos puntos. Para que no se ejecute la rutina de tratamiento de errores cuando la aplicacin funcione bien, es aconsejable tener una salida (Exit Function, Exit sub, etc.) en la lnea inmediatamente anterior a la rutina de tratamiento. En caso de que el error pueda corregirse, la sentencia Resume lleva a la instruccin que provoc el error inicialmente. Si no puede resolverse, se puede identificar el error con la funcin Err, que devuelve el entero asociado al ltimo error producido.
pu
ce
On Error GoTo...
nt
er
1@
ar
Para poder mostrarla se accede a Ver/Ventana Inspeccin. Sirve para poder visualizar los valores de las expresiones y poderlas verificar. Para ello, desde la ventana de depuracin se podr utilizar la sentencia Print o ? o utilizar la orden Herramientas/Agragar Inspeccin. Tambin es posible mediante cdigo, insertar sentencias del tipo:
ne
http://www.pdf4free.com
t.c
VENTANA DE DEPURACIN
om
Pgina 44
.a
Curso de Visual Basic Avanzado 5.0 La sentencia Resume Next permite saltarse la instruccin que provoc el error y, se comienza a procesar la instruccin inmediatamente posterior a la que ha causado el problema. Tambin se puede restaurar la ejecucin a cualquier punto mediante la sentencia Resume Etiqueta. Para conocer el mensaje del error producido, se puede utilizar la funcin Error$.
On Error GoTo 0
EJEMPLO: Disear una aplicacin que permita ejecutar una aplicacin Windows
1@
er
Name Name
Command Button
nt
ce
Command Button
pu
co
Private Sub cmdAceptar_Click() Dim Retorno As Long Dim NombreArchivo As String NombreArchivo = txtArchivo.Text If Existe(NombreArchivo) Then Retorno = Shell(NombreArchivo, vbNormalFocus)
ar
ne
False False True True
Ejecutar...
frmEjecutar
Cancelar cmdCancelar
http://www.pdf4free.com
t.c
VALOR
om
Pgina 45
.a
co
pu
ce
nt
er
1@
ar
ne
Pgina 46 http://www.pdf4free.com
t.c
om
.a
CASILLAS DE VERIFICACIN Y CUADROS DE OPCIN. Los botones de opcin (Option Button, 3 fila, icono central) y las casillas de verificacin (CheckBox, 3 fila, icono izquierdo), indican un estado y permiten al usuario que cambie el estado. Las casillas de verificacin actan independientemente. Por el contrario, los botones de opcin aparecen en conjuntos y permiten escoger un valor del conjunto. Las propiedades importantes de estos controles son, prcticamente las mismas que las de un botn de comando, a excepcin de la propiedad Value (valor), que indica el estado del control. Para los botones de opcin puede estar establecida a True o False. Si est a True, el botn estar activado. Para las casillas de verificacin, se podr establecer a 0-Unchecked (no est activado), 1-Checked (activado) o 2Grayed (atenuado).
co
MARCOS
Los marcos (Frame, 2 fila, icono central) sirven para separar grupos de otros objetos en la pantalla. Para los controles anteriores, tambin afectan al comportamiento de ellos. Para asegurarse que los controles que se aadan al marco pertenecen al marco, se deben crear dentro del marco y no arrastrados encima. JDMR , Academia Jos Lerma Pgina 47
pu
ce
nt
er
1@
ar
ne
http://www.pdf4free.com
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 BARRAS DE DESPLAZAMIENTO (HScrollBar y VScrollBar, 4 fila, iconos central y derecho) Informan de la posicin del cuadro de desplazamiento dentro de la barra. Las propiedades que se suelen utilizar son: Value (valor) contiene el nmero que representa la posicin actual del cuadro de desplazamiento en el interior de la barra. LargeChange (gran cambio) representa el valor aadido o sustrado al nmero contenido en la propiedad Value cuando el usuario hace clic dentro de la barra de desplazamiento. Max (mximo) indica el valor de la propiedad Value cuando el cuadro de desplazamiento est en su posicin ms a la derecha o abajo posible. Min (mnimo) indica el valor de la propiedad Value cuando el cuadro de desplazamiento est en su posicin ms a la izquierda o arriba posible. SmallChange (cambio pequeo) representa el valor aadido o sustrado al nmero contenido en la propiedad Value cuando el usuario hace clic dentro de una de las flechas de desplazamiento.
TEMPORIZADORES
(Timer, 5 fila, icono izquierdo) Este tipo de control se programa estableciendo su propiedad Interval al nmero de milisegundos que deben transcurrir entre los eventos que emita. En la mayora de los ordenadores, un valor en la propiedad Interval inferior a 56 no es til. El valor mximo permitido es algo ms de un minuto: 66... Antes de generar un evento de reloj, el sistema siempre comprueba si hay algn otro evento de reloj pendiente, si lo hay, no genera un evento nuevo. Invisible en tiempo de ejecucin.
co
pu
ce
nt
er
Los eventos asociados a este tipo de control son los eventos Change producido despus de que se haya modificado la posicin del cuadro de desplazamiento; y el evento Scroll, emitido repetidamente mientras el cuadro de desplazamiento se arrastra por el interior de la barra de desplazamiento (no ocurre si se mueve haciendo clic en las flechas o en la barra). Se utiliza para proporcionar informacin instantnea.
1@
ar
ne
http://www.pdf4free.com
t.c
om
Pgina 48
.a
Curso de Visual Basic Avanzado 5.0 CONTROL DE REJILLA (CONTROL GRID) Una rejilla tiene la apariencia de una hoja de clculo, por lo que la informacin que muestra aparece en las celdas de la rejilla. Durante la ejecucin, el usuario podr seleccionar celdas, pero no modificar su contenido. En una rejilla podemos tener celdas fijas y no fijas. El color por defecto de las celdas fijas es gris y, el de las no fijas, blanco. Si el nmero de celdas no cabe en la rejilla, aparecern barras de desplazamiento. En Visual Basic 5.0, este control debe ser aadido al proyecto desde Herramientas/Controles Personalizados/ Activando "Microsoft Grid Control"
CUADROS DE DILOGO
(Common Dialog, 8 fila, icono izquierdo) Este control es invisible en tiempo de ejecucin. Sin embargo, cuando se pone un control de este tipo en un formulario, se puede llamar a cualquiera de las cinco operaciones estndar de Windows como Abrir, Guardar como, Color, Fuente e Impresora. El cuadro de dilogo no realiza acciones, slo recoge informacin. La ejecucin de las funciones seleccionadas comienza cuando se establece la propiedad (Personalizado) del control de dilogo estndar. Las instrucciones de Visual Basic se suspenden hasta que el usuario sale del cuadro de dilogo. Entonces se podrn examinar las propiedades del control para ver qu accin se produjo. No hay ni mtodos ni eventos asociados a este tipo de control. Todas las funciones del cuadro de dilogo permiten generar un error si el usuario selecciona el botn Cancelar. Para ello, se utiliza la propiedad CancelError (cancelar error), que por defecto est desactivada. JDMR , Academia Jos Lerma
co
pu
ce
nt
er
1@
ar
Las propiedades ms importantes de este control son: Row (fila) determina la fila actual. Col (columna) contiene la columna actual. Rows (filas) determina el nmero total de filas. Cols (columnas) que determina el nmero total de columnas. FixedRows (filas fijas) determina el nmero de filas, empezando desde arriba, que permanecen fijas. FixedCols (columnas fijas) determina el nmero de columnas, empezando desde la izquierda, que permanecen fijas. ColWidth (anchura columna) determina el ancho de la columna. RowHeight (altura fila) determina el alto de la fila. Ambas estn medidas en Twips. Text (texto) contiene el contenido de la celda.
ne
http://www.pdf4free.com
t.c
om
Pgina 49
.a
Curso de Visual Basic Avanzado 5.0 Al modificar la propiedad (Personalizado) aparece una serie de fichas para escoger el tipo de cuadro de dilogo que se debe mostrar. Las posibilidades son las siguientes: Abrir / Guardar Como: Permite al usuario seleccionar una unidad de disco, un directorio, una extensin de archivo, un nombre de archivo e indicar si ste va a ser abierto slo para lectura. Sus propiedades ms importantes son: DialogTitle (ttulo del cuadro de dilogo) que puede ser establecida en cualquier cadena de caracteres; FileName (nombre de archivo) utilizada para establecer el nombre inicial que aparecer en el cuadro Nombre del archivo del cuadro de dilogo. Sirve adems para saber el nombre del archivo seleccionado; Filter (filtro) se utiliza para restringir los nombres de los archivos que aparecern en el cuadro de lista. Debe ser una cadena de texto con una o ms parejas de componentes, donde cada componente est formada por una descripcin y por un carcter comodn y, separadas por |; FilterIndex (filtro ndice) tendr como valor un nmero entero que indica la pareja de componentes del filtro que actuar por omisin; Flags (banderas) establecida como una combinacin de uno o ms valores que controlan caractersticas especiales del cuadro de dilogo. Color: Permite al usuario seleccionar un color de una paleta o crear y seleccionar un color personalizado. La propiedad Color determina el color seleccionado. Fuente: Permite al usuario seleccionar un tipo de letra, especificando la fuente, el estilo y el tamao. Imprimir: Visualiza el tipo de impresora que se est utilizando y permite especificar una nueva impresora y/o indicar cmo se va a realizar la impresin. Las propiedades Copies (nmero de copias), FromPage (desde la pgina n), ToPage (hasta la pgina n)... informacin relativa a la impresin. Ayuda: Permite ejecutar Winhelp.exe, pero no se visualiza cuadro de dilogo. La propiedad HelpCommand (comando de ayuda) especifica el tipo de ayuda que se quiere obtener; HelpFile (archivo de ayuda) especifica el nombre del archivo de ayuda y HelpKey (clave de ayuda) especifica la palabra clave que se debe usar para la pantalla inicial de ayuda.
co
Una vez en tiempo de ejecucin, para visualizar el cuadro de dilogo se deber JDMR , Academia Jos Lerma Pgina 50
pu
ce
nt
er
1@
ar
ne
http://www.pdf4free.com
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 utilizar uno de los mtodos siguientes: Mtodo ShowOpen ShowSave ShowColor ShowFont Tipo de Caja Caja de dilogo Abrir Caja de dilogo Guardar Como
PROPIEDAD
ne
1 - 3D cmdOK OK True True
EJEMPLO: Disear una aplicacin que permita visualizar varios tipos de cuadros de dilogo.
VALOR
1@
er
nt
Command Button
Command Button
pu
ce
co
Common Dialog
ar
Cancelar cmdCancelar
CommonDialog1
http://www.pdf4free.com
t.c
om
Pgina 51
.a
If lstDiags.ListIndex = 0 Or lstDiags.ListIndex = -1 Then MsgBox "Lo siento, no hay cuadro de dilogo seleccionado" Else Cual = lstDiags.ListIndex Select Case Cual Case 1 Abrir archivo, Action = 1 CommonDialog1.Flags = OFNFileMustExist Or OFNAllowMultiselect CommonDialog1.ShowOpen Case 2 Guardar archivo, Action = 2 CommonDialog1.Flags = OFNShowHelp Or OFNOverwritePrompt
co
pu
Dim Cual As Integer Const OFNFileMustExists = 4096 Const OFNAllowMultiselect = 512 Const OFNShowHelp = 16 Const OFNOverwritePrompt = 2 Const CCFullOpen = 2 Const CFBoth = 3 Const PPrintSetup = 64 Const HelpContents = 3
er
ce
nt
1@
ar
ne
Pgina 52 http://www.pdf4free.com
t.c
om
.a
CONTROL DE DIRECTORIOS (DirList, 5 fila, icono derecho) Muestra la estructura de directorios de la unidad actual. La propiedad Path devuelve el camino completo del directorio actual, incluyendo el nombre de unidad. Disponible en tiempo de ejecucin. Un cambio de directorio provoca el suceso Change. Para que cambie el directorio se debe ejecutar la sentencia: ChDir Dir1.Path El directorio especificado por la propiedad Path siempre tiene como ndice (propiedad ListIndex) -1. El que est inmediatamente encima de l, tiene como ndice -2, y as sucesivamente hasta el directorio raz. El primer subdirectorio que est inmediatamente a continuacin, tiene como ndice 0. Si hay varios directorios en el primer nivel de subdirectorios, el siguiente tiene ndice 1, y as sucesivamente. El nmero de directorios correspondientes al primer nivel de subdirectorios del directorio especificado por Path, viene dado por la propiedad ListCount de la lista. JDMR , Academia Jos Lerma Pgina 53
co
pu
ce
nt
er
(DriveList, 5 fila, icono central) La propiedad Drive del control de unidades de disco, permite saber cul es la unidad actual. Slo el primer carcter es significativo. Disponible en tiempo de ejecucin. Un cambio de unidad de disco provoca el suceso Change. Para que cambie la unidad de disco se debe ejecutar la sentencia: ChDrive Drive1.Drive
1@
ar
ne
http://www.pdf4free.com
t.c
om
.a
CONTROL DE ARCHIVOS (FileList, 6 fila, icono izquierdo) Muestra los archivos del directorio actual. La propiedad FileName permite especificar el fichero que se quiere utilizar o devuelve el nombre del fichero seleccionado. Disponible en tiempo de ejecucin. La propiedad Pattern permite que se visualicen los ficheros que cumplen el patrn especificado por sta. Admite los comodines * y ?. Los atributos estn disponibles a travs de las propiedades Archive, Normal, System, Hidden y ReadOnly. Para poner atributos a un fichero se ejecutar la propiedad SetAttr y, para obtenerlos, GetAttr. Las propiedades List y ListIndex son idnticas a las propiedades del mismo nombre de los cuadros combinados.
EJEMPLOS: 1.
Form
Caption Name
1@
CONTROL
PROPIEDAD
ar
Disear una aplicacin que permita buscar ficheros a partir de un determinado directorio previamente especificado. Se necesitan dos formularios y un mdulo. VALOR
er
Caption Text
nt
Command Button
ce
pu
Text Box
co
Command Button
ne
Buscar True
Buscar ficheros frmBuscarFicheros Criterio de bsqueda: (ninguno) txtPatrn cmdDirectorio Directorio: (ninguno) txtDirectorio
cmdBuscar
http://www.pdf4free.com
t.c
om
Pgina 54
.a
Directorio actual
co
En un nuevo mdulo: Public NoAbandonarBuscar As Boolean Dim NumFicheros As Integer Public Sub BuscarFichero() Inicializacin para llamar a RecorrerArbolDirs para ejecutar una bsqueda recursiva Dim Abandono As Boolean, I As Integer, Msj As String Si ya existe una lista, borrarla
pu
ce
nt
er
1@
ar
ne
Pgina 55 http://www.pdf4free.com
t.c
om
True
.a
lstLista
co
pu
ce
nt
er
1@
ar
ne
t.c
om
Pgina 56
http://www.pdf4free.com
.a
=
En un nuevo formulario:
pu
ce
End If If DirAnterior <> "" Then Directorio anterior en la lista FrmSistemaF.dirDirectorio.Path = DirAnterior End If Exit Function ManipularErrorRecorrerArbolDirs: If Err = 7 Then Insuficiente memoria (lista llena) Visualizar mensaje de error y retornar True en AbandonarBusqueda Msj = "Lista llena. Se abandona la bsqueda" MsgBox Msj, vbExclamation RecorrerArbolDirs = True Exit Function Exit pone Err a 0 Else MsgBox Error, vbCritical End End If End Function
nt
er
1@
PROPIEDAD
ar
ne
Form
co
http://www.pdf4free.com
t.c
VALOR
om
Pgina 57
.a
cmdCancelar
co
2. Disear una aplicacin que simule una base de datos de una farmacia. Se debe guardar informacin sobre el nombre del producto, cantidad en stock y comentarios sobre el producto. Para ello, se utilizar un tipo Registro. El formulario estar formado por un botn para buscar un producto determinado, otro botn para aadir un nuevo producto, as como las cajas de texto necesarias para visualizar el inventario. Cuando se desee buscar un producto, se mostrar un formulario con una lista en la que aparecern los nombres de los productos. Cuando el usuario seleccione un producto, se visualizar en el formulario inicial toda la informacin relativa a dicho producto.
pu
Private Sub cmdAceptar_Click() Actualizar la lista de directorios dirDirectorio.Path = dirDirectorio.List(dirDirecrorio.ListIndex)) frmBuscarFicheros.txtDirectorio.Text = dirDirectorio.Path frmSistemaF.Hide End Sub Private Sub cmdCancelar_Click() frmSistemaF.Hide End Sub
ce
nt
er
1@
ar
On Error GoTo Unidades dirDirectorio.Path = drvUnidades.Drive Exit Sub Unidades: MsgBox "Error: unidad no preparada", vbExclamation, "Sistema Ficheros" Exit Sub End Sub
ne
http://www.pdf4free.com
t.c
om
Pgina 58
Cancelar
.a
cmdAceptar
txtCantidad (ninguno)
txtComentarios
1@
Caption Name
er
Private Sub cmdAadir_Click() TotalRegistros = TotalRegistros + 1 Articulo(TotalRegistros).Nombre = txtNombre.Text Articulo(TotalRegistros).Cantidad = txtCantidad.Text Articulo(TotalRegistros).Comentario = txtComentarios.Text
co
frmRegistros.lstNombre.AddItem txtNombre.Text txtNombre.Text = "" txtCantidad.Text = "" txtComentarios.Text = "" txtNombre.SetFocus End Sub Private Sub Form_Terminate()
pu
ce
nt
ar
ne
True Aadir
cmdAadir
http://www.pdf4free.com
t.c
Pgina 59
om
(ninguno)
.a
txtNombre
En un nuevo formulario:
Form
pu
CONTROL
ce
nt
er
Public Sub BuscarRegistro() Dim QueRegistro As Integer For QueRegistro = 1 To 100 If (RTrim(Articulo(QueRegistro).Nombre)) = _ RTrim(frmRegistro.lstNombre.Text Then Exit For Next QueRegistro frmInventario.txtNombre.Text = Articulo(QueRegistro).Nombre frmInventario.txtCantidad.Text = Articulo(QueRegistro).Cantidad frmInventario.txtComentarios.Text = Articulo(QueRegistro).Comentarios frmRegistro.Hide End Sub
1@
ar
ne
False False
co
1-Fixed Single
http://www.pdf4free.com
t.c
VALOR
om
Pgina 60
.a
DISEO DE UN MEN Para disear un men se utilizar Herramientas/Editor de Mens. Los elementos de un men pueden ser rdenes o comandos, que al hacer clic sobre ellos ejecutan acciones; submens, que despliegan una nueva lista de elementos y; separadores o lnea horizontal que agrupa las opciones del men. Una vez en la ventana de diseo de mens, se introducirn los siguientes datos: Caption Nombre del men que se desea crear (lo que ve el usuario). Se JDMR , Academia Jos Lerma Pgina 61
co
pu
ce
nt
er
1@
ar
ne
http://www.pdf4free.com
t.c
om
cmdCancelar
.a
Cancelar
Curso de Visual Basic Avanzado 5.0 insertar un ampersand (&) delante de la letra que dar acceso al men. Para introducir un separador, se escribir un guin (-) en este apartado. Name Nombre utilizado en el cdigo para referirse al men. Index Permite que un conjunto de rdenes sean agrupadas en una matriz de controles. ShortCut Permite definir un acelerador, es decir, una combinacin de teclas para activar el elemento. Checked til para indicar si una orden est activa o no. Si lo est, en la orden aparece una marca a su izquierda. Enabled til para desactivar una orden. Si una orden tiene esta propiedad marcada, aparecer atenuada y no podr ser ejecutada. Visible Es til cuando en tiempo de ejecucin se quiere ocultar una orden.
co
En tiempo de ejecucin se podrn aadir rdenes a un men. Para ello se utilizar la sentencia Load, tal como se utilizaba en matrices de controles. Para eliminar una orden de un men, se utilizar Unload. Para poder utilizar estas dos sentencias, las rdenes que componen el men tienen que pertenecer a una matriz de controles, por lo que durante el diseo se debe haber creado al menos, un elemento (haber puesto a un comando la propiedad Index a 0).
pu
ce
Para introducir sangras entre los elementos de men, se pulsar los botones de flecha. El botn Next inserta un nuevo elemento de men o, se desplaza al siguiente.
nt
er
1@
HelpContexID Se utiliza para proveer una ayuda en lnea para una aplicacin.
ar
WindowList Permite especificar si un men mantiene una lista de las ventanas abiertas, con una marca a la izquierda de la ventana activa.
ne
http://www.pdf4free.com
t.c
om
Pgina 62
.a
Curso de Visual Basic Avanzado 5.0 Para poder crear un men emergente o contextual, se utilizar el mtodo:
[formulario.]PopupMenu NombreMen
donde NombreMen es el valor de la propiedad Name del men que se quiere mostrar. Ya se ver cmo hacer que aparezcan al pulsar el botn derecho del ratn.
EJEMPLO: Modificar la aplicacin que permita simular un editor de texto. CONTROL Form Caption Name Text Box Text MultiLine ScrollBars Name PROPIEDAD
VALOR
frmEditor
1@
&Salir &Edicin
ce
&Archivo
nt
CAPTION
er
NAME
ar
ne
True 3- Both
(ninguno)
txtEditor
mnuArchivo mnuArchivoSalir mnuEdicin mnuEdicinCortar ShortCut: CTRL+X Enabled: False mnuEdicinCopiar ShortCut: CTRL+C Enabled: False mnuEdicinPegar ShortCut: CTRL+V ShortCut: CTRL+S
&Cortar
co
C&opiar
&Pegar
pu
http://www.pdf4free.com
t.c
Editor de Textos
om
OTRAS
Pgina 63
.a
&Tamao 10
mnuConfTamao Tamao
&Color Negro
mnuConfColor Color
ar
1@
Color Color
nt
co
Dim SealColor As Integer Dim SealFuente As Integer Dim SealTamao As Integer Private Sub Form_Load() Clipboard.Clear Limpiar el portapapeles txtEditor.Font.Name = "Arial" SealFuente = 0 txtEditor.Font.Size = 10 SealTamao= 10 txtEditor.ForeColor = RGB(0, 0, 0)
pu
ce
er
mnuAyuda mnuAyudaAcerca
ne
20
Tamao
http://www.pdf4free.com
t.c
Index: 0 Index: 1 Index: 0 Index: 1 Index: 2
Checked: True
Checked: True
om
Pgina 64
Fuente
Index: 1
.a
Index: 0
Llevar al portapapeles
Private Sub mnuEdicinPegar_Click() txtEditor.SelText = Clipboard.GetText() End Sub Private Sub Fuente_Click() txtEditor.Font.Name = Fuente(Index).Caption Fuente(SealFuente).Checked = False Desactivar la fuente anterior Fuente(Index).Checked = True Activar la nueva fuente SealFuente = Index End Sub
co
Private Sub Tamao_Click() txtEditor.Font.Size = Val(Tamao(Index).Caption Tamao(SealTamao).Checked = False Desactivar el tamao anterior Tamao(Index).Checked = True Activar el nuevo tamao SealTamao = Index End Sub Private Sub Color_Click() Select Case Index Case 0 txtEditor.ForeColor = RGB(0, 0, 0)
pu
ce
nt
er
1@
ar
Private Sub mnuEdicinCortar_Click() Clipboard.SetText txtEditor.SelText Llevar al portapapeles txtEditor.SelText = "" Eliminar el texto End Sub
ne
http://www.pdf4free.com
t.c
om
Pgina 65
.a
MouseUp. Reconocido cuando el usuario suelta cualquier botn. MouseMove. Reconocido cada vez que el usuario mueve el cursor del ratn a una nueva posicin. Los procedimientos asociados a estos sucesos tienen los mismos argumentos: Button, botn pulsado; Shift, tecla/s pulsada/s; X e Y, coordenadas de la posicin actual del ratn.
Objeto_SucesoRatn(Button As Integer, Shift As Integer, X As Single, Y As Single)
Los valores vlidos para el argumento Button dependen del suceso. Para los sucesos MouseDown y MouseUp, este argumento puede tomar los siguientes valores:
co
pu
ce
nt
VALOR 1 2 4 Pgina 66
er
1@
ar
ne
Los formularios y varios tipos de controles reconocen tres sucesos porducidos por el ratn:
http://www.pdf4free.com
t.c
EVENTOS ASOCIADOS
om
.a
Para el suceso MouseMove, este argumento puede tomar los siguientes valores: CONSTANTE vbLeftButton vbRightButton vbLeftButton + vbRightButton vbMiddleButton vbLeftButton + vbMiddleButton vbMiddleButton + vbRightButton vbLeftButton + vbRightButton + vbRightButton VALOR 1
4 5 6 7
VALOR 1 2 4
1.
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, _ Y As Single) txtTest1.Text = Str(X) txtTest2.Text = Str(Y) Select Case Button Case 1 txtTest3.Text = "Botn Izquierdo" Case 2 txtTest3.Text = "Botn Derecho" Case 4
co
pu
Crear una aplicacin que indique en tres cajas de texto txtTest1, txtTest2 y txtTest3 respectivamente, que permitan mostrar los valores de los argumentos X, Y y Button para el evento MouseDown.
ce
EJEMPLOS:
nt
er
1@
ar
ne
Pgina 67 http://www.pdf4free.com
t.c
om
.a
2. Crear una aplicacin que permita dibujar lneas en el formulario mientras se presiona el botn izquierdo del ratn. Dim PuntoX As Integer Dim PuntoYAs Integer
Para que un control pueda ser arrastrado, su propiedad DragMode debe estar establecida a 1. En este caso, este objeto ya no recibe ms los eventos Click y MouseDown. En su lugar, el objeto se mueve cuando el usuario hace clic sobre l y comienza a arrastrarlo. Al mover un objeto, Visual Basic muestra un cuadro gris en lugar del objeto. Si se quiere sustituir por una imagen, se modificar la propiedad DragIcon del objeto a mover. JDMR , Academia Jos Lerma Pgina 68
co
ARRASTRAR Y SOLTAR
pu
ce
nt
er
1@
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, _ Y As Single) If Button = 1 Then Line -(X, Y) Dibujar una lnea End Sub
ar
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, _ Y As Single) If Button = 1 Then Botn izquierdo PuntoX = X PuntoY = Y CurrentX = X CurrentY = Y End If End Sub
ne
http://www.pdf4free.com
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 Cuando un objeto est siendo arrastrado, se denomina objeto fuente y, el objeto sobre el que se suelta, objeto destino. Este ltimo objeto recibe el evento DragDrop. A todos los objetos por los que el objeto fuente haya pasado por encima durante el arrastre, se emitir el evento DragOver. Un objeto puede ser movido a peticin del usuario. Para ello, la propiedad DragMode del objeto estar establecida a 0. Para permitir o no arrastrar el objeto, se utilizar el mtodo:
co
pu
ce
nt
er
1@
ar
ne
Pgina 69 PDF Creator - PDF4Free v2.0 http://www.pdf4free.com
t.c
donde accin puede tener el valor 0, 1 2. Un valor 0 cancela la operacin de arrastrar, un valor 1 inicia la operacin de arrastrar, un valor 2 finaliza la operacin de arrastrar y provoca el suceso DragDrop.
om
[control.]Drag accin
.a
co
Los mens de cada formulario hijo, son visualizados en el formulario padre. Cada vez que se activa un formulario hijo, su men sustituye al men que se est visualizando en el formulario padre. Ahora bien, si no hay formulario hijo cargado, o si dicho formulario no tiene men, entonces se visualiza el del padre, si lo tiene. Es aconsejable que el formulario padre tenga un men que permita abrir o crear un JDMR , Academia Jos Lerma Pgina 70
Los nicos controles que se pueden incluir en un formulario padre son aquellos que tengan la propiedad Align y, dentro de stos controles se podrn colocar otros controles. De esta forma se crean las barras de herramientas.
pu
ce
nt
Cuando se visualizan varios formulario hijos, todos comparten el mismo cdigo, pero cada uno de ellos guarda sus propios datos y reconoce sus propios sucesos. Segn sto, no se podr utilizar el identificador del formulario para referirse a los controles o a sus propiedades, aunque s se podr utilizar la palabra clave Me.
er
1@
Para crear una aplicacin MDI se empezar a crear un nuevo proyecto y, se accede a Insert/MDI Form. El nuevo formulario ser el formulario padre. Para que un formulario sea un formulario hijo, se deber cambiar su propiedad MDIChild y establecerla a True.
ar
ne
Visual Basic permite crear aplicaciones empleando una interfaz de mltiples documentos (MDI - Multiple Document Interface), o dicho en trminos de Visual Basic, mltiples formularios. En una aplicacin MDI, se pueden abrir varias ventanas hijas. Cada una de estas ventanas hijas (formularios) son iguales entre s. En una aplicacin MDI pueden haber varias ventanas hijas, pero solo una ventana padre por aplicacin. El formulario padre acta como contenedor de los formulario hijo. Muchos procesadores de textos bajo Windows son buenos ejemplos de aplicaciones MDI.
http://www.pdf4free.com
t.c
om
.a
6.3.- EVENTO QUERYUNLOAD Cuando el usuario ejecuta la orden Cerrar del men de control del formulario padre, Visual Basic intenta descargar dicho formulario. Esto hace que se d el suceso QueryUnload primero para el formulario padre y luego para cada uno de los hijos.
En el formulario padre: Private Sub mnuArchivoNuevo_Click() Dim X As New frmHijo Contador = Contador + 1 X.Show End Sub Private Sub mnuArchivoSalir_Click() End End Sub
co
pu
ce
EJEMPLO: Vamos a construir una aplicacin que permita crear varios formularios hijo. Para ello, se necesitar crear un nuevo proyecto con un formulario MDI y, un formulario hijo, al que se le haya establecido su propiedad Caption a Formulario Hijo y su propiedad Name a frmHijo. Al formulario padre se le aadir un men Archivo con los comandos Nuevo y Salir. Se aadir el men Ventana con la propiedad Window List activada y, con las opciones Cascada, Mosaico y Organizar iconos. Tambin se le aadir un control 3D panel, seleccionando Tools/Custom Controls. A dicho control se le modificar las propiedades Align con 2 - Align Bottom, BevelInner con 1 - Inset, BevelWidth con 2 y, BordeWidth con 2. Dentro de este control se aadirn dos etiquetas: lblTexto y lblContador.
nt
er
1@
ar
ne
La sentencia Unload permite descargar un formulario o un control de la memoria, pero antes de que el formulario sea descargado, se da el suceso QueryUnload, seguido del suceso Unload. El suceso QueryUnload para un formulario MDI va seguido del suceso QueryUnload para cada uno de los formularios hijo.
http://www.pdf4free.com
t.c
om
Pgina 71
Cuando el usuario ejecuta la orden Cerrar del men de control del formulario hijo tambin se da el suceso QueryUnload pero solo para este formulario.
.a
co
pu
ce
nt
er
Private Sub Form_Unload(Cancel As Integer) Si el valor de Cancel es True, el formulario asociado no se descarga. En otro caso, se van cerrando primero cada hijo y, por ltimo el padre. Contador = Contador - 1 MDIForm1.lblContador = Str(Contador) End Sub
TEMA 7
Pgina 72
1@
ar
ne
http://www.pdf4free.com
t.c
om
.a
ACCESO A DATOS
co
pu
Archivo binario. Es una coleccin de bytes o secuencia numerada de caracteres, independientemente de la estructura del mismo. Ofrecen la posibilidad de almacenar los datos como se quiera, aunque para poder acceder a ellos, es necesario conocer cmo fueron escritos. Ejemplos: archivos EXE
ce
nt
Archivo aleatorio. Su contenido puede ser ledo y escrito en el orden que se necesite. Todas las lneas deben ser del mismo tamao. Asumiremos que est formado por un conjunto de registros de la misma longitud. Cada registro individual se identifica con un nico nmero y puede ser ledo, escrito o actualizado. Ejemplos: archivos que simulen bases de datos.
er
1@
ar
Archivo secuencial. Archivo de texto plano. Se lee una lnea cada vez. Cada lnea podr ser tan larga como quiera. Cuando se empieza a leer un archivo secuencial, se empieza por la primera lnea y se contina con la siguiente hasta llegar al final. Este tipo de datos no suele ser el adecuado para almacenar grandes series de nmeros porque se almacenan en forma de cadena de caracteres. Ejemplos: archivos TXT
ne
http://www.pdf4free.com
t.c
om
Pgina 73
Los archivos proporcionan una manera de almacenar informacin a largo plazo. Visual Basic ofrece tres formas de acceder a los datos:
.a
La instruccin Open (abrir) le dice a Visual Basic a qu archivo debe acceder. La sintaxis es:
NumArchivo = FreeFile
co
Si la intruccin Close se utiliza sin poner NumeroDeArchivo, se cerrarn todos los ficheros abiertos. LEER DE ARCHIVOS SECUENCIALES JDMR , Academia Jos Lerma Pgina 74
Close #NmeroDeArchivo
pu
Despus de trabajar con un archivo, se debe cerrar con la instruccin Close, cuya sintaxis es:
ce
nt
er
1@
ar
donde Input indica si se quiere leer del archivo, Output si se quiere escribir de l, Append si se quiere aadir informacin al final del fichero y, NumeroDeArchivo es un nmero entre 1 y 255. Si se trata de abrir para lectura un archivo que no existe, se producir un error. Si se abre para escritura Visual Basic crear un nuevo archivo, reemplazando cualquier archivo con ese nombre. Si no se sabe qu nmero de archivo est libre, se utilizar el siguiente cdigo:
ne
http://www.pdf4free.com
t.c
om
For
{Input
Output|
Append}
.a
As
Para leer de un archivo secuencial se utilizar la instruccin Line Input que permite leer una lnea cada vez y que tiene la sintaxis:
Por tanto, para leer de un archivo de acceso secuencial se seguirn los pasos: 1. Abrir el fichero para lectura con: Open NombreDeArchivo For Input As #NmeroDeArchivo
co
1. Leer los datos del fichero utilizando las sentencias: Line Input #NmeroDeArchivo, VariableDeCadena; o bien Input #NmeroDeArchivo, VariableDeCadena; o bien VariableDeCadena = Input$ NmCaracteres, #NmeroDeArchivo 1. Cerrar el archivo con la sentencia: Close #NmeroDeArchivo
pu
ce
nt
La funcin EOF (Fin De Fichero) indica cundo se acaba un archivo. A esta funcin hay que facilitarle el nmero de archivo correspondiente y, devolver True si se ha ledo toda la informacin del archivo. La funcin LOF (Longitud De Archivo) indica la longitud de un archivo.
er
1@
donde la ltima instruccin, permite leer un nmero determinado de caracteres y, est limitado a ficheros de 32.767 bytes mximo.
ar
ne
http://www.pdf4free.com
t.c
om
Pgina 75
.a
Para escribir en un archivo secuencial, utilizaremos las instrucciones Print o Write con la sintaxis:
Por tanto, para escribir en un archivo de acceso secuencial se seguirn los pasos: 1. Abrir el fichero para escritura con: Open NombreDeArchivo For Output As #NmeroDeArchivo
EJERCICIOS:
1.
co
Modificar el ejercicio del Editor para que se pueda grabar o recuperar el texto de un archivo. debe aparecer un nuevo formulario en el que el usuario introducir el nombre del fichero a grabar o recuperar, incluida la ruta. Se deben controlar los posiblers errores que aparezcan al intentar acceder a un archivo que no exista.
1.
Modificar el ejercicio anterior para que el usuario pueda escoger la unidad, directorio y nombre del fichero a recuperar.
pu
ce
nt
er
1@
ar
ne
Write y Print son diferentes. Write inserta comas entre los distintos items a escribir en el fichero. Si se desean conservar los valores de un archivo abierto para escritura, se tendr que abrir en modo Append y no Output.
http://www.pdf4free.com
t.c
Print
om
Pgina 76
.a
co
Get lee del archivo y almacena los datos en la variable, mientras que Put escribe el contenido de la variable en el archivo.
Por tanto, para leer / escribir en un archivo de acceso aleatorio, se seguirn los pasos: JDMR , Academia Jos Lerma Pgina 77
pu
ce
nt
Para leer y escribir de un archivo aleatorio, utilizaremos las instrucciones Get y Put respectivamentes, con las sintaxis:
er
1@
ar
En un archivo de acceso aleatorio, se puede leer o escribir sin tener que cerrar cada vez.. Se debe facilitar el nmero de bytes que se deben leer o escribir. Para cerrar un archivo aleatorio, se utilizar Close como si fuera un archivo secuencial.
ne
http://www.pdf4free.com
t.c
For
Random
As
#NmeroDeArchivo
om
.a
Len =
Curso de Visual Basic Avanzado 5.0 1. Abrir el fichero para acceso aleatorio con: Open NombreDeArchivo For Random As #NmeroDeArchivo Len = LongitudRegistro 1. Escribir los datos en el fichero utilizando la sentencia: Put #NmeroDeArchivo, [NmeroDeRegistro , Variable o bien leer los datos del archivo con la sentencia: Get #NmeroDeArchivo, [NmeroDeRegistro , Variable 1. Cerrar el archivo con la sentencia: Close #NmeroDeArchivo
co
pu
ce
nt
er
donde posicion indica el siguiente registro a leer o escribir. Por ejemplo la sentencia:
1@
ar
ne
La intruccin Seek puede ser extremadamente til porque indica la siguiente posicin a leer o escribir de un fichero abierto. La sintaxis es la siguiente:
http://www.pdf4free.com
t.c
om
Pgina 78
.a
co
Los mtodos que se pueden utilizar con un control de datos son: MoveFirst, para posicionarse en el primer registro. MovePrevious, para posicionarse en el registro anterior. MoveLast, para posicionarse en el ltimo registro. MoveNext, para posicionarse en el registro siguiente. Refresh, la base de datos se abre para ser utilizada o, se cierra y se vuelve a abrir si ya estaba abierta. AddNew, aadir un JDMR , Academia Jos Lerma Pgina 79
pu
Utilizando un control Data, podremos comunicarnos con una base de datos para editar, visualizar y actualizar uno o ms registros. Visual Basic permite comunicarse con bases de datos creadas con Microsoft Access, Microsoft Fox Pro, Borland Paradox, Borland dBase.
ce
nt
EL CONTROL DATOS
er
1@
ar
ne
1. Escribir los datos en el fichero utilizando la sentencia: Put #NmeroDeArchivo, [posicin , Variable o bien leer los datos del archivo con la sentencia: Get #NmeroDeArchivo, [NmeroDeRegistro , Variable
http://www.pdf4free.com
t.c
1. Abrir el fichero para acceso binario con: Open NombreDeArchivo For Binary As #NmeroDeArchivo
om
En este tipo de ficheros los datos no siguen ningn orden, por lo que acceder a ellos es complejo. Los pasos que se debern seguir para escribir en un archivo binario son:
.a
Curso de Visual Basic Avanzado 5.0 nuevo registro. Update, se escriben todos los campos editados en la base de datos. Delete, elimina el registro actual.
Print Data1.RecordSet.Fields("Ttulo")
co
Tambin tiene asociada una propiedad Count que dice cuntos objetos estn contenidos en el objeto Dynaset.
Para poder realizar modificaciones en una base de datos, sta tiene que ser JDMR , Academia Jos Lerma Pgina 80
Print Data1.RecordSet.Fields("Ttulo").Value
pu
Print Data1.RecordSet.Fields(0)
ce
Un objeto Dynaset es un conjunto dinmico de registros. Cada conjunto de registros tiene asignado una coleccin Fields por defecto (conjunto de objetos Field, cada uno de los cuales define un campo de la base de datos). La propiedad por defecto para un objeto Field, es Value, que contiene el valor del campo que representa para el registro actual.para acceder a un miembro individual de una coleccin, puede hacerlo a travs de un ndice o utilizando el nombre del campo. P.e. la sentencia Print Data1.RecordSet(0) es equivalente, suponiendo que el campo 0 es Ttulo, a las sentencias:
nt
er
1@
ar
Cada vez que se cambie el valor de una propiedad, debe ejecutarse el mtodo Refresh. Otras propiedades que se podrn consultar son: BOF (comienzo del archivo) esta propiedad es True si el registro actual es el primero. EOF (final del archivo) que estar a True cuando el registro actual sea el ltimo.
ne
http://www.pdf4free.com
t.c
om
Las propiedades importantes de este control son: Connect (conexin). Esta propiedad especifica el formato de la base de datos. Los valores que se pueden utilizar son: cadena vaca para formato Access, "foxpro 2.5;", "paradox;", y "dbase iv;". DatabaseName (nombre de la base de datos) Sirve para identificar al archivo de base de datos. RecordSource (fuente del registro). Indica de dnde se obtienen los datos. Exclusive (exclusiva). Determina el tipo de acceso, monousuario (True) o multiusuario (False). ReadOnly (solo lectura). Determina el modo de acceso.
.a
Curso de Visual Basic Avanzado 5.0 actualizable, es decir, la propiedad ReadOnly tiene que estar establecida a False y la propiedad Updatable a True. Para saber si una base de datos es actualizable, escribiremos el cdigo: Actualizable = True
End If
Para verificar si un determinado campo es actualizable, el cdigo necesario es: Verificar si el campo(0) es actualizable Then Actualizable = False End If
co
Reposition. Se produce despus de que un determinado registro pase a ser el registro actual. Su sintaxis es Sub Data1_Reposition() Validate. Se produce justo antes de que un determinado registro pase a ser el registro actual. Ocurre antes de una operacin Update, Delete o Close. Su sintaxis es Sub Data1_Validate(Action As Integer, Save As Integer). Para saber la causa que origin el suceso Validate, habr que examinar el Pgina 81
pu
ce
La propiedad Attributes indica los atributos de un campo. Para saber si un campo tiene un determinado atributo, se har un And con el valor del atributo a verificar. Las constantes DB_... estn definidas en el fichero ...\vb\dataconstant.txt
nt
er
1@
ar
ne
http://www.pdf4free.com
t.c
om
Actualizable = False
.a
Curso de Visual Basic Avanzado 5.0 parmetro Action. Este parmetro se corresponde con el tipo de operacin que caus este suceso. Los valores que puede tomar se pueden localizar en el fichero ...\vb\constant.txt y empiezan por DATA_ACTION... El parmetro Save toma el valor True si cualquier control ligado al control de datos cambia. Para saber qu control ha cambiado, habr que evaluar la propiedad DataChanged de cada uno de ellos. Durante este suceso, no se podrn utilizar los mtodos Move.... En su lugar se utilizar el parmetro Action.
co
pu
If Not Data1.Recordset.NoMatch Then Data1.Recordset.Delete Borrar registro RegsBorrados = RegsBorrados + 1 End If Data1.Recorset.FindNext Criterio
ce
nt
er
BeginTrans
1@
Control de transacciones. Una transaccin es una serie de cambios que se quieren hacer sobre una base de datos con la posibilidad de deshacerlos. Las tres sentencias de Visual Basic para realizar transacciones son: BeginTrans, CommitTrans y RollBack. La forma de utilizarlas lo veremos en un ejemplo.
ar
ne
http://www.pdf4free.com
t.c
UTILIZADES ADICIONALES
om
.a
Curso de Visual Basic Avanzado 5.0 RollBack Exit Sub End If Msg = "Est seguro que desea borrar " & RegsBorrados & " registros?"
co
Muchas veces cuando se escribe una aplicacin, se deseara recordar algunas variables de la ltima vez que se ejecut la aplicacin. Este tipo de informacin se almacena en los ficheros ini. Afortunadamente, Windows proporciona un editor de JDMR , Academia Jos Lerma Pgina 83
pu
ce
Suceso Error, que se produce si ocurre un error en tiempo de ejecucin. til para controlar los errores. Su sintaxis es: Sub Data1_Error(DataErr As Integer, Response As Integer), donde DataErr es el n de error y Response es la respuesta que se desea tomar: 0 continuar, 1 visualizar mensaje (valor por defecto)
nt
er
1@
Mtodos UpdateRecord, que guarda valores contenidos en los controles ligados correspondientes al registro actual. Su ejecucin no provoca el suceso Update. Y UpdateControls, que actualiza los controles ligados con los valores del registro actual. Ambos mtodos ejecutan sus acciones sin cambiar de registro actual.
ar
ne
http://www.pdf4free.com
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 texto ASCII para leer y escribir ficheros de este tipo. Existen dos clases de cadenas de perfil: pblicas y privadas. Las pblicas se almacenan en el archivo Win.ini. las cadenas privadas se incluyen en ficheros con un nombre dado por el programador, con extensin .ini. Nosotros deberamos introducir cadenas de perfil de tipo privado. Por ejemplo: si escribimos una aplicacin MiEjemplo.Exe, podramos utilizar un archivo privado C:\WINDOWS\MIEJEMPLO.INI.
GetPrivateProfileString
co
Estas funciones son parte de la API de Windows. Son funciones externas a Visual Basic, por lo que deben ser declaradas en la seccin general de declaraciones de un formulario del proyecto Visual, o en la seccin de declaraciones de un mdulo y JDMR , Academia Jos Lerma Pgina 84
GetPrivateProfileInt WritePrivateProfileString
pu
ce
nt
er
1@
ar
ne
http://www.pdf4free.com
t.c
om
.a
INTRODUCCIN.
co
Lo que se puede hacer con las sentencias grficas, depende de los controladores que Windows emplee para controlar la pantalla y la impresora. Sin embargo, el uso de estos controladores es automtico. A menos que se establezca la propiedad AutoRedraw del formulario a True, ser necesario gestionar el volver a dibujar los grficos. Cuando esta propiedad est a True, se crea una copia del objeto en memoria para poder reproducir automticamente los dibujos pintados con mtodos grficos cuando la ventana cambia de tamao o es ocultada total o parcialmente por otra ventana. Esta operacin tiene un coste de memoria. Si la propiedad tiene un valor False, los grficos no sern reproducidos. Visual Basic activa el suceso Paint cada vez que se visualiza un formulario o una parte nueva del mismo. Si la propiedad ClipControls, que determina si los mtodos grficos contenidos en un procedimiento conducido por el suceso Paint perteneciente a un objeto, repintan el objeto entero o solo la parte que se vuelve a visualizar. Si est a False y AutoRedraw a False, Visual Basic vuelve a pintar slo el rea que se muestra nueva. Slo se llama al procedimiento Paint cuando la propiedad AutoRedraw est a False.
EJEMPLOS: Pgina 85
pu
ce
nt
er
1@
ar
ne
http://www.pdf4free.com
t.c
om
.a
TEMA 8
1.
Sub Form_Load() Print "Por favor, Haz clic para una demostracin de AutoRedraw"
End Sub Sub Form_Click() AutoRedraw = False Cls Print : Print : Print Print "Pero esta lnea desaparecer despus del doble clic" End Sub
co
pu
2. Crear un nuevo formulario que tenga dos controles picture : uno con la propiedad ClipControls establecida a True y el otro a False. Cuando se ejecute este proyecto, se deber arrastrar algn formulario hasta tapar parcialmente los crculos que aparecern en los cuadros de imagen. Al retirarlo de nuevo, el color del crculo de Picture1 se cambia totalmente y, el de Picture2, cambia slo en la parte que se expone nuevamente.
ce
nt
er
1@
ar
ne
Pgina 86 http://www.pdf4free.com
t.c
om
.a
Print "Estas dos lneas permanecern en la pantalla despus de hacer doble clic"
Sub Picture2_Paint() Dim color As Long Picture2.ScaleMode = 3 color = &HFFFFFF * Rnd Picture2.FillStyle = 0 Picture2.FillColor = color Picture2.Circle (43, 41), 30, color End Sub
La escala por omisin para los formularios y cajas de figuras viene medida en Twips. El tamao por omisin de un formulario en una VGA normal es de 7.485 Twips de largo por 4.425 Twips de ancho. Veamos un ejemplo de coordenadas posibles en el formulario.
co
pu
ESCALAS DE LA PANTALLA.
ce
nt
El mtodo Refresh obliga a un refresco inmediato del formulario o del control. Este procedimiento se utiliza normalmente en el procedimiento Form_Resize para volver a presentar cualquier grfico que se haya calculado en el procedimiento Paint. Para guardar los grficos que se han dibujado en un formulario o caja de figuras se utiliza la orden :
er
1@
ar
ne
Pgina 87 http://www.pdf4free.com
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 COORDENADAS (0,0) (7485,0) (0,4425) (7485,4425) (3742,2212) POSICIN Esquina superior izquierda Esquina superior derecha
Aproximadamente en el centro
EJEMPLO
Sub Command1_Click()
co
pu
Randomize
ce
nt
er
1@
Simularemos el movimiento de un botn superponiendo diferentes dibujos del mismo. Se necesita un botn de comando con sus valores por omisin (hacer doble clic sobre la herramienta)
ar
ne
Pgina 88 http://www.pdf4free.com
t.c
om
.a
y = y - ymove End If If x < 0 Or x > ScaleWidth Or y < 0 Or y > ScaleHeight Then 'No hacer nada Else Command1.Move x, y End If Next i End Sub
co
establece el nuevo sistema de coordenadas en el que las coordenadas de la esquina superior izquierda es (-320,100) y las de la esquina inferior derecha es (320,-100). La sintaxis del mtodo Scale es : Scale (Xizquierda, Yarriba)- (Xderecha, Yabajo) JDMR , Academia Jos Lerma Pgina 89
donde x1 e y1 se corresponden con ScaleLeft y ScaleTop y x2 e y2 con las sumas ScaleWidth + ScaleLeft y ScaleHeight + ScaleTop respectivamente. P.e. Scale (-320,100)-(320,-100)
pu
ce
El mtodo Scale establece un nuevo sistema de coordenadas para los formularios y las cajas de figuras que se pueden usar con cualquiera de los mtodos grficos. Su sintaxis es :
nt
er
ESCALAS PERSONALIZADAS.
1@
ar
ne
http://www.pdf4free.com
t.c
om
.a
x = x - xmove
Curso de Visual Basic Avanzado 5.0 Si se establece Scale sin coordenadas, se restablecern las coordenadas por omisin.
EJEMPLO
(0,0) (1,0)
ar
(0,-1)
(-40,40)
er
1@
(1,-1)
(40,40)
nt
ce
(0,0)
co
Para dibujar lneas se utiliza el mtodo Line, cuya sintaxis es : Line (ColumnaInicial, FilaInicial)-(ColumnaFinal, FilaFinal), CdigoColor Visual Basic recuerda el ltimo punto referenciado y sus coordenadas estn JDMR , Academia Jos Lerma Pgina 90
(-40,-40)
pu
(40,-40)
ne
http://www.pdf4free.com
t.c
ScaleLeft = 0 ScaleTop = 0
ScaleHeight = -1 ScaleWidth = 1
Scale (-40,40)-(40,-40)
om
.a
Otra forma de establecer coordenadas personalizadas consiste en establecer las coordenadas de la esquina superior izquierda de la forma en la que se deben medir las escalas vertical y horizontal, utilizando las propiedades ScaleLeft, ScaleTop, ScaleWidth, y ScaleHeight.
Curso de Visual Basic Avanzado 5.0 guardadas en las variables CurrentX y CurrentY, de forma que, para dibujar a continuacin de este punto se utiliza : Line -(ColumnaFinal, FilaFinal), CdigoColor
Dim x As Single 'Configura la pantalla Cls Scale (-150, 150)-(150, -150) 'Dibujar los ejes Line (-150, 0)-(150, 0) Line (0, -150)-(0, 150) CurrentX = -10
CurrentY = FdeX(-10)
co
For x = -10 To 10 Line -(x, FdeX(x)) 'Dibujar la lnea desde la ltima posicin conocida Next x End Sub
pu
ce
nt
er
1@
ar
Sub Form_Paint()
ne
Pgina 91 http://www.pdf4free.com
t.c
om
.a
EJEMPLO
COLORES.
Siendo cada cantidad un entero entre 0 y 255 aunque tambin se podr incluir al proyecto el archivo Constant.Txt y utilizar los cdigos all definidos.
EJEMPLO
Line (-150, 0)-(150, 0), RGB(0,255,0) Line (0, -150)-(0, 150), RGB(0,255,0)
co
CONTROL DE PIXELES.
pu
ce
nt
er
Para dibujar los ejes del ejemplo anterior de color verde se modificarn las lneas siguientes:
1@
ar
ne
http://www.pdf4free.com
t.c
Pgina 92
om
.a
Curso de Visual Basic Avanzado 5.0 PSet (Columna, Fila)[, Cdigocolor Si se exceden los lmites de la pantalla, se obtendr un error de desbordamiento. Si se dibuja un punto fuera del formulario, Visual Basic guarda la posicin si la propiedad AutoRedraw est a True. Si luego el formulario se maximiza, se dibujar el punto.
Sub Form_Click() Dim i As Integer AutoRedraw = True For i = 0 To 5000 PSet (3742, i) 'Dibujar una lnea vertical Next i For i = 0 To 7485
co
2. Vamos a construir un pequeo TeleSketch, para lo que necesitaremos utilizar el suceso KeyDown para detectar las teclas del cursor. Cuando el usuario se desplaza con las teclas de cursor, se van iluminando los pixeles por los que pasa. Se necesitarn un formulario para el rea de dibujo con la propiedad AutoRedraw a True. Se necesita aadir el archivo Constant.Txt.
Dim AlturaPixel As Single, AnchuraPixel As Single Dim XPunto As Single, YPunto As Single
pu
ce
End Sub
nt
Next i
er
1@
ar
ne
Pgina 93 http://www.pdf4free.com
t.c
om
EJEMPLOS
.a
co
XPunto = XPunto - 1 End If Case Key_Right If XPunto >= AnchuraPixel Then XPunto = AnchuraPixel
pu
ce
nt
er
1@
ar
ne
Pgina 94 http://www.pdf4free.com
t.c
om
.a
AlturaPixel = ScaleHeight
YPunto = 0 Else YPunto = YPunto - 1 End If Case Key_Down If YPunto >= AlturaPixel Then YPunto = AlturaPixel Else YPunto = YPunto + 1 End If Case Key_End
sino = MsgBox("Ests seguro de que quieres terminar", 4) If sino = 6 Then End 'Clic en si
Beep
End Select
co
End Sub
3. Simulacin de la explosin de una estrella dibujando lneas aleatorias en colores aleatorios, desde el centro de la pantalla. Se utiliza una escala personalizada donde (0,0) es el centro de la pantalla. Puesto que el nmero de pixels en el tamao por omisin de formulario es de 491 de ancho por 268 de Pgina 95
pu
ce
Case Else
nt
er
1@
ar
ne
http://www.pdf4free.com
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 alto, (-245,134) es la esquina superior izquierda y (245,134) la esquina inferior derecha.
Sub Form_Click()
Dim Columna As Single, Fila As Single Randomize Cls Scale (-245, 134)-(245, -134) For i = 1 To 100 Columna = 245 * Rnd If Rnd < 0.5 Then Columna = -Columna Fila = 134 * Rnd If Rnd < 0.5 Then Fila = -Fila CodColor = 15 * Rnd
PSet (12,100)
co
PSet Step(50,10)
EJEMPLO Crear un formulario con una caja de imgenes. Este proyecto dibujar en el Pgina 96
pu
En ocasiones resulta til utilizar coordenadas relativas, en las que cada punto viene definido por cunto de lejos est del ltimo punto referenciado. P.e.
ce
nt
er
1@
ar
ne
http://www.pdf4free.com
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 formulario y en la caja, las curvas correspondientes a la funcin sen(x) y cos(x) para valores comprendidos entre 0 y 6.3. El sistema de coordenadas que se define permite mostrar valores de x entre 0 y 6.3 y, valores de y entre -1 y 1. Si se establece la propiedad AutoRedraw a False y, al ejecutar el propyecto, el formulario se minimza, al restauralo, las curvas no sern dibujadas.
'Parmetros para el formulario ScaleLeft = 0 ScaleTop = 1 ScaleWidth = 6.3 ScaleHeight = -2 DrawWidth = 2 'Grosor de la lnea FontSize = 18 'Tamao de los caracteres
'Coordenadas del punto central del formulario cx = ScaleWidth / 2 + ScaleLeft cy = ScaleHeight / 2 + ScaleTop Cls msg = "Curvas"
CurrentY = cy - TextHeight(msg) / 2
co
ForeColor = QBColor(2) 'Color verde Print msg ForeColor = QBColor(0) 'Color negro 'Parmetros para la imagen Picture1.Scale (0, 1)-(6.3, -1)
pu
CurrentX = cx - TextWidth(msg) / 2
ce
nt
er
1@
ar
ne
Pgina 97 http://www.pdf4free.com
t.c
om
Sub Curvas()
.a
Picture1.ForeColor = QBColor(0) 'Dibujar curvas For x = 0 To 6.3 Step 0.05 yc = Cos(x) ys = Sin(x) PSet (x, yc): Picture1.PSet (x, yc) 'Coseno PSet (x, ys): Picture1.PSet (x, ys) 'Seno Next x End Sub
co
Para cambiar el estilo de la lnea, la propiedad a utilizar es DrawStyle, que se ver JDMR , Academia Jos Lerma Pgina 98
Para cambiar el grosor de los puntos o de las lneas, se utiliza la propiedad DrawWidth, cuya forma de empleo es : Objeto.DrawWidth = Tamao%
pu
ce
nt
er
Sub Form_Click()
1@
ar
ne
http://www.pdf4free.com
t.c
om
.a
Picture1.Print msg
Para rellenar las cajas o crculos, se modificar las propiedades FillStyle y FillColor.
Line (0, i * ScaleHeight / 12)-(ScaleWidth - 15 * TextWidth("D"), i * ScaleHeight / 12) Print "DrawWidth = ", i Next i End Sub
Dim i As Integer
co
Scale (0, 0)-(639, 199) For i = 1 To 65 Step 5 Line (5 * i, i)-(639 - 5 * i, 199 - i), , B 'Dibujar una caja Next i End Sub
pu
Sub Form_Click()
ce
nt
er
1@
ar
ne
Pgina 99 http://www.pdf4free.com
t.c
Sub Form_Click()
om
.a
EJEMPLOS
Curso de Visual Basic Avanzado 5.0 3. Demostracin que no emplea lneas interiores.
Line (100, 100)-(ScaleWidth / 2, ScaleHeight / 2), , B Line (ScaleWidth / 2, ScaleHeight / 2)-(ScaleWidth - 100, ScaleHeight - 100), , B
co
Sub Form_Click() Dim i As Integer Scale (0, 0)-(639, 199) For i = 1 To 65 Step 5 CodigoColor = QBColor(i Mod 16) 'Dibujar siguiendo el orden de los colores
pu
ce
End Sub
nt
er
1@
ar
ne
4. Demostracin empleando lneas interiores para hacer que los lmites de la caja queden la mitad dentro y la otra mitad fuera.
http://www.pdf4free.com
t.c
om
Pgina 100
.a
DrawWidth = 10
6. Demostracin de FillStyle
Sub Form_Click() Dim i As Integer Scale (0, 0)-(25, 25) For i = 0 To 7 FillStyle = i Line (0, 3 * i)-(4, 3 * (i + 0.8)), , B CurrentX = 4.1 CurrentY = 3 * i + 0.5
End Sub
co
AutoRedraw = -1 Print: Print: Print Print Tab(12); "Artculo"; Tab(32); "Precio" 'Tab indica la posicin donde se desea que comience la impresin de una determinada expresin Print
pu
ce
nt
er
Next i
1@
ar
ne
Pgina 101 http://www.pdf4free.com
t.c
om
.a
Line (700, 350)-(3650, 1950), , B Line (700, 880)-(3650, 880) End Sub
CRCULOS.
Para describir un crculo se dar su centro y su radio y la funcin que dibuja los crculos es : Circle (Centro), Radio, CdigoColor
co
Dim i As Single WindowState = 2 Scale (-1, 1)-(1, -1) For i = 0.1 To 0.7 Step 0.5 CodColor = 15 * Rnd
pu
ce
EJEMPLO
nt
er
1@
ar
ne
Pgina 102 http://www.pdf4free.com
t.c
om
.a
DrawWidth = 2
Circle (Xrad, Yrad), Radio, CdigoColor, AnguloInicial, AnguloFinal Para obtener un sector se usan signos negativos.
ELIPSES.
co
Si el parmetro aspecto es menor que 1, el radio se toma en la direccin de las columnas y la elipse tendr su eje menor en direccin vertical.
Para dibujar elipses se modificar el mtodo Circle de la siguiente manera : Circle [Paso (Xcentro, Ycentro), radio,,,, aspecto
pu
ce
nt
er
1@
ar
ne
http://www.pdf4free.com
t.c
om
Un sector es una parte de un grfico y un arco es el lmite exterior de un sector. Para dibujar un sector o un arco hay que decirle a Visual Basic dnde tiene que empezar y dnde tiene que terminar, para lo que se tendr que emplear los radianes como unidad de medida. Para transformar grados en radianes se multiplica por 180/ . Para dibujar un arco de circunferencia comenzando en el punto dado en radianes en AnguloInicial y terminando en AnguloFinal, se utilizar :
.a
CurrentX = -2 CurrentY = 2 Print "Esta es la relacin de aspecto "; Format$(I + 0.1, "#.#"); Print ". Haga clic para ver el siguiente tamao de elipse" I = I + 0.1 End Sub
Sub Form_Load() Pi = 4 * Atn(1) C1 = RGB(0, 0, 255) C2 = RGB(0, 255, 0) C3 = RGB(255, 0, 0) AutoRedraw = -1 ScaleMode = 3
'Azul
pu
ce
nt
'Verde 'Rojo
Pixels
er
Definir el valor de Pi
co
Circle (240, 70), 30, C3, -Pi / 2, -2 * Pi 'Sector Circle Step(5, -5), 30, C1, -2 * Pi, -Pi / 2 End Sub 'Sector
1@
ar
'Elipse
ne
Pgina 104 http://www.pdf4free.com
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 3.- Rellenaremos el crculo, la elipse y el crculo con un sector desplazado del ejemplo anterior.
Sub Form_Load()
Pixels
Circle (60, 70), 30, C1 'Crculo FillColor = C2 Circle (150, 70), 30, C2, , , 5 / 11 FillColor = C3: FillStyle = 4
End Sub
co
pu
ce
nt
er
1@
ar
'Elipse
'Sector
ne
Pgina 105 http://www.pdf4free.com
t.c
om
.a
Pi = 4 * Atn(1)
Definir el valor de Pi
Color pelota
Dibujar la pelota
5.- Simulacin de una pelota que rebota al chocar contra una barrera.
ScaleMode = 3 D=5
ce
Sub Form_Click()
pu
co
'Barrera sobre la que rebota la pelota Line (CX, 10)-(CX + 20, ScaleHeight - 10), QBColor(2), BF
nt
'Pixels
er
1@
ar
ne
Pgina 106 http://www.pdf4free.com
t.c
om
.a
FillStyle = 0
Color slido
de un punto If Point(i + 6, CY) <> BackColor Then direccion = -1 For retar = 0 To 300 Next retar 'Control velocidad Circle (i, CY), D 'Borrar pelota i = i + direccion Loop End Sub
pu
ce
co
nt
er
TEMA 8
1@
ar
ne
http://www.pdf4free.com
t.c
om
.a
8. 1.- UTILIZACIN DEL PORTAPAPELES. El portapapeles de Windows permite intercambiar informacin, tanto textos como grficos, entre las aplicaciones Windows. Visual Basic dispone de un objeto global, llamado Clipboard, mediante el cual, se podr acceder al portapapeles de Windows. Para vaciar el contenido del portapapeles, se utilizar el mtodo Clear.
destino = Clipboard.GetText()
Clipboard.GetData(Formato%) Clipboard.SetData(Formato%)
co
EJEMPLOS: 1. Este ejemplo sirve para ver copiar texto o imgenes al portapapeles y, luego recuperla. Necesitaremos un formulario con los siguientes controles:
pu
ce
Clipboard.GetFormat(Formato%)
nt
Si se desea copiar una imagen grfica al portapapeles, se utilizar el mtodo SetData facilitando como parmetro el grfico a copiar. Si se desea recuperar una imagen, el mtodo utilizado ser GetData. Antes de recuperar la informacin, se debe conocer el tipo de imagen almacenada y, lo mismo para transferir imgenes al portapapeles. Si se necesita conocer el tipo de datos almacenado en el portapapeles, se utilizar el mtodo GetFormat que devolver True o False segn el portapapeles tenga o no el tipo de informacin que se indica.
er
1@
ar
ne
Pgina 108 http://www.pdf4free.com
Clipboard.SetText origen
t.c
Las rdenes que permiten copiar texto al portapapeles y; pegar texto del portapapeles son, respectivamente:
om
Clipboard.Clear
.a
Curso de Visual Basic Avanzado 5.0 OBJETO Label1 Label2 Text1 Caption Caption Text Multiline ScrollBars Picture1 Command1 Name Caption Name Command2 Caption Name Command3 Caption Name Command4 PROPIEDAD Texto lblImagen VALOR
Copiar Texto
ar
1@
Caption
er
nt
Name
pu
Private Sub cmdCopiarTexto_Click () If Text1.Text = "" Then MsgBox "No hay texto que copiar"
co
End Sub
ce
ne
cmdCopiarTexto Obtener Texto cmdObtenerTexto Copiar Imagen cmdCopiarImagen Obtener Imagen cmdObtenerImagen
http://www.pdf4free.com
t.c
om
Pgina 109
.a
(Nada)
nt
er
If Clipboard.GetFormat(1) Then
ce
pu
Picture1.Picture = Clipboard.GetData(8) Else MsgBox "La imagen del portapapeles no es reconoible" End If
co
End Sub
1@
ar
'Texto
'Archivo BMP
ne
Pgina 110 http://www.pdf4free.com
t.c
om
.a
Else
2. Este nuevo ejemplo permite seguir experimentando con el portapapeles. Necesitaremos un formulario con los siguientes controles:
Label1
Caption Name
(Nada) lblTexto
Command1
Caption Name
Prueba
Command3
Caption Name
1@
Name
ar
Command2
Caption
Command4
Caption
er
nt
Name
Label2
ce
pu
Image1
co
ne
cmdPrueba Limpiar cmdLimpiar Actualizar cmdActualizar Cerrar cmdCerrar Cualquier Texto lblTextoPrueba False imgPrueba Cualquier grfico False
http://www.pdf4free.com
t.c
Pgina 111
Picture1
Name
picGrafico
om
.a
OBJETO
PROPIEDAD
VALOR
If Clipboard.GetFormat(vbCFBitmap) Or Clipboard.GetFormat(vbCFMetafile)Then
Clipboard.Clear
cmdActualizar_Click
Private Sub cmdPrueba_Click() Copiar en el portapapeles un texto y una imagen de prueba Clipboard.SetText lblTextoPrueba Clipboard.SetData imgPrueba cmdActualizar_Click End Sub
co
pu
ce
End Sub
nt
er
1@
ar
ne
Pgina 112 http://www.pdf4free.com
t.c
om
.a
Else
Se pueden tener tres clases de conversaciones DDE. Enlace Automtico (vbLinkAutomatic) significa que la fuente enva la informacin al destino, siempre que cambie el dato en la aplicacin fuente. Este tipo de enlace transcurre en tiempo real. Enlace Manual (vbLinkManual) significa que la fuente enva informacin cuando el destino la solicita, cuando hay demanda. Enlace de Notificacin (vbLinkNotify) es aquel en el que la fuente le dice al destino que el dato ha cambiado, pero no se enva hasta que el destino lo solicite. JDMR , Academia Jos Lerma Pgina 113
co
pu
Cada aplicacin que puede actuar de fuente DDE tiene un nombre nico. Normalmente es el nombre del fichero ejecutable sin la extensin. Antes de poder establecer una conversacin DDE, es necesario que las dos aplicaciones se estn ejecutando.
ce
nt
er
DDE es un mecanismo soportado por Windows que permite a dos aplicaciones mantener una conversacin durante la cual, la informacin es intercambiada automticamente. DDE automatiza el cortar y pegar informacin entre aplicaciones Windows. La forma en la que trabaja DDE consiste en que una aplicacin Windows llamada destino (cliente en versiones anteriores), que es la aplicacin que inicia la conversacin DDE, le dice a otra aplicacin Windows, llamada fuente (servidor en versiones anteriores), que quiere informacin, es decir, que quiere establecer una conversacin DDE o un enlace DDE. Una aplicacin puede mantener varias conversaciones DDE al mismo tiempo. En Visual Basic los formularios pueden ser fuentes DDE o destinos DDE cambiando su propiedad LinkMode a vbLinkNone o vbLinkSource. Las cajas de texto, las de figuras (picture box) y las etiquetas, pueden ser destinos DDE. Normalmente, la informacin fluye de la fuente al destino. Es necesario conocer el nombre de la aplicacin origen a la que se va a llamar. A continuacin, se necesita conocer el tema de la conversacin DDE, que suele ser una unidad de informacin que reconoce la fuente. Con la aplicacin y el tema, se identifica una conversacin. Y, por ltimo, queda establecer el elemento de conversacin DDE o pieza de informacin que se va a pasar en la conversacin, significativa para ambas aplicaciones.
1@
ar
ne
http://www.pdf4free.com
t.c
om
.a
Cada vez que la fuente DDE actualiza la informacin de un control de Visual Basic que acta como destino DDE, se genera el evento Change.
Modo de establecer la conversacin DDE. Puede ser vbLinkNone, vbLinkAutomatic, vbLinkManual y vbLinkNotify.
co
Indica cunto tiempo tiene que tratar Visual Basic de establecer el enlace o lo que es lo mismo, el tiempo que debe esperar respuesta a una conversacin. El valor por omisin es 50 dcimas de segundos (5 seg.). Si no se puede establecer la conversacin, se produce un error.
pu
ce
nt
DDE
er
DURANTE
1@
El valor de esta propiedad identifica el dato que realmente se va a pasar desde la fuente al destino, un registro, una hoja de clculo, una celda, un marcador en Word, etc.
EL
ar
DISEO
ne
(UTILIZACIN DEL Pgina 114 http://www.pdf4free.com
t.c
El valor de esta propiedad tiene siempre el formato: Aplicacin|Tema, donde Aplicacin es el nombre de la aplicacin fuente y Tema es la informacin empleada en la conversacin. Normalmente, es el nombre de un archivo, incluyendo su ruta.
om
.a
co
Los mtodos de enlace que se pueden utilizar con los controles Visual Basic que estn actuando como destinos en un enlace DDE, son:
pu
Los sucesos de enlace que se pueden generar son: LinkOpen (abrir enlace) se genera cuando se crea un enlace DDE. LinkClose (cerrar enlace) se genera cuando se termina un enlace DDE. LinkError (error en el enlace) se genera cuando sucede un error en una conversacin DDE y no se est ejecutando cdigo Visual Basic. LinkNotify (notificacin de enlace) se genera cuando la propiedad LinkMode est establecida a 3 - Notify y se actualiza la informacin en la fuente. LinkExecute (ejecutar) ocurre en la aplicacin fuente cuando el destino de la conversacin enva un comando para se ejecutado por la fuente DDE.
ce
nt
er
1@
ar
Si ahora se accede a la ventana de Excel y, se introduce un valor en la celda A1, el valor aparecer en la caja de texto de Visual Basic.
ne
http://www.pdf4free.com
t.c
Pgina 115
om
.a
Los enlaces creados en tiempo de diseo, son enlaces automticos, ya que son reestablecidos al ejecutar la aplicacin. Para explicar este apartado, utilizaremos Excel. Crearemos un formulario con una etiqueta y una caja de texto. A continuacin, se arrancar Excel y, estableceremos un enlace automtico con Excel como fuente DDE, siendo el contenido de la celda A1 el tema de conversacin DDE. Los pasos a seguir son:
LinkPoke (introducir) Es la nica forma que tiene un destino DDE de enviar datos a la fuente. Se puede usar para transferir el contenido de un control destino DDE a la fuente. La sintaxis es: NombreControl.LinkPoke
LinkRequest (peticin)
NombreControl.LinkRequest
Se emplea cuando se tiene un formulario como fuente DDE y se quiere enviar el contenido de una caja de figuras a la aplicacin destino. La sintaxis es: NombreCajaFiguras.LinkSend
NOTA: Los ejemplos funcionan con Visual Basic 5.0 y con Office 97. Supongamos que queremos establecer un enlace automtico DDE con una hoja de clculo Excel 97 (debe estar ejecutndose). Se debe permitir al usuario que proporcione la ruta completa de la hoja de clculo, as como la fila y la columna a la que se quiere acceder. El formulario estar compuesto por 3 etiquetas, 3 cajas de texto y un botn de comando. En la primera caja de texto se escribir la fila a explorar, en la 2, la columna y, en la 3 aparecer el contenido de la celda.
co
pu
ce
nt
er
1@
LinkSend (enviar)
ar
ne
Se emplea para pedir a la fuente DDE que enve la informacin al control, que la actualice. Solo es necesario si se ha puesto la propiedad LinkMode a 2. Su sintaxis es:
http://www.pdf4free.com
t.c
om
Pgina 116
.a
Elemento$ = "F" + LTrim$(RTrim$(Text1.Text)) Elemento$ = Elemento$ + "C" + LTrim$(RTrim$(Text2.Text)) Text3.LinkItem = Elemento$ Text3.LinkMode = vbLinkAutomatic Salir: Exit Sub GestorDeErrores: MsgBox Err.Description Resume Salir End Sub
EJEMPLOS:
co
pu
1. Este ejemplo ensea el funcionamiento de los tres tipos de enlace. La aplicacin acta como destino y llama a la fuente cuando es ejecutada. El usuario puede escoger el tipo de conversacin que quiere establecer. Tenemos que crear un primer proyecto Fuente.vbp y Fuente.exe, que sea la fuente DDE, formado por un formulario Fuente.frm con los siguientes controles:
CONTROL
ce
nt
er
1@
ar
Form
ne
VALOR Pgina 117 http://www.pdf4free.com
t.c
om
.a
Text3.LinkTopic = Tema$
Curso de Visual Basic Avanzado 5.0 BorderStyle LinkMode LinkTopic Text Box Text Name MultiLine ScrollBars 3 - Fixed Dialog 1 - Source frmFuente
App.Title = "... instancia duplicada." FrmPrincipal.Caption = "... instancia duplicada." AppActivate Ttulo ventana activa
er
End Sub
co
pu
End If
CONTROL Form
ce
End
nt
1@
ar
ne
VALOR Pgina 118 http://www.pdf4free.com
t.c
om
.a
(Ninguno)
Curso de Visual Basic Avanzado 5.0 Name BorderStyle LinkTopic Text Box Text Name MultiLine ScrollBars Frame Option Button Caption Caption Name Option Button Caption Name Option Button frmDestino 3 - Fixed Dialog frmDestino
Tipo de Enlace
Enlace Automtico
1@
Caption Name
er
Command Button
nt
ce
pu
Command Button
co
ar
optAutomatico Enlace Manual optManual Enlace Notificacin optNotificacion Poke cmdPoke Request cmdRequest
ne
http://www.pdf4free.com
t.c
Pgina 119
om
.a
(Ninguno)
txtDestino.LinkMode = vbLinkNone
End Sub
Beep
co
End Sub
pu
cmdRequest.Enabled = True
ce
nt
er
txtDestino.LinkMode = vbLinkNotify
1@
ar
ne
Pgina 120 http://www.pdf4free.com
t.c
om
.a
cmdPoke.Visible = True
CONTROL Text1
pu
ce
2. Este ejemplo permite desplazarnos por el contenido de una hoja de Excel, visualizando el contenido de sus celdas.
nt
er
1@
ar
ne
VALOR Pgina 121 http://www.pdf4free.com
co
Text2
Text
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 Name ReadOnly 4 controles Image Name Index Picture txtContenido True imgMovimiento
Command1
[= cmdActualizar True
ce
co
Private Sub txtContenido_LinkClose() MsgBox "Se va a cerrar el enlace DDE" End Sub
pu
nt
er
1@
ar
ne
Pgina 122 http://www.pdf4free.com
t.c
om
.a
0, 1, 2, 3
End Sub
txtContenido.LinkMode = vbLinkNotify
Err.Clear
Shell "Excel"
End If
pu
If Err Then
ce
co
End If txtCelda = Fila & "," & Columna On Error GoTo 0 End Sub
nt
er
Si la aplicacin no ha respondido
Cargar la aplicacin
Si ha habido un error
1@
txtContenido.LinkItem = "F1C1"
ar
ne
http://www.pdf4free.com
t.c
Pgina 123
om
.a
Private Sub imgMovimiento_Click(Index As Integer) Select Case Index Case Derecha Columna = Columna + 1 Case Izquierda Columna = Columna - 1 Case Arriba Fila = Fila - 1 Case Abajo Fila = Fila + 1 End Select
nt
er
1@
co
3. Aplicacin que permite calcular el inters y el capital principal correspondientes a un pago mensual de un prstamo. El programa puede ser utilizado por si mismo o desde otra aplicain a travs de DDE. (Supondremos que se crea un ejecutable CalculaP.Exe)
CONTROL
pu
ce
End Sub
PROPIEDAD Caption
ar
ne
Actualizar el enlace
Formulario
Clculo de Prstamos
http://www.pdf4free.com
t.c
VALOR Pgina 124
om
.a
Curso de Visual Basic Avanzado 5.0 LinkMode LinkTopic Name Text1 Text Name Text2 Text Name Text3 Text Name Text4 Text ReadOnly TabStop 1-Source frmCalculoPrestamos frmCalculoPrestamos
er
nt
ce
pu
co
ListBox1
Command1
1@
ar
False 0-None txtPlazo (Nada) True False 0-None txtPrincipal lstListaDatos Calcular cmdCalcular Pgina 125
ne
http://www.pdf4free.com
t.c
om
.a
(Nada)
lstListaDatos.AddItem "Plazo" & Chr(9) & "Principal" & Chr(9) & "Inters" & Chr(9) For I = 1 To nPlazos
lstListaDatos.AddItem I & Chr(9) & Abs(CLng(PPmt(txtTipo / 100 / 12, I, nPlazos _ _ txtCapital))) & Chr(9) & Abs(CLng(IPmt(txtTipo / 100 / 12, I, nPlazos txtCapital))) Next I End sub
nt
er
pu
co
End If
ce
txtPlazo = lstListaDatos.ListIndex Mostra los datos correspondientes a la fila txtPrincipal = Abs(CLng(PPmt(txtTipo / 100 / 12, lstListaDatos.ListIndex, _ txtAos * 12, txtCapital))) txtInteres = Abs(CLng(IPmt(txtTipo / 100 / 12, lstListaDatos.ListIndex, _ txtAos * 12, txtCapital)))
1@
ar
ne
http://www.pdf4free.com
t.c
om
Pgina 126
.a
Private Sub Form_LinkExecute(CmdStr As String, Cancel As Integer) La aplicacin destino envia un comando que puede ser
Calcula, que realizar los clculos If Left(UCase(CmdStr), 6) = "ACTIVA" Then Dim I As Integer I = Mid(CmdStr, 8)
If I > 0 And I <= txtAos * 12 Then lstListaDatos.ListIndex = I Cancel = False End If End If
El plazo existe
co
4. Aplicacin que permite comparar distintas opciones de prstamo, mostrando la cuota, los intereses que se pagaran y el total que se pagara al finalizar el prstamo. Se necesita un formulario con 6 etiquetas y 6 cajas de texto (Capital, Tipo, Aos, Cuota mensual, Intereses totales, Total pagado), una caja de texto txtDatoDDE no visible y, un botn Calcular. Para realizar los clculos, llamaremos al programa del ejemplo anterior CalculaP.
pu
ce
nt
er
cmdCalcular_Click
1@
ar
ne
Activarlo
http://www.pdf4free.com
t.c
Pgina 127
om
.a
If Err Then Shell "CALCULAP" Err.Clear txtDatoDDE. LinkMode = vbLinkAutomatic If Err Then
MsgBox "No es posible establecer enlace" On Error GoTo 0 Exit Sub End If End If On Error GoTo 0
nt
txtDatoDDE.LinkItem = "txtTipo"
co
pu
txtDatoDDE.LinkExecute = "Calcula"
ce
er
1@
ar
ne
Pgina 128 http://www.pdf4free.com
t.c
om
.a
txtDatoDDE.LinkMode = vbLinkAutomatic
Poner a 0 los dos controles de comparacin de prstamos txtInteresesTotales = 0 txtTotalPagado = 0 Dim I as Integer For I = 1 To txtAos * 12 plazo I
ar
txtDatoDDE.LinkItem = "txtPrincipal" Tomar el principal txtTotalPagado = txtTotalPagado + CLng(txtDatoDDE) txtDatoDDE.LinkItem = "txtInteres" y sumarlo
End Sub
co
5. Aplicacin que permite crear una conversacin DDE entre Visual Basic como destino y Word como fuente. Para ello, debemos crear el documento Word C:\TRABAJOS\PRUEBA.DOC para un enlace dinmico. El documento debe tener un marcador insertado. (Es el elemento que se necesita en la conversacin)
pu
ce
nt
er
1@
ne
Pedir a CalculaP que active el
http://www.pdf4free.com
t.c
Pgina 129
om
.a
txtDatoDDE.LinkItem = "txtInteres"
Private Sub cmdCrearEnlace_Click() Text1.LinkMode = vbLinkNone Liberar enlace Text.LinkTopic = "Winword|Prueba.doc" Text1.LinkItem = "DDE" Nombre del marcador
TERMINOLOGA OLE
co
pu
OBJETO OLE. Es cualquier dato con el que un control OLE pueda trabajar. Unidad de datos suministrada por una aplicacin Windows que soporta OLE. Puede ser texto, hojas de clculo, celdas de una hoja de clculo, grficos,... Un control OLE puede contener solo un objeto cada vez. CLASE OLE Es la aplicacin que produce el objeto OLE. Toda aplicacin que soporta OLE, tiene un nico nombre de clase OLE. Pgina 130
ce
nt
OLE es una tcnica de comunicacin entre aplicaciones Windows que hace posible la creacin de documentos (destino) compuestos con datos procedentes de una variedad de fuentes. Por tanto, permite la cooperacin entre aplicaciones Windows, p.e. usar el corrector de Word desde Visual Basic. La tecnologa OLE presenta en forma de objetos varias prestaciones clave del sistema operativo, como la gestin de ficheros, asignacin de memoria y la transferencia de datos. Para acceder a estas prestaciones, el usuario debe conocer totalmente las interfaces (conjunto de funciones relacionadas semnticamente con un objeto, accesibles pblicamente para el usuario) que soporta cada objeto.
er
1@
ar
ne
http://www.pdf4free.com
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 APLICACIN CLIENTE O APLICACIN CONTENEDORA. Contiene el objeto creado por otra aplicacin (el objeto OLE). SERVIDOR OLE. Es la aplicacin original que ha permitido crear el objeto OLE. A veces se llama Aplicacin Fuente. OBJETO VINCULADO. Los datos de un objeto pueden ser vinculados a una aplicacin, es decir, pueden ser aadidos de forma que cuando se modifique el objeto original, se actualizar en todas las aplicaciones en las que haya sido vinculado ya que slo existe la copia original de los datos. A este tipo de objeto tambin se le suele llamar Enlazado. Un enlace ocupa menos espacio, pero tiene la desventaja de la potencial prdida del enlace. Por tanto, solo se mantiene una referencia al objeto. OBJETO INCRUSTADO. Los datos de un objeto pueden incrustarse en una aplicacin, de forma que si cambian en la fuente, el destino no sufrir ningn cambio. En este caso, cada aplicacin tiene una copia de los datos, independiente del original.
Algunas propiedades del control OLE son: DisplayType (tipo de presentacin) permite mostrar la infomacin como un icono. SizeMode (modo de tamao) permite cambiar la forma en que aparecern los datos durante la ejecucin. Si su valor es 0 (vbOLESizeClip), se recortarn los datos. Si se quieren estirar los datos para que ocupen el tamao actual del control OLE, el valor ser 1 (vbOLESizeStretch). Si se quiere que el control modifique automticamente de tamao, el valor ser 2 (vbOLESizeAutoSize). El valor 3 (vbOLESizeZoom) permite que el objeto cambie de tamao para rellenar el control contenedor OLE tanto como fuera posible manteniendo las proporciones. Class, especifica la aplicacin que contiene los datos, para un objeto incrustado. OleType devuelve el estado del objeto (vinculado o incrustado). SourceDoc (documento fuente) proporciona el nombre del objeto enlazado o el archivo a emplear para los objetos incrustados. SourceItem (elemento fuente) se emplea en los objetos enlazados para especificar qu parte del documento enlazado puede trabajar con la aplicacin en Visual Basic. Action (accin) especifica qu se quiere hacer exactamente con el objeto OLE. El control OLE opera de manera similar al control CommonDialog, en tanto a que la asignacin de ciertos valores a esta propiedad produce que se ejecuten las operaciones asociadas. Se recomienda utilizar los mtodos equivalentes, p.e. CreateLink, CreateEmbed, etc. JDMR , Academia Jos Lerma
co
pu
ce
nt
er
1@
ar
ne
http://www.pdf4free.com
t.c
om
Pgina 131
.a
Curso de Visual Basic Avanzado 5.0 EJEMPLO: Crear un objeto durante el diseo
co
Cuando se cierra una aplicacin que incluye un objeto OLE, los datos se pierden. Para solucionar este problema, se podr utilizar la propiedad Action tanto para guardar los datos como para recuperarlos. Para guardar los datos se seguirn los pasos: JDMR , Academia Jos Lerma Pgina 132
pu
Se necesita escribir el cdigo utilizando las propiedades del control OLE. Si se quiere crear un objeto enlazado, se deber establecer la propiedad SourceDoc con el nombre del archivo y la propiedad Action con CreateLink. Si se quiere crear un objeto incrustado, se deber establecer la propiedad Class para determinar el objeto a emplear, la propiedad SourceDoc con el nombre del archivo y la propiedad Action con CreateEmbed.
ce
nt
er
1@
ar
Para que al hacer doble clic sobre un objeto contenedor OLE, aparezca el men de la aplicacin Visual Basic, es necesario definirlo en tiempo de diseo y establecer el valor de la propiedad NegotiatePosition del men, a la opcin adecuada.
ne
http://www.pdf4free.com
t.c
1.- Crearemos un nuevo proyecto al que se aadir un control OLE al formulario. En la caja de dilogo Insertar Objeto, seleccionaremos como tipo de datos a incluir, "Hoja de clculo de Microsoft Excel". A continuacin, si se ejecutara la aplicacin y se hiciera doble clic sobre el objeto OLE, Excel se arrancara para poder realizar las modificaciones pertinentes.
om
.a
Nota.- Cuando se aade a un formulario un control OLE, aparecer el cuadro de dilogo Insertar Objeto. Este cuadro proporciona los nombres de todas las aplicaciones Windows a las que se puede conectar. Si se desea establecer las propiedades durante la ejecucin, se deber pulsar el botn de Cancel.
Curso de Visual Basic Avanzado 5.0 1. Abrir un fichero en modo binario. 1. Asignar la propiedad FileNumber del control OLE el nmero de fichero utilizado en el paso 1. 1. Utilizar el mtodo SaveToFile
Para recuperar los datos de un fichero, los pasos a seguir son: 1. Abrir un fichero en modo binario.
co
Cuando se activa un objeto, automticamente se ejecuta una accin sobre dicho objeto utilizando el valor por defecto de la propiedad Verb. Para especificar el primer verbo de l conjunto de verbos de un objeto, se asignar a la propiedad Verb el valor 1, para el segundo el valor 2, ... Para utilizar un verbo se utilizar el mtodo DoVerb. JDMR , Academia Jos Lerma Pgina 133
Cuando la propiedad AutoVerbMenu tiene un valor True, permite, durante la ejecucin, hacer clic con el botn derecho sobre el control OLE y, mostrar un men con las acciones posibles a ejecutar sobre dicho objeto. Estas acciones reciben el nombre de Verbos. Cada objeto soporta su propia conjunto de verbos y, se utilizarn las propiedades ObjectVerbs y ObjectVerbsCount para acceder al conjunto de verbos soportados por un objeto. Este conjunto depende del estado del objeto, por lo que antes de mostrar la lista de verbos, habr que actualizarla, utilizando el mtodo FetchVerbs del objeto OLE. Cuando la propiedad AutoVerbMenu tiene el valor True, la lista es actualizada automticamente antes de visualizar el men contextual.
pu
ce
nt
er
1@
VERBOS DE UN OBJETO
ar
ne
http://www.pdf4free.com
t.c
1. Asignar la propiedad FileNumber del control OLE el nmero de fichero utilizado en el paso 1.
om
.a
1. Cerrar el fichero.
AUTOMATIZACIN DE OLE
co
Los pasos que se deben seguir para crear un objeto OLE automatizado y asignarlo a una variable objeto son: 1. Definir una variable para referenciar al objeto, p.e. Dim Editor As Object 1. Crear el objeto automatizado y asignarlo a la variable anterior, utilizando la sentencia Set. P.e. Set Editor = CreateObject("Word.Basic") Al ejecutarse esta sentencia, se arranca la aplicacin que proporciona el objeto (en este caso, Word) y se crea un objeto OLE automatizado. A Pgina 134
pu
ce
nt
er
donde VariableObjeto es una variable de tipo Object utilizada para referenciar al objeto creado y, Aplicacin es la aplicacin que produce el objeto y, Objeto es el objeto producido por la aplicacin (Aplicacin.Objeto = Clase).
1@
Para acceder a un objeto OLE de otra aplicacin sin tener que crear un objeto enlazado o incluido, hay que utilizar la funcin CreateObject, con la sintaxis:
ar
ne
La Automatizacin es la tecnologa clave de OLE 2.0. Esta tcnica permite que cualquier objeto exponga un conjunto de rdenes y de funciones que puedan ser utilizadas en el cdigo de otra aplicacin. sto permite manipular objetos de otras aplicaciones sin tener que crear un objeto vinculado o incrustado. Cuando una aplicacin soporta la automatizacin, los objetos expuestos por ella pueden ser accedidos por Visual Basic utilizando propiedades y mtodos relacionados con esos objetos. Para saber qu mtodos y propiedades soporta un objeto, hay que recurrir a la documentacin de la aplicacin que lo cre o, a travs del examinador de objetos de Visual Basic (Ver/Examinador de Objetos). Para utilizar la automatizacin no sirven los contenedores OLE.
http://www.pdf4free.com
t.c
om
.a
Curso de Visual Basic Avanzado 5.0 diferencia de cuando se enlaza o incluye un objeto, en este caso no se visualiza una imagen de los datos asociados, ni los datos son mantenidos por Visual Basic. Este objeto es parte de la aplicacin que lo ha creado y puede ser referenciado por Visual Basic utilizando la variable objeto.
1. Activar el contenedor OLE, por ejemplo con DoVerb. 1. Asignar el valor de la propiedad Object a la variable de automatizacin con Set.
co
pu
ce
nt
er
1@
ar
NOTA: Cuando el objeto de automatizacin deja de ser til, hay que cerrarlo con Set Objeto = Nothing
ne
http://www.pdf4free.com
t.c
Muchas aplicaciones que soportan la automatizacin permiten guardar objetos en ficheros. Posteriormente, para activar estos objetos, hay que utilizar la funcin GetObject, cuya sintaxis es:
om
Pgina 135
.a