interface design vb6 - spanish.pdf

35
Diseño de interfaces Comenzar a utilizar VB6 Autor: Andre Saffin Indice. Instalación, conceptos y primeros pasos (en proyectos Xestión) Variables Funciones de cadena Otras funciones Objetos: Formulario Formulario MDI MsgBox TextBox ListView Agregar elementos en un Menú (en proyecto Editor) Ayuda Crear un informe simple utilizando DataReport(xestionDataReport) Los Módulos Conexión de objetos ADODB Objeto Connection Objeto Command Objeto Recordset Instalación: Instalación de Daemon Tools para virtualizar imágenes ISO. Instalación de Visual Studio 6 Profesional (*no seleccionar FoxPro) Conceptos: IPO: interacción persona ordenador IDE: Entorno integrado de desarrollo para: Editar, Compilar Depurar Hacer paquetes de instalación. Se comienza realizando un proyecto que puede ser una aplicación con formularios, procesos, informes, módulos...

Upload: andresaffin

Post on 08-Aug-2015

260 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Interface Design VB6 - Spanish.pdf

Diseño de interfaces

Comenzar a utilizar VB6Autor: Andre Saffin

Indice.

• Instalación, conceptos y primeros pasos (en proyectos Xestión)

• Variables

• Funciones de cadena

• Otras funciones

• Objetos:

◦ Formulario

◦ Formulario MDI

◦ MsgBox

◦ TextBox

◦ ListView

• Agregar elementos en un Menú (en proyecto Editor)

• Ayuda

• Crear un informe simple utilizando DataReport(xestionDataReport)

• Los Módulos

• Conexión de objetos ADODB

◦ Objeto Connection

◦ Objeto Command

◦ Objeto Recordset

Instalación:Instalación de Daemon Tools para virtualizar imágenes ISO.

Instalación de Visual Studio 6 Profesional (*no seleccionar FoxPro)

Conceptos:IPO: interacción persona ordenador

IDE: Entorno integrado de desarrollo para:

• Editar,

• Compilar

• Depurar

• Hacer paquetes de instalación.

Se comienza realizando un proyecto que puede ser una aplicación con formularios, procesos, informes, módulos...

Page 2: Interface Design VB6 - Spanish.pdf

Dentro de un proyecto VB6Formulario [FORM] objeto dentro de Visual Basic 6 con :

Propiedades: características.

Métodos: funciones que hacen tareas

Eventos: recoge información de los métodos

Módulos [MOD]: solo tienen código, funciones, aplicaciones y procedimientos.

Informes.

Clases

Controles:

· Definidos por el usuario: botones, mensajes emergentes, menús...

· Por defecto.

Ventana del Visual Basic:Dispone de un MDI: multiple document interface como la siguiente:

Varios documentos abiertos en los cuales si se selecciona se muestra el menú adecuado.

El objeto principal es el proyecto entero , dentro de el hay otros objetos.

En la opción ver, puedo ver el código asociado al objeto o el objeto final en pantalla.

Los módulos solo tienen disponible ver el código. Es reutilizable y se pueden llamar desde cualquier parte del proyecto y su contenido (variables y métodos )es visible desde todos los elementos.

Empezar a usar VB6Tras guardar en el momento del inicio tenemos un archivo .vbp, en el se van a guardar varios tipos de datos como las partes de las que consta nuestro proyecto, que elemento se ejecuta al inicio y otros datos que harán que funcione el proyecto de forma correcta. El contenido de uno de nuestros proyectos es como se muestra en la imagen.

Page 3: Interface Design VB6 - Spanish.pdf

Al iniciar Microsoft Visual Basic 6.0 escogemos crear un archivo “ejecutable” (.exe)

Definición de variables y funciones en VB6:Dim NombreVariable as tipo

Cosnt nombreConstante as tipo = valor

Public nombreVarPublica as tipo

Private Sub nombreProcedimiento()

Código

End Sub

Concepto de ámbito en variables:

Public en FORM abarca todo el formulario→

Private en FORM ámbito local en formulario, sólo para esa función o Sub →

si se cierra formulario se pierde toda la información. ¡¡¡¡GUARDAR FRECUENTEMENTE!!!!!

Tipos simples: ·Integer ·Long ·String ·Boolean

Si no se indica el ámbito es privado por defecto.

Dim hace referencia a la dimensión.

Funciones, métodos y procedimientos. Sintaxis:

Pocedimientos → sub (parámetros as tipo)

Funciones → function (parámetros as tipo) as tipo_retorno

Diferencia: los procedimientos o subrutinas hace una operación sin retorno de información y la función devuelve un dato tras su ejecución.

El ámbito de las funciones o sub es equiparable en significado al de las variables.

Sintaxis:

function nombreFuncion [(parametros as tipo )] [as tipo_retorno]

Para hacer el retorno de la función hacemos:

nombreFuncion = valor_resultado

sub nombreProcedimiento [(parametros as tipo)]

Si no se indica el tipo de retorno de una función se asume por defecto que es Boolean

Page 4: Interface Design VB6 - Spanish.pdf

Los nombres de elementos recomendados según las guías de estilo se escriben:

frmNombre para formularios

txtNombre para caja de texto

btnNombre para botones

cmdNombre para command button

lstNombre para lista

lswNombre para list view

modNombre para módulos

Se recomienda introducir alguna mayúscula en los nombres de las variables, para luego a la hora de escribirlas en el código, el editor al cambio de línea automaticamente hará el UPPERCASE de las letras adecuadas si está escrita correctamente. De no estarlo las letras no se “elevarán” lo que nos dará una idea de que algún error de sintaxis ha ocurrido y debemos corregirlo. Lo mismo sucede con las palabras reservadas del lenguaje de VB.

Funciones de Cadena:

Ltrim, Rtrim, Trim Devuelve un tipo Variant (String) que contiene una copia de una cadena determinada sin espacios a la izquierda (LTrim), sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim).

LTrim(cadena)

RTrim(cadena)

Trim(cadena)

Left Devuelve un tipo Variant (String) que contiene un número especificado de caracteres del lado izquierdo de una cadena.

Left(string, length)

Right Devuelve un tipo Variant (String) que contiene un número especificado de caracteres del lado derecho de una cadena.

Right(string, lenght)

Mid Devuelve un tipo Variant (String) que contiene un número especificado de caracteres de una cadena.

Mid(string, start[, length])

Devuelven un tipo Variant (String) que contiene el resultado de dicha operación.

Split Devuelve una matriz de una dimensión, basada en ceros, que contiene un número especificado de subcadenas.

Split(expresión[, delimitador[, contar[, comparar]]])

Ubound Devuelve un tipoLong que contiene el mayor subíndice disponible para la dimensión indicada de unamatriz.

UBound(nombre_matriz[, dimensión])

Len Devuelve un tipo Long que contiene el número de caracteres en una cadena o el número de bytes necesarios para almacenar una variable.

Len(cadena | nombrevar)

Otras funciones

Weekday Devuelve un valor de tipo Variant (Integer) que contiene un número entero que representa el día de la semana.

Weekday(fecha, [primerdíasemana])

Time Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema.

Page 5: Interface Design VB6 - Spanish.pdf

Timer Devuelve un tipo Single que representa el número de segundos transcurridos desde la medianoche.

Day, Month, Year Devuelve un valor de tipo Variant (Integer) que especifica un número entero entre 1 y 31, inclusive, que representa el día del mes , entre 1 y 12 inclusive, que representa el mes del año y un número entero que representa el año.

Day(fecha), Month(fecha), Year(fecha)

Ejemplo:Dim MiFecha, MiDiaMiFecha = #12 febrero 1969# ' Asigna una fecha.MiDía = Day(MiFecha) ' MiDía contiene 12.

Second, Minute, Hour Devuelven un valor de tipo Variant (Integer) que especifica un número entero entre 0 y 59, entre 0 y 59 y entre 0 y 23 inclusive, que representa el segundo, el minuto de la hora y la hora del día.

Second(hora), Minute(hora), Hora(hora)

Ejemplo:

Dim MiTiempo, MiMinutoMiTiempo = #4:35:17 PM# ' Asigna una hora.MiMinuto = Minute(MiTiempo) ' MiMinuto contiene 35.

Now Devuelve un valor de tipo Variant (Date) que especifica la fecha y hora actuales de acuerdo con la configuración de la fecha y la hora del sistema de su equipo.

Las funciones fueron usadas en el proyecto convertir:

Char, Asc Devuelve un tipoString que contiene el carácter asociado con el código de carácter especificado y un tipoInteger que representa el código de carácter correspondiente a la primera letra de una cadena.

Chr(códigoCaracter), Asc(cadena)

