Bienvenido a VFPSkin!!!

Con esta clase usted podrá cambiar completamente la apariencia de sus productos desarrollados en Visual FoxPro 6.0 o superior.

VFPSkin
Permite cambiar la apariencia de los formularios diseñados en Visual FoxPro 6.0 o superior. Simplemente agregue la clase al formulario, establezca en la propiedad cSkinName el nombre del archivo de skin que va a usar (archivo VFS) y ejecute el formulario. Eso es todo. También puede usar el nuevo generador incorporado a VFPSkin (VFPSkinBuilder) para establecer las propiedades necesarias para el funcionamiento de VFPSkin y ver una Vista Previa Real de su formulario, en Tiempo de Diseño, sin necesidad de ejecutarlo.

Este archivo de documentación se aplica a: VFPSkin 3.0 Single License Última revisión: 21/10/03 04:55 P.M. Idioma: Español
http://www.vfpskin.com.ar info@vfpskin.com.ar

cSkinName lUseControlButton http://www. Si el archivo no existe.cLangFileName = "SkinLang\Español. cambiar el valor de esta propiedad puede producir resultados indeseables. no es válido o no contiene todas las entradas. debe utilizar el método SetSkinName o. Puede especificarse el camino completo al archivo o.VFPSkin1.cSkinName[ = cArchivoDeSkin] cArchivoDeSkin Contiene el nombre completo de un archivo de skin (VFS).com. Para más información. etc) Sintaxis Objeto. En tiempo de ejecución. Para cambiar el archivo de skin en tiempo de ejecución. simplemente el nombre del archivo. el método ChangeSkin. se utilizarán los valores por defecto para cada entrada de referencia que no pueda ser localizada. Comentarios Esta propiedad debe ser especificada en tiempo de diseño. Ejemplo Para ver cuál es el archivo de skin que se está utilizando actualmente: Wait Window ThisForm. caption de botones.vfpskin.VFPSkin1. para hacerlo interactivamente. Ejemplo Para ver cuál es el archivo de idioma que se está utilizando actualmente: Wait Window ThisForm. Puede especificarse el camino completo al archivo o.VFPSkin1. Comentarios El valor por defecto de esta propiedad es [DEFAULT] y contiene todas las referencias en inglés. simplemente el nombre del archivo.com. si la ubicación del archivo se encuentra especificada a través del comando SET PATH.PROPIEDADES cLangFileName Contiene el nombre del archivo de lenguaje que usa VFPSkin para los elementos con soporte multilingüe (tooltips. Es recomendable especificar este archivo en tiempo de diseño para un correcto funcionamiento de las referencias multilingües.ar .LNG" --- cSkinName Contiene el nombre del archivo de skin que usa VFPSkin Sintaxis Objeto.ar info@vfpskin.cLangFileName Para cambiar el archivo de idioma: ThisForm. consulte la ayuda de cada uno de estos métodos.cLangFileName[ = cArchivoDeIdioma] cArchivoDeIdioma Contiene el nombre completo de un archivo de idioma (LNG). si la ubicación del archivo se encuentra especificada a través del comando SET PATH.

lSkinArea[ = lUsarArea] Comentarios Los archivos de skin traen definida un área cliente. VFPSkin trabaja con un administrador de archivos VFS previamente creado (esto se explica más adelante). --- nSkinType Especifica cómo trabaja internamente VFPSkin Sintaxis Objeto. Usando el modo de trabajo Autónomo (0). VFPSkin crea un administrador de archivos VFS propio.. Si se hubiese especificado un icono para el formulario (propiedad Icon)..F.lUseControlButton[ = lUsarControlVentana] Comentarios Los archivos de skin tienen actualmente una imagen que es usada en lugar del tradicional icono de Windows en la parte superior izquierda de los formularios. De esta forma. Para actualizar el estado del skin una vez que cambia el valor de la propiedad lUseControlButton. debe realizar una llamada al método SetButtonsAttributes. el archivo especificado es el que será visualizado en lugar de la imagen que viene con el archivo del skin aplicado en ese momento al formulario. Este icono no será visualizado si lUseControlButton es .nSkinType[ = nModoDeTrabajo] nModoDeTrabajo El modo de trabajo de VFPSkin puede ser 0 .Normal (Cualquier valor distinto de 0 será considerado como 1 mientras VFPSkin Team no comunique lo contrario) Comentarios La idea de utilizar esta propiedad es la de ahorrar recursos comunes al objeto VFPSkin que contiene cada formulario dentro de una aplicación. Usando el modo de trabajo Normal (1 o un valor distinto de 0).ar .Especifica si se visualiza en los skins el botón de Control de ventana Sintaxis Objeto. En la versión 2. Esta área sirve para que VFPSkin reposicione automáticamente los controles dentro del formulario de manera tal que los controles que el mismo contiene no "pisen" las imágenes que componen el skin. Cambiar su valor en tiempo de ejecución puede producir resultados no deseados. se disminuye la cantidad de recursos consumidos ya que se utiliza el mismo administrador para todos los objetos VFPSkin y se agiliza la lectura del archivo VFS ya que se accede al mismo sólo una vez. http://www. el icono será visualizado dependiendo del estado de la propiedad ControlBox del formulario. Esta propiedad debe ser establecida en tiempo de diseño. --- lUseSkinArea Especifica si se utiliza el área cliente definida en el archivo del skin Sintaxis Objeto. vea la ayuda de ese método.T. Para más información.Autónomo (valor por defecto) o 1 .vfpskin.0 de VFPSkin usted tenía que acomodar manualmente los controles dentro del formulario para que esto no ocurra.ar info@vfpskin.com. Este objeto es el encargado de recopilar todos los datos del archivo VFS y devolvérselo a VFPSkin cada vez que éste los solicita.com. si es .

