Bibliotecas de clases de ejemplo

La biblioteca de clases de ejemplo de Visual FoxPro ofrece una funcionalidad encapsulada que puede agregar fácilmente a sus aplicaciones. Los ejemplos de soluciones ilustran el uso de la mayoría de las clases de ejemplo. Las clases de ejemplo se encuentran en los archivos siguientes:

  • Biblioteca de clases Buttons
  • Biblioteca de clases Samples
  • Biblioteca de clases Typelib
  • Biblioteca de clases Utility
  • Programa Registry

Biblioteca de clases Buttons

Buttons.vcx contiene las clases siguientes:

Clase Descripción
CmdOK Botón de comando que libera el formulario al que se agrega. Si el formulario está contenido en un conjunto de formularios, cmdOK libera el conjunto.
CmdCancel Subclase de cmdOK con el valor "Cancel" establecido en la propiedad Caption.
CmdHelp Botón de comando que invoca la Ayuda con el valor de HelpContextID del formulario al que se agrega.
MailBtn Contenedor con un botón de comando, un control Microsoft MAPI Message y un control Microsoft MAPI Session. El evento Click del botón de comando inicia una sesión de correo y redacta un mensaje con los valores del registro actual de una tabla.

Para ver un ejemplo de uso de la clase MailBtn, vea SENDMAIL.SCX en la carpeta Samples\Solution\OLE de Visual FoxPro.

VCR Conjunto de botones de desplazamiento que permiten al usuario situar el puntero en el registro siguiente, anterior, primero o último de una tabla.

Establezca en la propiedad Skiptable el alias de la tabla cuyo puntero desee desplazar. Si Skiptable está vacía, el puntero de registro se mueve al área de trabajo seleccionada actualmente.

Biblioteca de clases Samples

Samples.vcx contiene las clases siguientes:

Clase Descripción
CboFontName Cuadro combinado que muestra todas las fuentes disponibles actualmente en el sistema.
CboFontSize Cuadro combinado que muestra todos los tamaños en puntos disponibles para una fuente determinada. Pase un nombre de fuente al método FillList para rellenar el cuadro combinado. Las propiedades nLargestFont y nSmallestFont delimitan los tamaños de fuente máximo y mínimo que se mostrarán. Puede utilizar este control junto con la clase cboFontName. En el evento InteractiveChange del objeto cboFontName, llame al método FillList del objeto cboFontSize:

THISFORM.cboFontSize1.FillList(THIS.Value)

Si desea un ejemplo de uso de esta clase, vea la clase tbrEditing de la misma biblioteca.

Clock Contenedor que muestra la fecha y hora actuales.

El componente "Mostrar un reloj de sistema" del ejemplo Solutions también utiliza la clase Clock.

DataChecker Clase personalizada que administra la resolución de conflictos de datos. El código del evento Error de la clase VCR de BUTTONS.vcx llama al método CheckConflicts de esta clase si al intentar escribir datos de búfer en una tabla se encuentran valores cambiados:

nConflictStatus = ; THIS.DataChecker1.CheckConflicts()

El componente "Ejecutar múltiples instancias de un formulario" del ejemplo Solutions utiliza también esta clase para comprobar si hay conflictos de datos.

Si desea más información, abra la clase y lea los comentarios del código.

Distinct_values_combo Cuadro combinado que se rellena durante la inicialización con los valores distintos del alias ControlSource. Por ejemplo, si agrega esta clase a un formulario y establece como ControlSource "customer.country", el cuadro combinado se rellenará con los países de la tabla cliente, sin mostrar los nombres más de una vez.
FrmNoTitle Formulario cuyas propiedades están establecidas de modo que no se muestre ningún título. Si desea mostrar información en una ventana aparte, puede crear un objeto basado en esta clase y utilizar los métodos gráficos de los formularios.

El componente "Mostrar animación de líneas en un formulario" del ejemplo Solutions también utiliza un formulario sin título para mostrar la animación.

