Está en la página 1de 10

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
PROPIEDADES
cLangFileName
Contiene el nombre del archivo de lenguaje que usa VFPSkin para los elementos con soporte multilingüe
(tooltips, caption de botones, etc)

Sintaxis
Objeto.cLangFileName[ = cArchivoDeIdioma]

cArchivoDeIdioma
Contiene el nombre completo de un archivo de idioma (LNG). Puede especificarse el camino completo al
archivo o, si la ubicación del archivo se encuentra especificada a través del comando SET PATH,
simplemente el nombre del archivo.

Comentarios
El valor por defecto de esta propiedad es [DEFAULT] y contiene todas las referencias en inglés. Si el archivo
no existe, no es válido o no contiene todas las entradas, se utilizarán los valores por defecto para cada
entrada de referencia que no pueda ser localizada.
Es recomendable especificar este archivo en tiempo de diseño para un correcto funcionamiento de las
referencias multilingües.

Ejemplo
Para ver cuál es el archivo de idioma que se está utilizando actualmente:
Wait Window ThisForm.VFPSkin1.cLangFileName

Para cambiar el archivo de idioma:


ThisForm.VFPSkin1.cLangFileName = "SkinLang\Español.LNG"

---

cSkinName
Contiene el nombre del archivo de skin que usa VFPSkin

Sintaxis
Objeto.cSkinName[ = cArchivoDeSkin]

cArchivoDeSkin
Contiene el nombre completo de un archivo de skin (VFS). Puede especificarse el camino completo al archivo
o, si la ubicación del archivo se encuentra especificada a través del comando SET PATH, simplemente el
nombre del archivo.

Comentarios
Esta propiedad debe ser especificada en tiempo de diseño. En tiempo de ejecución, cambiar el valor de esta
propiedad puede producir resultados indeseables. Para cambiar el archivo de skin en tiempo de ejecución,
debe utilizar el método SetSkinName o, para hacerlo interactivamente, el método ChangeSkin. Para más
información, consulte la ayuda de cada uno de estos métodos.

Ejemplo
Para ver cuál es el archivo de skin que se está utilizando actualmente:
Wait Window ThisForm.VFPSkin1.cSkinName

lUseControlButton
http://www.vfpskin.com.ar info@vfpskin.com.ar
Especifica si se visualiza en los skins el botón de Control de ventana

Sintaxis
Objeto.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. Este icono no será visualizado si lUseControlButton es
.F.; si es .T., el icono será visualizado dependiendo del estado de la propiedad ControlBox del formulario.
Si se hubiese especificado un icono para el formulario (propiedad Icon), 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.
Para actualizar el estado del skin una vez que cambia el valor de la propiedad lUseControlButton, debe
realizar una llamada al método SetButtonsAttributes. Para más información, vea la ayuda de ese
método.

---

lUseSkinArea
Especifica si se utiliza el área cliente definida en el archivo del skin

Sintaxis
Objeto.lSkinArea[ = lUsarArea]

Comentarios
Los archivos de skin traen definida un área cliente. 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. En la versión 2.0 de VFPSkin usted tenía que acomodar
manualmente los controles dentro del formulario para que esto no ocurra.
Esta propiedad debe ser establecida en tiempo de diseño. Cambiar su valor en tiempo de ejecución puede
producir resultados no deseados.

---

nSkinType
Especifica cómo trabaja internamente VFPSkin

Sintaxis
Objeto.nSkinType[ = nModoDeTrabajo]

nModoDeTrabajo
El modo de trabajo de VFPSkin puede ser 0 - Autónomo (valor por defecto) o 1 - 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 Autónomo (0), VFPSkin crea un administrador de archivos VFS propio. Este objeto
es el encargado de recopilar todos los datos del archivo VFS y devolvérselo a VFPSkin cada vez que éste los
solicita.
Usando el modo de trabajo Normal (1 o un valor distinto de 0), VFPSkin trabaja con un administrador de
archivos VFS previamente creado (esto se explica más adelante). De esta forma, 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.vfpskin.com.ar info@vfpskin.com.ar
Disponible en tiempo de diseño. Cambiar el valor de esta propiedad en tiempo de ejecución no producirá
resultado alguno.

¿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. El
siguiente código puede ser agregado a su programa de inicio:

Set ClassLib To "VFPSkinTools.VCX" Additive


_Screen.AddObject("oMasterSkin", "VFPSkinMaster")
If _Screen.oMasterSkin.ReadSkin("Skins\MySkin.VFS")
*-- El archivo de skin se encuentra cargado correctamente
Else
*-- Ocurrió un error al leer el skin especificado
EndIf

Si utiliza una clase de base para todos sus formularios, agregue la clase VFPSkin en la misma y establezca la
propiedad nSkinType con el valor 1. Caso contrario, si no utiliza una clase de base, deberá establecer este
valor en la propiedad del objeto VFPSkin de cada formulario.
Si quiere, 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. Cuando VFPSkin se inicia y está trabajando en modo normal, verifica si el administrador general
de archivos VFS tiene un skin establecido. Si no lo tiene, asignará el especificado en esta propiedad.

