El programa principal o main.prg

Visto 2.819 veces
Saltar al primer mensaje no leído

TheNewInquirer

no leída,
2 mar 2012, 13:01:572/3/12
a Comunidad de Visual Foxpro en Español
Pues busqué información en el foro y en portalfox acerca de ejemplos
del programa principal y no encontré...

Quisiera comparar el que uso, con otros ejemplos del programa
principal, ya que no desearía "omitir" seteos o instrucciones que
pudieran ser importantes, que quizás Fox no configure "por defecto", o
que puedan provocar errores al cambiar su valor de forma automática
durante la ejecución del sistema.

La intención es ir agregando "robustez" al sistema para adelantarme a
los errores y prevenir los fallos desde el inicio.

Gracias!

Luis Maria Guayan

no leída,
2 mar 2012, 13:12:312/3/12
a publice...@googlegroups.com
Este artículo te puede ayudar en como estructurar tu Main.PRG

http://www.portalfox.com/index.php?name=News&file=article&sid=977

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Walter R. Ojeda Valiente

no leída,
2 mar 2012, 13:22:452/3/12
a publice...@googlegroups.com
Pues eso depende mucho de la forma de programar de cada quien, no he visto dos programas MAIN.PRG siquiera parecidos, cada quien tiene sus propias técnicas.

Saludos.

Walter.



> Date: Fri, 2 Mar 2012 10:01:57 -0800
> Subject: [vfp] El programa principal o main.prg
> From: thenewin...@gmail.com
> To: publice...@googlegroups.com

TheNewInquirer

no leída,
2 mar 2012, 13:39:152/3/12
a Comunidad de Visual Foxpro en Español
Gracias por la ayuda Maestro Luis María y Walter, como siempre.

Pongo aquí el main.prg que utilizo, con el fin de ser "criticado y
mejorado" por los masters del Fox..

* Programa Principal

CLEAR
_SCREEN.CAPTION="Mi Sistema. Version 2012 1.1"
SET SYSMENU TO
_SCREEN.PICTURE="UNIDAD:\RUTA"
_SCREEN.WINDOWSTATE=2


*configurando el entorno del sistema
PUSH MENU _MSYSMENU
SET DEFAULT TO "UNIDAD:\RUTA"
xx = "TABLAS, FORMS, REPORTS, BACKUP,IMAGENES,ICONOS,ETC,"
SET PATH TO '&xx' ADDITIVE

SET SAFETY OFF
SET DATE ITALIAN
SET TALK ON
SET CENTURY ON
SET DELETE ON

ON SHUTDOWN DO BAJASIS

DO FORM "Inicio.scx"
DO "main.mpr"
READ EVENTS

*finaliza el programa

ON SHUTDOWN
CLEAR EVENTS
POP MENU _MSYSMENU
CLOSE ALL
RETURN

* Procedimiento para cerrar Fox desde el ícono X.

PROCEDURE BAJASIS

IF MESSAGEBOX("DESEA SALIR DEL SISTEMA...? ",4+32,"SALIR") = 6

SET SAFETY OFF
close databases

CLEAR EVENTS
*RETURN
POP MENU _MSYSMENU
ON SHUTDOWN
CLOSE ALL

QUIT
ENDIF
ENDPROC

Saludos!

TheNewInquirer

no leída,
2 mar 2012, 13:43:502/3/12
a Comunidad de Visual Foxpro en Español
El SET EXCLUSIVE lo activo/Desactivo en cada form, dependiendo de la
situación. No sé si deba arrancarlo en OFF. ?

Juan de Dios Corrales Leal

no leída,
2 mar 2012, 13:48:142/3/12
a Comunidad de Visual Foxpro en Español
Puede ser tan complejo o sencillo como tu quieras....

En mi caso, solo contengo esto

Set Procedure To rutinas Additive
Set Classlib To preveo,mapi_class Additive
Set Library To foxtools.fll

