FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Monitorear/Visualizar arranque de la aplicacion ( How to )
Posts: 592
Joined: Tue Mar 14, 2006 11:34 PM
Monitorear/Visualizar arranque de la aplicacion ( How to )
Posted: Tue Aug 19, 2008 01:47 AM

Hola a Todos,

Tengo la siguiente curiosidad :

En la app que estoy ajustando/depurando, al momento de ejecutarla muestro un dialogo que indica el avance en la creacion de archivos indices ( si estos no existen ) y como todos sabemos segun sea el tama帽o de los archivos sera el tiempo usado para tal fin y con el Progress los usuarios ven que tanto falta para que acabe el proceso.
Esto lo hago en el Init Procedure.

Ahora, cuando la funcion Main() toma control empiezo a "levantar" la aplicacion : definir el Folder principal, los controles de cada pesta帽a, obtener los datos de algunos arreglos, etc, etc.
Esto toma algunos segundos ( 2 a 3 ) en el caso de la Pc Servidor ya que tiene los archivos y ( 5 a 6 ) en las Pcs terminales via lan.

Y durante este lapso ( que para algunos usuarios que son desesperados e impacientes ) como no ven nada en la pantalla, piensan que no se esta ejecutando la app o que ya se congelo la Pc.

Me gustaria mostrar con un progress algo que indique el avance de como la App se esta "armando" para que sepan cuanto falta, el detalle que todo esto se hace en la funcion Main(), cosa que complica la situacion.

Ya probe sacando todo eso de la Main() y pasarla a otra Funcion, pero nop, no le encuentro.

Alguien que pueda darme una poca de luz.

Gracias de antemano.

Saludos

FWH 10.6 + xHarbour + Borland 582
Posts: 1054
Joined: Sun Oct 09, 2005 10:41 PM
Monitorear/Visualizar arranque de la aplicacion ( How to )
Posted: Tue Aug 19, 2008 02:20 AM

Lo hago asi:

// inicio del prgrama

oObjT := AvisoConexion("Analizando la Base de Datos,,,", 1, cTitle)
HazFunction1()
oObjT:End()
oObjT := AvisoConexion("Verificando Integridad,,,", 66, cTitle)
HazFunction2()
oObjT:End()
oObjT := AvisoConexion("Abriendo Base de Datos,,,", 66, cTitle)
HazFunction3()
oObjT:End()

DEFINE ICON oIcon RESOURCE "SVITE"
DEFINE CURSOR oCursor HAND
DEFINE BRUSH oBrush FILENAME oApp:iLogo
DEFINE WINDOW oWnd MDI .......................................

//--------------------------------
Function AvisoConexion(cSay, nAva, cTitle)
local oDlgAv, oSay, oEka, oMySQL
local oPMeter, vPMeter, oFont
DEFAULT cTitle := ""

vPMeter := nAva

cTitle := IF(EMPTy(cTitle),"SVITE...", cTitle)

DEFINE FONT oFont NAME "Arial" BOLD SIZE 7,16
DEFINE DIALOG oDlgAv RESOURCE "MYSQL" TITLE cTitle

REDEFINE BTNBMP oEka ;
RESOURCE "EKA0" NOBORDER ;
ID 103 OF oDlgAv
REDEFINE BTNBMP oMySql ;
RESOURCE "MYSQL" NOBORDER ;
ID 104 OF oDlgAv
REDEFINE SAY oSay ;
VAR cSay ;
FONT oFont ;
COLOR CLR_RED ;
ID 101 OF oDlgAv
REDEFINE METER oPMeter ;
VAR vPMeter ID 102 OF oDlgAv

ACTIVATE DIALOG oDlgAv ;
CENTER NOWAIT ;
ON INIT (oPMeter:SET( nAva ) )
oFont:End()

Return( oDlgAv )

//---------------------------------------------------------
Salu2

Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Monitorear/Visualizar arranque de la aplicacion ( How to )
Posted: Tue Aug 19, 2008 02:36 AM

Ray:

Podr铆a servirte la funci贸n Mssgrun() ?