InStr Devuelve un tipo Variant (Long) que especifica la posición de la primera aparición de una cadena en otra.

InStr([start, ]string1, string2[, compare])

Page 6: Interface Design VB6 - Spanish.pdf

InstrRev Devuelve la posición de una aparición de una cadena dentro de otra, desde el final de la cadena.

InstrRev(cadena1, cadena2[, inicio[, comparar]])

Funciones de conversión de tipos

Cada función de las siguientes convierte una expresión a un tipo de datos específico.

Función Tipo devuelto Intervalo del argumento expresión

Cbool Boolean Cualquier expresión de cadena o numérica válida.

Cbyte Byte 0 a 255.

Ccur Currency -922.337.203.685.477,5808 a 922.337.203.685.477,5807.

Cdate Date Cualquier expresión de fecha.

CDbl Double-1,79769313486232E308 a -4,94065645841247E-324 para valores negativos; 4,94065645841247E-324 a 1,79769313486232E308 para valores positivos.

Cdec Decimal

+/-79.228.162.514.264.337.593.543.950.335 para números basados en cero, es decir, números sin decimales. Para números con 28 decimales, el intervalo es +/-7,9228162514264337593543950335. La menor posición para un número que no sea cero es 0,0000000000000000000000000001.

Cint Integer -32.768 a 32.767; las fracciones se redondean.

CLng Long -2.147.483.648 a 2.147.483.647; las fracciones se redondean.

CSng Single -3,402823E38 a -1,401298E-45 para valores negativos; 1,401298E-45 a 3,402823E38 para valores positivos.

CStr String El mismo intervalo que Double para valores numéricos. El mismo intervalo que String para valores no numéricos.

Cvar Variant El valor de retorno de CStr depende del argumento expresión.

Sintaxis genérica: Función(expresión)

El argumento obligatorio expresión es cualquier expresión de cadena o expresión numérica.

Cualquier expresión cuyo valor es equivalente a una secuencia de caracteres contiguos es una expresión de cadena. Los elementos de la expresión pueden incluir una función que devuelve una cadena, un literal de cadena, una constante de cadena, una variable de cadena, una cadena Variant o una función que devuelve una cadena Variant (VarType 8).

Cualquier expresión numérica que puede ser evaluada como un número. Los elementos de una expresión pueden incluir cualquier combinación de palabras clave, variables, constantes y operadores que dan como resultado un número.

Objetos:

Formulario: Propiedades, métodos y eventos

Creamos un formulario con extensión .frm, para ello hacemos clic en la ventana de proyecto>agregar>formulario, se vería así:

En el siguiente menú desplegable podemos ver todas las posibilidades de elementos que podemos agregar a nuestro proyecto: Formularios, Módulos, Módulos de Clase, informes(Data Report)...etc

Page 7: Interface Design VB6 - Spanish.pdf

Propiedades de un formulario:

Appearance apariencia del objeto, puede ser plano o 3D

AutoRedraw Devuelve o establece el resultado de un método gráfico como gráfico persistente.

BackColor devuelve o establece el color de fondo de un objeto.

BorderStyle

Estilo del borde de un objeto. Para el objeto Form y el control TextBox es de sólo lectura entiempo de ejecución.0.-vbBSNone1.-VbFixedSingle2.-VbSizable3.-vbFixedDouble4.-vbFixedToolWindow5.-vbSizableToolWindow

Caption título de la ventana

ControlBox Devuelve o establece un valor que indica si se muestra un cuadro del menú Control en un formulario

DrawModeDrawStyleDrawWidth

unos valores que determinan la apariencia, estilo de línea y el ancho de línea, respectivamente, del resultado de un método gráfico.

Enabled Activado para responder a eventos generados por usuario

FillColorFillStyle

Color de relleno(Hex) y estilo del relleno(Transparent, Horizontal o Vertical Line, Upward o Downward Diagonal, Cross o Diagonal Cross).

Font

-FontBold-FontItalic-FontName-FontSize-FontStrikethrough-FontUnderline

ForeColor devuelve o establece el color de primer plano utilizado para mostrar texto y gráficos en un objeto.

Height Alto del fromulario

Page 8: Interface Design VB6 - Spanish.pdf

HelpContextID número de contexto asociado a un objeto para proporcionar Ayuda interactiva para la aplicación

Image/Icon Devuelve el icono que aparece al minimizar un formulario.

Left Distancia entre borde interno izqdo y el izquierdo de su contenedor.

LinkModeLinkTopic

permite que una aplicación de destino inicie una conversación con un formulario, se especifica en las propiedades LinkTopic y LinkItem

MaxButton Si tiene o no boton de Maximizar

MDIChild valor que indica si un formulario debe mostrarse como formulariosecundario MDI dentro de unformulario MDI.

MinButton Si tiene o no boton de Minimizar

MouseIcon Icono personalizado para el mouse

MousePointer Tipo de puntero mostrado sobre el formuario (u objeto)

Moveable Indica si se puede mover el formulario

Name Nombre del fromulario

NegotiateMenus Si incorpora los menús de un objeto en la barra de manús.

OLEDropMode Si actua como destino para operación de colocar de OLE

PalettePaletteMode

Imagen que contiene la paleta utilizada en el control(ruta) archivos .dib, .gif o .bmp para establecer la paleta.

Picture gráfico o imagen de fondo del form, formato .bmp, .jpg, .gif, cubre fondo visible, ojo con la imagen al maximizar!!!

RightToLeft:TrueFalse

booleano que indica el sentido de presentación del texto

ScaleHeightScaleLeftScaleModeScaleTopScaleWidth

número de unidades de medida horizontal y vertical del interior de un objeto al usarmétodos gráficos o al colocar controles.ScaleMode para definir una escala basada en una unidad de medida estándar, comotwips,puntos,píxeles, caracteres, pulgadas, milímetros o centímetros.

StartUpPosition:0 – Manual1 – CenterOwner2 – CenterScreen3 – Windows Default

especifica la posición de un objeto la primera vez que aparece

Top distancia entre el borde interno superior de un objeto y el borde superior de su contenedor

Visible Indica si está visible o no

WhatsThisButton determina si el botón ¿Qué es esto? debe aparecer en la barra de título

WhatsThisHelp determina si la Ayuda interactiva utiliza el menú emergente ¿Qué es esto?

Width Ancho del formulario

WindowState indica el estado visual de una ventana de formulario en tiempo de ejecución.(vbNormal,vbMinimized,vbMaximized)

Page 9: Interface Design VB6 - Spanish.pdf

Métodos de un formulario:

CircleDibuja un círculo, una elipse o un arco en un objeto.

objeto.Circle [Step] (x, y), radio, [color, inicio, fin, aspecto]

Cls Borra los gráficos y el texto generados en tiempo de ejecución de los controles Form o PictureBox.

HideOculta un objeto MDIForm o Form pero no lo descarga.

Objeto.Hide

LineDibuja líneas y rectángulos en un objeto. Sintaxis:

objeto.Line [Step] (x1, y1) [Step] - (x2, y2), [color], [B][F]

MoveMueve objetos MDIForm o Form, o controles. No acepta argumentos con nombre. Sintaxis

objeto.Move izquierda, superior, ancho, alto

OLEDragHace que un componente inicie una operación OLE de arrastrar y colocar. Sintaxis

objeto.OLEDrag

PaintPicture

Dibuja el contenido de un archivo gráfico (.bmp, .wmf, .emf, .cur, .ico o .dib) en un objeto Form, PictureBox o Printer. No acepta argumentos con nombre. Sintaxis:

objeto.PaintPicture imagen, x1, y1, ancho1, alto1, x2, y2, ancho2, alto2, códigoOp

Point

Devuelve, como un valor de tipo Integer Long, el color rojo-verde-azul (RGB) delpunto especificado de un objeto Form o un control PictureBox. No acepta argumentos con nombre.

objeto.Point(x, y)

PopupMenu

Presenta un menú emergente en un objeto MDIForm o Form en la posición actual del mouse o en las coordenadas especificadas. No acepta argumentos con nombre.Sintaxis

objeto.PopupMenu nombreMenú, indicadores, x, y, negrita

PrintFormEnvía a la impresora una imagenbit a bit de un objeto Form.

objeto.PrintForm

PsetEstablece un punto de un objeto a un color especificado.

objeto.PSet [Step] (x, y), [color]

RefreshFuerza el volver a dibujar un formulario o un control completo.

objeto.Refresh

Scale

ScaleX

ScaleY

Define el sistema de coordenadas para un control Form, PictureBox o Printer. No acepta argumentos con nombre.

objeto.Scale (x1, y1) - (x2, y2)

