Você está na página 1de 13

INDICE:

1) Finalidad del Cuadro de Dilogo Comn................................................................Pag. 2 2) Constantes e indicadores (Flags) de control................................................................Pag. 4 3) La Pgina de Propiedades del Commondialog..... .......................................................Pag. 6 3.1) La Propiedad Filter...................................................................................................Pag. 6 4) Indicadores (Flags) y propiedades del cdigo..............................................................Pag. 8 4.1) Detectar la cancelacin............................................................................................Pag. 10 5) Objeto del Sistema de Archivo....................................................................................Pag. 11

Los secretos del cuadro de dilogo comun de Windows


En este tutorial describiremos la forma de utilizar la Versin 6 del control ActiveX los cuadros de dilogo comunes. Este control se encuentra en la lista del cuadro de dilogo Componentes como Microsoft Common Dialog Control 6.0. Usualmente se le denomina familiarmente como el control de cuadros de dilogo comunes.

LA FINALIDAD DEL CONTROL DEL CUADRO DE DILOGO COMN Obviamente, el primer paso para utilizar un control de dilogo comn es agregarlo proyecto. Para ello se accede al cuadro de dilogo Componentes y se aade Microsoft common Dialog Control 6.0 a la barra de herramientas (si no estuviese ya all). Una vez que se ha agregado el cuadro de control a la barra de herramientas, doble clic para incluirlo en su proyecto. El control de los cuadros de dilogo comn funciona como wrapper, o intermediario, entre Visual Basic y las funciones de biblioteca en la biblioteca de vnculos dinmicos comdlg32.dll. Este archivo debe estar situado en el directorio Windows\System bajo Windows 95 y en el directorio WinNT\System bajo Windows NT 4. El nombre de archivo del control es Comdlg32.0cx. La idea es hacer que sea fcil para los programadores de Visual Basic (y para otros) acceder a esas funciones usando propiedades de control asignadas virtualmente en tiempo de diseo en el Visor de propiedades, o con una cantidad nominal de digo. Una ventaja de tener los cuadros de dilogo comunes fcilmente disponibles la estandarizacin: Cuando el usuario realiza una tarea familiar, como guardar un archivo en el disco, abrir un cuadro de dilogo familiar que lo har. Es probable que lo sepa, pero vale la pena indicarlo de todas formas: por s mismos, los cuadros de dilogo comunes no hacen nada ms que presentar una pantalla desde la cual el usuario puede seleccionar opciones. Si el usuario escoge guardar u archivo particular, seleccionar una fuente, y as sucesivamente, el desarrollador tendr que conectarlo, es decir, agregar el cdigo que realice la tarea en cuestin. En general, Comdlg32.0cx funciona bastante bien. Hay seis cuadros de dilogo comunes que puede abrir en aplicaciones de 32 bits de Windows utilizando el control Comdlg32.0cx (vase tabla de la pgina siguiente).

Comdlg32.0cx no es un control de las ventanas, lo que significa que aparte del icono del Cuadro de herramientas que sita en el formulario, por s mismo no dibuja nada en la pantalla ni en tiempo de diseo ni en tiempo de ejecucin. (Un ejemplo de un control sencillo que se presenta en una ventana es el botn de comando. La apariencia en tiempo de diseo de un botn de comando cambia dependiendo de las selecciones del programador; en tiempo de ejecucin su apariencia puede cambiar dependiendo del diseo, de la programacin, y de las selecciones del usuario).

Tabla: Cuadros de dilogo comunes. Cuadro de dilogo Mtodo para abrir Equivalencia de la accin

Color Fuente Abre WinHelp con el archivo y tema de Ayuda especificado Abrir archivo Imprimir Archivo, Guardar como

ShowColor ShowFont ShowHelp

3 4

6 ShowOpen ShowPrinter ShowSave 1 5 2

Debe saber tambin que no dispone en absoluto de ningn control sobre en qu parte de la pantalla decide Comdlg32.0cx situar el cuadro de dilogo que ha abierto el usuario.