si no utiliza una clase de base. Si quiere. El siguiente código puede ser agregado a su programa de inicio: Set ClassLib To "VFPSkinTools. deberá establecer este valor en la propiedad del objeto VFPSkin de cada formulario.VFS") *-. asignará el especificado en esta propiedad. puede no establecer el archivo de skin en el código anterior y especificarlo en la propiedad cSkinName del objeto VFPSkin de la clase base de sus formularios o en el objeto VFPSkin de cada formulario. Caso contrario.com. MÉTODOS http://www. Si no lo tiene.vfpskin.Disponible en tiempo de diseño. agregue la clase VFPSkin en la misma y establezca la propiedad nSkinType con el valor 1.VCX" Additive _Screen.com.oMasterSkin.Ocurrió un error al leer el skin especificado EndIf Si utiliza una clase de base para todos sus formularios.ReadSkin("Skins\MySkin. Cuando VFPSkin se inicia y está trabajando en modo normal.AddObject("oMasterSkin". Cambiar el valor de esta propiedad en tiempo de ejecución no producirá resultado alguno.El archivo de skin se encuentra cargado correctamente Else *-.ar .ar info@vfpskin. "VFPSkinMaster") If _Screen. verifica si el administrador general de archivos VFS tiene un skin establecido. ¿Cómo utilizar un administrador de archivos VFS compartido? Para utilizar un administrador de archivos VFS compartido tiene que agregar unas cuantas líneas de código a su programa principal y establecer el nombre del archivo de skin que se va a utilizar en toda la aplicación.

Si nEstadoVentana es 1.ChangeWindowState(2) &&Maximizamos MessageBox("Haga clic para restaurar el formulario".ChangeWindowState(nEstadoVentana) nEstadoVentana Especifica cómo va a cambiar el estado del formulario. "Información") http://www. el formulario será Minimizado.. Para que trabaje correctamente. métodos y eventos que trabajen directamente sobre la propiedad WindowState del formulario por este método ya que pueden producirse resultados inesperados si VFPSkin no maneja el estado de la ventana del formulario.T.VFPSkin1. el formulario será restaurado a su tamaño anterior. el cambio dependerá del estado actual del formulario de acuerdo a la propiedad WindowState. "Información") el formulario 64." TimeOut 5 el formulario 64.ChangeWindowState(2) &&Restauramos MessageBox("Haga clic para maximizar el formulario".ChangeSkin Abre un cuadro de diálogo que permite cambiar el skin actualmente seleccionado.VFPSkin1. Sintaxis Objeto. como valor y. "Información") el formulario automáticamente.. Comentarios Este método es usado internamente por VFPSkin. pero puede querer utilizarlo para algún control personalizado que maneje el estado de la ventana o para cambiar el estado de la ventana a través de código. Ejemplo Para cambiar un skin de manera interactiva: ThisForm. Si nEstadoVentana es 2.VFPSkin1. El cuadro de diálogo proporcionado por VFPSkin muestra los skins disponibles en la carpeta actual y permite obtener una vista previa de cada uno al momento de seleccionarlo.ChangeWindowState(1) &&Minimizamos Wait Window "Aguarde y el formulario será restaurado ThisForm. dependiendo de la acción a tomar. también las propiedades MinButton y MaxButton deben tener .VFPSkin1.com. Si WindowState es 0 (Ventana en estado normal).ChangeSkin() Comentarios Este método permite el cambio interactivo del skin actualmente seleccionado.ar .ChangeWindowState(2) --64. Sintaxis Objeto. puede hacer clic en el botón "Aceptar" para aplicar ese skin al formulario que llamó al método o puede hacer clic en "Cancelar" para dejar sin efecto el cambio solicitado.T. ThisForm. Es recomendable que sustituya todas las líneas de código de sus programas. Una vez que selecciona el skin.vfpskin. la propiedad ControlBox del formulario debe tener .VFPSkin1.ChangeSkin() --- ChangeWindowState Cambia el estado del formulario en el cual se encuentra el objeto VFPSkin. Si el skin es cambiado. ThisForm.com. la propiedad cSkinName contendrá el nombre y ruta completa del archivo VFS seleccionado. si WindowState es 2 (Ventana maximizada).ar info@vfpskin. ThisForm. Ejemplo MessageBox("Haga clic para minimizar el formulario". el formulario será Maximizado.