Convierten el valor del ancho o el alto de un control Form, PictureBox o Printer de una unidad de medida de la propiedad ScaleMode a otra. No aceptan argumentos con nombre. Sintaxis

objeto.ScaleX (ancho, escalaOrigen, escalaDestino)

objeto.ScaleY (alto, escalaOrigen, escalaDestino)

Page 10: Interface Design VB6 - Spanish.pdf

SetFocusMueve elenfoque al control o formulario especificado.Sintaxis

objeto.SetFocus

Show

Presenta un objeto MDIForm o Form. No acepta argumentos con nombre. Sintaxis

objeto.Show estilo, formularioPropietario

Si estilo es 0, el formulario es no modal; si estilo es 1, el formulario es modal.

TextHeight

Devuelve el alto de una cadena de texto tal y como se imprimiría con la fuente actual de un objeto Form, PictureBox o Printer. No acepta argumentos con nombre. Sintaxis

objeto.TextHeight(cadena)

TextWidth

Devuelve el ancho de una cadena de texto tal y como se imprimiría con la fuente actual de un objeto Form, PictureBox o Printer. No acepta argumentos con nombre. Sintaxis

objeto.TextWidth(cadena)

ValidateControls

Asegura que el contenido del último control del formulario es válido antes de la existencia del formulario. Sintaxis

objeto.ValidateControls

Hace que el puntero del mouse adopte la forma de ¿Qué es esto? y prepara la aplicación para mostrar Ayuda de tipo ¿Qué es esto? correspondiente al objeto seleccionado. Sntaxis

objeto.WhatsThisMode

WhatsThisMode

Hace que el puntero del mouse adopte la forma de ¿Qué es esto? y prepara la aplicación para mostrar Ayuda de tipo ¿Qué es esto? correspondiente al objeto seleccionado. Sintaxis

objeto.WhatsThisMode

ZOrder:0 – vbBringToFront1 - vbSendToBack

Coloca un objeto MDIForm o Form, o un control al principio o al final del orden z dentro de su nivel gráfico. No acepta argumentos con nombre. Sintaxis:

objeto.ZOrder posición

Eventos de un formulario:

Activate Ocurre cuando un objeto se convierte en la ventana activa. Private Sub objeto_Activate( )

Click, DblClickSe produce cuando un usuario presiona y suelta un botón del mouse una o dos veces sobre un objeto.

Private Sub Form_DblClick ( )

Deactivate ocurre cuando un objeto deja de ser la ventana activa.Private Sub objeto_Deactivate( )

DragDrop

DragOver

Drop:Ocurre cuando se completa una operación de arrastrar y colocar como resultado de arrastrar un control sobre un objeto y soltar el botón del mouse o usar el método Drag con su argumento acción establecido a 2 (Drop). Sintaxis

Private Sub Form_DragDrop(origen As Control, x As Single, y As Single)

Page 11: Interface Design VB6 - Spanish.pdf

Over:Ocurre cuando una operación de arrastrar y colocar está en curso

Private Sub Form_DragOver(origen As Control, x As Single, y As Single, estado As Integer)

GotFocus

cuando un objeto recibe el enfoque, ya sea mediante una acción del usuario, como tabular o hacer clic en el objeto, o cambiando el enfoque en el código mediante el método SetFocus.

Initializecuando una aplicación crea una instancia de un formulario

Private Sub objeto_Initialize( )

Keypress

KeyDown, KeyUp

Ocurren cuando el usuario presiona (KeyDown) o suelta (KeyUp) una tecla mientas un objeto tiene el enfoque. (Para interpretar los caracteres ANSI, utilice el evento KeyPress.)

Private Sub Form_KeyDown(códigoTecla As Integer, mayús As Integer)

LinkCloseLinkErrorLinkExecuteLinkOpen

Se utilizan para notificar al usuario sobre una conversación DDE. Que termina(Close), envío una cadena de comandos(Execute),se produce un error durante una conversación(Error) y cuando se está iniciando una conversación DDE(Open). También puede incluir información sobre solución de problemas, sobre el restablecimiento de la conexión o dónde acudir en busca de asistencia. Para mostrar mensajes breves, utilice la función MsgBox.

LoadCarga en memoria un formulario o un control.

Private Sub objeto_Load( )

MouseDown

MouseUpOcurren cuando el usuario presiona (MouseDown) o suelta (MouseUp) un botón del mouse.

MouseMove Ocurre cuando el usuario mueve el mouse.

OLECompleteDragOLEDragDropOLEDragOverOLEGiveFeedbackOLESetDataOLEStartDrag

OLE: Vinculación e incrustación de objetos. La tecnología que permite crear aplicaciones que contienen componentes de otras aplicaciones. Se produce cuando:

-CompleteDrag: un componente de origen se coloca en un componente de destino

-DragDrop:se arrastra,

-DragOver:se arrastra sobre otro,

-GiveFeedback: ocurre después de cada evento OLEDragOver.

-SetData:en un componente de origen cuando un componente de destino realiza el método GetData sobre el objeto DataObject del origen, pero antes de que se carguen los datos del formato especificado.

-StartDrag:se ejecuta el método OLEDrag de un componente o cuando inicia una operación OLE de arrastrar y colocar

QueryUnload Ocurre antes de que se cierre un formulario o una aplicación.

SetFocus Ocurre cuando un objeto pierde el enfoque, ya sea por una acción del usuario, como tabular o hacer clic en otro objeto, o bien mediante un cambio del enfoque en el código con el método SetFocus.

Page 12: Interface Design VB6 - Spanish.pdf

Private Sub Form_LostFocus( )

Private Sub objeto_LostFocus([índice As Integer])

Terminate

cuando todas las referencias a una instancia de un formulario se quitan de la memoria estableciendo a Nothing todas las variables que hacen referencia al objeto

Private Sub objeto_Terminate( )

Unload

Ocurre cuando un formulario está a punto de quitarse de la pantalla. Cuando ese formulario se vuelve a cargar, el contenido de todos sus controles se reinicializa. Este evento se desencadena porque un usuario cierra el formulario mediante el comando Cerrar del menú Control o una instrucción Unload.

Private Sub objeto_Unload(cancelar As Integer)

Si cancelar es 0, el formulario se quita. Establecer cancelar a cualquier valor distinto de cero impide que el formulario se quite.

Set cancel = 1

Pantalla de código:

1ª parte combo de objetos en el formulario. Frames, CommandButtons, Labels y TextBox

2ª parte combo de declaraciones y eventos asociados en este caso con el lblDatos. Esto se repite en cada uno de los elementos de cada uno de los componentes proyecto, cada uno con sus respectivas posibles declaraciones.

El primer evento que se dispara es el Load(). Ahí vamos a declarar todas las acciones que deseamos que se hagan al visualizarlo por 1ª vez.

Hay dos formas de alterar las propiedades de un objeto, en diseño en el cuadro de propiedades del mismo o en tiempo de ejecución por código en alguno de los eventos, procedimientos o funciones.

Page 13: Interface Design VB6 - Spanish.pdf

En la ventana del formulario si deseamos ajustar y colocar gráficamente los objetos cómodamente, podemos mejorar la cuadrícula en el menú herramientas>opciones>General y ahí cambiar las opciones de cuadrícula Ancho y Alto, poner un nº más bajo para reducir la separación entre puntos. Por ejemplo 30, el antes (120) y el después a la derecha (30)

Formulario MDI:

Multiple Document Interface. Un formulario MDI (interfaz de múltiples documentos) es una ventana que actúa como fondo de una aplicación y es el contenedor de formularios que tienen su propiedad MDIChild establecida a True.

Es un tipo especial de formulario que engloba a otros llamados formularios secundarios. El formulario MDI es el contenedor de cualquier formulario secundario MDI de la aplicación.

Un formulario MDI se crea con el comando Agregar formulario MDI (ver imagen) del menú Proyecto; un formulario secundario MDI se crea eligiendo Nuevo formulario en el menú Archivo y, a continuación, estableciendo la propiedad MDIChild a True.

Una aplicación sólo puede tener un objeto MDIForm, pero varios formulariossecundarios MDI. Si un formulario secundario MDI tiene menús, la barra de menús del formulario secundario reemplazará automáticamente a la barra de menús del objeto MDIForm cuando el formulario secundario MDI esté activo. Un formulario secundario MDI minimizado se mostrará como un icono en el MDIForm.

Un objeto MDIForm sólo puede contener controles Menu y PictureBox, y controles personalizados que tengan una propiedad Align. Para colocar otros controles en un MDIForm, puede dibujar un cuadro de imagen en el formulario y después dibujar otros controles dentro del cuadro de imagen. Puede usar el método Print para mostrar texto en un cuadro de imagen de un MDIForm, pero no puede usar este método para mostrar texto en el MDIForm propiamente dicho.