CONSTANTES E INDICADORES (FLAGS) DE CONTROL Tanto si asigna el control de los cuadros de dilogo comunes usando la ventana Propiedades o en el cdigo (ambas formas se describen ms adelante en este captulo), algunos de los aspectos ms importantes del cuadro de dilogo que va a abrirse estn determinados por su propiedad .Flags, por ejemplo, CommonDialog1.Flags El valor de la propiedad .Flags est constituido por valores enteros largos (tipo Long) que pueden ser agregados a la vez para combinar los atributos. (Esto funciona de la misma forma que la funcin MsgBox). Los valores pueden ser expresados como enteros, o, si estn declarados, por sus equivalentes de constante. Veremos ms de todo esto en un momento, pero lo ultime es la mejor prctica puesto que hace que sea mucho ms aparente lo que se espera que haga el cdigo.

Por ejemplo, CommonDialg1.Flags = cdlOFNOverWritePrompt + _ cdlOFNHelpButton + cdlOFNPathMustExist CommonDialog1.ShowSave Hace que el cuadro de dilogo Guardar como se abra con un botn de Ayuda sobre l. Este cuadro de dilogo generar un aviso antes de permitir que el usuario seleccione un archivo que ya existe y no permitir al usuario que introduzca una trayectoria que no exista (vase figura 7.3). Se podra, desde luego, usar el equivalente numrico de las constantes de indicador para obtener el mismo efecto: CommonDialog.Flags = 2066 2066 = 2 + 16 + 2048 Pero creemos que estar de acuerdo en que el significado de la primera instruccin es bastante ms claro. De dnde proceden los valores de las constantes de la propiedad .Flags?. CUANDO se incluye en el proyecto el control del cuadro de dilogo comn, puede utilizar automticamente las expresiones constantes del cdigo sin tener que preocuparse por sus valores.

Tambin puede usar el cuadro de dilogo Pginas de propiedades (o ventana Propiedades) para el control en el tiempo de diseo para asignar muchos valores de las propiedades del control. Sin embargo, para asignar el valor de la propiedad Flags en la ventana Propiedades en tiempo de diseo, necesitar conocer el valor numrico de cada constante (puede usar tanto la notacin decimal como la hexadecimal). Existen tres fuentes para los valores y los significados de las constantes del indicador Flag: La ayuda en lnea de VB bajo CommonDialog, (Constantes de control). La ayuda en lnea de VB bajo Flags, Propiedad y, despus, bajo cada tipo diferente de cuadro de dilogo. El Examinador de objetos, bajo MSComDlg - Microsoft CommonDialog Control, presenta una lista de las constantes con sus valores decimales (y hexadecimales) enteros correctos.

NOTA: Para obtener el cuadro de dilogo Fuentes, para mostrar las fuentes, debe asignar primero la propiedad .Flags del cuadro de dilogo comn para incluir un valor constante que le diga que muestre las fuentes. Por ejemplo: CommonDialog.Flags = cldCFBoth Le indica al cuadro de dilogo comn que muestre tanto las fuentes de la pantalla como las de la impresora. Si no enva primero al control un indicador para mostrar una fuente recibir un mensaje de error cdlNoFonts, sabiendo que tiene montones de fuentes instaladas en su sistema.

LA PGINA DE PROPIEDADES DEL COMMONDIALOG


Es fcil usar la ventana Propiedades para asignar las propiedades de un cuadro dilogo comn y los indicadores sin usar cdigo. Todo lo que hay que hacer es asignar las propiedades, ya sea en la ventana Propiedades, o en el cuadro de dilogo Pgina de propiedades. Observar que los valores introducidos de una forma son automticamente introducidos de la otra. Por ejemplo, si cambia la propiedad .DialogTitle a Guardar archivos de El Mago, cuando abra el cuadro de dilogo personalizado, el cuadro entrada DialogTitle tendr tambin el valor Guardar archivo de El Mago. Observe que la propiedad .Flags, que debe ser introducida como un entero, es una vez ms 2066, lo que significa: cdlOFNOverWritePromt + cdlOFNHelpButton + cdlOFNPathMustExist

Abrir el cuadro de dilogo con las propiedades e indicadores que ha introducido ocupa slo una lnea de cdigo: CommonDialogo.ShowOpen Se abrir entonces un cuadro de dilogo comn, configurado en la forma en que se han asignado las propiedades y los indicadores. LA PROPIEDAD FILTER La propiedad Filter gobierna el contenido de los archivos del cuadro de lista Guardar como tipo que aparece en la parte inferior de los cuadros de dilogo Archivo, Guardar como y Archivo, Abrir. Esta es una parte importante de este tipo de funcionalidad de cuadros de dilogo comunes, y las sintaxis de esta propiedad es bastante confusa, continuacin se muestra como funciona. Como se representa en la figura 7.5, introduciendo la propiedad .Filter en el visor Archivos de proyectos Visual Basic (*.vbp) | .vbp | All Todos los Archivos (*.*) produce el cuadro de lista Guardar como tipo, de la figura 7.6. Desde luego, puede
introducir esto en el cdigo como una cadena de letras y tendr el mismo efecto:

