39
Visual Basic - Guía del Estudiante Cap. 3 Controles (Continuación) El CommonDialog CONTROLES DE BUSQUEDA DE FICHEROS El CommonDialog es un control del que se libran muy pocas aplicaciones. Dada la importancia de este control, se le dedicaba en versiones anteriores de la Guía del Estudiante un capitulo único. En esta edición se le a anexado el estudio sobre los controles para la búsqueda de ficheros. El conocimiento de este capítulo es fundamental si desea llegar a ser un buen programador de VB. CUADRO DE DIALOGO CommonDialog Normalmente se encuentra en la caja de herramientas Este control no se presenta en tiempo de diseño mas que con un simple icono : El cuadro de diálogo, CommonDialog se utiliza para varias funciones : Abrir Ficheros Guardar Ficheros Elegir colores Seleccionar Impresora Seleccionar Fuentes LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 1

Capitulo 3 Visual Basic

Embed Size (px)

DESCRIPTION

Manual de Visual Basic

Citation preview

Page 1: Capitulo 3 Visual Basic

Visual Basic - Guía del Estudiante Cap. 3

Controles (Continuación) El CommonDialogCONTROLES DE BUSQUEDA DE FICHEROS

El CommonDialog es un control del que se libran muy pocas aplicaciones. Dada la importancia de este control, se le dedicaba en versiones anteriores de la Guía del Estudiante un capitulo único. En esta edición se le a anexado el estudio sobre los controles para la búsqueda de ficheros. El conocimiento de este capítulo es fundamental si desea llegar a ser un buen programador de VB.

CUADRO DE DIALOGO CommonDialog

Normalmente se encuentra en la caja de herramientas

Este control no se presenta en tiempo de diseño mas que con un simple icono :

El cuadro de diálogo, CommonDialog se utiliza para varias funciones :

Abrir Ficheros Guardar Ficheros Elegir colores Seleccionar Impresora Seleccionar Fuentes

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 1

Page 2: Capitulo 3 Visual Basic

CommonDialog mostrando la función Abrir. Nótese el icono para crear nueva carpeta, objeto del comentario siguiente.En realidad el cuadro de diálogo permite conocer datos con los cuales, y mediante el código adecuado, abriremos o guardaremos ficheros, elegiremos colores o seleccionaremos fuentes. Es decir, el CommonDialog NO realiza mas funciones que mostrar ficheros existentes, fuentes disponibles, colores, para que, mediante código, abramos esos ficheros o usemos una determinada fuente.

La expresión anterior se ha recuadrado porque ya no es completamente cierta. El CommonDialog no es un control propio de Visual Basic, sino de Windows. Y la versión de este control que Windows pone en W98 permite que pueda crear una nueva carpeta. Ya hace algo directamente. No se extrañe que el CommonDialog empleado en su aplicación pueda crear una nueva carpeta sin que Vd. lo haya diseñado para eso. Al introducir el control en la aplicación está introduciendo la versión más moderna del mismo.

Dependiendo de la aplicación para la que vaya a usarse se deberá activar de distintas formas. Si el cuadro de diálogo se va a usar para seleccionar la impresora y para otras aplicaciones, es recomendable usar uno exclusivamente para seleccionar la impresora.Esta última recomendación se debe a que, para el control de la impresora, el CommonDialog SI realiza las funciones de selección de impresora predeterminada. Esta diferencia operativa hace que si usamos el mismo CommonDialog para seleccionar impresora y abrir ficheros, por ejemplo, se “cuelgue” el CommonDialog.

El control CommonDialog es un control personalizado (Microsoft CommonDialog Control COMDLG32.OCX), y como casi todos los controles personalizados presenta un asistente de propiedades propio. Puede accederse a las propiedades mediante el cuadro de propiedades típico de otros controles, o mediante el asistente, pulsando el botón derecho del ratón con el puntero colocado encima del icono del cuadro de diálogo.

Analizando las propiedades, vemos que tiene gran cantidad de ellas. Esto es porque agrupa todas las propiedades correspondientes a la cinco funciones que puede desarrollar. Se detalla a continuación la forma de usar el CommonDialog para cada aplicación.

Se entiende que el nombre - Name - que se ha puesto para el cuadro de diálogo en todos los ejemplos es CD1)

CUADRO DE DIALOGO MOSTRANDO FUENTES

Para mostrar el cuadro de diálogo correspondiente a Tipos de Letra ( Fonts ), debe ejecutarse la instrucción:

CD1.ShowFont

y haber puesto, en la propiedad Flags del cuadro de diálogo, el valor de 1, 2 ó 3, correspondiente respectivamente a los tipos de letra de la pantalla, de la impresora o ambos. (Véase la propiedad Flags mas adelante) Si no pone uno de estos valores, le dirá que no tiene fuentes instaladas.

Los valores que se pueden obtener de este cuadro de dialogo son:

CD1.FontName Indica el nombre de la fuenteCD1.FontSize Indica el tamaño de la fuenteCD1.Color Indica el color de la fuente (Abrir con Flags=256+1, 2 ó 3)CD1.FontBold = (True / False) Si es True, se ha elegido "Negrita"CD1.FontItalic = (True / False) Si es True, se ha elegido "Cursiva"CD1.FontStrikethru = (True / False) Si es True, se ha elegido "Tachada "

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 2

Page 3: Capitulo 3 Visual Basic

CD1.FontUnderline = (True / False) Si es True, se ha elegido "Subrayada"Si se elige una versión Negrita Cursiva serían True las opciones FontBold y FontItalic

El cuadro de diálogo que se presenta es el siguiente: (CommonDialog Mostrando fuentes, con la propiedad Flags = 263)

El objeto Font no puede aplicarse al CommonDialog. Es decir, no podemos poner :Variable = CD1.Font.Size sino Variable = CD1.Fontsize

En el ejemplo que acompaña a este capítulo, puede ver como se introducen las características de una determinada fuente elegida en un cuadro de texto.

Programa de ejemplo. Mediante un CommonDialog elegimos el tipo de letra de un TextBox (TbPrueba) y escribimos un texto de prueba con todas las letras del abecedario.

Private Sub BMostrarFonts_Click()CD1.Flags = 259'Muestra las fuentes de la pantalla (1), las de la impresora (2)y muestra las opciones de'tachado, subrayado y color (256) 1 + 2 + 256 = 259CD1.ShowFontTbPrueba.FontName = CD1.FontNameTbPrueba.FontSize = CD1.FontSizeTbPrueba.FontBold = CD1.FontBoldTbPrueba.FontItalic = CD1.FontItalicTbPrueba.FontUnderline = CD1.FontUnderlineTbPrueba.FontStrikethru = CD1.FontStrikethru If TbPrueba = "" Then TbPrueba = "Texto de prueba" & vbCrLf & vbCrLf TbPrueba = TbPrueba & "The Quick Brown Fox Jumps Over The Lazy Dog 1234567890" End IfEnd Sub

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 3

Page 4: Capitulo 3 Visual Basic

CUADRO DE DIALOGO MOSTRANDO COLOR

Para mostrar el cuadro de diálogo correspondiente al color, se deberá ejecutar la instrucción:

CD1.ShowColor

El cuadro de diálogo puede tener una de estas dos formas (Dependiendo de su propiedad Flags):

(Si la parte derecha del cuadro no sale, se saca haciendo click en Definir colores personalizados.)

El número correspondiente al color elegido se puede conocer analizando la propiedad color de cuadro de diálogo. En nuestro ejemplo, lo obtendríamos con

Variablecolor = CD1.Color

donde Variablecolor contendrá un número correspondiente al color elegido. Variablecolor debe declararse como tipo Long

Programa de ejemplo. Mediante un CommonDialog elegimos el color de fondo de un TextBox (TbPrueba).

Private Sub BColores_Click()CD1.Flags = 2'Hace que el cuadro de diálogo se muestre completoCD1.ShowColorTbPrueba.BackColor = CD1.ColorEnd Sub