Un objeto MDIForm no puede ser modal.

Los formularios secundarios MDI se diseñan de forma independiente del MDIForm, pero siempre están contenidos en el MDIForm entiempo de ejecución.

Page 14: Interface Design VB6 - Spanish.pdf

Mi ejemplo anterior(proyecto 14-12-2012) es de la forma siguiente: a la izquierda con el fondo negro se ve el menú del MDIform y a la derecha el resultado en el árbol de proyectos de agregar dicho formulario. Luego agregamos el menú de archivo (ver Agregar menús) para seleccionar entre visualizar frmListaClientes y frmListaArtículos según pulsemos uno u otro. Para permitir que eso suceda he tenido que realizar varios cambios.

• Eliminar las instrucciones de Unload que ejecutaba cada vez que cargaba un formulario que hacía que se quitara de pantalla el otro.

• Establecer el valor de la propiedad de frmListaClientes y frmListaArtículos MDIChild a True, como ya comento mas arriba.

• Debemos cambiar la forma de mostrar ambos formularios. Disponemos de un botón en cada uno de ellos que nos muestra directamente el otro, pues debemos cambiar en el código de dicho botón la forma en que se muestran, pues en un MDI los formularios no pueden ser Modales. El código nuevo sería el de la derecha:

• Modificar la propiedad ZOrder a 0 en el método Activate de los dos formularios. Como en la imagen siguiente:

MsgBox

Es una ventana emergente que permite mostrar un mensaje o solicitar elección de opciones al usuario mediante determinados botones. La sintaxis es la siguiente

MsgBox (prompt[, buttons][, title][, helpfile, context])

prompt: Diálogo o mensaje que muestra la ventana. 1024 caracteres incluye Chr(13) y Chr(10). Cadena de texto.

buttons: opcional, especifica el nº y tipo de los botones en la ventana. Predeterminado = 0

title: representa el título del cuadro de diálogo. Cadena texto

helpfile y context: opcionales pero se deben dar en conjunto. Cadena que identifica el archivo de Ayuda y Expresión numérica que es igual al número de contexto de Ayuda asignado por el autor al tema de Ayuda anterior.

Page 15: Interface Design VB6 - Spanish.pdf

Icono pregunta o Question

el icono de alerta Icono de Información Icono Critical

En button se pueden incluír mediante el signo + los siguientes parámetros:

Ejemplos en mi código con su resultado por pantalla:

<--El código de arriba

El código de abajo-->

Cajas de texto TextBox:

Se guarda en ellas lo que tecleamos. Para editar sus propiedades se usan estos y otros parámetros:

Miembro Valor DescripciónOKOnly 0 Muestra sólo el botón Aceptar.OKCancel 1 Muestra los botones Aceptar y Cancelar.AbortRetryIgnore 2 Muestra los botones Anular, Reintentar y Omitir.YesNoCancel 3 Muestra los botones Sí, No y Cancelar.YesNo 4 Muestra los botones Sí y No.RetryCancel 5 Muestra los botones Reintentar y Cancelar.Critical 16 Muestra el icono Mensaje crítico.Question 32 Muestra el icono Consulta de advertencia.Exclamation 48 Muestra el icono Mensaje de advertencia.Information 64 Muestra el icono Mensaje de información.DefaultButton1 0 El primer botón es el predeterminado.DefaultButton2 256 El segundo botón es el predeterminado.DefaultButton3 512 El tercer botón es el predeterminado.

ApplicationModal 0

SystemModal 4096

MsgBoxSetForeground 65536MsgBoxRight 524288 Texto alineado a la derecha.

MsgBoxRtlReading 1048576

Aplicación modal: el usuario debe responder al cuadro de mensaje antes de continuar trabajando en la aplicación actual.Sistema modal: se suspenden todas las aplicaciones hasta que el usuario responda al cuadro de mensaje.Especifica la ventana del cuadro de mensaje como ventana de primer plano.

Especifica que el texto debe aparecer para ser leído de derecha a izquierda en los sistemas árabe y hebreo.

Page 16: Interface Design VB6 - Spanish.pdf

Alignment determina la alineación → objeto.Alignment [= número] . Para los TextBox, VbeftJustify(0), VbRightJustify (1), Center(2).

Appearence Establece el estilo de los controles de un objeto MDIForm o Form como plano o 3D.

BackColor, Forecolor color de fondo y color de primer plano para texto y gráficos.

BorderStyle 0 Ninguno, 1 Simple Fijo, 2 (Predeterminado)Ajustable, 3 diálogo fijo, 4 ventana fija, 5 ventana de tamaño ajustable.

DataField: devuelve nombre de un campo al que será enlazado un receptor de datos.

DataFormat: objeto de un tipo de formato. Obj.Dataformat = ObjetoDeFormato

DataSource enlaza con una base de datos. Objeto.DataSource [=dataSource]

DragIcon el icono de arrastrar. Objeto.DragIcon [=icono]

DragMode modo de arrastre: normal o automátic

Enabled si un objeto responde a eventos del usuario

Font fuente de la letra

Height, Width alto y ancho obj.height [= numero] // obj.width [= numero]

HelpCotextId ayuda interactiva

HideSelection determina si el texto aparece resaltado o no.

Index establece un nº que identifica al objeto

Left,Top

Left devuelve o establece la distancia entre el borde interno izquierdo de un objeto y el borde izquierdo de sucontenedor. Top: devuelve o establece la distancia entre el borde interno superior de un objeto y el borde superior de su contenedor.

LinkItem enlaza con un objeto

readOnly establece atributos de solo lectura

MaxLengthDevuelve o establece un valor que indica si existe un número máximo de caracteres que se pueden introducir en un control TextBox y, en caso afirmativo, especifica dicho valor máximo.

MouseIcon establece o devuelve el icono del ratón

MultiLine establece posibilidad de introducir saltos de linea dentro de la TextBox. Hasta 32kb

OLEDragModeDevuelve o establece un valor que indica si las operaciones OLE de arrastrar y colocar las controla el componente o el programador. Mover datos de un lugar a otro arrastrando.

PasswordChar Si aparecen los caracteres o no

RightToLeft sentido de presentacion del texto. True or false

Page 17: Interface Design VB6 - Spanish.pdf

ScrollBarsDevuelve o establece un valor que indica si un objeto tiene barras de desplazamiento horizontal o vertical. True (tiene Hor/Vert/ambas) False(no). 0 pred.(ninguna) 1 Hor. 2 Ver 3 H&V

TabIndex Orden de tabulación

Tabstop si el usuario puede usar tecla TAB para llevar el foco al objeto.

Text el contenido de la caja de texto

TooltipText información sobre herramientas.

Visible visible u oculto

WhatsThisHelpIDDevuelve o establece un número de contexto asociado a un objeto. Se utiliza para dotar a las aplicaciones de Ayuda interactiva con el menú emergente ¿Qué es esto? de la Ayuda de Windows 95.

ListView: Propiedades, métodos y eventosPropiedades nuevas no definidas o no comunes a los anteriores:

AllowColumnReorder Devuelve o establece un valor booleano que determina si el usuario puede volver a ordenar las columnas mediante el mouse (ratón).

Arrange

valor que determina cómo se organizan los iconos en la vista Iconos o Iconos pequeños de un control

ListView.lvwNone 0 (Predeterminado) Ninguno.

lvwAutoLeft 1 Izquierda.

LvwAutoTop 2 Superior

CausesValidation valor que determina si el evento Validate se producirá en un segundo control desde el que está cambiando el enfoque. Booleano

Checkboxes valor que determina si se muestran las casillas de verificación. Booleano

DragIcon Devuelve o establece el icono que se presenta como puntero en una operación de arrastrar y colocar.

DragMode valor que determina si se usa el modo de arrastre manual 0 o automático 1, en una operación de arrastrar y colocar.

Enabled Si puede responder a eventos generados por el usuario. Booleano

FlatScrollBar determina la apariencia de la barra de desplazamiento en el objeto. (Bool)

FullRowSelect Devuelve o establece un valor que especifica si está seleccionada toda la fila. Booleano

GridLines determina si se muestran líneas de cuadrícula en la vista Informe del control ListView. Booleano

HideColumnHeaders establece si los objetos ColumnHeader de un control ListView están ocultos en la vista Informe. Booleano

Page 18: Interface Design VB6 - Spanish.pdf

HideSelection determina si el texto seleccionado aparece resaltado cuando un control pierde el enfoque. Booleano

HotTracking determina si está activado el resalte sensible al puntero del ratón.(Bool)

