Config.fpw

¿Cómo se crea un archivo config. Fpw en foxpro 9.0...? Estoy tratando de realizar un ejecutable y me dicen que coloque un código en este archivo pero ni siquiera se que es eso...

2 respuestas

Respuesta
1
Primero te explicare que son los archivos config. Fpw estos son archivos que se ejecutan por windows, es decir son archivos que windows los interpreta, y lo único que haces son propiedades o eventos muy específicos de un programa...
Por ejemplo te has dado cuenta que la fecha, o la hora o te sale una pantalla blanca al iniciar la aplicación, entonces desde ese archivo, pones comandos como
Screen = Off
SET CENTURY ON/OFF
SET CLOCK ON/OFF
SET DATE
SET DELETE ON/OFF
SET ECHO ON/OFF
SET SYSMENU
u otros comandos más específicos.
pero para hacer un ejecutable, lo que tienes que hacer es desde un prg, o un formulario,
Si es un prg existen 2 formas de hacerlo, las cuales son por la ventana de windows o por un formulario
Si es por windows seria algo asi ...
_screen.BackColor = RGB(255,128,0)
_screen.Caption = "Proyecto De Cintia"
_screen.MaxButton = .F.
_screen.MinButton = .F.
_screen.WindowState = 2
_screen.ControlBox = .F.
    Do menu_primero.mpr
    Read EVENTS
el do menu es un menu, pero lo puedes oviar.
la otra forma, seria por medio de un formulario.
_screen.Visible = .F.
DO FORM principal
READ events
Para este caso los formularios deben de estar en nivel superior.
Recuerda siempre el read events y la ultima forma seria que en el formulario que desees, le pongas en el evento init o en el load
read events
para este caso los formularios deben de estar en nivel superior.
Respuesta
1
Si deseas realizar un ejecutable no necesitas un archivo de configuración, ¿si de pronto te sale algún error en el sistema podrías describírmelo para ver cuál es la causa?
Este codigo lo tengo en el main.prg, tome el codigo de otra aplicacion y solo cambie la ruta para adaptarla a mi carpeta. El problema es que me sale un pequeño parpadeo antes de abrir el formulario entrada.scx, ademas me dice que cerrar.prg no existe
SET DECIMALS TO 2
ON SHUTDOWN cerrar ()
application.caption="Sistemas I.V.A Empresa - application.caption"
CLEAR
_screen.windowstate=2
_screen.MaxButton=.f.
_screen.MinButton=.f.
_screen.Caption=" Sistemas I.V.A Empresa "
_screen.backcolor=8421376
_screen.Picture="c:\eli\screens\FACHADA2.jpg"
_screen.AutoCenter =.f.
_screen.Icon = "C:\eli\iconos\PC.ICO"
* 16776960 agua marina
_screen.BackColor=10485760
SET DATE FRENCH
SET DEFAULT TO "c:\eli"
SET DELETED ON
DO FORM entrada.scx
READ EVENTS
PROCEDURE cerrar ()
IF MESSAGEBOX("DESEA SALIR DEL SISTEMA IVA EMPRESA?",4+32,"SALIR") = 6
    QUIT
ENDIF
ENDPROC  
*CLEAR
En el formulario entrada tengo un timer con el siguiente codigo
if cont<5
    if thisform.carga.left<(thisform.meta.left+thisform.meta.width-thisform.carga.width-2.5)
        thisform.carga.left=thisform.carga.left+1
    else
        thisform.carga.left=thisform.meta.left+2.5
        cont=cont+1
    endif    
ENDIF
IF cont==5
    DO FORM login.scx
    CLEAR EVENTS
    Thisform.release
Endif
en el metodo load de el formulario entrada tengo lo siguiente
public cont
cont=1
Todos los formularios están en showWindow 2-As Top Level Form.
¿Qué me recomiendas hacer..?
Te voy a explicar un par de detalles primero:
1. Todos los procedimientos de rutina del sistema debes almacenarlo en un archivo prg el cual no es el programa principal, podría llamarse por ejemplo utilidades. Prg, allí creas procedimientos de trabajo y validación del sistema como por ejemplo el método cerrar que es el que te causa problemas:
Procedure Cerrar
  If Messagebox("¿Desea salir del sistema?", 32, "Salir") = 7 && No
    Return .F.
  Endif
  Clear Dlls
  Release All Extended
  Clear All
  On Shutdown
  Quit
EndProc
2. Importante con respecto a lo último que me preguntaste: Los formularios no deben tener la propiedad ShowWindow en valor 2 sino en valor 0 (En pantalla de Visual FoxPro).
En este orden de ideas, te recomiendo organizar tu proyecto en una carpeta principal la cual contenga otras carpetas las cuales estás contengan los archivos de tu proyecto por ejemplo La carpeta principal esté el archivo pjx de tu proyecto y esta misma contenga las los demás componentes organizados en carpetas ejemplo: Carpetas que se llamen Formulario, Menús, Datos, Informes, Programas, Ayuda, Clases, etc.
Y finalmente el el programa principal principal de tu proyecto podrías escribir un código como el siguiente:
Close All
Clear
If SetPath() 
  Set Decimals To 2
  Set Procedure To "Utilidades.prg"
  On ShutDown Do Cerrar && Esto funciona si se establece Set Procedure correctamente.
  With _Screen  
      .Caption="Sistemas I.V.A Empresa - application.caption"
      .Windowstate=2
      .Caption=" Sistemas I.V.A Empresa "
      .Backcolor=8421376
      .Picture="c:\eli\screens\FACHADA2.jpg"
      .AutoCenter =.f.
      .Icon = "C:\eli\iconos\PC.ICO"
      .BackColor=10485760
  EndWith     
  Set Talk Off
  Set Deleted Off
  Set Multilocks On
  Set Date To DMY
  If EntrarAlSistema()
    Read Evens
  Endif
Endif
Function SetPath() && Debería ir en el programa principal.
   Local lcSys16, lcProgram
   lcSys16 = Sys(16)
   lcProgram = Substr(lcSys16, AT(":", lcSys16) - 1)
   CD Left(lcProgram, Rat("\", lcProgram))
   If Right(lcProgram, 3) = "FXP"
     CD ..
   Endif
   Set Path To Programas, Formularios, Gráficos,;
   Menus, Include, Informes, Clases, Ayuda && Estas son las carpetas
   Set Classlib to Controles, Diálogos, principal && Son clases que se crean en los proyectos si existen. 
EndFunc
Function EntrarAlSistema() && Debe ir en el archivo utilidades.prg
    Local lcValor
    Do Form Entrada With .T. To lcValor
    Return lcValor
Endfunc
Y a modo de información el archivo Config. Fpw no es más que un archivo de configuración de Windows donde se guardan los comandos Set de Visual FoxPro y por tal razón este archivo no tiene nada que ver en cuanto a la creación de ejecutables y de la misma manera no afecta en nada la creación de ejecutables.
Muchísimas gracias... Soy muy nuevo en esto aunque poco a poco voy comprendiendo mejor las cosas... Gracias por tu valiosa ayuda y tu gran disposición al momento de responder las preguntas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas