Puesta en funcionamiento -- > FoxFaceClassSourcecode
01/04/2020
Vea también el capítulo anterior FoxFace y el siguiente Restyling FoxFace -- > FoxFace II
Autor del proyecto FoxFace: RetailSystems http://www.retailsystems.cz/foxfaceEn.htm
Lo primero decir que la entrega de FoxFaceClassSourcecode necesita unos pequeños arreglos para funcionar correctamente, pero es gratis, no lo olvidemos. Todo lo que vimos hasta ahora en el capítulo anterior funcionaba bastante bien pero...
FoxFaceClassSourcecode
Lo primero, renombro la carpeta FoxFaceClassSourcecode a FoxFace
En la carpeta que he renombrado, ahora FoxFace, tenemos varias carpetas que se ven en la imagen de abajo, entre ellas:
- FoxFace: Muchas carpetas y ejecutables compilados en la versión Vfp 8. Eso sí tenemos los proyectos y el código fuente, pero necesitamos configurar cosas y no tenemos ni idea de momento.
- FoxFaceDesigner: Diseñador de estilos que ya hemos probado. Hacemos clic en ejecutable y nos sale el mensaje y nos dice que esta compilado en otra versión (Vfp 8). Abrimos el proyecto, compilamos y funcionando. De todas formas vemos desorden y carpetas que sobran o que no están bien ubicadas. Más tarde ordenaremos todo a nuestro gusto.
FoxFace un vistazo general
Se puede ver esto:
Entro en la carpeta sample que tiene el proyecto sampleproyect.pjx y me doy cuenta en principio de que funciona bien pero descubro que la clase foxface.vcx pertenece a una versión mas antigua, la 1.0 mientras que la última entrega es la 1.8.
Renombro la carpeta Samples a FoxFace 1.0 y el proyecto sampleproyect.pjx a Foxface.pjx. Posteriormente corto y pego FoxFace 1.0 en mi carpeta de proyectos de Visual Foxpro para tener todo mas ordenado y diferenciar las distintas versiones de clase.
Vuelvo a la carpeta FoxFace
Nota: Tal y como viene FoxFace 1.8 tenemos un funcionamiento con anomalías y necesitamos cambiar código para que sea utilizable.
------
Ahora ya he vuelto a la carpeta FoxFace
En la carpeta lib está la clase foxface.vcx que se corresponde con la versión 1.8, que mas tarde, voy a transformarla en la versión 2.0
Abro el proyecto Foxface.pjx y descubro que config.exe y test.exe son formularios (config.scx y test.scx) de este proyecto que por cualquier cosa se han compilado independientemente.
- test.scx es el formulario de demostración que se abre al ejecutar FoxFace.exe
- config.scx configura y modifica el archivo config.ini
Compilo y ejecuto FoxFace y funcionando, pero encuentro los botones de la barra de títulos muy cambiados y el formulario no tiene skin.
Descubro que en config.ini viene el skin a utilizar y es donde voy a configurar el skin que deseo visualizar en la aplicación. Abro config.ini y edito, cambio el nº de skin, de 1 a 6 que son los que tenemos disponibles y esto lo sabemos abriendo foxface.dbf.
Lista de Skins
1
Retail
2
Pixia
3
Sarkofag
4
Red Alert
5
Axis
6
Deviant
Cualquier valor diferente, por ej. 0, dejará sin skin la aplicación.
Main.prg
Este es el código de main.prg tal y como viene, pero como llevo mas de una hora dando vueltas, ya se lo que tengo que hacer. En rojo el código que añado o modifico:
ON ERROR do errorhandler with ERROR(), MESSAGE(), MESSAGE(1), PROGRAM(), LINENO()
_SCREEN.NewObject("FoxFace","FoxFace","lib\foxface.vcx")*-- Camf -- -- -- -- -- -- -- --
lh=FOPEN("config.ini")
*this.skinid=val(FGETS(lh))
_SCREEN.Foxface.skinid = val(FGETS(lh))
FCLOSE(lh)
_SCREEN.Foxface.Init*-- * -- -- -- -- -- -- -- -- --
SET SYSMENU OFF
*DO menus\TEST.MPR
DO FORM test
READ EVENTSPROCEDURE errorHandler
PARAMETERS errNum, zprava, kod, actualPrg, radek
ON ERROR
PUBLIC saveDB
SET MEMOWIDTH TO 80IF NOT FILE ( "chyby.DBF")
CREATE TABLE chyby FREE ( datum D(8), cas C(5), program C(50),;
ErrorNum N(4), msg C(240), kodt C(240), formular C(100), radekt N(4))
ENDIF
IF NOT USED ( "chyby" )
USE chyby IN 0
ENDIF
appName=SYS (16,1)INSERT INTO chyby VALUES ( DATE(), TIME(), appName, errNum, zprava, kod, actualPrg, radek)
USE IN chyby
MESSAGEBOX(appName+CHR(13)+actualPrg+CHR(13)+STR(radek)+CHR(13)+kod + CHR(13);
+ ALLTRIM(STR(errnum))+CHR(13)++zprava,16,"")
CLEAR EVENTS
CLOSE DATABASES ALL
quit
ENDPROC
El siguiente código crea el objeto FoxFace para tener skin en la ventana principal de Vfp _Screen:
_SCREEN.NewObject("FoxFace","FoxFace","lib\foxface.vcx")
La siguiente línea que abre un menú me da una idea para añadir también el formulario config.scx en el código y probarlo
*DO menus\TEST.MPR
La siguiente línea nos dirige al formulario test.scx:
DO FORM test
Foxface.vcx
Abro en la biblioteca Foxface.vcx la clase Foxface
Cambio el valor de la siguiente propiedad:
.skinid = 0
Guardo los cambios y voy al paso siguiente.
Test.scx
Abro el formulario test.scx selecciono el objeto FoxFace1:
.init
Quitamos los * en las tres primeras lineas y nos queda así el código:
lh=FOPEN("config.ini")
this.skinid=val(FGETS(lh))
FCLOSE(lh)
DODEFAULT().skinid = 0
Efectúo mas pruebas y todo Ok.
Capítulos
- FoxFace
- Ghangelog.pdf - Registro de cambios de FoxFace
- Puesta en funcionamiento -- > FoxFaceClassSourcecode --> Usted se encuentra aquí.
- Restyling FoxFace -- > FoxFace II
Vea también
- Aplicaciones sin barra de títulos en Visual FoxPro - Simular maximizado
- Tema principal Herramientas que cambian el entorno visual de las ventanas Vfp
- Cambiar el aspecto de un formulario en Visual FoxPro - Skinning a Form in Visual FoxPro
- Tema principal Formularios
No olvide de hacer una donación a RetailSystems, para que pueda continuar mejorando este proyecto.
Referencias
Autor del proyecto FoxFace: RetailSystems http://www.retailsystems.cz/foxfaceEn.htm
Puesta en funcionamiento -- > FoxFaceClassSourcecode -- >: Camf.