HoverSelection determina si se seleccionará un objeto ListItem cuando el puntero del mouse se sitúe encima del mismo. (Bool)

Index número que identifica inequívocamente un objeto de una colección.

LabelEdit

determina si el usuario puede modificar las etiquetas de los objetos ListItem o Node de un control ListView o TreeView. Automatic 0, manual 1

objeto.LabelEdit [ = entero]

LabelWrap determina si se produce o no ajuste de línea en las etiquetas cuando un control ListView está en la vista Iconos.

MultiSelect valor que indica si un usuario puede seleccionar múltiples objetos o elementos. (Bool)

PictureAlignment

determina la alineación de la imagen de un objeto.

lvwTopLeft 0 Esquina superior izquierda.

lvwTopRight 1 Esquina superior derecha.

lvwBottomLeft 2 Esquina inferior izquierda.

lvwBottomRight 3 Esquina inferior derecha.

lvwCenter 4 Centrado.

lvwTile 5 (Predeterminado) En mosaico.

Sorted determina si los elementos de una colección están ordenados. Booleano

SortKey

determina cómo se ordenan los objetos ListItem de un control ListView.

0 Ordena mediante la propiedad Text del objeto Text.

> 1 Ordena mediante el subelemento cuyo índice de colección se especifica aquí.

SortOrder determina si los objetos ListItem de un control ListView se muestran en orden ascendente 0 o descendente 1.

TextBackground determina si el fondo del texto de un objeto ListItem es opaco 1 o transparente 0.

ToolTipText Devuelve o estableceInformación sobre herramientas.

objeto.ToolTipText [= cadena]

Métodos de ListView:

Drag Inicia, termina o cancela una operación de arrastre de cualquier control excepto los controles Line, Menu, Shape, Timer o CommonDialog. No acepta argumentos con nombre.

objeto.Drag acción

vbCancel 0 Cancela la operación de arrastre

vbBeginDrag 1 Inicia el arrastre del objeto

Page 19: Interface Design VB6 - Spanish.pdf

vbEndDrag 2 Termina el arrastre y coloca el objeto

FindItem

Busca y devuelve una referencia a un objeto ListItem de un control ListView.

objeto.FindItem (cadena, valor, índice, coincidencia)

valor:

lvwText 0 (Predeterminado) Hace coincidir la cadena con la propiedad Text de un objeto ListItem.

lvwSubitem 1 Hace coincidir la cadena con cualquier cadena de la propiedad SubItems de un objeto ListItem.

lvwTag 2 Hace coincidir la cadena con cualquier propiedad Tag

GetFirstVisible Devuelve una referencia al primer objeto visible en el área interna de un control.

Move Mueve. objeto.Move izquierda, superior, ancho, alto

OLEDrag Hace que un componente inicie una operación OLE de arrastrar y colocar.

Refresh Fuerza que se redibuje completamente un formulario o un control.

SetFocus Mueve elenfoque al control o formulario especificado. objeto.SetFocus

ShowWhatsThis menú emergente ¿Qué es esto?

StartLabelEdit Permite al usuario modificar una etiqueta.

ZOrder Coloca un objeto MDIForm o Form, o un control al principio o al final del orden z dentro de su nivel gráfico. No aceptaargumentos con nombre.

Eventos de ListView:

AfterLabelEdit

BeforeLabelEdit

Se produce cuando un usuario termina(after) o intenta(before) de modificar la etiqueta del objeto Node o ListItem seleccionado actualmente.

Private Sub objeto_AfterLabelEdit/objeto_BeforeLabelEdit

(cancelar As Integer, nuevaCadena As String)

ColumnClick cuando se hace clic en un objeto ColumnHeader de un control ListView. Sólo está disponible en la vista Informe.

ItemClick

Se produce cuando se hace clic en un objeto ListItem de un control ListView.

Private Sub objeto_ItemClick(ByVal elemento As ListItem)

Validate

Ocurre cuando el foco cambia a un (segundo) control que tiene su propiedad CausesValidation establecida a True.

Private Sub objeto_Validate(mantenerFoco As Boolean)

Agregar elementos en un menú:

El ejemplo de este tipo de Tarea es el pryecto “Editor”. El menú estará compuesto por 4 menús de cabecera, el primero llamado "Archivo", el segundo "Edición", el tercero utilidades (que no se

Page 20: Interface Design VB6 - Spanish.pdf

va a usar) y el último "Ayuda"(que tampoco se usará). A su vez cada menú tendrá los siguientes submenues:

1.Archivo: Este menú contendrá los submenús " Abrir ", " Guardar ", " Imprimir " y " Cerrar "

2.Edición: Contendrá los submenús " Cortar ", " Copiar ", " Pegar ", " Seleccionar todo "

El cuadro de diálogo del editor de menú de visual basic posee los siguientes campos para rellenar. Algunos son opcionales y otros son obligatorios, como la propiedad Caption y Name:

•Caption: en este campo debemos colocar la leyenda que mostrará el menú, es decir el

texto que mostrará el mismo. Si a una letra le anteponemos el símbolo &, indica que al

pulsar la combinación Alt+Tecla (siendo tecla la posterior a &) nos accede a dicho menú.

En nuestro caso, usamos las letras A, E, U e Y para cada uno de los cuatro

•Name: en este campo debemos introducir un nombre para cada menú. Este es

obligatorio y no puede estar duplicado ya que por medio de este nombre identificaremos

al menú en el código. Nosotros estableceremos “mnuArch” para Archivo, y “mnuE” para

Editar, cada uno de ellos con sus indices de orden, que representan el campo siguiente.

Page 21: Interface Design VB6 - Spanish.pdf

•Index: en este campo que es opcional podemos introducir un número para formar

vectores de menús o arreglos de menús, en este ejemplo no se usa, por ejemplo para

crear menús en forma dinámica en tiempo de ejecución

•Helpcontextid: este campo opcional podemos introducir un n° para el tópico de ayuda,

por si el usuario presiona la tecla F1 justo cuando está posicionado en el menú.

•Shortcut: Podemos ingresar una tecla de acceso rápido al menú para que se despliegue

el mismo automáticamente, como por ejemplo Ctrl + a, Ctrl + b, etc...

•Checked: este campo indica si el menú tendrá un tilde a la izquierda o no. Si está en

true lo muestra si está en False no. El campo es de tipo opcional.

•Enabled: propiedad booleana que determina si el menú está habilitado o no. Esta

propiedad es exactamente igual a la propiedad Enabled de cualquier control de visual

basic. El campo por defecto, mejor dicho la propiedad está en True

•Visible: propiedad opcional y de tipo booleana que determina si el menú estará visible o

no. Esta propiedad es ideal para crear los menús contextuales o PopUp (mas adelante hay

un ejemplo de como crear uno).

Pasos a seguir:

1.Una vez abierto el editor de menú, hay que ingresar los elementos que componen el

mismo.

Para crear el menú "Archivo" que es un menú de cabecera o de nivel superior, debemos

ingresar en la propiedad Caption la cadena “&Archivo”

Ahora le asignaremos un nombre en el campo Name.

Utilizaremos el prefijo mnu para luego poder distinguirlo fácilmente en el código. Entonces

ingresamos en este campo mnuArch, pero no le colocaremos el índice. Porque no va a

tener asociado ningún evento, solo desplegará el menú del cual es cabecera.

2.El segundo paso será ingresar los submenús que están por debajo del menú archivo.

Para ello presionamos el botón "siguiente" donde ingresaremos el menú "Abrir".

Como este es un submenú debemos indicarlo con el botón que tiene una flecha hacia la

Derecha.

Al presionarlo ahora el mismo se marca con una doble comilla (“”), para indicarnos que

este menú deriva o está contenido en el menú de cabecera "Archivo". Ahora pasamos a

ingresarle el nombre y la leyenda del menú. En la propiedad Caption ingresamos “Load” y

en el campo Name : mnuArch, sin olvidarse de colocar el Index con el primero de los

valores que vamos a asignar: el 0.

3.Ahora repetimos los pasos anteriores para

ingresar los submenús restantes del menú

Archivo como en la imagen que se puede ver aquí

a la izquierda.

4.Si habrás observado los clásicos menús de

las aplicaciones, los submenús se agrupan en

secciones. Por ejemplo en el menú archivo del

Page 22: Interface Design VB6 - Spanish.pdf

internet explorer, el submenú Salir está separado del resto por una línea. para lograr esto

se debe crear un submenú como cualquier otro justo arriba del menú que queremos que

aparezca la línea divisoria, y en la propiedad caption del mismo le colocamos el carácter

menos -

5.Ahora ingresaremos el código para que muestre la leyenda en el control Label cada vez

que presionemos un menú.