--- SetButtonsAttributes Actualiza el estado de los 4 botones que tiene toda ventana (Control de Ventana. Si no se especifica. debe realizar una llamada a este método para que VFPSkin actualice el estado de los botones de la ventana del formulario.SetButtonsAttributes() Comentarios Cuando modifique a través de código el estado de alguna de las siguientes propiedades del formulario. --- GetMasterInfo Usado internamente por VFPSkin para solicitar información al objeto que administra el archivo VFS actualmente seleccionado.SetSkinCaption([cTitulo]) cTitulo El texto de la barra de títulos del formulario.Actualizamos el estado de los botones de VFPSkin ThisForm. Icon.ar info@vfpskin. VFPSkin asignará automáticamente el contenido de la propiedad Caption del formulario. Minimizar.Cambiamos el estado del botón minimizar ThisForm. Closable. ControlBox.Icon = "Images\MyIcon. Ejemplo *-. Sintaxis Objeto. http://www.vfpskin.ICO" *-. Maximizar/Restaurar. MaxButton.F.com.ar . *-. Este parámetro es opcional. o la propiedad lUseControlButton del objeto VFPSkin. --- FrmResize Usado internamente por VFPSkin para redimensionar el formulario a través del mouse.com.Asignamos un ícono personalizado al formulario ThisForm.VFPSkin1.MinButton = . Sintaxis Objeto.FrmMove Usado internamente por VFPSkin para mover el formulario a través del mouse. --- SaveFormMousePos Usado internamente por VFPSkin para guardar las coordenadas de la posición actual del puntero del mouse. Cerrar).SetButtonsAttributes() --- SetSkinCaption Cambia el texto de la barra de títulos del formulario. MinButton.

vfpskin. Comentarios Una vez que la clase se ha iniciado. debe actualizar el contenido de la barra de títulos que maneja VFPSkin a través de este método..SetSkinCaption() --- SetSkinName Establece el archivo de skin (archivo VFS) que usará VFPSkin.VFPSkin1. Sintaxis Objeto.com.SkinAboutBox() Comentarios Puede ingresar al sitio web de VFPSkin haciendo clic en la dirección de la página web o puede enviar un email también haciendo clic en la dirección de correo.SetSkinName(“Skins\MyNewSkin. Sintaxis Objeto.SetSkinName(cArchivoVFS) cArchivoVFS El nombre del archivo VFS del skin que se quiere establecer. SkinControl Aplica el skin todos los objetos contenidos en un objeto contenedor o un objeto propiamente dicho.SkinAboutBox() SkinContainer.com.Comentarios Cuando modifique a través de código el valor de la propiedad Caption del formulario.” de VFPSkin.Establecemos un nuevo archivo de skin ThisForm.Cambiamos el título del formulario ThisForm.SkinContainer(oContenedor) http://www. simplemente el nombre del archivo. Ejemplo *-. utilice este método para cambiar el archivo de skin a través de código o llame al método ChangeSkin para cambiarlo interactivamente.. Sintaxis Objeto.ar info@vfpskin. Ejemplo ThisForm. no se puede hacer uso de la propiedad cSkinName para cambiar el skin actual.VFPSkin1.Caption = “Test form” *-. si la ubicación del archivo se encuentra especificada a través del comando SET PATH.ar . agregados en tiempo de ejecución. Ejemplo *-.VFS”) --- SkinAboutBox Muestra el cuadro de diálogo “Acerca de. En su lugar. Puede especificarse el camino completo al archivo o.Actualizamos el título del skin ThisForm.VFPSkin1.

T.AddObject("RunTimeLabel" + Transform(nControl).PageCount + 1 Local oPage OPage = ThisForm.Aplicamos el Skin a los controles contenidos en el objeto Page Thisform.SkinControl(oControl) oContenedor El nombre del objeto contenedor que contiene los objetos a los cuales se desea aplicar skin.El formulario de este ejemplo debe tener un PageFrame *-.PageFrame1.PageFrame1.Objeto.RunTimeLabel" + Transform(nControl) oLabel = &cMacro With oLabel .VFPSkin1.SkinContainer(oPage) --http://www.AddObject("RunTimeTextBox" + Transform(nControl).Value = "RunTime Text Box N°" + Transform(nControl) . Ejemplo *-. Vea el ejemplo a continuación para más información. oControl El nombre del control al cual se desea aplicar el skin.RunTimeTextBox" + Transform(nControl) oText = &cMacro With oText .Left = 30 .VFPSkin1. Endwith Endfor For nControl = 1 To 10 oPage. Endwith Endfor *-.vfpskin.Pages[ThisForm.Visible = .Left = 160 .Agregamos varios controles al Nuevo Page Local nControl.Top = 35 * nControl .El código a continuación podría ir en un CommandButton *-.PageFrame1.Agregamos un objeto Page más al PageFrame ThisForm.SkinControl(oPage) *-.com. La diferencia entre ambos métodos radica en que SkinContainer aplica el skin los objetos contenidos en un contenedor pero no el contenedor propiamente dicho. SkinControl aplica el skin un control en particular independientemente de que el mismo sea contenedor o no.PageCount = ThisForm. cMacro.Visible = . oLabel. "Label") cMacro = "oPage.PageFrame1.Top = 35 * nControl . "TextBox") cMacro = "oPage.T.PageCount] *-.Aplicamos el Skin al objeto Page agregado Thisform. Comentarios Cuando trabaje con VFPSkin verá que los objetos agregados en tiempo de ejecución en sus formularios no tienen la apariencia gráfica definida para el mismo en el archivo del skin aplicado actualmente.com.Width = 250 . simplemente agregue una llamada a uno de estos métodos para que el control o los objetos contenidos en el contenedor tomen la apariencia especificada en el skin. Para ello.Caption = "RunTime Label N°" + Transform(nControl) .y que el PageFrame tiene 3 objetos Page *-.ar .Se asume también que el formulario tiene un objeto VFPSkin *-.ar info@vfpskin. oText For nControl = 1 To 10 oPage. cuando agregue un objeto en tiempo de ejecución.

VFPSkin1.nTimeout]) Comentarios VFPSkin agrega la posibilidad de que sus cuadros de diálogo.ar . 4 + 32 + 256.SkinMessageBox Simula la función MessageBox de Visual FoxPro pero con skins. “Consulta”.com. consulte la ayuda. sean visualizados con el skin establecido en el formulario que llama a la función. Con VFPSkin esto no importa ya que puede agregarlo a la llamada. Sintaxis Objeto..ar info@vfpskin. 4 + 32 + 256. “Consulta”. mostrados a través de la función MessageBox nativa de Visual FoxPro. Ejemplo *-.SkinMessageBox(“¿Desea cerrar la aplicación?”. 2000) http://www. Recibe los mismos parámetros que indica la ayuda de Visual FoxPro para mantener una completa compatibilidad con el código ya escrito.vfpskin. Atención usuarios de Visual FoxPro 6: La función MessageBox en esta versión de Visual FoxPro no incorpora el último parámetro (nTimeOut) que es el que especifica el tiempo que se visualiza el cuadro de diálogo antes que el mismo se cierre automáticamente.cTitleBarText][. 2000) *-. Simplemente agregue unas cuantas letras antes de la llamada a la función para hacer que VFPSkin se encargue del resto.La siguiente línea es una llamada clásica a la función MessageBox =MessageBox(“¿Desea cerrar la aplicación?”.SkinMessageBox(eMessageText[. una vez que modifique la función por el método de VFPSkin.nDialogBoxType][.La siguiente línea es la misma que la anterior pero realizada con VFPSkin =ThisForm. Para más información sobre esta función.com.

com.vfpskin.ar info@vfpskin.SetSkinCaption() Todos los productos.vNewVal This. Cada vez que usted cambie por código el valor de esta propiedad deberá realizar una llamada al método para que VFPSkin actualice el Caption del formulario al cual se le aplico el skin. marcas y logos mencionados en este documento son propiedad y/o marca registrada de sus respectivos dueños.ar .com. Usted puede programar sus clases de base creando un evento Assign que llame automáticamente al método correspondiente de VFPSkin o VFPSkinButton.CAPTION = m. http://www.SUGERENCIAS PARA EL DESARROLLADOR Debido a que hemos descubierto algunos bugs en algunas versiones de Visual FoxPro al momento de utilizar el evento Assign. Usted podría crear el evento Caption_Assign y escribir el siguiente código para que se haga la llamada automáticamente: LPARAMETERS vNewVal *To do: Modify this routine for the Assign method THIS. es que muchas propiedades aquí descriptas deben llamar a un método de la clase para establecer el valor real. Por ejemplo: VFPSkin tiene el método SetSkinCaption para establecer el Caption del skin.VFPSkin1.