MÉTODOS

http://www.vfpskin.com.ar info@vfpskin.com.ar
ChangeSkin
Abre un cuadro de diálogo que permite cambiar el skin actualmente seleccionado.

Sintaxis
Objeto.ChangeSkin()

Comentarios
Este método permite el cambio interactivo del skin actualmente seleccionado. 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.
Una vez que selecciona el skin, 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 el skin es cambiado, la propiedad cSkinName contendrá el nombre y ruta completa del archivo VFS
seleccionado.

Ejemplo
Para cambiar un skin de manera interactiva:
ThisForm.VFPSkin1.ChangeSkin()

---

ChangeWindowState
Cambia el estado del formulario en el cual se encuentra el objeto VFPSkin.

Sintaxis
Objeto.ChangeWindowState(nEstadoVentana)

nEstadoVentana
Especifica cómo va a cambiar el estado del formulario.
Si nEstadoVentana es 1, el formulario será Minimizado.
Si nEstadoVentana es 2, el cambio dependerá del estado actual del formulario de acuerdo a la propiedad
WindowState. Si WindowState es 0 (Ventana en estado normal), el formulario será Maximizado; si
WindowState es 2 (Ventana maximizada), el formulario será restaurado a su tamaño anterior.

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.
Para que trabaje correctamente, la propiedad ControlBox del formulario debe tener .T. como valor y,
dependiendo de la acción a tomar, también las propiedades MinButton y MaxButton deben tener .T.
Es recomendable que sustituya todas las líneas de código de sus programas, 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.

Ejemplo
MessageBox("Haga clic para minimizar el formulario", 64, "Información")
ThisForm.VFPSkin1.ChangeWindowState(1) &&Minimizamos el formulario
Wait Window "Aguarde y el formulario será restaurado automáticamente..." TimeOut 5
ThisForm.VFPSkin1.ChangeWindowState(2) &&Restauramos el formulario
MessageBox("Haga clic para maximizar el formulario", 64, "Información")
ThisForm.VFPSkin1.ChangeWindowState(2) &&Maximizamos el formulario
MessageBox("Haga clic para restaurar el formulario", 64, "Información")
ThisForm.VFPSkin1.ChangeWindowState(2)

---

http://www.vfpskin.com.ar info@vfpskin.com.ar
FrmMove
Usado internamente por VFPSkin para mover el formulario a través del mouse.

---

FrmResize
Usado internamente por VFPSkin para redimensionar el formulario a través del mouse.

---

GetMasterInfo
Usado internamente por VFPSkin para solicitar información al objeto que administra el archivo VFS
actualmente seleccionado.

---

SaveFormMousePos
Usado internamente por VFPSkin para guardar las coordenadas de la posición actual del puntero del mouse.

---

SetButtonsAttributes
Actualiza el estado de los 4 botones que tiene toda ventana (Control de Ventana, Minimizar,
Maximizar/Restaurar, Cerrar).

Sintaxis
Objeto.SetButtonsAttributes()

Comentarios
Cuando modifique a través de código el estado de alguna de las siguientes propiedades del formulario,
Closable, ControlBox, Icon, MaxButton, MinButton, o la propiedad lUseControlButton del objeto
VFPSkin, debe realizar una llamada a este método para que VFPSkin actualice el estado de los botones de la
ventana del formulario.

Ejemplo
*-- Cambiamos el estado del botón minimizar
ThisForm.MinButton = .F.
*-- Asignamos un ícono personalizado al formulario
ThisForm.Icon = "Images\MyIcon.ICO"
*-- Actualizamos el estado de los botones de VFPSkin
ThisForm.VFPSkin1.SetButtonsAttributes()

---

SetSkinCaption
Cambia el texto de la barra de títulos del formulario.

Sintaxis
Objeto.SetSkinCaption([cTitulo])

cTitulo
El texto de la barra de títulos del formulario. Este parámetro es opcional. Si no se especifica, VFPSkin
asignará automáticamente el contenido de la propiedad Caption del formulario.

http://www.vfpskin.com.ar info@vfpskin.com.ar
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.

Ejemplo
*-- Cambiamos el título del formulario
ThisForm.Caption = “Test form”
*-- Actualizamos el título del skin
ThisForm.VFPSkin1.SetSkinCaption()

---

SetSkinName
Establece el archivo de skin (archivo VFS) que usará VFPSkin.

Sintaxis
Objeto.SetSkinName(cArchivoVFS)

cArchivoVFS
El nombre del archivo VFS del skin que se quiere establecer. Puede especificarse el camino completo al
archivo o, si la ubicación del archivo se encuentra especificada a través del comando SET PATH,
simplemente el nombre del archivo.

Comentarios
Una vez que la clase se ha iniciado, no se puede hacer uso de la propiedad cSkinName para cambiar el skin
actual. En su lugar, 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.

Ejemplo
*-- Establecemos un nuevo archivo de skin
ThisForm.VFPSkin1.SetSkinName(“Skins\MyNewSkin.VFS”)