6.El menú se va incorporando al formulario en tiempo de diseño como cualquier otro

control de visual basic. Para ingresar el código necesario diremos que cada menú

responde a un evento llamado click y que se dispara cuando presionamos el menú con el

mouse o cuando le damos un enter, para ingresar el código en el menú "Abrir" le damos

un click en el mismo menú desde la ventana de diseño. Una vez abierta la ventana de

código aparecerá una rutina como la siguiente:

En este caso no incorporamos ningún código

pues el menú Utilidades de nuestro ejemplo no

llevará ninguna acción.

Ahora vamos a ver como sería el código de las acciones de dichos menús antes configurados.

Cerramos el editor, y vemos que ya nos aparecen los menús configurados en la ventana de

objetos. Vamos al menú Archivo y hacemos clic en uno de los submenús, y nos salta a la ventana

de código en el evento mnuArch_Click(), y ahí es donde a través del índice Index, mediante un

bucle switch decidiremos qué hacer en función de cual de los submenús serán pussados.

Opciones del menú Archivo:

Load: abrir un fichero o archivo de texto y cargarlo en el textBox(multiLine).

Declaramos dos variables de tipo cadena. Para Almacenar el nombre del fichero y el contenido leído de cada línea.

Para el Load le corresponde el Index 0.

Vamos a marcar los pasos básicos y los controles que vamos a usar y sus características.

Usaremos CommonDialog, TextBox (que ya se ha descrito anteriormente)

Page 23: Interface Design VB6 - Spanish.pdf

La ayuda:

Para usar la ayuda de VB tenemos que seleccionar la palabra en cuestión en el editor y pulsar F1 en el teclado. La ayuda se despliega mostrando el contenido correspondiente a dicha palabra.

Crear un informe simple utilizando DataReport

Paso 1 – Crear la base de datos

•Crear una tabla llamada Clientes en la base de datos “xestión”.

•Añadimos campos correspondientes a los datos de los clientes.

•Añadir algunos datos de clientes (insert)

Añadir el Datareport y Crear el reporte.Pasos:

Para poder ver el DataReport debemos en “agregar componentes”, click derecho sobre la barra componentes/componentes/diseñadores/marcamos data Report y data environment.

Se ha añadido una nueva carpeta llamada Diseñadores a nuestro proyecto.

Lo mejor es cambiarle el nombre por rptInformeConcepto, donde Concepto indicará a que se va a dedicar o qué mostrará el informe.

•Añadir un reporte desde el menú Proyecto, seleccionando la opción DataReport. Para

agregarlo basta con ir al menú (Proyecto/Agregar Data Report)

•En la propiedad del botón imprimir lo asociamos con el rptInformeConcepto en el click

del botón . Se explica más adelante.

•Hacemos clic con el botón derecho sobre el diseño y le desmarcamos forzar a la

cuadrícula, de este modo podremos poner las cosas sin estar obligados por las extrañas

dimensiones que te indican los cuadros del diseño.

•Seleccionar el Reporte y cambiarle el nombre a rptInforme(en el caso de muestra es el

único informe del proyecto). Desde el menú Explorador de proyecto se verá algo similar al

siguiente gráfico:

Page 24: Interface Design VB6 - Spanish.pdf

La vista del reporte está dividida por secciones:

•Encabezado del informe : aparece una vez al principio del informe (primera hoja/portada)

•Encabezado de la página ( campoCabecera ): aparece en la cabecera de cada página

(nombre de los campos)

•Detalle ( campoDetalles ) :Donde se visualizarán los datos de la tabla concreta de la base

de datos xestión en cada uno de los campos de la cabecera.

•El pie de página. Podemos incluir datos del informe, como fecha, número de página,

autor o sección del propietario. Aparecerá en todas las páginas del informe.

Al añadir un reporte al proyecto, en el Cuadro de controles de Visual Basic, ahora se añadió automáticamente una pestaña con controles para el DataReport .

Page 25: Interface Design VB6 - Spanish.pdf

En este ejemplo solo se usarán los RptLabel, RptTextBox RptLine. El primero para usarlo en la sección de Encabezados, y los textBox para mostrar los registros de la base de datos.

Ahora en este paso se agregará un control rptLabel en la sección de Encabezado de reporte ( El primero de todo ). Para ello dibujar un rptLabel en dicha sección, si se quiere cambiarle el color de la fuente, el tamaño etc.. eso es opcional y se puede hacer desde la ventana de propiedades de vb y también en tiempo de ejecución. Para cambiar el texto del rptLabel, utilizar la propiedad Caption

La vista quedará algo así:

Nota: Se coloca una línea con el control RptLine, para separar cada encabezado principal del resto.

Ahora se agregarán los RptLabel mas en la sección Encabezado de página. Estos label servirán para mostrar las columnas. En el DataField colocar el nombre de los campos de la base de datos que se había creado. En nuestro caso se incluyen:

ID, nombre, apellidos, dirección, población, CP y en otra línea el comentario.

Se puede establecer un color y estilo de fuente a gusto desde la ventana de propiedades

Ahora, se utilizará el control rptTextBox para la sección de " Detalle ". Los rptTextBox, que serán lógicamente los mismos y del mismo tamaño que los indicados en cabecera del informe.

Se deben establecer los tamaños del mismo con las propiedades:

•Height : la altura del rptLabel o del rptTextBox, todas iguales y ajustadas al texto que

incluye. Así se ahorra papel al imprimir el informe.

•Left : nos dice donde se ubica el elemento con respecto al margen izquierdo.

•Width : es la anchura que va a ocupar el elemento.

•Top : nos indica la ubicación del elemento con respecto al margen de la sección

correspondiente.En el formulario frmLista estarán enlazados mediante la propiedad DataField, a cada campo correspondiente de la tabla Clientes.

Añadir los rptTextBox como se ve en el gráfico:

Al añadirlos, el texto por defecto que visualiza es: " No enlazado " . Esto es por que todavía no se ha especificado ningún campo para ese textbox en la propiedad DataField de los mismos.

Cada elemento del campoDetalles se enlazará en el código del commandButton Imprimir en frmLista.

Quedará mas o menos de esta forma:

Page 26: Interface Design VB6 - Spanish.pdf

Código fuente en el formulario para visualizar el reporte

En este último paso se añadirá un commandButton en el formulario frmLista.

Un botón será para añadir un nuevo registro a la base de datos. Otro para eliminar un registro, y el otro para visualizar el informe.

•El Commandbutton para crear un nuevo registro renombrarlo a cmdNuevo(caption

Nuevo)

•El Command para eliminar un registro renombrarlo a cmdEliminar(caption Eliminar)

•El Command para visualizar el informe renombrarlo a cmdReporte(caption Imprimir)

Más adelante se añadirá un nuevo botón que alternará entre las distintas tablas de la base de datos, mediante la opción de hacer loads y unloads en método on_click() de dicho botón en cada uno de los frmListaConcepto. Vista del formulario:

Ahora añadir desde el menú del frmListaClientes (en este caso) en el click del botón imprimir cmdImprimir, el código siguiente para que al pulsar se cree el reporte correspondiente.

Vamos a mostrar un diseño y su resultado correspondiente.

Page 27: Interface Design VB6 - Spanish.pdf

Los MódulosMás cosas sobre VB6: los módulos son elementos solamente con código, sin representación gráfica, que engloban un conjunto de variables, instrucciones o funciones que se definen, se pueden acceder y se emplean desde y en todo el proyecto. Todas las variables declaradas en sus funciones se pierden fuera de ellas, para eso debemos declararlas fuera de ellas si es lo que necesitamos.

Hemos usado varios tipos de módulos. Al hacer clic derecho sobre nuestro proyecto en Agregar nos aparecen (ver imagen).

• Módulo de clase : Módulo que contiene la definición de una clase (sus definiciones de propiedad y método).

• Módulo de código : Módulo que contiene código público que se puede compartir entre todos los módulos de un proyecto. Los módulos de código se denominan módulos estándar en versiones posteriores de Visual Basic.

• Módulo de formulario : Archivo en un proyecto de Visual Basic con una extensión de nombre de archivo .frm que puede contener descripciones gráficas de un formulario; sus controles y sus valores de propiedad; declaraciones a nivel de formulario de constantes, variables y procedimientos externos; eventos y procedimientos generales.

• Módulo de objeto : Módulo que contiene un código específico a un objeto, por ejemplo, módulo de clase, módulo de formulario y módulo de documento. Los módulos objeto contienen el código detrás de sus objetos asociados. Las reglas para módulos objeto difieren de las de los módulos estándar.

Page 28: Interface Design VB6 - Spanish.pdf