Nota acerca del número del color.

Para establecer un color por medio de código, se pondrá un valor de color a la propiedad correspondiente de ese objeto. El valor del color puede establecerse de tres formas que se comentan a continuación.

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 4

Page 5: Capitulo 3 Visual Basic

Colores en Visual Basic.

Visual Basic acepta para especificar un color, tres procedimientos: Mediante el número de color, mediante la sentencia RGB ( rojo, verde, azul ) o mediante la función QBColor.

Por número

El número que representa el color en VB está formado por la suma de la componente roja, la componente verde y la componente azul. Podríamos verlo muy bien en numeración Hexadecimal:

Color = Hex XX YY ZZ

Donde ZZ es un número Hexadecimal que representa la cantidad del color rojo. El mínimo estaría en 0 (H00) y el máximo en 255 (HFF)

YY representaría la cantidad de color verde y XX la de color azul, ambos con los mismos límites explicados para el rojo.

Por ejemplo: el rojo puro sería: Hex(0000FF) = 255el verde puro sería: Hex(00FF00) = 652280el azul puro sería: Hex(FF0000) = 16711680

Una mezcla de un poco de rojo (HB1), otro poco de verde (H56) y otro poco de azul (H1F) daría el siguiente número:

Hex(1F56B1) = 2053809