Dim Fstring as string ... Fstring = Archivos de proyecto Visual Basic (*.Vbp) | *.vbp I Todos _ Los archivos (*.*) | *.* CommonDialog1 . filter = Fstring

Supongamos, como experimento que agrega un carcter en blanco al final de la instruccin Fstring: Aunque la opcin Todos los archivos (*.*) aparecer en el cuadro de lista Guardar como tipo, cuando seleccione esta opcin, no aparecer en realidad ningn archivo Qu est pasando?. La sintaxis del literal de la cadena que es equivalente, de una u otra forma, a la propiedad ,Filter es: Desc1 | filtro | Desc2 | filtro | ...DescN | filtro Las descripciones pueden ser cualesquiera que desee; no tienen por qu incluir los parmetros convencionales que contengan el filtro del archivo, por ejemplo TODOS los archivos (*,*). El signo I es, desde luego, el smbolo ASCII 124. Los filtros son filtros comodines de archivos, introducidos en una sintaxis DOS estndar, por ejemplo, *.txt *.Doc, *.Frm, y as sucesivamente. Aqu est el punto importante: no puede haber espacios entre el filtro y el carcter I, o despus del ltimo filtro.

INDICADORES (FLAGS) Y PROPIEDADES DEL CDIGO


Por muy divertido que sea el diseo visual de la programacin en VB, algunos de nosotros somos muy quisquillosos y preferimos programar en cualquier oportunidad que tengamos. Los codificadores que lo deseen pueden introducir fcilmente todas las propiedades e indicadores de los cuadros de dilogo comunes en cdigo en lugar de a travs de la ventana Propiedades. La ventaja principal de este planteamiento es que se puede programar en forma dinmica cuadros de dilogo comunes de forma que su apariencia y caractersticas pueda cambiar en tiempo de ejecucin. Si se establecen en el cdigo los cuadros de dilogo comunes, uno de ellos puede adoptar varias formas, haciendo aparecer una vez un nombre de archivo por defecto, y otra vez otro nombre de archivo por defecto. El mismo control de cuadro de dilogo comn puede ser abierto como cada uno de los seis tipos de cuadros de dilogo que contiene. Otra opcin, si est a favor de trabajar directamente con las API de Windows, es pasar por alto Comdlg32.0cx y usar las funciones que forman parte de Comdlg32.DII. Hay algunas ventajas para hacerlo, incluyendo un archivo menos que distribuir en tiempo de ejecucin (el control del cuadro de dilogo comn). Sin embargo, la programacin en s puede resultar muy compleja e implica trabajar con el tipo OPENFILENAME. Aunque esto no es imposible, hemos incluido las definiciones del tipo, de forma que pueda ver lo que le evita pensar el control del cuadro de dilogo comn: Listado 7.1. Definicin del tipo OPENFILENAME. Type Open FiLenAME LstructSize As Long HwndOwner As Long HInstance As Long IpstrFilter As String LpstrCustomFilter As String nMaxCustFilter As Long nFilterindex As Long LpsirFile As String

nMaxFile As Long LpstrFileTitle As String nMaxFileTitle As Long LpstrInitialDir As String LpstrTitle As String flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long IpfnHook As Long IpTemplateName As String End Type

La propiedad HelpCommand del cuadro de dilogo se puede utilizar para determinar la forma en que se va a mostrar un archivo de ayuda. Si selecciona MsComDlig, ver en su explorador de objetos una lista con todas las constantes de ayuda con las que puede trabajar. Por ejemplo, si se configura HelpCommand para que incluya cdIHelpForceFile, el archivo de ayuda nicamente utilizar una fuente. Si HelpCommand incluye la constante predeterminada cdIHelpIndex, se mostrar el ndice del archivo,