Las clases difieren de los módulos estándar en la forma de almacenar los datos. Nunca hay más de una copia de los datos de un módulo estándar. Esto significa que cuando una parte del programa modifica una variable pública de un módulo estándar y otra parte del programa la lee después, obtendrá el mismo valor.

Por otra parte, los datos de un módulo de clase existen por separado para cada instancia de la clase, es decir, por cada objeto creado a partir de la clase.

Según el mismo razonamiento, los datos de un módulo estándar tienen el alcance del programa; es decir, existen durante toda la ejecución del programa, mientras que los datos de cada instancia de un módulo de clase sólo existen durante la duración del objeto; se crean cuando se crea el objeto y se destruyen cuando se destruye el objeto.

Por último, las variables declaradas Public en los módulos estándar son visibles desde cualquier parte del proyecto, mientras que sólo puede tener acceso a las variables Public de los módulos de clase si dispone de una variable de objeto que contenga una referencia a una instancia concreta de una clase.

Hemos usado los módulos de código (Módulos) para definir métodos en varios proyectos, por ejemplo para conectarnos a la base de datos, para leer un elemento o varios de una base de datos, pues son métodos que serían llamados varias veces y desde varios sitios. En el módulo están accesibles para todos los objetos del proyecto donde se ubica el módulo por lo que podemos decir que son reutilizables. A la hora de definirlos se tiene en cuenta ese detalle: van a ser usados varias veces, para ello se va a evitar programar particularizando para una tarea y se harán procedimientos genéricos.

Page 29: Interface Design VB6 - Spanish.pdf

Conexión de objetos ADODB.Conceptos:El objeto de conexión ADO se utiliza para crear una conexión abierta a un origen de datos. A través de esta conexión, se puede acceder y manipular una base de datos.

Si desea acceder a una base de datos varias veces, hay que establecer una conexión mediante el objeto Connection.También puede establecer una conexión con una base de datos pasando una cadena de conexión a través de un objeto Command o registros.Sin embargo, este tipo de conexión sólo es buena para una consulta específica, única.

Objeto Connection

Programa

Public Function AccederBD() As ADODB.ConnectionDim sCad As String On Error GoTo errorAbrindo sCad = "Driver={MySQL ODBC 5.2w Driver};" & _ "Server=" & mvarServidor & ";" & _ "Port=" & mvarPuerto & ";" & _ "Database=" & mvarBaseDatos & ";" & _ "UID=" & mvarUsuario & ";" & _ "Password=" & mvarPasswd & ";" Set mvarConector = New ADODB.Connection mvarConector.CommandTimeout = 30 mvarConector.CursorLocation = 1 mvarConector.ConnectionString = sCad mvarConector.Open Set AccederBD = mvarConector Exit FunctionerrorAbrindo: Set AccederBD = Nothing Err.ClearEnd Function

Propiedades:

Propiedad Descripción

Attributes Establece o devuelve los atributos de un objeto Connection

CommandTimeout Establece o devuelve el número de segundos de espera al intentar ejecutar un comando

ConnectionString Establece o devuelve los detalles utilizados para crear una conexión a una fuente de datos

ConnectionTimeout Establece o devuelve el número de segundos de espera para una conexión se abra

CursorLocation Establece o devuelve la ubicación del servicio cursor

DefaultDatabase Establece o devuelve el nombre de la base de datos predeterminada

IsolationLevel Establece o devuelve el nivel de aislamiento

Mode Establece o devuelve el permiso de acceso proveedor

Page 30: Interface Design VB6 - Spanish.pdf

Provider Establece o devuelve el nombre del proveedor

State Devuelve un valor que describe si la conexión está abierta o cerrada

Version Devuelve el número de versión de ADO

Métodos

Método Descripción

BeginTrans Inicia una nueva transacción

Cancel Cancela una ejecución

Close Cierra una conexión

CommitTrans Guarda los cambios y finaliza la transacción actual

Execute Ejecuta una consulta de texto, declaración, procedimiento o proveedor específico

Open Abre una conexión

OpenSchema Devuelve información de esquema del proveedor acerca del origen de datos

RollbackTrans Cancela cualquier cambio en la transacción actual y finaliza la transacción

Eventos

Nota: No se puede controlar eventos mediante VBScript o JScript (sólo Visual Basic, Visual C + + y Visual J + + lenguas pueden manejar eventos).

Evento Descripción

BeginTransComplete Se activa después de la operación BeginTrans

CommitTransComplete Se activa después de la operación CommitTrans

ConnectComplete Se activa después de una conexión comienza

Disconnect Se activa después de una relación termina

ExecuteComplete Se activa después de que un comando ha terminado de ejecutarse

InfoMessage Se activa cuando se produce una advertencia durante una operación de ConnectionEvent

RollbackTransComplete Se activa después de la operación RollbackTrans

WillConnect Se activa antes de que una conexión se inicia

WillExecute Se activa antes de que se ejecute un comando

Objeto Command El objeto Command de ADO se utiliza para ejecutar una consulta contra una base de datos única.La

consulta se puede realizar acciones como crear, agregar, recuperar, eliminar o actualizar registros.

Si la consulta se utiliza para recuperar los datos, los datos se devuelven como un objeto RecordSet. Esto

significa que los datos recuperados pueden ser manipulados por las propiedades, colecciones, métodos y

eventos del objeto Recordset.

La principal característica del objeto Command es la capacidad de utilizar las consultas y procedimientos

almacenados con parámetros.

Programa:

Public Function LeerMiBD(miTabla As String, Optional campoAleer As String, Optional valorCampoAleer As String) As ADODB.Recordset Dim cRex As ADODB.Recordset Dim cCmd As ADODB.Command Set cCmd = New ADODB.Command cCmd.ActiveConnection = mvarConector cCmd.CommandType = 1

Page 31: Interface Design VB6 - Spanish.pdf

If Trim(campoAleer) <> "" And Trim(valorCampoAleer) <> "" Then cCmd.CommandText = "select * from " & miTabla & _ " where " & campoAleer & " = " & valorCampoAleer Else cCmd.CommandText = "select * from " & miTabla End If Set cRex = New ADODB.Recordset cRex.Open cCmd, , adOpenDynamic, adLockOptimistic Set LeerMiBD = cRexEnd Function

Propiedades

Propiedad Descripción

ActiveConnection Establece o devuelve una definición para una conexión si la conexión está cerrada, o el objeto de conexión actual si la conexión está abierta

CommandText Establece o devuelve un comando de proveedor

CommandTimeout Establece o devuelve el número de segundos de espera al intentar ejecutar un comando

CommandType Establece o devuelve el tipo de un objeto Command

Name Establece o devuelve el nombre de un objeto Command

Prepared Establece o devuelve un valor booleano que, si se establece en True, indica que el comando debe guardar una versión preparada de la consulta antes de la primera ejecución

State Devuelve un valor que describe si el objeto Command es abierto, cerrado, la conexión, la ejecución o la recuperación de datos

Métodos

Método Descripción

Cancel Cancela la ejecución de un método

CreateParameter Crea un nuevo objeto Parameter

Execute Ejecuta la consulta SQL o procedimiento en la propiedad CommandText

Colecciones

Colección Descripción

Parameters Contiene todos los objetos de los parámetros de un objeto de comando

Properties Contiene todos los objetos de propiedad de un objeto de comando

Objeto RecordsetEl objeto ADO Recordset se utiliza para mantener un conjunto de registros de una tabla de base de datos.

Un objeto Recordset constará de registros y las columnas (campos).

En ADO, este objeto es el más importante y el más usado para manipular los datos de una base de datos.

Programa:

Dim cRex As ADODB.Recordset Dim inDex As String Set cRex = miA.LeerMiBD(tablaBD, "cliId", _frmListaClientes.lvClientes.SelectedItem.Text)

If cRex.EOF = False Then

Page 32: Interface Design VB6 - Spanish.pdf

' estas sentencias se ejecutan mientras no se llegue al final de los campos 'del registro RECORDSET leido' el puntero del registro cRex esta apuntando en este caso al primero de los 'registros en la BD' si deseasemos leer una nueva fila de la tabla, debemos hacer un 'cRex.MoveNext para apuntar al next frmClientes.TxtDatos(0) = cRex.Fields("cliId") frmClientes.TxtDatos(1) = cRex.Fields("cliComent") frmClientes.TxtDatos(2) = cRex.Fields("cliApe") frmClientes.TxtDatos(3) = cRex.Fields("cliNome") frmClientes.TxtDatos(4) = cRex.Fields("cliDir") frmClientes.TxtDatos(5) = cRex.Fields("cliPoblacion") frmClientes.TxtDatos(6) = cRex.Fields("cliCP")' con estas sentencias asignamos cada campo (fields(id)) DEL RECORDSET a la 'caja de texto correspondiente de nuestro formulario End If