---

SkinAboutBox
Muestra el cuadro de diálogo “Acerca de...” de VFPSkin.

Sintaxis
Objeto.SkinAboutBox()

Comentarios
Puede ingresar al sitio web de VFPSkin haciendo clic en la dirección de la página web o puede enviar un e-
mail también haciendo clic en la dirección de correo.

Ejemplo
ThisForm.VFPSkin1.SkinAboutBox()

SkinContainer, SkinControl
Aplica el skin todos los objetos contenidos en un objeto contenedor o un objeto propiamente dicho,
agregados en tiempo de ejecución.

Sintaxis
Objeto.SkinContainer(oContenedor)

http://www.vfpskin.com.ar info@vfpskin.com.ar
Objeto.SkinControl(oControl)

oContenedor
El nombre del objeto contenedor que contiene los objetos a los cuales se desea aplicar skin.
oControl
El nombre del control al cual se desea aplicar el skin.

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. Para ello,
cuando agregue un objeto en tiempo de ejecución, 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.
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. Vea el ejemplo a continuación para
más información.

Ejemplo
*-- El formulario de este ejemplo debe tener un PageFrame
*-- Se asume también que el formulario tiene un objeto VFPSkin
*-- y que el PageFrame tiene 3 objetos Page
*-- El código a continuación podría ir en un CommandButton
*-- Agregamos un objeto Page más al PageFrame
ThisForm.PageFrame1.PageCount = ThisForm.PageFrame1.PageCount + 1
Local oPage
OPage = ThisForm.PageFrame1.Pages[ThisForm.PageFrame1.PageCount]
*-- Agregamos varios controles al Nuevo Page
Local nControl, cMacro, oLabel, oText
For nControl = 1 To 10
oPage.AddObject("RunTimeLabel" + Transform(nControl), "Label")
cMacro = "oPage.RunTimeLabel" + Transform(nControl)
oLabel = &cMacro
With oLabel
.Top = 35 * nControl
.Left = 30
.Caption = "RunTime Label N°" + Transform(nControl)
.Visible = .T.
Endwith
Endfor
For nControl = 1 To 10
oPage.AddObject("RunTimeTextBox" + Transform(nControl), "TextBox")
cMacro = "oPage.RunTimeTextBox" + Transform(nControl)
oText = &cMacro
With oText
.Top = 35 * nControl
.Left = 160
.Value = "RunTime Text Box N°" + Transform(nControl)
.Width = 250
.Visible = .T.
Endwith
Endfor
*-- Aplicamos el Skin al objeto Page agregado
Thisform.VFPSkin1.SkinControl(oPage)
*-- Aplicamos el Skin a los controles contenidos en el objeto Page
Thisform.VFPSkin1.SkinContainer(oPage)

---

http://www.vfpskin.com.ar info@vfpskin.com.ar
SkinMessageBox
Simula la función MessageBox de Visual FoxPro pero con skins. Para más información sobre esta función,
consulte la ayuda.

Sintaxis
Objeto.SkinMessageBox(eMessageText[,cTitleBarText][,nDialogBoxType][,nTimeout])

Comentarios
VFPSkin agrega la posibilidad de que sus cuadros de diálogo, mostrados a través de la función MessageBox
nativa de Visual FoxPro, sean visualizados con el skin establecido en el formulario que llama a la función.
Recibe los mismos parámetros que indica la ayuda de Visual FoxPro para mantener una completa
compatibilidad con el código ya escrito. Simplemente agregue unas cuantas letras antes de la llamada a la
función para hacer que VFPSkin se encargue del resto.
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. Con VFPSkin esto no importa ya que puede agregarlo a la
llamada, una vez que modifique la función por el método de VFPSkin.

Ejemplo
*-- La siguiente línea es una llamada clásica a la función MessageBox
=MessageBox(“¿Desea cerrar la aplicación?”, 4 + 32 + 256, “Consulta”, 2000)
*-- La siguiente línea es la misma que la anterior pero realizada con VFPSkin
=ThisForm.VFPSkin1.SkinMessageBox(“¿Desea cerrar la aplicación?”,;
4 + 32 + 256, “Consulta”, 2000)

http://www.vfpskin.com.ar info@vfpskin.com.ar
SUGERENCIAS PARA EL DESARROLLADOR
Debido a que hemos descubierto algunos bugs en algunas versiones de Visual FoxPro al momento de utilizar el
evento Assign, es que muchas propiedades aquí descriptas deben llamar a un método de la clase para
establecer el valor real. Usted puede programar sus clases de base creando un evento Assign que llame
automáticamente al método correspondiente de VFPSkin o VFPSkinButton.
Por ejemplo:
VFPSkin tiene el método SetSkinCaption para establecer el Caption del skin. 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. 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.CAPTION = m.vNewVal
This.VFPSkin1.SetSkinCaption()

Todos los productos, marcas y logos mencionados en este documento son propiedad y/o marca registrada de sus respectivos dueños.

http://www.vfpskin.com.ar info@vfpskin.com.ar

También podría gustarte