Lookup_combo Cuadro combinado que permite presentar los valores de un campo, por ejemplo el nombre de compañía, al enlazar un origen de control a otro campo, por ejemplo un número de identificación de compañía. Esta clase tiene cuatro propiedades personalizadas:

order_column: columna por la que se ordena la tabla (opcional).

lookup_table: tabla con la que se llena el cuadro combinado.

display_column: columna de la tabla que se muestra.

return_column: columna cuyo valor se escribe en el origen del control.

MoverLists Contenedor con dos cuadros de lista y cuatro botones de comando. El usuario puede mover los elementos seleccionados de una lista a la otra al hacer clic en los botones de comando, o mediante la operación de arrastrar y colocar.

Debe asegurarse de que la propiedad RowSourceType de cada cuadro de lista tiene el valor 0 y de utilizar el método AddItem para agregar elementos al cuadro de lista de origen.

MoverLists tiene tres propiedades personalizadas:

CanDropIcon: cursor que se mostrará sobre un destino válido en las operaciones de arrastrar y colocar.

NoDropIcon: cursor que se mostrará cuando la operación de colocar no agregue los elementos seleccionados al cuadro de lista.

DragThreshold: número de píxeles antes de comenzar la operación de arrastre.

El componente "Mover elementos entre cuadros de lista" del ejemplo Solutions ilustra el uso de esta clase.

Print_reports Formulario modal que permite a un usuario tener una vista previa de un informe, imprimirlo o dirigirlo a un archivo. Puede establecer en la propiedad cReport de la clase el nombre del informe o pasarlo como un parámetro:

o = CREATEOBJECT(print_reports, ; "myreport.frx")

QBF Contenedor con tres botones de comando. Puede agregar esta clase y la clase VCR a un formulario con controles enlazados a datos. Cuando el usuario elige Escribir QBF, los valores de los controles quedan en blanco. Los valores que el usuario escribe en los controles especifican el filtro que se establecerá en la tabla cuando el usuario elija Consulta.

Los controles deben tener establecida la propiedad ControlSource y su propiedad Parent debe ser el formulario, en vez de contenedor.

El componente "Crear un formulario de consulta según ejemplo" del ejemplo Solutions ilustra el uso de esta clase.

Resizable Clase personalizada que administra el cambio de tamaño y posición de los controles de un formulario en tiempo de ejecución, a la vez que mantiene sus tamaños y posiciones relativos. Puede agregar la clase a un formulario e invocar el método AdjustControls en su evento Resize:

THIS.Resizable2.AdjustControls

Resizable tiene dos propiedades personalizadas que debe establecer:

RepositionList: cadena que contiene todas las clases cuyos objetos cambian de posición.

ResizeList: cadena que contiene todas las clases cuyos objetos cambian de tamaño.

El componente "Cambiar el tamaño y la posición de los controles en tiempo de ejecución" del ejemplo Solutions ilustra el uso de esta clase.

RTFcontrols Clase contenedora que contiene cboFontName, cboFontSize y botones de comando para Negrita, Cursiva y Color de primer plano. El control cboFontSize se actualiza en el evento InteractiveChange de cboFontName, pero no hay ninguna funcionalidad adicional codificada para los botones de comando Negrita, Cursiva y Color de primer plano.

El componente "Utilizar el control RichText" del ejemplo Solutions ilustra el uso de esta clase.

SoundPlayer Esta clase puede utilizarse para reproducir un archivo multimedia no visual, por ejemplo un archivo de audio .WAV. Para obtener más información acerca de esta clase, vea la sección siguiente, Clases multimedia de ejemplo.
StopWatch Clase contenedora con un cronómetro y etiquetas para mostrar los valores de detención del reloj.

StopWatch tiene tres métodos personalizados que puede usar:

Start: inicia el cronómetro.

Stop: detiene el cronómetro.

Reset: restablece el tiempo mostrado a 0:00.

El componente "Mostrar un cronómetro" del ejemplo Solutions ilustra el uso de esta clase.

TbrEditing tbrEditing tiene una propiedad personalizada y un método que puede utilizar:

