Main.prg -- > FoxFace II
09/04/2020
Viene de Restyling FoxFace -- > FoxFace II
Código de Main.prg
Nota: No pinto en azul ni hago las tabulaciones hasta no terinar por completo el proyecto. Es copiar y pegar, pero al pegar en DW se pierde lo mencionado, pues el codigo en Vfp está totalmente como debe ser.
*-------------------------------------------------------------------------------------------------------------------
*- Autor de la clase FoxFace 1.8: RetailSystems de la república Checa http://www.retailsystems.cz/foxfaceEn.htm
*- Restyling FoxFace II: César A. Mallo Fernández - CaMF
*- León - España
*- 15/03/2020 Comencé a interesarme por FoxFace
*- Mas información de FoxFace: https://visualfoxpro.webcindario.com/visual_foxpro/articulos/proyectos/FoxFace/foxface.php
*-------------------------------------------------------------------------------------------------------------------
*- Puedes acelerar la inicialización si evita cargar archivos que no piensa utilizar.
*- Si la aplicación no usa el archivo FOXUSER o FOXHELP, desactívelos en el archivo Config.fpw
*- mediante los comandos siguientes: RESOURCE = OFF y HELP = OFF
*- HIDE WINDOW SCREEN && Oculta la ventana principal. Luego se activa antes de Read Events. Desactivada en config.fwp es más rápido
*- consiguiendose con esto un incremento de velocidad de inicio.
*-------------------------------------------------------------------------------------------------------------------ON ERROR do errorhandler with ERROR(), MESSAGE(), MESSAGE(1), PROGRAM(), LINENO()
_SCREEN.NewObject("FoxFace1","FoxFace","lib\foxface.vcx") && Creamos el objeto
SET SYSMENU OFF*-- Camf ----------------------------------------------------------------------------------------------------------
*- 1. Definición de constantes
LOCAL lnTitleBar, llSkin, ln_Config, ll_Screen, llStatusBar, llMultiScreen*- 2. LLaves para el funcionamiento que elija
_SCREEN.Caption = "FoxFace II by CaMF"
llSkin = .T. && .F. No utilizar Skin en la pantalla principal
&& .T. Utilizar Skin
lnConfig = 0 && Configuración de Skin de 0 a 6
&& 0 - Utilizar el indicado en config.ini
&& 1 - Retail
&& 2 - Pixia
&& 3 - Sarkofag
&& 4 - Red Alert
&& 5 - Axis
&& 6 - Deviant
lnTitleBar = 1 && 0 Desactivado
&& 1 Activado veremos la barra de títulos de Windows
ll_Screen = .T. && Con ello conseguimos utilizar FoxFace en:
&& .T. Screen
&& .F. Formulario de nivel superior. Tiene que estar creado previamente
llMultiScreen = .T. && .F. Maximiza siempre en la pantalla principal
&& .T. Maximiza en múltiples pantallas
llStatusBar = .F. && .F. o .T. Sin o con barra de estado (Ojo: Sólo _Screen)
*-------------------------------------------------------------------------------------------------------------------
*- 3. Conficurando
*- Múltiples pantallas
_SCREEN.Foxface1.MultiScreen = llMultiScreen
*- Si utilizamos la barra de estado del sistema Status Bar
IF llStatusBar = .F.
SET TALK OFF && Set tal Off para eliminar notificaciones en pantalla y poder quitar la barra de estado
SET STATUS BAR OFF && Quitamos la barra de estado
ENDIF*- Abrimos el fichero de configuración.
*- Introduzca un núm de 1 a 6 en el config.ini. Otro núm trabaja sin skin
IF lnConfig = 0
lh=FOPEN("config.ini")
lnConfig = val(FGETS(lh))
FCLOSE(lh)
ENDIF
_SCREEN.Foxface1.skinid = lnConfig*_SCREEN.WindowState = 0 && 0 Normal - 1 Minimizado - 2 Maximizado &&Solo WindowState = 0
_SCREEN.Top = 50
_SCREEN.Left = 50
_SCREEN.AutoCenter = .T.
*-------------------------------------------------------------------------------------------------------------------*-- 4. Skins y Barra de títulos en Screen
*- 0 Desactivado - 1 Activado
IF llSkin = .F. AND ll_Screen = .T. &&No utilizar Skin en _Screen
_SCREEN.TitleBar = lnTitleBar
ELSE
_SCREEN.foxface1.skin(1,lnTitleBar)
ENDIF
*- Skin --> FoxFace.Skin( setOffset, isTitleBar )
*- setOffset = -1 - 0 - 1. 0 es el Normal
*- isTitleBar = 0 - 1 - 2. 2 Neutro*-------------------------------------------------------------------------------------------------------------------
*-- 5. Formularios de presentacion y entrada
SHOW WINDOW SCREEN &&ACTIVA la ventana principal que tenemos desactivada en config.fwp con SCREEN=off
IF ll_Screen = .T. && Aquí aplicaciones con _Screen
*DO menus\TEST.MPR && Pruebe los menus
DO FORM Menu
*DO FORM test && El que viene por defecto
ELSE && Aquí aplicaciones Con Formularios de nivel superior como pantalla principal
ENDIF
*-------------------------------------------------------------------------------------------------------------------*-- 6. Salida del programa
IF ll_Screen && Si trabajamos en modo Screen
ON SHUTDOWN salir() &&CLEAR EVENTS Salir, Si cuando trabajamos en Screen y No si trabajamos con un formulario de nivel superior
ENDIF
READ EVENTS
IF ll_Screen && Si trabajamos en modo Screen
ON SHUTDOWN
ENDIF
*MESSAGEBOX("Salimos") && hay un error a corregir. No sale
*-------------------------------------------------------------------------------------------------------------------*-- 7. Fichero de errores.dbf
PROCEDURE errorHandler
PARAMETERS errNum, zprava, kod, actualPrg, radek
ON ERROR
PUBLIC saveDB
SET MEMOWIDTH TO 80IF NOT FILE ( "data\errores.DBF")
CREATE TABLE data\errores 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 ( "data\errores" )
USE data\errores IN 0
ENDIF
appName=SYS (16,1)INSERT INTO errores VALUES ( DATE(), TIME(), appName, errNum, zprava, kod, actualPrg, radek)
USE IN errores
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
Volver a: Restyling FoxFace -- > FoxFace II
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
Main.prg -- > FoxFace II -- >: Camf.