El número de color puede estar comprendido entre 0 (correspondiente al negro) y el 16777215 (correspondiente al blanco. Observe que esa cantidad, 16.777.215 (FFFFFF en hexadecimal) corresponde a los famosos 16 millones de colores de las tarjetas gráficas.

Si queremos poner el color de fondo a un control Label, usaremos la propiedad Backcolor. Si el Label se llama Label1, pondríamos la instrucción

Label1.Backcolor = 12345678

Por la sentencia RGB

Se puede expresar el color, poniendo simplemente RGB (rojo, verde, azul), donde rojo es un número entre 0 y 255 que indica la cantidad de color rojo que se aporta al color, verde un número comprendido entre 0 y 255 indicando la cantidad de verde, y lo mismo para azul.Esta es la forma mas sencilla de poner la propiedad color, y con la que mejor controlaremos el mismo.

Si queremos poner al Label anterior un color mediante la sentencia RGB, ejecutaríamos la sentencia :

Label1.Backcolor = RGB (128, 30, 100)

Mediante la Función QBColor (Obsoleta. Se introduce por motivos de compatibilidad)

Esta función se ha puesto en Visual Basic para compatibilidad con los colores que se usan en Quick-Basic y Qbasic. Mediante esta función se obtienen solamente 16 colores.

Sintaxis Objeto.QBColor(color)

El argumento color es un número entero entre 0 a 15, según la siguiente lista:

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 5

Page 6: Capitulo 3 Visual Basic

NúmeroColor NúmeroColor

0 Negro 8 Gris1 Azul 9 Azul claro2 Verde 10 Verde claro3 Aguamarina 11 Aguamarina claro4 Rojo 12 Rojo claro5 Fucsia 13 Fucsia claro6 Amarillo 14 Amarillo claro7 Blanco 15 Blanco brillante

Para el mismo Label anterior, usaríamos la sentencia :

Label1.Backcolor = QBColor (12)

Fin de la nota acerca del número del color

CUADRO DE DIALOGO MOSTRANDO IMPRESORAS

Nota: Si utiliza un CommonDialog para impresoras y otras aplicaciones, puede tener problemas. Utilice un CommonDialog exclusivamente para impresoras.

Para presentar el cuadro de elección de impresora, ejecute la instrucción:

CD2.ShowPrinter

(A este cuadro de dialogo le hemos llamado CD2 para evitar los problemas referidos en la nota).

Aparecerá el siguiente cuadro de diálogo:

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 6

Page 7: Capitulo 3 Visual Basic

La impresora elegida puede conocerla llamando a la propiedad DeviceName de un objeto que aún no hemos visto: el objeto Printer. Este objeto es el encargado de pasar al Administrador de Impresión todos los trabajos de impresión que generen las aplicaciones Visual Basic:

Nombredelaimpresora = Printer.DeviceName

Para que la impresora quede como impresora por defecto de Windows, debe tener a True la propiedad PrinterDefault del cuadro de diálogo.

El cuadro mostrado para la impresora dependerá de la impresora que tenga instalada en su ordenador, por lo puede observar diferencias respecto a la figura mostrada anteriormente.

Programa Ejemplo. Muestra el cuadro de dialogo de impresoras

Private Sub BImpresora_Click()CD1.ShowPrinterEnd Sub

EL COMMONDIALOG PARA ABRIR Y GUARDAR ARCHIVOS

Posiblemente las opciones mas usadas del cuadro de diálogo. Para presentar el cuadro de diálogo correspondiente a Abrir Archivo, debe ejecutar la instrucción:

CD1.ShowOpen

Si lo que necesita es abrir el cuadro de diálogo para guardar un fichero, debe ejecutar la instrucción :

CD1.ShowSave

pero antes deberá introducir el filtro o filtros de archivos que necesite. Ojo, ¡ ANTES !Un filtro sirve para que en el cuadro de diálogo se presenten solamente los ficheros de nuestro interés. Se pueden seleccionar por el nombre, la extensión o las dos cosas. La sintaxis para introducir un filtro es la siguiente:

CD1.Filter = "Descripción del fichero|nombre.extensión"

donde "nombre" puede ser un nombre o usar caracteres comodín. Lo mismo para "extensión"

Por ejemplo, para buscar archivos ejecutables, con cualquier nombre y extensión .EXE

CD1.Filter = "Ficheros ejecutables |*.exe"

Observe el carácter separador entre la descripción de los ficheros (Ficheros ejecutables) y el parámetro de busca (*.EXE). No ponga ningún espacio entre el separador y los caracteres de busca. El separador es el carácter ASCII 124.

Puede buscar varios tipos de ficheros, separando los caracteres de busca por medio del carácter punto y coma (;)

CD1.Filter = "Ficheros ejecutables |*.EXE;*.COM;*.BAT"

Puede también introducir dos filtros, separados por el separador | (En una línea solamente).

CD1.Filter=”Ficheros de un tipo |*.EXE |Ficheros de otro |*.COM |Otros ficheros |*.BAT”

Por ejemplo : CD1.Filter = "Ficheros Word |*.DOC|Ficheros Write |*.WRI"

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 7

Page 8: Capitulo 3 Visual Basic

¡ No se pueden poner dos líneas con filtros, se quedaría solamente con la última !

En este caso, cuando se presente el cuadro de diálogo, solamente presentará uno de los filtros, y deberá seleccionar manualmente el otro en un cuadro situado en la parte inferior izquierda del cuadro de diálogo. Para predeterminar cuál de los dos filtros saldrá sin tener que seleccionarlo, deberá ejecutar esta instrucción, ANTES de invocar el cuadro de diálogo

CD1.FilterIndex = 2

En este caso, aparecerá por defecto el filtro escrito en segundo lugar. El orden de los filtros comienza por 1.

El cuadro de diálogo deberá presentar un directorio. Este directorio con el que, por defecto, aparece el cuadro de diálogo, se puede introducir mediante la propiedad InitDir, que deberá contener el nombre del directorio y su path. Si no se especifica, comenzará por el directorio actual.

Para conocer el nombre del fichero elegido, se emplea la propiedad FileName :

Nombrefichero= CD1.filename

El nombre del fichero, Nombrefichero en la sentencia anterior, viene con su path, es decir, nombre y dirección completa, por lo que puede emplearse directamente la salida del CommonDialog para abrir un fichero.

El cuadro de diálogo de abrir o cerrar tiene esta forma :

El cuadro de guardar es similar. Observe que en este caso hemos desplegado la segunda opción de filtro de ficheros :

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 8

Page 9: Capitulo 3 Visual Basic

Como ve ambos cuadros son prácticamente iguales. Solamente se difieren en que uno pone Abrir y el otro Guardar como en su barra de título. También en que el cuadro Guardar como presenta los nombres de los ficheros con un tono apagado. Funcionalmente difieren. Por ejemplo, si quiere guardar un fichero con un nombre ya existente, y dependiendo de la propiedad Flags que verá mas adelante, le aparecerá la siguiente advertencia :

Si desea otra leyenda en la barra de título, puede cambiarla usando el asistente de propiedades, que lo obtendrá colocando el cursor del ratón sobre el icono del CommonDialog y pulsando el botón derecho. Haga click sobre Propiedades en el popmenú que se presenta. Aparecerá esto :

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 9

Page 10: Capitulo 3 Visual Basic

PRESENTAR AYUDAS

Mediante el CommonDialog se puede presentar un fichero de ayuda. (Ficheros del tipo .HLP de Windows)

Pese a que se pueden presentar estos ficheros basándonos en el CommonDialog, es preferible usar directamente el programa WinHelp.Exe, que puede ejecutarlo mediante la función Shell :

VariableID = Shell (“WinHelp.Exe FicheroAyuda.hlp”,1)

Para mostrar el fichero de ayuda debe poner el nombre (y Path) del fichero de ayuda en la propiedad HelpFile del CommonDialog

CD1.HelpFile = "C:\MiCarpeta\MiFicheroAyuda.HLP"

Puede mostrar el índice, o una página concreta de ese fichero. Para ello debe jugar con la propiedad HelpCommand, que le va a indicar al CommonDialog qué ayuda debe mostrar.

CD1.HelpCommand =Valor

Las opciones para valor son:

1 &H1 cdlContext Muestra la Ayuda de un contexto determinado. Cuando se usa esta valor, también se debe especificar un contexto con la propiedad HelpContext.

2 &H2 cdlQuitNotifica a la aplicación Ayuda que el archivo de Ayuda especificado ya no se está utilizando.

3 &H3 cdlContentsMuestra el tema de contenido de ayuda, definido con la opción Contents de la sección [OPTION] del archivo .HPJ.

3 &H3 cdlIndexMuestra el índice del archivo de Ayuda especificado. Las aplicaciones sólo deben utilizar este valor para un archivo de Ayuda con índice único.

4 &H4 cdlHelpOnHelpMuestra la Ayuda para utilizar la propia aplicación Ayuda.

5 &H5 cdlSetContents

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 10

Page 11: Capitulo 3 Visual Basic

Determina el tema de contenido a mostrar cuando el usuario presiona la tecla F1.5 &H5 cdlSetIndex

Establece el contexto especificado en la propiedad HelpContext como índice actual para el archivo especificado en la propiedad HelpFile. Este índice seguirá siendo el actual hasta que el usuario acceda a un archivo de Ayuda distinto. Utilice este valor sólo para los archivos de Ayuda con más de un índice.

8 &H8 cdlContextPopupMuestra en una ventana emergente un tema de Ayuda determinado, identificado por un número de contexto definido en la sección [MAP] del archivo .HPJ.

9 &H9 cdlForceFileAsegura que WinHelp muestre el archivo de Ayuda correcto. Si se muestra el archivo correcto, no sucede nada. Si se muestra un archivo incorrecto, WinHelp abrirá el correcto.

257 &H101 cdlKeyMuestra la Ayuda sobre una palabra reservada determinada. Al usar esta opción, deberá especificar también una palabra reservada con la propiedad HelpKey.

258 &H102 cdlCommandEjecuta una macro de Ayuda.

261 &H105 cdlPartialKeyMuestra el tema de la lista de palabras claves que coincide con la palabra pasada en el parámetro dwData, si sólo se encuentra uno. Si se encuentra más de uno, aparecerá el cuadro de diálogo Buscar mostrando los temas encontrados en el cuadro de lista Ir a. Si no se encuentra ninguno, se mostrará el cuadro de diálogo Buscar. Para que aparezca el cuadro de diálogo Buscar sin pasar una palabra reservada, utilice un puntero largo a una cadena vacía.

Si queremos que se muestre el índice de la ayuda, pondríamos esta propiedad de la forma :

CD1.HelpCommand = cdlHelpIndex

Para mostrar la página que se ha puesto en el fichero de ayuda como Contexto 2 (En Sección [MAP] del fichero .HPJ (Vea Creación de Ficheros de Ayuda),

CD1.HelpCommand = cdlHelpContextCD1.HelpContext = 2

Para mostrar la Ayuda de la Ayuda de Windows :

CD1.HelpCommand = cdlHelpHelpOnHelp

Una vez establecidas estas propiedades, mostraremos la ayuda con el Método ShowHelp

CD1.ShowHelp

Repitiéndole que no se debe usar el CommonDialog para mostrar ayudas, pero para cumplir el objetivo de plasmar en este texto la mayor información acerca de cada control, se enumeran a continuación el resto de propiedades que afectan a la presentación de ayuda :

HelpFileHelpContextHelpKey

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 11

Page 12: Capitulo 3 Visual Basic

PROPIEDADES DEL CommonDialog

La Propiedad Action

La propiedad Action se incluye en la versión 4 de VB solamente por motivos de compatibilidad con anteriores versiones. Realiza las mismas funciones que ShowFont, ShowColor, ShowPrinter, ShowOpen y ShowSave. No debe usarse esta propiedad, sino los equivalentes citados, en previsión de que pueda ser eliminada en futuras versiones.

La sintaxis de Action es : Nombre.Action [= valor]

Valor Descripción

0 Ninguna acción.1 Muestra el cuadro de diálogo Abrir.2 Muestra el cuadro de diálogo Guardar como.3 Muestra el cuadro de diálogo Color.4 Muestra el cuadro de diálogo Fuente.5 Muestra el cuadro de diálogo Impresora.6 Ejecuta WINHELP.EXE.

NO utilice la propiedad Action. Utilice en su lugar ShowFont, ShowPrinter, ShowSave, ShowOpen , ShowColor y ShowHelp

CancelError

Devuelve o establece un valor que indica si se genera un error cuando el usuario elige el botón Cancelar.

Sintaxis : objeto.CancelError = (True / False)

True Se genera un error.False (Predeterminado) No se genera ningún error.

Cuando se establece True en esta propiedad, se producirá el error número 32755 (cdlCancel) cada vez que el usuario elija el botón Cancelar.

Debe poner esta propiedad a true cuando quiera detectar que se ha pulsado el botón CANCELAR. Luego, debe detectar con la rutina de detección de errores adecuada, si el error producido ha sido el 32755. De ser así, es que han pulsado ese botón, y Vd. procederá en consecuencia.

ColorEsta propiedad es de lectura / escrituraDe escritura :Establece el color predeterminado con que aparecerá el CD para elegir color. Puede introducirse como RGB o numéricamente, como se explicó mas atrás. Para que aparezca este color predeterminado, debe poner la propiedad Flags a 1.De lectura : Entrega el color elegido, bien en el cuadro de elección de color, bien en el cuadro de elección de fuente.

CopiesEstablece el valor predeterminado para número de copias que aparecerá en el CD cuando se abra para elegir impresora.

DefaultExtDevuelve o establece la extensión de archivo predeterminada para el cuadro de diálogo.

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 12

Page 13: Capitulo 3 Visual Basic

Sintaxis objeto.DefaultExt [= cadena]

Puede utilizar esta propiedad para especificar una extensión de archivo predeterminada, como por ejemplo .TXT o .DOC.Importante para el CommonDialog de Guardar: Cuando se guarde un archivo sin extensión, se le agregará automáticamente la especificada en esta propiedad.

DialogTitleDevuelve o establece la cadena mostrada en la barra de título del cuadro de diálogo.

Sintaxis Nombre.DialogTitle [= título]

Esta propiedad puede introducirse en la ventana de propiedades, o por programa. Puede utilizar esa propiedad para mostrar el nombre del cuadro de diálogo en la barra de título.

Nota El control CommonDialog ignora el valor de la propiedad DialogTitle cuando muestra los cuadros de diálogo Color o Fuente.

El título predeterminado para un cuadro de diálogo Abrir es Abrir, y para un cuadro de diálogo Guardar como es Guardar como.

FileNameDevuelve o establece la ruta y el nombre de archivo de un archivo seleccionado. La lectura de esta propiedad devuelve el nombre del archivo seleccionado actualmente en la lista. Si no hay ningún archivo seleccionado, FileName devuelve una cadena vacía.

Filter(Explicada mas atrás)

Devuelve o establece los filtros que aparecen en el cuadro de lista Tipo de un cuadro de diálogo.

Sintaxis CD1.Filter [= descripción1 |filtro1 |descripción2 |filtro2...]

Utilice el símbolo de canalización ( | , (ASCII 124) ) para separar los valores de descripción y de filtro. No incluya espacios antes ni después del símbolo de canalización, pues aparecerían en los valores de descripción y valor.

Al especificar más de un filtro en un cuadro de diálogo, utilice la propiedad FilterIndex para especificar el filtro predeterminado.

Nota para los que no tiene teclado de 102 teclas. Para obtener el carácter ASCII 124, pulse la tecla ALT y, sin dejar de pulsarla, teclee 124 en el teclado numérico.

FilterIndexDevuelve o establece un filtro predeterminado para un cuadro de diálogo Abrir o Guardar Como.

Sintaxis CD1.FilterIndex [= número]

Esta propiedad indica el filtro predeterminado cuando se han especificado varios filtros para un cuadro de diálogo Abrir o Guardar. El índice del primer filtro definido es 1.

Flags Propiedad que tiene distintos significados para cada tipo de cuadro de diálogo.Tiene la misma sintaxis para todos los cuadros.

Sintaxis CD1.Flags [= valor]

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 13

Page 14: Capitulo 3 Visual Basic

El parámetro valor establece distintas alternativas, dependiendo de cada cuadro.

Para el cuadro de diálogo Color

Las opciones para valor son:

1 &H1& cdlRGBInitEstablece como valor de color inicial para el cuadro de diálogo el indicado en su propiedad Color.

2 &H2& cdlFullOpenHace que el cuadro de diálogo se muestre completo al crearlo, incluyendo la sección que permite al usuario crear colores personalizados. Sin esta opción, el usuario debe elegir el botón de comando Definir colores personalizados para mostrar tal sección.

4 &H4& cdlPreventFullOpenDesactiva el botón de comando Definir colores personalizados, evitando que el usuario defina colores.

8 &H8& cdlShowHelpHace que el cuadro de diálogo muestre un botón Ayuda.

Se pueden poner varias de estas condiciones, poniendo como valor Flags la suma de los valores de cada una de las condiciones a poner.

Para los cuadros Abrir y Guardar

Las opciones para valor son:

1 &H1& cdlReadOnlyHace que la casilla de verificación Sólo lectura aparezca marcada inicialmente al crear el cuadro de diálogo. Este indicador también señala el estado de la casilla Sólo lectura cuando el cuadro de diálogo está cerrado.

2 &H2& cdlOverwritePromptHace que el cuadro de diálogo Guardar como genere un cuadro de mensaje si el archivo seleccionado ya existe. El usuario deberá confirmar que desea sobrescribir el archivo.

4 &H4& cdlHideReadOnlyOculta la casilla de verificación Sólo lectura.

8 &H8& cdlNoChangeDirHace que el cuadro de diálogo restablezca como directorio actual el que lo era en el momento de abrirse.

16 &H10& cdlShowHelpHace que el cuadro de diálogo muestre el botón Ayuda.

256 &H100& cdlNoValidateEspecifica que el cuadro de diálogo común permita caracteres no válidos en el nombre de archivo devuelto. Funciona tanto con el cuadro de Abrir como con el de Cerrar. Tenga cuidado a la hora de crear un archivo con nombre no válido !

512 &H200& cdlAllowMultiselectEspecifica que el cuadro de lista Nombre de archivo admita selecciones múltiples. El usuario puede seleccionar más de un archivo en tiempo de ejecución presionando la tecla MAYÚS y utilizando las teclas FLECHA ARRIBA y FLECHA ABAJO para seleccionar los archivos deseados. Al hacerlo, la propiedad FileName devolverá una cadena con los nombres de todos los archivos seleccionados. Los nombres están delimitados en la cadena con espacios.

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 14

Page 15: Capitulo 3 Visual Basic

1024 &H400& cdlExtensionDifferentIndica que la extensión del nombre de archivo devuelto es distinta de la especificada en la propiedad DefaultExt. Este indicador no estará activado si la propiedad DefaultExt es Null, si las extensiones coinciden, o si el archivo no tiene extensión. El valor de este indicador puede comprobarse al cerrar el cuadro de diálogo.

2048 &H800& cdlPathMustExistEspecifica que el usuario sólo pueda introducir una ruta de acceso válida. Si se establece este indicador y el usuario introduce una ruta no válida, aparecerá un mensaje de advertencia.

4096 &H1000& cdlFileMustExistEspecifica, para el cuadro de Abrir, que el usuario sólo pueda escribir en el cuadro de texto Nombre de archivo nombres de archivos existentes. Si este indicador está activado y el usuario introduce un nombre de archivo no válido, aparecerá una advertencia. Este indicador activa automáticamente cdlPathMustExist.

8192 &H2000& cdlCreatePromptEspecifica, para el cuadro de diálogo de abrir, que si no existe el fichero consulte al usuario antes de crear un archivo que no existe actualmente. Esta advertencia dice : Este Archivo no existe ¿desea crearlo ? y aparecen los botones de ACEPTAR y CANCELAR. Si el usuario pulsa aceptar el CommonDialog se cierra normalmente, si se le pulsa CANCELAR desaparece esta advertencia y el CommonDialog espera a que se le escriba o seleccione otro fichero. Este indicador establece automáticamente los indicadores cdlPathMustExist y cdlFileMustExist.

16384 &H4000& cdlShareAwareEspecifica que se ignoren los errores al compartir archivos.

32768 &H8000& cdlNoReadOnlyReturnEspecifica que el archivo devuelto no tenga el atributo de Sólo lectura ni esté en un directorio protegido contra escritura. Presenta un aviso (tanto en el cuadro de abrir como en el cerrar) que impide elegir un fichero de estas características.

Se pueden poner varias de estas condiciones, poniendo como valor Flags la suma de los valores de cada una de las condiciones a poner.

Para el cuadro Mostrar Fuentes:

Las opciones para valor son:

1 &H1& cdlScreenFontsHace que el cuadro de diálogo muestre solamente las fuentes de pantalla que admite el sistema.

2 &H2& cdlPrinterFontsHace que el cuadro de diálogo muestre solamente las fuentes que admite la impresora, especificadas por la propiedad hDC.

3 &H3& cdlBothHace que el cuadro de diálogo muestre las fuentes de impresora y de pantalla disponibles. La propiedad hDC identifica el contexto de dispositivo asociado a la impresora

4 &H4& cdlShowHelpHace que el cuadro de diálogo muestre un botón Ayuda.

256 &H100& cdlEffectsEspecifica que el cuadro de diálogo permita efectos de tachado, subrayado y color.

1024 &H400& cdlANSIOnly Especifica que el cuadro de diálogo sólo permita seleccionar las fuentes que utilizan el juego de caracteres de Windows. Si se establece este indicador, el usuario no podrá seleccionar una fuente que sólo contenga símbolos.

2048 &H800& cdlNoVectorFonts Especifica que el cuadro de diálogo no permita seleccionar fuentes vectoriales.

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 15

Page 16: Capitulo 3 Visual Basic

4096 &H1000& cdlNoSimulationsEspecifica que el cuadro de diálogo no permita simulaciones de fuente de interfaz de dispositivo gráfico (GDI).

8192 &H2000& cdlLimitSizeEspecifica que el cuadro de diálogo seleccione sólo los tamaños de fuente comprendidos en el rango especificado por las propiedades Min y Max.

16384 &H4000& cdlFixedPitchOnlyEspecifica que el cuadro de diálogo seleccione sólo fuentes de espaciado fijo.

32768 &H8000& cdlWYSIWYGEspecifica que el cuadro de diálogo permita seleccionar solamente fuentes disponibles al la vez en la pantalla y en la impresora. Si se establece este indicador, también deben establecerse cdlBoth (sume 3 a este número) y cdlScalableOnly (sume 131072 a este número)

65536 &H10000& cdlForceFontExistEspecifica que aparezca un cuadro de mensaje cuando el usuario intente seleccionar una fuente o un estilo que no existan.

131072 &H20000& cdlScalableOnlyEspecifica que el cuadro de diálogo permita seleccionar solamente fuentes escalables.

262144 &H40000& cdlTTOnlyEspecifica que el cuadro de diálogo permita seleccionar solamente fuentes TrueType.

Nota Antes de mostrar el cuadro de diálogo Fuentes, debe establecer cdlScreenFonts, cdlPrinterFonts o cdlBoth en la propiedad Flags. En caso contrario, se producirá el error No hay fuentes. (O dicho de otra forma, Flags=1, 2 ó 3)

Se pueden poner varias de estas condiciones, poniendo como valor Flags la suma de los valores de cada una de las condiciones a poner.

Para el Cuadro de Diálogo Imprimir

(Observará seguramente que lo que se describe a continuación no se cumple siempre. Depende de las impresoras que tenga Vd. instaladas)

Las opciones para valor son:

0 &H0& cdlAllPagesDevuelve o establece el estado del botón de opción Todas las páginas.

1 &H1& cdlSelectionDevuelve o establece el estado del botón de opción Selección. Si no se especifica cdlPageNums ni cdlSelection, el botón de opción Todas estará seleccionado.

2 &H2& cdlPageNumsDevuelve o establece el estado del botón de opción Páginas.

4 &H4& cdlNoSelectionDesactiva el botón de opción Selección.

8 &H8& cdlNoPageNumsDesactiva el botón de opción Páginas y el control de edición asociado.

16 &H10& cdlCollateDevuelve o establece el estado de la casilla de verificación Intercalar.

32 &H20& cdlPrintToFileDevuelve o establece el estado de la casilla de verificación Imprimir a un archivo.

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 16

Page 17: Capitulo 3 Visual Basic

64 &H40& cdlPrintSetupHace que el sistema muestre el cuadro de diálogo Configurar impresora en lugar de Imprimir. Use este Flag cuando lo que desea es cambiar la impresora predeterminada.

128 &H80& cdlNoWarningEvita que aparezca una advertencia cuando no hay una impresora predeterminada.

256 &H100& cdlReturnDCDevuelve un contexto de dispositivo para la impresora seleccionada en el cuadro de diálogo. El contexto se devuelve en la propiedad hDC del cuadro de diálogo.

512 &H200& cdlReturnICDevuelve un contexto de información para la impresora seleccionada en el cuadro de diálogo. Un contexto de información proporciona un método rápido de obtener información sobre el dispositivo sin crear un contexto de dispositivo. El contexto de información se devuelve en la propiedad hDC del cuadro de diálogo.

2048 &H800& cdlShowHelpHace que el cuadro de diálogo muestre el botón Ayuda

262144 &H40000& cdlUseDevModeCopiesSi un controlador de impresora no admite copias múltiples, al establecer este indicador se desactiva el control de edición de número de copias. Si el controlador sí admite múltiples copias, al establecer este indicador el cuadro de diálogo almacenará el número de copias solicitado en la propiedad Copies.

524288 &H80000& cdlDisablePrintToFileDesactiva la casilla de verificación Imprimir a un archivo.

1048576 &H100000& cdlHidePrintToFileOculta la casilla de verificación Imprimir a un archivo.

Propiedades que afectan al tipo de letra.

Las seis propiedades siguientes nos dan las características especiales de la fuente elegida (negrita, cursiva, etc.). Una vez seleccionado el tipo de letra, el valor de estas propiedades contiene la opción elegida para la letra (si FontBold=True es que hemos elegido negrita, etc.)

FontBoldPropiedad Booleana que establece o devuelve que el tipo de letra usado es Negrita.

Sintaxis Variable = CD1.FontBold

Los valores de Variable son:

True Se ha elegido negrita False (Predeterminado) No se ha elegido negrita.

FontItalicPropiedad Booleana que establece o devuelve que el tipo de letra usado es Cursiva.

Sintaxis Variable = CD1. FontItalic

Los valores de Variable son:

True si se ha elegido cursiva, False (Predeterminado) en caso contrario.

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 17

Page 18: Capitulo 3 Visual Basic

FontStrikethruPropiedad Booleana que establece o devuelve que el tipo de letra usado es Tachada.

Sintaxis Variable = CD1. FontStrikethru

Los valores de Variable son:

True si se ha elegido tachado, False (Predeterminado) en caso contrario.

FontUnderlinePropiedad Booleana que establece o devuelve que el tipo de letra usado es Subrayado.

Sintaxis Variable = CD1.FontUnderline

Los valores de Variable son:

True, si se ha elegido subrayado, False (Predeterminado) en caso contrario

FontName

Devuelve el nombre de la fuente elegida. Es una variable tipo String

Sintaxis Variable = CD1.FontName

(Variable toma el valor del nombre de la fuente. Por ejemplo, Variable = “Arial”

En general, deberá modificar FontName antes de establecer los atributos de tamaño y estilo con las propiedades FontSize, FontBold, FontItalic, FontStrikethru y FontUnderline.

Nota En tiempo de ejecución puede obtener información sobre las fuentes disponibles a través de las propiedades FontCount y Fonts. Lo verá mas adelante

FontSize

Devuelve de la fuente elegida. Debe ser una variable tipo Integer o Long

Sintaxis Variable = CD1.FontSize

donde Variable será una expresión numérica que especifica el tamaño de fuente a utilizar, en puntos.

Nota Las fuentes disponibles en Visual Basic varían dependiendo de la configuración del sistema y de los dispositivos de presentación e impresión. En las propiedades relacionadas con las fuentes sólo pueden establecerse valores para los que exista una fuente.

En general, deberá modificar FontName antes de establecer los atributos de tamaño y estilo con las propiedades FontSize, FontBold, FontItalic, FontStrikethru y FontUnderline. Sin embargo, cuando especifique un tamaño inferior a 8 puntos para una fuente TrueType, primero deberá establecer el tamaño en puntos con la propiedad FontSize, luego especificar la propiedad FontName y después establecer de nuevo el tamaño con FontSize. El entorno operativo Microsoft Windows utiliza una fuente distinta para las fuentes TrueType con un tamaño inferior a 8 puntos.

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 18

Page 19: Capitulo 3 Visual Basic

Index

Igual que el ya estudiado para otros controles.

InitDirDevuelve o establece el directorio de archivos inicial.

Sintaxis objeto.InitDir [= cadena]

La sintaxis de la propiedad InitDir consta de las siguientes partes:

objeto Nombre que define al CommonDialogcadena Expresión de cadena que especifica el directorio de archivos inicial.

Si no se especifica esta propiedad, se utilizará el directorio actual.

Left y Top

Estas propiedades solamente afectan a la colocación del icono en el formulario. No afectan a la colocación del CommonDialog durante la ejecución. La posición del CommonDialog en tiempo de ejecución no puede controlarse.

Esta afirmación de que la posición del CommonDialog no es controlable es válida para sistemas a 32 bytes. En VB 4 de 16 bits, el CommonDialog aparece aproximadamente en la parte superior izquierda del formulario que lo contiene. Algunos programadores han optado por poner un formulario para contener solamente al CommonDialog, y así, controlando la posición de ese formulario, poder controlar la posición (aproximada) en la que aparece el CD.

Esto no ocurre para sistemas a 32 bytes, en los que el CD aparece siempre en la parte superior izquierda de la pantalla, independientemente de donde esté el formulario que lo contiene.

MaxFileSize

Devuelve o establece el tamaño máximo del nombre de archivo abierto con el control CommonDialog.

Sintaxis objeto.MaxFileSize [= valor]

La sintaxis de la propiedad MaxFileSize consta de las siguientes partes:

objeto = Nombre que define al CommonDialog valor = Número entero que especifica el tamaño máximo del nombre de archivo en bytes. El rango de esta propiedad es 132KB. El valor predeterminado es 256.

NameNombre que define al CommonDialog

PrinterDefault

Devuelve o establece una opción que determina si la configuración elegida por el usuario en el cuadro de diálogo Imprimir se utiliza para modificar la configuración predeterminada de impresora del sistema.

Sintaxis CD1.PrinterDefault = True / False

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 19

Page 20: Capitulo 3 Visual Basic

True Las opciones que elija el usuario en el apartado Configurar del cuadro de diálogo Imprimir (selección de la impresora, orientación, etcétera) se utilizan para modificar la configuración de impresora almacenada en el Registro).False Las opciones que elija el usuario no se utilizan para modificar la configuración de impresora predeterminada del sistema.

Utilice esta propiedad, que por defecto está a True, para poner o no poner como impresora predeterminada, la impresora seleccionada con el CommonDialog. Puede por ejemplo, querer imprimir un texto en una impresora determinada, pero solo ese texto, y no quiere cambiar la impresora predeterminada por el hecho de haber seleccionado en este momento otra impresora. Ponga esta propiedad a False (recuerde que por defecto está a True) para que la impresora seleccionada no se quede como impresora por defecto.

Tag

Lo mismo que se ha explicado para otros controles.

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 20

Page 21: Capitulo 3 Visual Basic

CONTROLES DE BUSQUEDA DE FICHEROS

CONTROLES DE BUSQUEDA DE FICHEROS Y DIRECTORIOS

Estos controles apenas si se usan. La razón es que el CommonDialog ya estudiado sustituye con creces a estos tres controles en su conjunto. Sin embargo, para determinadas necesidades sí son muy prácticos. Estúdieselos con el mismo entusiasmo que si no existiese el CommonDialog.

Al tratarse de controles tipo Lista, le recomiendo que lea el capítulo correspondiente al ListBox. Le aclarará sobre todo los términos empleados para definir los elementos de la lista, que en este caso, son los ficheros de una carpeta, las carpetas de un disco o los discos visibles desde la máquina.

DriveListBox, DirListBox Y FileListBox.

Se obtienen directamente de la Caja de Herramientas, en los iconos siguientes:

DriveListBox permite elegir una unidad de disco. DirListBox muestra los directorios existentes en un árbol. FileListBox muestra los ficheros existentes en un determinado directorio.

Tal como indica su nombre, estos controles son listas. Repase el control ListBox para recordar sus propiedades.

DriveListBox

Este control permite elegir una unidad de disco válida en tiempo de ejecución. Utilice este control para mostrar una lista de todas las unidades válidas del sistema de un usuario. Puede crear cuadros de diálogo que permitan al usuario abrir un archivo de una lista en cualquier unidad disponible.

DriveListBox desplegado y sin desplegar Name (nombre) por defecto List1

Posee las propiedades típicas de cualquier control VB respecto a su geometría y color. Las propiedades mas destacables de este control son : Drive, List, ListCount y ListIndex

Drive devuelve el nombre de la unidad de disco seleccionada :

Variable = List1.Drive Variable = a : (ó c :[MS-DOS_6] ó D )

Este control se trata de una lista como su nombre indica, y posee las propiedades List, ListCount y ListIndex para permitir al usuario tener acceso a elementos de la lista.

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 21

Page 22: Capitulo 3 Visual Basic

List (n) devuelve el texto que define a la unidad colocada en el lugar n. El número n comienza por 0. Por ejemplo, en la figura anterior, List1.list(1) devolverá c :[MS-DOS_6]

ListCount proporciona información acerca del número de unidades de disco disponibles (En el ejemplo, List1.ListCount será 3, que corresponde a los tres discos disponibles - disco C :, disco A : y disco D : )

ListIndex devuelve el índice del disco seleccionado en la lista (0 para el primero, n-1 para el último)

Utilizando el control DriveListBox en combinación con DirListBox y FileListBox, podrá realizar un explorador de ficheros en cualquier disco de su ordenador.

DirListBox.

Presenta un cuadro de la siguiente forma:

donde puede verse el árbol completo de un directorio. El DirListBox solamente presenta directorios. No presenta ficheros.

Aparte de las propiedades geométricas de todos los controles, el DirListBox presentas las siguientes propiedades particulares :

PathDevuelve o establece la ruta de acceso actual. No está disponible en tiempo de diseño.

Sintaxis Nombre.Path [= pathname]

donde

Nombre es el nombre del DirListBoxpathname Una expresión de cadena que evalúa en el nombre de vía de acceso del directorio por defecto del DirListBox..

El valor de la propiedad Path es una cadena que indica una ruta de acceso, como C:\WINDOWS\SYSTEM. El valor predeterminado es la ruta de acceso actual

Cuando se cambia la propiedad Path en tiempo de ejecución se genera un evento Change.

Nota El valor que devuelve Path es distinto del de List (ListIndex). Path devuelve siempre un mismo camino, bien el que se le haya impuesto mediante esta misma propiedad Path, y si no se le ha impuesto con anterioridad, el que tenga por defecto. List (ListIndex) devuelve el camino completo del directorio seleccionado, y, como era de esperar, cambia cada vez que cambiamos la selección del directorio.

List, ListCount y ListIndex

Al igual que cualquier lista, el DirListBox tiene las propiedades List, ListCount y ListIndex.

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 22

Page 23: Capitulo 3 Visual Basic

ListIndex devuelve el valor del índice del directorio seleccionado. El valor devuelto es cero cuando está seleccionado el primer directorio de los situados al final del árbol, 1 para el siguiente, etc. Toma el valor -1 cuando se selecciona el directorio inmediatamente superior al último nivel, el valor -2 cuando se selecciona el directorio situado 2 niveles jerárquicos por encima del último nivel, etc.

ListCount devuelve un valor numérico igual al número de directorios existentes en el último nivel, independientemente de los directorios que tuviesen por arriba.

List (n) devuelve una cadena de caracteres con el camino completo del elemento cuyo orden sea el señalado entre paréntesis. Si en vez de n colocamos el ListIndex nos devolverá, logicamente, el camino del elemento seleccionado.

FileListBox

Esta lista nos presenta los ficheros existentes en un directorio.

Como se puede apreciar, cuando el número de ficheros supera el número que puede presentar, aparecen automáticamente las flechas de scroll verticales.

Esta lista de ficheros tiene las siguientes propiedades destacables :

Path

Devuelve o establece la ruta de acceso de su directorio actual. No está disponible en tiempo de diseño. Este directorio puede ser el que se le haya impuesto mediante esta propiedad Path, o el que tenga por defecto. (El directorio por defecto sería el del ejecutable de la aplicación)

Si le ponemos el nombre por defecto, List1, para todos los ejemplos :

variable = List1.Path Variable = C:\Archivos de programa\Microsoft Visual Basic32 (p. e.)

ListCount

Devuelve el número total de ficheros que hay en ese directorio.

Variable = List1.ListCount Variable = 19 (p. e.)

ListIndex

Devuelve un número con el índice del elemento seleccionado. Como todas las listas, devuelve -1 si no hay ningún elemento seleccionado. El primer elemento de una lista tiene el índice = 0.

Filename

Devuelve el nombre del fichero seleccionado.

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 23

Page 24: Capitulo 3 Visual Basic

List (n)

Devuelve el nombre del fichero que ocupa el lugar n en la lista.

Variable = List1.List (5) Variable = nombre del fichero que ocupa el 5º lugar en la lista.

Si en lugar de n ponemos el valor de ListIndex :

variable = List1.List (List1.ListIndex) obtendremos el nombre del fichero seleccionado.

Observe que en este último caso, el resultado es el mismo que el de List1.Filename

Veamos otras propiedades del FileListBox

PatternDevuelve o establece un valor que indica los nombres de archivo mostrados en un control FileListBox en tiempo de ejecución.

Sintaxis objeto.Pattern [= valor]

La sintaxis de la propiedad Pattern consta de las siguientes partes:

objeto : Nombre del Control FileListBox

valor: Expresión de cadena que indica una especificación de archivo, como *.* o *.FRM. La cadena predeterminada es *.*, que obtiene una lista de todos los archivos. Además de utilizar caracteres comodín, también puede especificar varios modelos, separándolos con caracteres punto y coma (;). Por ejemplo, con *.EXE; *.BAT se obtendría una lista con todos los archivos ejecutables y todos los archivos por lotes de MS-DOS.

Comentarios

La propiedad Pattern juega un papel clave en el diseño de las funciones de examen y tratamiento de archivos de una aplicación. Puede utilizar Pattern en combinación con otras propiedades de control de archivos para proporcionar al usuario formas de explorar archivos o grupos de archivos similares. Por ejemplo, en una aplicación dedicada a iniciar otros programas, podría hacer que sólo apareciesen los archivos .EXE en el cuadro de lista de archivos (*.EXE). Al modificar el valor de la propiedad Pattern se genera un evento PatternChange.

Archive, Hidden, Normal, System

Devuelven o establecen un valor que determina si un control FileListBox presenta los archivos con los atributos Archive, Hidden, Normal o System.

El atributo Archive de un fichero indica si se ha variado ese fichero después de la última copia de seguridad.El atributo Hidden indica si el fichero se trata de un fichero oculto.El atributo Normal indica que el fichero es un fichero “normal” (No está oculto ni es de sistema).El atributo System de un fichero indica que el fichero es un fichero de sistema.

Sintaxisobjeto.Archive [= booleano]objeto.Hidden [= booleano]objeto.Normal [= booleano]objeto.System [= booleano]

Las sintaxis de la propiedades Archive, Hidden, Normal y System tiene la siguiente partes:

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 24

Page 25: Capitulo 3 Visual Basic

objeto :Nombre del FileListBoxbooleano :Una expresión booleana (True / False) que especifica el tipo de archivos presentados.

El valor booleano puede presentar los siguientes valores :True :(Predeterminado para Archive y Normal) Presenta archivos con el atributo de la propiedad en el control FileListBox.False : (Predeterminado para Hidden y System) Presenta archivos sin el atributo de la propiedad en el control FileListBox.

Use estas propiedades para especificar el tipo de archivos a presentar en un control FileListBox, basándose en los atributos de archivos estándar usados en el entorno operativo. La definición de estas propiedades en el código en tiempo de ejecución hace que el control FileListBox presente sólo aquellos archivos con los atributos especificados.Por ejemplo, en una operación de buscar y reemplazar se podrían presentar solamente archivos del sistema estableciendo la propiedad System a True y las demás propiedades a False. También, como parte del procedimiento de copia de seguridad, se podría establecer la propiedad Archive a True para relacionar solamente aquellos archivos modificados a partir de la última copia de seguridad.

PROCEDIMIENTOS del FileListBox

Click Change DragDrop DragOver GotFocusKeyDown KeyPress KeyUp

SENTENCIAS DE MANEJO DE DIRECTORIOS Y FICHEROS

El Directorio Actual

Se llama directorio Actual al directorio que está actualmente en uso, bien porque haya sido forzado el control correspondiente a tener ese directorio en su propiedad Path, bien porque, al no haberse forzado ninguno, utilice el directorio por defecto.

El directorio por defecto es el último que se ha seleccionado por algún procedimiento. Por ejemplo, al arrancar una aplicación, el directorio por defecto será el mismo donde se encuentra el ejecutable. Pero si a lo largo de la aplicación cambiamos el directorio, seleccionando otro mediante un CommonDialog, ese directorio es el que queda por defecto. Asegúrese en sus aplicaciones que siempre elige la propiedad Path antes de presentar ficheros o directorios a través de los controles anteriores, para evitar que pueda mostrarle ficheros de un directorio no deseado.

Puede comprobar cual es el directorio actual. La función CurDir nos devuelve el directorio actual.

Ejemplo : Introduzca una línea de código con la siguiente sentencia

Variable = CurDir Al ejecutarla la variable Variable contendrá la información :

Variable = C:\Archivos de programa\Microsoft Visual Basic32 (p. e.)

Puede darse el caso de que desee conocer el directorio actual de varias unidades de disco. Por ejemplo, puede estar trabajando en el directorio C:\CursoVB\Ejemplos y ser este el directorio actual en el disco C :, y tener un disquete en la unidad A : en el que la última vez que trabajó fue en el directorio A :\ApVB\Tema1 y ese es su directorio por defecto en el disco A. Para conocer el directorio actual del disco C : no necesitó especificar la unidad, ya que era precisamente la unidad C la unidad actual. Para conocer el directorio actual de la unidad A emplearía la expresión :

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 25

Page 26: Capitulo 3 Visual Basic

Variable = CurDir (“A”) Variable tomará entonces el valor Variable = “A :\ApVB\Tema1”

Decíamos que el disco C era la unidad actual. También podemos cambiar la unidad actual, mediante la sentencia ChDrive seguida de una letra (entre comillas dobles)

Ejemplo ChDrive “A” cambia la unidad actual a la unidad A. Observe que el parámetro A no tiene que llevar los dos puntos ( : ), aunque si lo desea, puede ponerlos. También es indiferente que la letra sea mayúscula o minúscula.

También podemos forzar a que un directorio sea el directorio por defecto. La sentencia que tendremos que usar en ChDir.

Ejemplo : ChDir “C :\Windows\System” cambiaría el directorio actual al especificado.

Podemos incluso crear un directorio. Usaremos para ello la sentencia MkDir. Esta sentencia crea el directorio con el nombre indicado, sobre el directorio actual.

Si el directorio actual es el C:\VB\Icons y ejecutamos la sentencia :

MkDir “Varios” crearíamos el directorio  C:\VB\Icons\Varios

Podemos incluso eliminar un directorio. La sentencia para eliminar un directorio es RmDir

¡ Cuidado ! Visual-Basic no le advertirá que puede borrar algo que no desea. Asegúrese muy bien mediante un aviso al usuario cada vez que elimine un directorio.

Vamos a ver ahora como podemos ver los nombres de los ficheros existentes en un determinado directorio. Muy sencillo, con un FileListBox. Efectivamente, así podría ser para presentarlos en pantalla. Sin embargo, si deseamos imprimir la lista de ficheros existentes, guardarla en un fichero, etc., tenemos una forma que facilita esta labor. Igual que en DOS. La función Dir

A esta función le debemos añadir como parámetro el criterio de búsqueda, criterio formado por los caracteres o comodines que deseemos. Dir devuelve solamente el nombre de un fichero, por lo que tendremos que repetirla tantas veces como ficheros tenga el directorio. Pero solamente tendremos que introducir el criterio de búsqueda la primera vez.

En el siguiente ejemplo, sacaremos por impresora los nombres de los ficheros existentes en el directorio actual : (Este código lo meteremos en el procedimiento click de un botón de comando)

fichero = Dir("*.*") ‘Le decimos que imprima todos (*.*)Do Until fichero = "" ‘Hasta que fichero sea una cadena de longitud cero..Printer.Print fichero ‘Imprime la variable fichero en la impresorafichero = Dir ‘Toma el nombre de otro ficheroLoop ‘Vuelve a Do Until .....

Printer.EndDoc ‘Termina la impresión y saca la hoja de la impresora

Ya sabemos sacar el directorio. Vamos a ver que otras cosas se pueden hacer con ficheros.

Función Kill. A poco Inglés que sepa se habrá dado cuenta que esta función sirve para quitarse algo de enmedio. Esta función borra un fichero del disco.

Kill “C:\CursoVB\Ejemplos\Ejemplo1.txt”

borra el fichero Ejemplo1.txt, que se encuentra en el disco C, directorio \ CursoVB\Ejemplos

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 26

Page 27: Capitulo 3 Visual Basic

Función FileCopy. Copia un fichero. La sintaxis de esta función es la siguiente :

FileCopy Origen, Destino

Si tenemos un TextBox llamado Text1 donde vamos a introducir el nombre (con su Path) del fichero origen, otro TextBox donde introduciremos el nombre (con su Path) que queremos dar a la copia, para copiar ese fichero ejecutaremos la sentencia :

FileCopy Text1.Text, Text2.Text

Si queremos copiar un fichero del disco A, en el directorio CursoVB y de nombre Ejemplo1 al disco y directorio C:\CursoVB\Ejemplos y con el mismo nombre que tenía en el disco A, es decir, Ejemplo1, ejecutaremos la sentencia :

FileCopy “A :\CursoVB\Ejemplo1” , “C:\CursoVB\Ejemplos\Ejemplo1”

Observe la necesidad de dobles comillas para especificar que es, precisamente lo escrito en el código, lo que indica el origen y el destino. En el caso anterior no llevaba dobles comillas, debido a que era el contenido de un TextBox lo que se usaba para indicar el origen y el destino.

La instrucción Name cambia el nombre de un fichero. No solamente puede cambiar un nombre, puede incluso moverlo de sitio, pero siempre en la misma unidad de disco.

La sintaxis de Name es la siguiente :

Name nombrerutaantiguo As nombrerutanuevo

Donde nombrerutaantiguo es una expresión de cadena que indica el nombre del fichero (con su path) al que se le quiere cambiar el nombre, y nombrerutanuevo es una expresión de cadena que especifica el nombre nuevo y, si se desea mover de directorio, la nueva ubicación del archivo y la unidad de disco. El nombre y ubicación especificados en nombrerutanuevo no pueden ser los de un archivo existente.

Tanto nombrerutanuevo como nombrerutaantiguo deben encontrarse en la misma unidad de disco. Si la ruta de acceso especificada en nombrerutanuevo existe y es distinta de la ruta de acceso especificada en nombrerutaantiguo, la instrucción Name coloca el archivo en el nuevo directorio o carpeta y cambia el nombre del archivo, de ser necesario. Si nombrerutanuevo y nombrerutaantiguo tienen distintas rutas de acceso y el mismo nombre de archivo, Name coloca el archivo en la nueva ubicación, sin cambiar el nombre del archivo. Por medio de Name se puede mover un archivo de un directorio o carpeta a otro, pero no se puede mover un directorio o carpeta.

Si se utiliza Name con un archivo abierto se produce un error. Antes de cambiar el nombre de un archivo, se debe cerrar.

En el ejemplo, vamos a cambiar el nombre del fichero C:\CursoVB\Ejemplos\Ejemplo1 por el de C :\CursoVB\Ejemplos\Prueba1

Name “C:\CursoVB\Ejemplos\Ejemplo1” As “C :\CursoVB\Ejemplos\Prueba1”

En el siguiente, aparte de cambiarlo de nombre, le cambiamos de directorio.

Name “C:\CursoVB\Ejemplos\Ejemplo1” As “C :\CursoVB\Ejercic\Prueba1”

Existe una función que le permite conocer el volumen de un fichero : FileLen. Mediante esta instrucción podrá saber, por ejemplo, si un fichero le va a caber en lo que le queda libre de un disquete, el tiempo previsto para enviarlo por módem, etc.

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 27

Page 28: Capitulo 3 Visual Basic

La sintaxis es la siguiente :

Variable = FileLen("C:\CursoVB\Ejemplos\Ejemplo1")

Variable tomará un valor numérico igual al número de bytes del fichero.

Otra función para el tratamiento de ficheros es FileDateTime, que le permite conocer la fecha y hora de creación o de la última modificación de un fichero.

La sintaxis es, para el caso del ejemplo :

Variable = FileDateTime ("C:\CursoVB\Ejemplos\Ejemplo1")

Variable puede tomar un valor como el siguiente : Variable = 13/02/97 14:59:20

(Observe que de esta función se obtiene una variable de cadena.) Puede aprovechar esta función para borrar o hacer Backup de determinados ficheros que tengan mas de un tiempo de permanencia, sustituir ficheros por versiones mas recientes, etc.

Podemos obtener y modificar los atributos de un fichero. Los atributos de un fichero se refieren a si son de solo lectura, ficheros ocultos, de sistema, si ha sido modificado desde la última vez que se ha realizado un Backup,

Para conocer los atributos de un fichero, utilizaremos la función GetAttr. Esta función devuelve un número, que representa la suma de los atributos de un archivo, directorio o carpeta o una etiqueta de volumen.

Sintaxis Variable = GetAttr (nombreruta)

Donde nombreruta es una expresión de cadena que especifica un nombre de archivo, con su Path y unidad de disco.

El valor devuelto por GetAttr es un número, igual a la suma de los siguientes valores de atributos:

Valor Constante Descripción

0 vbNormal Normal.1 vbReadOnly Sólo lectura.2 vbHidden Oculto.4 vbSystem Archivo de sistema.16 vbDirectory Directorio o carpeta.32 vbArchive El archivo ha sido modificado después de efectuar la última copia

de seguridad.

Si la expresión nombreruta representa un directorio, se lo indicará devolviendo el valor 16.

Para cambiar un atributo utilizaremos la función SetAttr. La sintaxis de esta función es la siguiente

Sintaxis SetAttr nombreruta , atributos

Donde nombreruta es una expresión de cadena que especifica un nombre de archivo, con su Path y unidad de disco, y atributos es una o varias de las constantes o valores anteriores, cuya suma especifica los atributos de archivo.

Dado que el valor 16 indica que lo expresado en nombreruta es un directorio, no puede pretenderse darle a ese directorio atributos que solamente se pueden aplicar a un fichero, ni

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 28

Page 29: Capitulo 3 Visual Basic

puede pretender darle a un fichero un valor en el que entre el 16 como sumando. Estos casos le producirán un error en tiempo de ejecución.

Si pretende establecer los atributos de un archivo abierto, se producirá un error en tiempo de ejecución.

Existe una función, que no tiene nada que ver con la anterior, aunque puede parecerlo por su parecido semántico y que también devuelve atributos, pero de otro tipo. Esta función es FileAttr

Función FileAttr

Devuelve el modo de apertura de un archivo. Logicamente debe referirse a un archivo abierto en el momento de ejecutar esta función. Vea para mas detalles la sentencia Open.

Sintaxis variable = FileAttr (numerocanal , tipoinformación)

Donde numerocanal es el número del canal de apertura de ese archivo, y tipoinformación es el tipo de información que deseamos de ese fichero. Si tipoinformación = 1 nos devuelve el modo de apertura del fichero, según la siguiente lista

Valor Modo del archivo

1 Entrada2 Salida4 Aleatorio8 Añadir32 Binario

La Ayuda de VB dice que tipoinformación puede ser =2 para que FileAttr devuelva información sobre el selector de archivos del sistema operativo. Algunas veces la información de ayuda de VB promete cosas que, sin dudar de que sean ciertas, son difíciles de comprobar.

Esta función no tiene una gran aplicación práctica, ya que comprueba la forma en la que hemos abierto un archivo. Información que conocemos desde el mismo momento de abrirlo.

LSB Visual Basic - Guía del Estudiante Capítulo 3 Página 29