nAppliesTo: esta propiedad puede tener los valores 1, 2 ó 3.

  1. Las elecciones del usuario afectan al control actual del formulario activo.
  2. Las elecciones del usuario afectan a todos los cuadros de texto y de edición del formulario activo.
  3. Las elecciones del usuario afectan a todos los controles del formulario activo.

Refresh: toma como parámetro una referencia a un objeto y establece en todos los controles de edición los valores adecuados para ese objeto. Puede llamar al método Refresh en el evento GotFocus de un control.

El componente "Cambiar atributos de fuente" del ejemplo Solutions ilustra el uso de esta clase.

VideoFrame Esta clase se puede utilizar para reproducir un archivo multimedia visual, por ejemplo un archivo de vídeo para Windows. Para obtener más información acerca de esta clase, vea la sección siguiente, Clases multimedia de ejemplo.

Clases multimedia de ejemplo

Dos de las clases (SoundPlayer y VideoFrame) de la biblioteca de clases de Visual FoxPro Samples\Classes\Samples.vcx permiten utilizar la interfaz de comandos multimedia (Multimedia Command Interface, MCI) para reproducir archivos multimedia.

Para encontrar documentación acerca de los comandos MCI, busque "Multimedia Commands" en la biblioteca MSDN (https://www.microsoft.com/spanish/).

Clase Sound Player

Esta clase puede utilizarse para reproducir un archivo multimedia no visual, por ejemplo un archivo de audio .WAV. Permite especificar el nombre del archivo y proporciona métodos integrados para reproducirlo fácilmente.

Propiedad Descripción
AutoOpen Especifica si el archivo de sonido se debe abrir y mostrar automáticamente al crear una instancia del objeto. El valor predeterminado es verdadero (.T.).
AutoPlay Especifica si el archivo de sonido se debe reproducir automáticamente al abrirlo. El valor predeterminado es verdadero (.T.).
AutoRepeat Especifica si el archivo de sonido se debe reproducir de forma continua. El valor predeterminado es falso (.F.).
ControlSource Especifica la columna que contiene la referencia al archivo de sonido. Si está vacía, la clase espera un nombre de archivo estático en la propiedad SoundFile.
MCIAlias Especifica el alias que debe usar MCI. Si se deja vacía, el alias predeterminado será la propiedad Name de la clase. Normalmente esta propiedad puede dejarse vacía, pero si el usuario desea reproducir el mismo archivo de sonido dos veces al mismo tiempo, deberá especificar un alias distinto cada vez.
SoundFile Contiene el nombre del archivo de sonido que desea reproducir, como por ejemplo "C:\WINDOWS\CHIMES.WAV".
Método Descripción
OpenSound Abre el archivo de sonido.
PlaySound Reproduce el archivo de sonido. El archivo debe abrirse con el método OpenSound antes de reproducirlo.
PauseSound Hace una pausa en la reproducción de un archivo de sonido. La reproducción puede continuar al llamar al método PlaySound.
SetPosition Permite al usuario especificar la posición en el archivo multimedia. Puede ejecutarse en cualquier momento posterior a la apertura del archivo. Los valores válidos son "Start" (inicio), "End" (fin) o cualquier milisegundo específico del sonido.
CloseSound Cierra el archivo de sonido y libera todos los recursos asociados a él.

Clase VideoFrame

La clase VideoFrame se puede utilizar para reproducir archivos multimedia no visuales, por ejemplo un archivo de vídeo para Windows. Esta clase permite determinar la posición y el tamaño del vídeo, y ofrece métodos integrados para facilitar su reproducción.

Si desea ver un ejemplo de uso de esta clase, vea Video.scx en la carpeta de Visual FoxPro Samples\Solution\Forms.

Propiedad Descripción
AutoOpen Especifica si el archivo de vídeo se debe abrir y mostrar automáticamente cuando se crea una instancia del objeto. El valor predeterminado es verdadero (.T.).
AutoPlay Especifica si el archivo de vídeo se debe reproducir automáticamente al abrirlo. El valor predeterminado es verdadero (.T.).
AutoRepeat Especifica si el archivo de vídeo debe reproducirse en bucle. Al establecer el valor .T., el vídeo se reproducirá continuamente. El valor predeterminado es falso (.F.).
ControlSource Especifica un campo que contiene la referencia al archivo de vídeo. Si se deja vacía, la clase espera un nombre de archivo estático en la propiedad VideoFile.
MCIalias Especifica el alias que debe usar MCI. Si se deja vacía, el alias predeterminado será la propiedad Name de la clase. Normalmente, esta propiedad puede dejarse vacía, pero si el usuario desea reproducir el mismo vídeo dos veces al mismo tiempo, deberá especificar un alias distinto cada vez.
VideoFile Contiene el nombre del archivo de vídeo a reproducir, por ejemplo: "C:\VFP\SAMPLES\SOLUTION\FORMS\FOX.AVI".
Método Descripción
CloseVideo Cierra el archivo de vídeo y libera todos los recursos asociados a él.
DoMCI Llamado por otros métodos para ejecutar comandos de MCI. También puede llamarlo un usuario para ejecutar un comando de MCI específico.
OpenVideo Abre el archivo de vídeo y muestra la primera imagen.
PauseVideo Hace una pausa en la reproducción de un vídeo. El vídeo puede reiniciarse utilizando el método PlayVideo.
PlayVideo Reproduce el archivo de vídeo. El archivo se debe abrir con el método OpenVideo antes de reproducirlo.
SetPosition Permite al usuario especificar la posición en el archivo multimedia. Puede ejecutarse en cualquier momento posterior a la apertura del archivo de vídeo. Los valores válidos son "Start" (inicio), "End" (fin) o un milisegundo específico del vídeo.

Biblioteca de clases Typelib

Typelib.vcx contiene la clase siguiente.

Clase Descripción
Typelib Clase contenedora que contiene un control Foxtlib de Visual FoxPro. El método ExportTypeLib de esta clase llama a los métodos del control Foxtlib para leer información de biblioteca de tipos de archivos .OLB, .TLB y .EXE.

El componente "Ver información de la biblioteca de tipos" del ejemplo Solutions ilustra el uso de esta clase.

Biblioteca de clases Utility

Utility.vcx contiene las clases siguientes:

Clase Descripción
Arraylib Clase personalizada con métodos para insertar y eliminar elementos de matrices y explorar columnas de matrices.
Execsp Clase personalizada con métodos que facilitan el paso a través de SQL y la ejecución de procedimientos almacenados en una base de datos remota.
Filelib Clase personalizada con métodos que realizan tareas comunes con cadenas utilizadas al manipular nombres de archivos, como quitar la extensión, agregar una barra inversa a una ruta de acceso, etc.
Menulib Clase contenedora con métodos para crear un menú contextual a partir de una matriz.

El componente "Crear menús contextuales dinámicos" del ejemplo Solutions ilustra el uso de esta clase.

Programa Registry

Registry.prg contiene las clases siguientes:

Clase Descripción
FileReg Subclase de la clase Registry que proporciona métodos para leer la aplicación asociada a extensiones de archivos determinadas, así como la ruta de acceso a la misma.
FoxReg Subclase de la clase Registry que proporciona métodos para leer y escribir las opciones de configuración de Visual FoxPro en el Registro de Windows.
ODBCReg Subclase de la clase Registry que proporciona métodos para leer información de orígenes de datos y controladores ODBC.
OldINIReg Subclase de la clase Registry que proporciona métodos para leer y escribir en un archivo .INI.
Registry Clase personalizada que proporciona métodos de acceso a funciones de la API de Windows para modificar el Registro de Windows.

Si desea ver ejemplos del uso de las clases relacionadas con el registro, ejecute SOLUTION.app en la carpeta ..\Samples\Solution.

Vea también

Ejemplos de soluciones | Control Foxtlib de Visual FoxPro | Foundation Classes de Visual FoxPro | Ejemplo Comercial Tasmania | Ejemplo de cliente-servidor | Ejemplos de servidor