Al abrir por primera vez un conjunto de registros, el puntero del registro actual apuntará al primer registro y las propiedades BOF y EOF son falsas. Si no hay registros, las propiedades BOF y EOF son True .

Objetos Recordset admite dos tipos de actualizaciones:

• Actualización inmediata - todos los cambios se escriben inmediatamente en la base de datos una vez que se llama al método Update.

•La actualización por lotes- el proveedor almacenará en caché múltiples cambios y luego enviarlos a la base de datos con el método UpdateBatch.

En ADO hay 4 diferentes tipos de cursores definidos:

•Dynamic cursor - Le permite ver las adiciones, cambios y eliminaciones por otros usuarios.

•Keyset cursor - Al igual que un cursor dinámico, excepto que usted no puede ver las adiciones por otros usuarios, e impide el acceso a los registros que otros usuarios han sido eliminados. Cambios en los datos de otros usuarios todavía será visible.

•Static cursor- Proporciona una copia estática de un conjunto de registros para que usted pueda utilizar para encontrar datos o generar informes. Las adiciones, cambios o supresiones de otros usuarios no será visible. Este es el único tipo de cursor permite cuando se abre un objeto Recordset de cliente.

•Forward-only cursor - Le permite desplazarse hacia delante sólo a través del Recordset. Las adiciones, cambios o supresiones de otros usuarios no será visible.

El tipo de cursor se puede establecer mediante la propiedad CursorType o por el parámetro CursorType en el método Open.

Nota: No todos los proveedores soportan todos los métodos y propiedades del objeto Recordset.

Propiedades

Propiedad Descripción

AbsolutePage Establece o devuelve un valor que especifica el número de página en el objeto Recordset

AbsolutePosition Establece o devuelve un valor que especifica la posición ordinal del registro actual en el objeto Recordset

ActiveCommand Devuelve el objeto Command asociado con el conjunto de registros

ActiveConnection Establece o devuelve una definición para una conexión si la conexión está cerrada, o el objeto de conexión actual si la conexión está abierta

BOF Devuelve true si la posición del registro actual es antes del primer registro, de lo contrario falso

Bookmark Establece o devuelve un marcador. El marcador guarda la posición del registro actual

Page 33: Interface Design VB6 - Spanish.pdf

CacheSize Establece o devuelve el número de registros que se pueden almacenar en caché

CursorLocation Establece o devuelve la ubicación del servicio cursor

CursorType Establece o devuelve el tipo de cursor de un objeto Recordset

DataMember Establece o devuelve el nombre del miembro de datos que se recupera del objeto al que hace referencia la propiedad DataSource

DataSource Especifica un objeto que contiene datos que se representa como un objeto Recordset

EditMode Devuelve el estado de edición del registro actual

EOF Devuelve true si la posición del registro actual es posterior al último registro, de lo contrario falso

Filter Establece o devuelve un filtro para los datos en un objeto Recordset

Index Establece o devuelve el nombre del índice actual de un objeto Recordset

Locktype Establece o devuelve un valor que especifica el tipo de bloqueo al editar un registro en un Recordset

MarshalOptions Establece o devuelve un valor que especifica qué registros deben ser devueltos al servidor

MaxRecords Establece o devuelve el número máximo de registros para devolver un objeto Recordset desde una consulta

PageCount Devuelve el número de páginas de datos en un objeto Recordset

PageSize Establece o devuelve el número máximo de registros permitidos en una sola página de un objeto Recordset

RecordCount Devuelve el número de registros en un objeto Recordset

Sort Establece o devuelve los nombres de campo en el conjunto de registros para ordenar

Source Establece un valor de cadena o una referencia de comandos de objeto, o devuelve un valor de tipo String que indica el origen de datos del objeto Recordset

Estate Devuelve un valor que describe si el objeto Recordset está abierto, cerrado, la conexión, la ejecución o la recuperación de datos

Estatus Devuelve el estado del registro actual con respecto a las actualizaciones por lotes u otras operaciones a granel

StayInSync Establece o devuelve si la referencia a los registros secundarios cambiará cuando los padres los cambios de posición de registro

Métodos

Método Descripción

AddNew Crea un nuevo registro

Cancel Cancela una ejecución

CancelBatch Cancela una actualización por lotes

CancelUpdate Cancela los cambios realizados en un registro de un objeto Recordset

Clone Crea un duplicado de un objeto Recordset existente

Close Cierra un conjunto de registros

CompareBookmarks Compara dos marcadores

Delete Borra un registro o un grupo de registros

Find Busca un registro en un conjunto de registros que cumple con los criterios especificados

GetRows Copias múltiples registros de un objeto Recordset en una matriz de dos dimensiones

GetString Devuelve un conjunto de registros como una cadena

Move Mueve el puntero de registro de un objeto Recordset

MoveFirst Mueve el puntero de registro al primer registro

MoveLast Mueve el puntero de registro al último registro

MoveNext Mueve el puntero de registro al registro siguiente

MovePrevious Mueve el puntero de registro al registro anterior

Page 34: Interface Design VB6 - Spanish.pdf

NextRecordset Borra el objeto Recordset actual y devuelve el objeto Recordset siguiente por recorrer a través de una serie de comandos.

Open Abre un elemento de base de datos que da acceso a los registros de una tabla, los resultados de una consulta, o para un conjunto de registros guardado

Requery Actualiza los datos en un conjunto de registros de volver a ejecutar la consulta que hizo el conjunto de registros originales

Resync Actualiza los datos del conjunto de registros actual de la base de datos original

Save Guarda un objeto Recordset en un archivo o un objeto Stream

Seek Busca el índice de un conjunto de registros para buscar un registro que coincida con los valores especificados

Supports Devuelve un valor booleano que define si un objeto Recordset admite un tipo específico de funcionalidad

Update Guarda todos los cambios realizados en un solo registro de un objeto Recordset

UpdateBatch Guarda todos los cambios en un conjunto de registros a la base de datos. Se usa cuando se trabaja en modo de actualización por lotes

Eventos

Nota: No se puede controlar eventos mediante VBScript o JScript (sólo Visual Basic, Visual C + + y Visual J + + lenguas pueden manejar eventos).

Evento Descripción

EndOfRecordset Se activa cuando se intenta mover a un registro después del último registro

FetchComplete Se activa después de que todos los registros de una operación asincrónica se han exagerado

FetchProgress Se activa periódicamente en una operación asincrónica, para indicar cuántos registros que se han exagerado

FieldChangeComplete Se activa después de que el valor de un cambio objeto Field

MoveComplete Se activa después de la posición actual en el conjunto de registros ha cambiado

RecordChangeComplete Se activa después de un registro ha cambiado

RecordsetChangeComplete Se activa después de que el conjunto de registros ha cambiado

WillChangeField Se activa antes de que el valor de un cambio objeto Field

WillChangeRecord Se activa ante un cambio de registro

WillChangeRecordset Se activa antes de un cambio de registros

WillMove Se activa antes de la posición actual en los cambios de registros

Colecciones

Colección Descripción

Fields Indica el número de objetos Field en el objeto Recordset

Properties Contiene todos los objetos propiedad del objeto Recordset

Propiedades de Fields del Recordset

Propiedad Descripción

Count Devuelve el número de elementos de la colección de campos.Empieza en cero.

Ejemplo:

countfields = cRex.Fields.Count

Page 35: Interface Design VB6 - Spanish.pdf

Item (named_item / número) Devuelve un elemento especificado en la colección de campos.

Ejemplo:

itemfields = cRex.Fields.Item (1)

o

itemfields = cRex.Fields.Item ("Nombre")

Propiedades de Properties del Recordset

Propiedad Descripción

Count Devuelve el número de elementos de la colección de campos.Empieza en cero.

Ejemplo:

countprop=cRex.Properties.Count

Item (named_item / número) Devuelve un elemento especificado en la colección de campos.

Ejemplo:

itemprop = cRex.Properties.Item(1)

o

itemprop=cRex.Properties.Item("Name")

Fuentes y enlaces de interés:http://www.recursosvisualbasic.com.ar (documentación y el formato del documento)

http://www.elguille.info/vb/cursos_vb/basico/indice.htm (documentación)

http://www.w3schools.com/ado (para objetos ADO)

http://www.aivosto.com/vbtips/regex.html (para expresiones regulares)

http://www.vb6.us/ (documentación sobre VB6)

http://msdn.microsoft.com/en-us/library/kehz1dz1%28v=vs.80%29.aspx (msdn en línea)

Todos los proyectos realizados en clase. (código y capturas)