bApp = procesos("PREVEO.EXE")
If bApp>1
Messagebox("El sistema ya esta en ejecucion.",0+64,"Aviso del
sistema")
CLEAR EVENTS
Quit
Endif

Do Form principal
Read Events

Y Listo....

Saludos.

Walter R. Ojeda Valiente

no leída,
2 mar 2012, 13:51:132/3/12
a publice...@googlegroups.com
El SET EXCLUSIVE debe estar en OFF desde el inicio mismo de tu aplicación, si es multiusuario.

Si es monousuario debe estar en ON, porque los accesos a las tablas son más rápidos cuando está en ON.

Cuando necesites abrir una tabla en modo exclusivo (algo que raras veces necesitarás en un entorno multiusuario bien diseñado) debes hacerlo con USE MiTabla EXCLUSIVE

Saludos.

Walter.



> Date: Fri, 2 Mar 2012 10:43:50 -0800
> Subject: [vfp] Re: El programa principal o main.prg
> From: thenewin...@gmail.com
> To: publice...@googlegroups.com
>

GeoSys Diseño de Software

no leída,
2 mar 2012, 13:51:332/3/12
a publice...@googlegroups.com
En el LOAD de mi formulario principal:

SET EXCLUSIVE OFF && Para hacer las tablas compartidas.
SET MULTILOCK ON && Puedo bloquear registros.
SET REFRESH TO 1,1 
SET SYSMENU TO
SET ESCAPE OFF
SET CONFIRM ON
SET SAFETY OFF
SET TALK OFF
SET CENTURY ON
SET DATE TO BRITISH
SET DELETE ON
SET CURRENCY TO "¢" && Asigno la moneda a colones.

Saludos

Anthony Contreras Peralta

Costa Rica.

edgar suarez kummers

no leída,
2 mar 2012, 13:55:252/3/12
a publice...@googlegroups.com
Disculpen chic@s:

No quiero entrometerme más de lo debido, pero he visto en un programa de inicio del maestro Guillermo Carrero, de Barcelona, el socio intelectual de Don Luis María Guayán, en FoxBarcode, los cuentos de Caperucita Roja y el Rin Rin Renacuajo del escritor Colombiano Rafael Pombo ... todo junto ... y de pronto hasta el discurso de posesión de Kennedy ...

saludos

edgar

--
edgar suarez kummers

Walter R. Ojeda Valiente

no leída,
2 mar 2012, 13:59:562/3/12
a publice...@googlegroups.com
¿Qué te estuviste fumando esta vez Edgar?

¡¡¡INVITAME!!!

Saludos.

Walter.




Date: Fri, 2 Mar 2012 13:55:25 -0500
Subject: Re: [vfp] Re: El programa principal o main.prg
From: edgark...@gmail.com
To: publice...@googlegroups.com

GeoSys Diseño de Software

no leída,
2 mar 2012, 14:01:152/3/12
a publice...@googlegroups.com
Jajajajajajja, si verdad, no entendí no jota de lo que quiso decir Edgar.


Saludos

Anthony Contreras Peralta

Costa Rica.


Fox Reloaded

no leída,
2 mar 2012, 14:01:292/3/12
a publice...@googlegroups.com
A mi tambien xD

Christian Torres.
Venezuela

2012/3/2 Walter R. Ojeda Valiente <wr...@hotmail.com>



--
Thanks for everything... :D


         --- Fox ---
Maracaibo, Venezuela

Luis Maria Guayan

no leída,
2 mar 2012, 14:00:322/3/12
a publice...@googlegroups.com
El 02/03/2012 15:59, Walter R. Ojeda Valiente escribió:
¿Qué te estuviste fumando esta vez Edgar?

¡¡¡INVITAME!!!

No fumó, solo utilizó REFOX en una aplicación de distribución gratuita de Guillermo :-(

elkin dario uribe torres

no leída,
2 mar 2012, 14:27:152/3/12
a publice...@googlegroups.com
Buenas tardes Edgar

Eres todo un caso, me hiciste reir un rato. ¿Esto aplica para "Hoy Es Viernes"?.


Saludos


Elkin Uribe
Medellin - Colombia

TheNewInquirer

no leída,
2 mar 2012, 14:35:342/3/12
a Comunidad de Visual Foxpro en Español
Pues "observando detenidamente" el código de Anthony, veo que tiene
Refresh.

El Refresh aplica también a las ventanas examinar abiertas mediante un
grid..?

Es "hermanito del FLUSH"?... jeje

Leyendo en la ayuda sobre SET CONFIRM, veo que aparece SET BELL.

¿No me digan que en Fox se puede hacer algo como la sentencia TONE del
clipper o los DO, RE, MI, FA, SOL, jaja del Turbo Basic...?

Ya me acordé de mis tiempos de vago jugando Mario Bross jaja..( X los
sonidos, digo..)

Recuerdo a cliente al que un Ing. Foxero (Fox azulito/Fiusha bajo
MSDOS, no sé su nombre amigos..) le iba a hacer un control de saldos
de clientes a crédito.

El cliente pidió: y.. será que puede ponerle una "calaverita" en la
pantalla y con sonido bip bip bip para que el cliente que solicita
productos sepa que "está muerto" porque ya excedió su "límite de
crédito"?..

Como ya había dado clases básicas de Clipper y ahí se usaban mucho los
colores parpadeantes y sonidos, no me quedó otra que "morirme de la
risa" junto con el desarrollador jeje

Saludos!

edgar suarez kummers

no leída,
2 mar 2012, 14:43:082/3/12
a publice...@googlegroups.com
Querido Walter:

Nunca en la vida he fumado de la tal Mary ... cigarrillos sí fumaba pero ya lo he dejado.

Te estoy hablando de un programa MAIN.PRG que lo he visto con estos ojitos que han 

admirado a mujeres lindas y que tiene varias hojas equivalentes y de las grandes.

Podría buscar el programa que te digo, el precursor de FoxBarCode pero no es mi 

programa y ya fui amonestado por decir alguna vez que REFOX XI lo desnudaba ...

es sorprendente el volumen de declaraciones de variables y de todo ... 

saludos y es preferible que me creas

edgar
--
edgar suarez kummers

ZeRoberto

no leída,
2 mar 2012, 14:55:422/3/12
a publice...@googlegroups.com
Checka esto

Clear
Clear All
Close All
#Include "include\include.h"
Public goApp, goSets, _Report, _UserID
goSets = CreateObject("Sets")
goApp = NewObject("uo_Application", "class\application.vcx")
If goApp.IsUnLock()
   If goApp.Login()
      goApp.Do()
   EndIf
EndIf
Release goApp, goSets
Close All
Clear All
Clear
Define Class Sets As Custom
    Name = "Sets"
    OldSafety = ""
    OldProc = ""
    OldStatus = ""
    OldMemo = ""
    OldMultiLocks = ""
    OldHelp = ""
    OldDeleted = ""
    OldExclusive = ""
    OldNotify = ""
    OldBell = ""
    OldNear = ""
    OldExact = ""
    OldIntensity = ""
    OldConfirm = ""
    OldOnShutDown = ""
    OldComplative = ""
    OldTalk = ""
    OldPath = ""
    OldClassLib = ""
    OldEscape = ""
    OldLibrary = ""
    OldProcedure = ""
    OldCompatible = ""
    OldConsole = ""
    Procedure Init
       With This
            .OldTalk       = Set('TALK')
            .OldPath       = Set('PATH')
            .OldClassLib   = Set('CLASSLIB')
            .OldLibrary    = Set('LIBRARY')
            .OldProcedure  = Set('PROCEDURE')
            .OldEscape     = Set('ESCAPE')
            .OldSafety     = Set('SAFETY')
            .OldProc       = Set('PROCEDURE')
            .OldStatus     = Set('STATUS BAR')
            .OldMemo       = Set('MEMOWIDTH')
            .OldMultiLocks = Set('MULTILOCKS')
            .OldHelp       = Set('HELP', 1)
            .OldDeleted    = Set('DELETED')
            .OldExclusive  = Set('EXCLUSIVE')
            .OldNotify     = Set('NOTIFY')
            .OldBell       = Set('BELL')
            .OldNear       = Set('NEAR')
            .OldExact      = Set('EXACT')
            .OldIntensity  = Set('INTENSITY')
            .OldConfirm    = Set('CONFIRM')
            .OldOnShutDown = On('SHUTDOWN')
            .OldCompatible = Set("COMPATIBLE")
            .OldConsole    = Set("CONSOLE")
            .Set()
       EndWith
    EndProc
   
    Procedure Set
        If !VFP_DEBUGMODE
            Set Escape Off
        Else
            Set Escape On
        Endif
        Set Talk Off
        Set Notify Off
        Set Safety Off
        Set Exact On
        Set Century On
        Set Date DMY
        Set Memowidth To 120
        Set Multilocks On
        Set Deleted On
        Set Exclusive Off
        Set Near Off
        Set Exact Off
        Set Intensity Off
        Set Confirm On
        Set Compatible Off
        Set Console Off
        Set Sysmenu Off
        Set Sysmenu To
        Set Status Bar Off
        Set Default To (JustPath(Sys(16, 0)))
        Set Library To bin\vfpencryption.fll Additive
        Set Procedure To lib\lib_Super, lib\lib_winapi
        On Shutdown goApp.OnShutDown()
        On Error goApp.OnError()
    EndProc
   
    Procedure Destroy
        Local luTemp
        If File(This.OldHelp)
           Set Help To (This.OldHelp)
        Endif
        Set Path To (This.OldPath)
        luTemp = This.OldClassLib
        Set Classlib To  &luTemp
        luTemp = This.OldProc
        Set Procedure To &luTemp
        Set Memowidth To This.OldMemo
        luTemp = This.OldMultiLocks
        Set Multilocks &luTemp
        luTemp = This.OldSafety
        Set Safety &luTemp
        luTemp = This.OldStatus
        Set Status Bar &luTemp
        luTemp = This.OldDeleted
        Set Deleted &luTemp
        luTemp = This.OldExclusive
        Set Exclusive &luTemp
        luTemp = This.OldNotify
        Set Notify &luTemp
        luTemp = This.OldBell
        Set Bell &luTemp
        luTemp = This.OldNear
        Set Near &luTemp
        luTemp = This.OldExact
        Set Exact &luTemp
        luTemp = This.OldIntensity
        Set Intensity &luTemp
        luTemp = This.OldConfirm
        Set Confirm &luTemp
        luTemp = This.OldOnShutdown
        On Shutdown &luTemp
        luTemp = This.OldEscape
        Set Escape &luTemp
        luTemp = This.OldCompatible
        Set Compatible &luTemp
        luTemp = This.OldTalk
        Set Talk &luTemp
        luTemp = This.OldConsole
        Set Console &luTemp
        Set SysMenu To Default
        On Error
        On Shutdown
    EndProc   
EndDefine

TheNewInquirer

no leída,
2 mar 2012, 15:11:082/3/12
a Comunidad de Visual Foxpro en Español
Gracias ZeRoberto!

Ya me dejaste mas tarea que la profe de Arquitectura de
Computadoras... con sus famosos Flip-Flops jaja

Saludos!

Moises Daniel Vilchez Tello

no leída,
2 mar 2012, 16:53:122/3/12
a publice...@googlegroups.com
te adjunto esto, derrepente te sirva, saludos


********************    Creando Ambiente   **************************

ON ERROR DO errhand WITH ERROR( ), MESSAGE( ), MESSAGE(1), PROGRAM( ), LINENO( )

PUBLIC vMac, vIP, vIcon
public lcPath, lcJustDir, lRes
PUBLIC gi_windowId as Long
PUBLIC gs_app_name as String
PUBLIC dbLink
PUBLIC gDBMS, gDsn, gServidor, gPuerto, gBaseDatos, gUsuarioSQL, gPass, gRuta

set echo off
set talk off
set safety off
set confirm on
set deleted on
SET EXACT ON
SET date BRITISH
SET CENTURY ON
SET NULLDISPLAY TO ''
SET ESCAPE OFF 

IF FILE("C:\Windows\SysWOW64\odbcad32.exe") THEN 
gs_so = '64'
ELSE
gs_so = '32'
ENDIF 


*ON KEY LABEL CTRL+M _screen.resize()

vDate=CTOD("30/03/2012") && Fecha de Expiracion de programa
IF f_fecha_server() >= vDate
=MESSAGEBOX("Licencia de Uso a Expirado "+ chr(13)+ "Comuniquese con el Programador"+ chr(13)+ "Tel: 25-1042 Cel: 97-9487458",16,"Cesly Soft")
ELSE
*IF vMac="00-14-2A-9C-F5-FD" THEN &&Mac Adress de PC a Instalar Programa
gi_windowId = 0
Ruta_Sis = substr(sys(16),1,at("\",sys(16),2))
set defa to &Ruta_Sis
set path to PRG, form, Data, report, images, Menu, clases, icon, lmcal, OutlookNavBar, Vcx, Temp, util
***verifica el servidor y BD mediante un archivo cfg (ini)
IF NOT FILE('app_conf.ini')
MESSAGEBOX("Faltan archivos de configuración nesesarios para ejecutar la aplicación", 16, gs_app_name)
   Return 
ELSE
DO getini.prg
ENDIF

*!* IF DRIVETYPE(SYS(5))<>3&&verificamos si se esta ejecutando dentro de un disco duro local
*!* MESSAGEBOX("No se puede iniciar el programa en unidades" + CHR(13)+;
*!* "diferentes a discos duros locales",;
*!* 16,"SGT 2008 Edición Profesional")
*!* RETURN
*!*
*!* ENDIF

DO defines.prg
DO dbpgsql.prg
DO search.prg
DO search_w.prg
DO search_c.prg
DO transaction_w.prg
DO search_m.prg
DO funciones_p.prg
DO search_p.prg
DO funciones_m.prg
DO busqueda.prg
vIcon="globe.ico"

_SCREEN.VISIBLE=.F. 

SET PROCEDURE TO getini   ADDITIVE
SET PROCEDURE TO defines ADDITIVE
SET PROCEDURE TO dbpgsql ADDITIVE
SET PROCEDURE TO search   ADDITIVE
SET PROCEDURE TO search_w   ADDITIVE
SET PROCEDURE TO search_c   ADDITIVE
SET PROCEDURE TO defines_menu   ADDITIVE
SET PROCEDURE TO defines_menu_w   ADDITIVE
SET PROCEDURE TO search_m ADDITIVE 

SET PROCEDURE TO transaction_w ADDITIVE
SET PROCEDURE TO funciones_p ADDITIVE
SET PROCEDURE TO search_p.prg ADDITIVE
SET PROCEDURE TO funciones_m.prg ADDITIVE
SET PROCEDURE TO busqueda.prg ADDITIVE 

vMac=MACAddress()
vIP=IPAddress()

IF ConectDB() THEN
gs_empresa = f_get_data_select("select TRIM(razon_social) as dato from empresa")
DO FORM frm_acceso.scx
If _vfp.StartMode > 0 && Run time
CLEAR
  Read Events
ENDIF
RELEASE ALL
ELSE
DisconectDB()
CLEAR EVENTS
RELEASE ALL
&&CLOSE ALL
&&QUIT
ENDIF
ENDIF
--
Moises Daniel Vilchez Tello
Chiclayo - Lambayeque - Peru

TheNewInquirer

no leída,
2 mar 2012, 22:00:182/3/12
a Comunidad de Visual Foxpro en Español
Gracias por compartir su experiencia!

Creo que ya tengo de donde estudiar para mejorar mi programa principal
jeje!

Responder a todos
Responder al autor
Reenviar
0 mensajes nuevos