MsgRun( "Mensaje...",, {|| Funcion() } )

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Monitorear/Visualizar arranque de la aplicacion ( How to
Posted: Tue Aug 19, 2008 04:05 AM

驴Te sirve esto?

ACTIVATE WINDOW oWnd MAXIMIZED ;
ON INIT ( MsgRun("Iniciando Sistema",,{||INICIO()}) )

Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 592
Joined: Tue Mar 14, 2006 11:34 PM
Monitorear/Visualizar arranque de la aplicacion ( How to )
Posted: Tue Aug 19, 2008 02:45 PM

Gracias Compa帽eros por las sugerencias,

Hare pruebas al respecto, de inicio mi intencion era tratar de hacerlo desde un dialogo para mostrar varios progress, pero creo que al final y dependiendo de los resultados, tendria que usar el MsgRun aunque sea solo algun texto.

Willi, de alguna manera la forma que comentas es parecida a la que tengo actualmente, el detalle ( sorry, creo que no lo dije ) es que estoy usando un dialogo como pantalla principal y no una ventana y dentro de dicho dialogo construyo todo.

Muchas Gracias

Saludos

FWH 10.6 + xHarbour + Borland 582
Posts: 326
Joined: Sun Oct 09, 2005 05:22 PM
Monitorear/Visualizar arranque de la aplicacion ( How to )
Posted: Tue Aug 19, 2008 03:38 PM
Una opci贸n mas:

Consiste en mostrar un d铆alogo con la imagen o logo del sistema hasta que se encuentre la estabilidad de la aplicaci贸n.

   -Definici贸n de variables globales y entorno principal
   lInit:=.T.
   ...
   // Solo muestra imagen del sistema
   DEFINE DIALOG oDlc RESOURCE "CARGANDO"
   REDEFINE IMAGE oImg RESOURCE "Carga" ID 100 OF oDlc ADJUST
   REDEFINE SAY oSay PROMPT "Cargando el sistema, espere..." CENTER ID 110 OF oDlc
   ACTIVATE DIALOG oDlc NOWAIT CENTERED
   ...
   - Identificaci贸n del ambiente, rutas, permisos, derechos, etc.
   - Construcci贸n de ventana principal
   ...
   ACTIVATE WINDOW oWnd            ;
      ON PAINT Paint_Wnd(hDC,oDlc) ;
      ON INIT  Init_Wnd(...,oDlc:End())  ;
      VALID    End_Wnd(...)

STAT FUNC Paint_Wnd(hDC,oDlc)
   - Coloca Brush o imagen de fondo, ajusta ventana seg煤n pantalla y/o resoluci贸n usada

   // Vuelve a mostrar el di谩logo de carga sobre la ventana ya creada,
   // sucede que todav铆a le falta estabilizarse y puede tardar varios
   // segundos, mas cuando es la primera vez que se ejecuta la
   // aplicaci贸n.
   IF lInit
      oDlc:SetFocus()
      SysRefresh()
      CursorWait()
      lInit:=.F.
   ENDIF

RETURN (NIL)
Posts: 592
Joined: Tue Mar 14, 2006 11:34 PM
Monitorear/Visualizar arranque de la aplicacion ( How to )
Posted: Tue Aug 19, 2008 10:03 PM

Alfredo,

Es exactamente lo que andaba queriendo hacer !!!

Quedo perfecto !!!

Muchas Gracias por tu opcion.

Saludos

:P

FWH 10.6 + xHarbour + Borland 582
Posts: 782
Joined: Wed Dec 19, 2007 07:50 AM
Monitorear/Visualizar arranque de la aplicacion ( How to )
Posted: Wed Aug 20, 2008 12:53 AM

Hola Raymundo:

Una alternativa m谩s, podr铆as usar un objeto TAnimate, checa Win32.prg en \FWH\Samples.

Saludos.

Manuel Mercado.

manuelmercado at prodigy dot net dot mx
Posts: 592
Joined: Tue Mar 14, 2006 11:34 PM
Monitorear/Visualizar arranque de la aplicacion ( How to )
Posted: Wed Aug 20, 2008 02:10 AM

Excelente alternativa Maestro Mercado !!

Tambien andaba buscando ese ejemplo con los avi, solo que no recordaba en que archivo se encuetra.

Agradezco enormemente a todos por sus atenciones.

Saludos

FWH 10.6 + xHarbour + Borland 582
Posts: 244
Joined: Fri Oct 28, 2005 06:29 PM
Monitorear/Visualizar arranque de la aplicacion ( How to )
Posted: Wed Aug 20, 2008 08:45 PM

En mi caso, yo ejecuto multiples operaciones ANTES de crear la ventana principal y me gustar铆a agregar un mensaje de espera mientras se van ejecutando, tal como mencionaban.
Quisiera mostrar un dialogo y como dec铆a Manuel, con una animacion, pero veo que no es posible mostrar un dialogo sin antes crear una ventana.
Hay alguna manera de hacerlo sin ventana o si se puede crear una ventana de manera invisible y luego cerrarla cuando hayan finalizado los procesos?

Desde ya, muchas gracias!

Alejandro Cebolido

Buenos Aires, Argentina
Posts: 326
Joined: Sun Oct 09, 2005 05:22 PM
Monitorear/Visualizar arranque de la aplicacion ( How to )
Posted: Thu Aug 21, 2008 03:02 AM
Alejando, si es posible crear di谩logos. Prueba este c贸digo:

#Include "FiveWin.Ch" 

FUNCTION Main() 
   LOCAL oWnd, lInit:=.T., oDlg, oSay, cSay 

   cSay:="Loading, please wait..." 

   DEFINE DIALOG oDlg FROM 0, 0 TO 5,40 
   @ 1, 1 SAY oSay PROMPT cSay CENTERED 
   ACTIVATE DIALOG oDlg NOWAIT CENTERED 
   SysRefresh() 
   WaitSeconds(2) 

   DEFINE WINDOW oWnd 
   ACTIVATE WINDOW oWnd MAXIMIZED; 
      ON PAINT Paint_Window(oDlg,@lInit) ; 
      ON INIT  Init_Window(oSay,@cSay,oDlg) 

RETURN (NIL) 

STAT FUNC Init_Window(oSay,cSay,oDlg) 
   cSay:="Init process, wait..." 
   oSay:Refresh() 
   WaitSeconds(3) 
   cSay:="Ready!" 
   oSay:Refresh() 
   MsgBeep() 
   WaitSeconds(1) 
   oDlg:End() 
RETURN (NIL) 

STAT FUNC Paint_Window(oDlg,lInit) 
   IF lInit 
      oDlg:SetFocus() 
      SysRefresh() 
      CursorWait() 
      lInit:=.F. 
   ENDIF 
RETURN (NIL)
Posts: 244
Joined: Fri Oct 28, 2005 06:29 PM
Monitorear/Visualizar arranque de la aplicacion ( How to )
Posted: Thu Aug 21, 2008 12:39 PM

Gracias Alfredo, lo voy a probar.

Saludos!

Alejandro Cebolido

Buenos Aires, Argentina

Continue the discussion