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
[email protected] etc) Sintaxis Objeto.cLangFileName Para cambiar el archivo de idioma: ThisForm.VFPSkin1. Ejemplo Para ver cuál es el archivo de idioma que se está utilizando actualmente: Wait Window ThisForm. Es recomendable especificar este archivo en tiempo de diseño para un correcto funcionamiento de las referencias multilingües.vfpskin. Puede especificarse el camino completo al archivo o.com. si la ubicación del archivo se encuentra especificada a través del comando SET PATH. consulte la ayuda de cada uno de estos métodos.cSkinName[ = cArchivoDeSkin] cArchivoDeSkin Contiene el nombre completo de un archivo de skin (VFS). para hacerlo interactivamente.VFPSkin1.ar info@vfpskin. no es válido o no contiene todas las entradas. En tiempo de ejecución.ar . Puede especificarse el camino completo al archivo o. Para cambiar el archivo de skin en tiempo de ejecución. el método ChangeSkin. si la ubicación del archivo se encuentra especificada a través del comando SET PATH.VFPSkin1. simplemente el nombre del archivo. Comentarios El valor por defecto de esta propiedad es [DEFAULT] y contiene todas las referencias en inglés.LNG" --- cSkinName Contiene el nombre del archivo de skin que usa VFPSkin Sintaxis Objeto. debe utilizar el método SetSkinName o.cLangFileName[ = cArchivoDeIdioma] cArchivoDeIdioma Contiene el nombre completo de un archivo de idioma (LNG).cLangFileName = "SkinLang\Español. Para más información. Ejemplo Para ver cuál es el archivo de skin que se está utilizando actualmente: Wait Window ThisForm. cambiar el valor de esta propiedad puede producir resultados indeseables.cSkinName lUseControlButton http://www.PROPIEDADES cLangFileName Contiene el nombre del archivo de lenguaje que usa VFPSkin para los elementos con soporte multilingüe (tooltips. simplemente el nombre del archivo. Comentarios Esta propiedad debe ser especificada en tiempo de diseño. caption de botones. se utilizarán los valores por defecto para cada entrada de referencia que no pueda ser localizada. Si el archivo no existe.com. T.lSkinArea[ = lUsarArea] Comentarios Los archivos de skin traen definida un área cliente. En la versión 2. Para más información.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. VFPSkin crea un administrador de archivos VFS propio. 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.F. si es . --- nSkinType Especifica cómo trabaja internamente VFPSkin Sintaxis Objeto. De esta forma. --- lUseSkinArea Especifica si se utiliza el área cliente definida en el archivo del skin Sintaxis Objeto. VFPSkin trabaja con un administrador de archivos VFS previamente creado (esto se explica más adelante). 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. el icono será visualizado dependiendo del estado de la propiedad ControlBox del formulario. Esta propiedad debe ser establecida en tiempo de diseño.com.vfpskin. debe realizar una llamada al método SetButtonsAttributes. Usando el modo de trabajo Normal (1 o un valor distinto de 0). Este icono no será visualizado si lUseControlButton es . Este objeto es el encargado de recopilar todos los datos del archivo VFS y devolvérselo a VFPSkin cada vez que éste los solicita. vea la ayuda de ese método. 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..com.Especifica si se visualiza en los skins el botón de Control de ventana Sintaxis Objeto.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.. Cambiar su valor en tiempo de ejecución puede producir resultados no deseados.ar info@vfpskin. Para actualizar el estado del skin una vez que cambia el valor de la propiedad lUseControlButton.ar . http://www.0 de VFPSkin usted tenía que acomodar manualmente los controles dentro del formulario para que esto no ocurra.Autónomo (valor por defecto) o 1 . Usando el modo de trabajo Autónomo (0). Si se hubiese especificado un icono para el formulario (propiedad Icon). Caso contrario. asignará el especificado en esta propiedad. ¿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. Cambiar el valor de esta propiedad en tiempo de ejecución no producirá resultado alguno.VFS") *-.ar
[email protected]" Additive _Screen. 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.ReadSkin("Skins\MySkin. Cuando VFPSkin se inicia y está trabajando en modo normal. verifica si el administrador general de archivos VFS tiene un skin establecido.oMasterSkin. 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.AddObject("oMasterSkin". si no utiliza una clase de base.Disponible en tiempo de diseño. agregue la clase VFPSkin en la misma y establezca la propiedad nSkinType con el valor 1. Si no lo tiene.vfpskin. Si quiere.Ocurrió un error al leer el skin especificado EndIf Si utiliza una clase de base para todos sus formularios. "VFPSkinMaster") If _Screen.ar . MÉTODOS http://www.El archivo de skin se encuentra cargado correctamente Else *-.com. T. 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.ChangeWindowState(2) &&Maximizamos MessageBox("Haga clic para restaurar el formulario". Comentarios Este método es usado internamente por VFPSkin.vfpskin. la propiedad ControlBox del formulario debe tener . el formulario será restaurado a su tamaño anterior. "Información") el formulario automáticamente. "Información") http://www. Si nEstadoVentana es 2.ChangeWindowState(nEstadoVentana) nEstadoVentana Especifica cómo va a cambiar el estado del formulario. Sintaxis Objeto. 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.com. Una vez que selecciona el skin. "Información") el formulario 64.ChangeSkin() --- ChangeWindowState Cambia el estado del formulario en el cual se encuentra el objeto VFPSkin.com." TimeOut 5 el formulario 64.VFPSkin1. el cambio dependerá del estado actual del formulario de acuerdo a la propiedad WindowState.ar . Es recomendable que sustituya todas las líneas de código de sus programas. 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. la propiedad cSkinName contendrá el nombre y ruta completa del archivo VFS seleccionado. Sintaxis Objeto.. Ejemplo Para cambiar un skin de manera interactiva: ThisForm. Ejemplo MessageBox("Haga clic para minimizar el formulario". Si WindowState es 0 (Ventana en estado normal).ChangeSkin() Comentarios Este método permite el cambio interactivo del skin actualmente seleccionado.ChangeWindowState(2) &&Restauramos MessageBox("Haga clic para maximizar el formulario".T.VFPSkin1. ThisForm. dependiendo de la acción a tomar.ar info@vfpskin. Si el skin es cambiado. como valor y.VFPSkin1. 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. si WindowState es 2 (Ventana maximizada).VFPSkin1.. ThisForm. el formulario será Maximizado. Si nEstadoVentana es 1. Para que trabaje correctamente.ChangeWindowState(2) --64. el formulario será Minimizado.VFPSkin1. también las propiedades MinButton y MaxButton deben tener .ChangeSkin Abre un cuadro de diálogo que permite cambiar el skin actualmente seleccionado. ThisForm.ChangeWindowState(1) &&Minimizamos Wait Window "Aguarde y el formulario será restaurado ThisForm. Asignamos un ícono personalizado al formulario ThisForm.Icon = "Images\MyIcon. Cerrar). Ejemplo *-.com. Sintaxis Objeto. http://www.SetSkinCaption([cTitulo]) cTitulo El texto de la barra de títulos del formulario. --- FrmResize Usado internamente por VFPSkin para redimensionar el formulario a través del mouse. VFPSkin asignará automáticamente el contenido de la propiedad Caption del formulario. Closable.Actualizamos el estado de los botones de VFPSkin ThisForm.F.ar info@vfpskin. MinButton. Si no se especifica. o la propiedad lUseControlButton del objeto VFPSkin. *-. Icon. Este parámetro es opcional.vfpskin.SetButtonsAttributes() --- SetSkinCaption Cambia el texto de la barra de títulos del formulario.VFPSkin1. --- SaveFormMousePos Usado internamente por VFPSkin para guardar las coordenadas de la posición actual del puntero del mouse.MinButton = . debe realizar una llamada a este método para que VFPSkin actualice el estado de los botones de la ventana del formulario.FrmMove Usado internamente por VFPSkin para mover el formulario a través del mouse.ICO" *-. --- SetButtonsAttributes Actualiza el estado de los 4 botones que tiene toda ventana (Control de Ventana. Maximizar/Restaurar. Sintaxis Objeto. ControlBox. Minimizar. --- GetMasterInfo Usado internamente por VFPSkin para solicitar información al objeto que administra el archivo VFS actualmente seleccionado.com.Cambiamos el estado del botón minimizar ThisForm. MaxButton.ar .SetButtonsAttributes() Comentarios Cuando modifique a través de código el estado de alguna de las siguientes propiedades del formulario. Puede especificarse el camino completo al archivo o.VFPSkin1.SetSkinName(“Skins\MyNewSkin.ar .ar
[email protected] un nuevo archivo de skin ThisForm.com. agregados en tiempo de ejecución.vfpskin.Cambiamos el título del formulario ThisForm. En su lugar.Comentarios Cuando modifique a través de código el valor de la propiedad Caption del formulario. debe actualizar el contenido de la barra de títulos que maneja VFPSkin a través de este método. SkinControl Aplica el skin todos los objetos contenidos en un objeto contenedor o un objeto propiamente dicho.” de VFPSkin. Ejemplo *-.Actualizamos el título del skin ThisForm. Ejemplo *-. Comentarios Una vez que la clase se ha iniciado.. si la ubicación del archivo se encuentra especificada a través del comando SET PATH. Sintaxis Objeto. Ejemplo ThisForm. Sintaxis Objeto.SkinAboutBox() SkinContainer.SetSkinCaption() --- SetSkinName Establece el archivo de skin (archivo VFS) que usará VFPSkin.Caption = “Test form” *-.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.VFPSkin1.SetSkinName(cArchivoVFS) cArchivoVFS El nombre del archivo VFS del skin que se quiere establecer.VFS”) --- SkinAboutBox Muestra el cuadro de diálogo “Acerca de. Sintaxis Objeto.SkinContainer(oContenedor) http://www. no se puede hacer uso de la propiedad cSkinName para cambiar el skin actual..com. 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. simplemente el nombre del archivo. Aplicamos el Skin a los controles contenidos en el objeto Page Thisform.Value = "RunTime Text Box N°" + Transform(nControl) .PageFrame1.RunTimeTextBox" + Transform(nControl) oText = &cMacro With oText .El formulario de este ejemplo debe tener un PageFrame *-.PageCount + 1 Local oPage OPage = ThisForm.vfpskin. Ejemplo *-.SkinContainer(oPage) --http://www. oText For nControl = 1 To 10 oPage.ar .PageFrame1.VFPSkin1. cuando agregue un objeto en tiempo de ejecución.Visible = .com.Visible = . Endwith Endfor *-.Width = 250 .T.Agregamos varios controles al Nuevo Page Local nControl. oControl El nombre del control al cual se desea aplicar el skin.RunTimeLabel" + Transform(nControl) oLabel = &cMacro With oLabel .Top = 35 * nControl .Aplicamos el Skin al objeto Page agregado Thisform.com.AddObject("RunTimeTextBox" + Transform(nControl).SkinControl(oPage) *-.PageCount = ThisForm.Agregamos un objeto Page más al PageFrame ThisForm. Vea el ejemplo a continuación para más información.AddObject("RunTimeLabel" + Transform(nControl). Endwith Endfor For nControl = 1 To 10 oPage.ar
[email protected] = 35 * nControl . "TextBox") cMacro = "oPage.y que el PageFrame tiene 3 objetos Page *-. 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. cMacro. 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.T.Se asume también que el formulario tiene un objeto VFPSkin *-.Objeto.SkinControl(oControl) oContenedor El nombre del objeto contenedor que contiene los objetos a los cuales se desea aplicar skin.El código a continuación podría ir en un CommandButton *-.PageFrame1. Para ello.PageFrame1.Caption = "RunTime Label N°" + Transform(nControl) . "Label") cMacro = "oPage.VFPSkin1. SkinControl aplica el skin un control en particular independientemente de que el mismo sea contenedor o no.Pages[ThisForm. oLabel. 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.Left = 30 .PageCount] *-.Left = 160 . sean visualizados con el skin establecido en el formulario que llama a la función.La siguiente línea es una llamada clásica a la función MessageBox =MessageBox(“¿Desea cerrar la aplicación?”. 2000) http://www.SkinMessageBox Simula la función MessageBox de Visual FoxPro pero con skins.ar
[email protected](“¿Desea cerrar la aplicación?”.La siguiente línea es la misma que la anterior pero realizada con VFPSkin =ThisForm. Simplemente agregue unas cuantas letras antes de la llamada a la función para hacer que VFPSkin se encargue del resto. mostrados a través de la función MessageBox nativa de Visual FoxPro. “Consulta”.nDialogBoxType][. Recibe los mismos parámetros que indica la ayuda de Visual FoxPro para mantener una completa compatibilidad con el código ya escrito. 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. Para más información sobre esta función.ar . una vez que modifique la función por el método de VFPSkin..com.VFPSkin1. Ejemplo *-. 2000) *-. consulte la ayuda. 4 + 32 + 256.vfpskin.cTitleBarText][.SkinMessageBox(eMessageText[.com. Con VFPSkin esto no importa ya que puede agregarlo a la llamada. 4 + 32 + 256. “Consulta”. Sintaxis Objeto.nTimeout]) Comentarios VFPSkin agrega la posibilidad de que sus cuadros de diálogo. VFPSkin1.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.com.ar info@vfpskin. Por ejemplo: VFPSkin tiene el método SetSkinCaption para establecer el Caption del skin.vNewVal This. http://www. 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.vfpskin.com.ar .CAPTION = m. Usted puede programar sus clases de base creando un evento Assign que llame automáticamente al método correspondiente de VFPSkin o VFPSkinButton. marcas y logos mencionados en este documento son propiedad y/o marca registrada de sus respectivos dueños.SetSkinCaption() Todos los productos.