DETECTAR LA CANCELACIN
Cuando se programa con los cuadros de dilogo comunes, es importante a menudo saber si el usuario ha salido del cuadro de dilogo pulsando el botn Cancelar es as, el usuario ha decidido no continuar con la accin que se contempla en el cuadro de dilogo, y debern ser ignorados todos los valores nuevos asignados en el cua de dilogo. (A propsito, para todos los cuadros de dilogo excepto para ShowHelp cerrarlo haciendo clic en el botn Cerrar (X) de la barra de ttulo de la ventana del cuadro de dilogo se considera como equivalente a pulsar el botn Cancelar.) A continuacin se indica cmo agregar cdigo para la cancelacin del programa del ejemplo. En primer lugar, antes de abrir ningn cuadro de dilogo, asigne la propiedad .CancelError del cuadro de dilogo comn como True (verdadero). (Puede hacerlo en la ventana Propiedades as como en el cdigo.) Si .CancelError se asigna con True, la cancelacin del usuario genera un error, cdlCancel(&H7FF3&). Agregue una ramificacin para el manejo de error a continuacin de la instruccin CancelError: CommonDialog1.CancelError = True un Error GoTo ErrHandIer Finalmente, agregue el cdigo para restablecer el manejo del error y ocuparse {handle, manejar) el error cdICancel: End Select On Error GoTo O Restablece el manejo del error El usuario no ha pulsado cancelar. Tome alguna accin con el valor del cuadro de dilogo. Exit Sub ErrHandIer: If Err = cdICancel Then MsgBox El usuario ha pulsado Cancelar - ignora los valores _ del cuadro de dilogo comn End If End Sub La instruccin On Error GoTo O a la que se llega despus de utilizar con xito uno de los cuadros de dilogo comunes, desactiva cualquier manejador de errores en el procedimiento actual. A propsito, podra usar la etiqueta ErrHandIer para capturar otros errores de los cuadros de dilogo comunes adems de cdICancel. Para ver una lista completa de constantes de error de cuadros de dilogo comunes, puede utilizar el Examinador de objetos (vea los miembros de la clase ErrorConstants de la biblioteca MSComDlg), o consulte la ayuda en lnea de VB bajo CommonDialog (Constantes de error).

OBJETOS DEL SISTEMA DE ARCHIVOS


Con Visual Basio 6 puede utilizar los componentes de los objetos de FileSystem de VBA para manipular archivos, directorios y sistemas con la misiva abstraccin que con el wrapper de dilogo. Si desea obtener ms informacin sobre los c FileSystem, abra el Explorador de objetos pulsando F2 o a travs del men Ver). El listado 7.3 le ensea cmo puede mostrar el contenido de los registros Fecha y Hora de un archivo determinado utilizando el control de dilogo. Private Sub Command1_Click() CommonDialog1.CancelError = True On Error GoTo Trampa CommonDialog1.DialogTitle = Archivos de El Mago CommonDialog1.Filter = Archivos de Visual Basic(*.vbp)|*.vbp | *.visual Basic group file(*.vbg)|*.vbg | todos los archivos (*.*)|*.* CommonDialog1.Flags = 2095172 + 4096 CommonDialog1.ShowOpen On Error GoTo 0 MsgBox Format(FileDateTime(CommonDialog1.FileName), long date), , Ejemplo de FileSistem Exit Sub Trampa: If Err = cdlCancel Then MsgBox el usuario presion cancelar, , Ejemplo de FileSistem

End If

End Sub La siguiente tabla muestra los miembros de fileSystem

ChDir ChDrive CurDir

Cambi al directorio predeterminado. Cambia al disco predeterminado. Muestra la ruta.

Dir Muestra el nombre del archivo, directorio o carpeta solicitada EOF Muestra un valor booleano con el que se indica si se ha alcanzado el final archivo. FileAttr Muestra un modo de archivo para todos los que se han abierto con la declaracin Open. FileCopy FileDateTime FileLen FreeFile Copia un archivo. Muestra el sello fecha/hora. Muestra la longitud de un archivo en bytes. Muestra el siguiente nmero disponible de los que se pueden utilizar con la declaracin Open.

GetAttr Muestra los atributos de un archivo, directorio o carpeta. Kill Loc LOF Elimina un archivo. Muestra la posicin dentro de un archivo. Muestra el tamao en bytes del archivo abierto.

MkDir Crea un directorio. Reset Cierra todos los archivos abiertos. RMDir Seeks SetAttr Borra un directorio. Determina o muestra la posicin dentro de un archivo. Determina la informacin de los atributos.

Bibliografa: DAVIS, Harold Visual Basic 6 a Fondo Madrid 1.999

Realizado por -  =C , Agosto 2.002

http://magicbasic.iespana.es

Você também pode gostar