Clase de Espera

171 views
Skip to first unread message

Christian López Gómez

unread,
Aug 12, 2014, 12:04:46 PM8/12/14
to publice...@googlegroups.com
alguien tiene una clase donde aparesca un mensaje de espera en lo que se ejecuta un comando Select como se muestra en la siguiente imagen:




saludos


--
Atentamente.
Ing. Christian López Gómez
Jefe de Sistemas
MSN:   christi...@hotmail.com
           christi...@gmail.com

Depto. Sistemas
P.D. "Un buen programador nunca muere solo se pierde en un proceso"

Christian López Gómez

unread,
Aug 12, 2014, 12:31:34 PM8/12/14
to mundovis...@googlegroups.com, publice...@googlegroups.com

Víctor Hugo Espínola Domínguez

unread,
Aug 12, 2014, 1:09:51 PM8/12/14
to publice...@googlegroups.com
Hola Christian

Copy/Paste de un mensaje de Luís María Guayán

Luis Maria Guayan <luism...@gmail.com> Anular suscripción

25/4/13
para publicesvfoxpro
Si no muestra nada, es que el proceso es rápido. ¿Por que fuerzas a que tu proceso  tarde mas con un FOR ln = 1 TO 10000000000000000000?

Yo utilizo una clase derivada de Pageframe y la muestro antes de iniciar un proceso y la oculto al terminar. El código de la clase es el sig:

**************************************************
*-- Class:        _espera (x:\_class\gral\gral.vcx)
*-- ParentClass:  pageframe
*-- BaseClass:    pageframe
*-- Time Stamp:   02/19/10 03:38:01 PM
*
DEFINE CLASS _espera AS pageframe
    ErasePage = .T.
    PageCount = 1
    BorderWidth = 1
    Width = 300
    Height = 100
    Tabs = .F.
    Visible = .F.
    Themes = .T.
    Name = "_espera"
    Page1.Caption = "Page1"
    Page1.BackStyle = 1
    Page1.BackColor = RGB(200,222,255)
    Page1.Name = "Page1"

    ADD OBJECT _espera.page1.label1 AS label WITH ;
        AutoSize = .T., ;
        FontBold = .T., ;
        FontName = "Trebuchet MS", ;
        FontSize = 12, ;
        BackStyle = 0, ;
        Caption = "Espere un momento por favor ...", ;
        Height = 24, ;
        Left = 22, ;
        Top = 36, ;
        Width = 251, ;
        Style = 3, ;
        Name = "Label1"

    PROCEDURE visible_assign
        LPARAMETERS vNewVal
        THIS.ZORDER(0)
        IF m.vNewVal
          THIS.TOP = (THISFORM.HEIGHT - THIS.HEIGHT) / 2
          THIS.LEFT = (THISFORM.WIDTH - THIS.WIDTH ) / 2
        ELSE
          THIS.TOP = THISFORM.HEIGHT
          THIS.LEFT = THISFORM.WIDTH
        ENDIF
        THIS.VISIBLE = m.vNewVal
    ENDPROC

    PROCEDURE Init
        THIS.TOP = THISFORM.HEIGHT
        THIS.LEFT = THISFORM.WIDTH
    ENDPROC

ENDDEFINE
*
*-- EndDefine: _espera
**************************************************

Lo tengo en una librería de clases visuales y tiro el objeto _espera en el formulario y lo utilizo de la sig. manera

ThisForm._espera.Visible = .T.
*...
*Proceso
*...
ThisForm._espera.Visible = .F.



También a veces utilizo una función de  Wait Windows centrado que lo tengo en mi librería de procedimientos:

*------------------------------------------------------
* FUNCTION WaitWindowsCentrado(tcTexto, tcOpc, tnTimeout)
* - - - - - - - - - - - - - - - - - - - - - - - - - - -
* Muestra la ventana de WAIT WINDOWS centrada
* PARAMETROS:
*   tcTexto   = Texto a mostrar. Puede contener saltos de línea CHR(13)
*   tcOpc     = Opciones NOCLEAR y NOWAIT del WAIT WINDOWS nativo
*   tnTimeOut = Segundos de espera para terminar el WAIT
* USO: WaitWindowsCentrado(tcTexto, tcOpc, tnTimeOut)
* EJEMPLO: WaitWindowsCentrado("Espere un momento...", "NOWAIT", 0)
* RETORNA: Caracter
* AUTOR: LMG - 20090824
*------------------------------------------------------
 FUNCTION WaitWindowsCentrado(tcTexto, tcOpc, tnTimeOut)

  LOCAL lnMaxLen, lnNroLin, lnRelFil, lnRelCol, ;
    lnRows_VFP, lnFil, lnCol, lcRet, lcCmd, ln, la(1)

  *-- Texto del mensaje
  IF EMPTY(m.tcTexto)
    m.tcTexto = "Presione una tecla para continuar..."
  ENDIF

  *-- Linea mas larga de tcTexto (si es multilinea)
  m.lnMaxLen = 0
  m.lnNroLin = ALINES(la, m.tcTexto)
  FOR m.ln = 1 TO m.lnNroLin
    m.lnMaxLen = MAX(m.lnMaxLen,LEN(m.la(m.ln)))
  ENDFOR

  *-- Filas de ventana completa _VFP, distinto a WROWS(_SCREEN.NAME)
  m.lnRows_VFP = _VFP.HEIGHT / FONTMETRIC(1,_SCREEN.FONTNAME,_SCREEN.FONTSIZE)

  *-- Relación entre el tamaño de las
  *-- fuentes de WAIT WINDOWS y _SCREEN
  m.lnRelFil = FONTMETRIC(1,'Arial',9) / FONTMETRIC(1,_SCREEN.FONTNAME,_SCREEN.FONTSIZE)
  m.lnRelCol = FONTMETRIC(6,'Arial',9) / FONTMETRIC(6,_SCREEN.FONTNAME,_SCREEN.FONTSIZE)
  m.lnFil = WLROW(_SCREEN.NAME) + (m.lnRows_VFP - m.lnNroLin * m.lnRelFil) / 2
  m.lnCol = WLCOL(_SCREEN.NAME) + (WCOLS(_SCREEN.NAME) - m.lnMaxLen * m.lnRelCol) / 2

  *-- Comando
  m.lcCmd = [WAIT WINDOWS tcTexto TO lcRet AT lnFil,lnCol]

  *-- Clausulas NOWAIT y NOCLEAR
  IF NOT EMPTY(m.tcOpc) AND VARTYPE(m.tcOpc) = "C"
    IF "NOWA" $ UPPER(m.tcOpc)
      m.lcCmd = m.lcCmd + [ NOWAIT]
    ENDIF
    IF "NOCL" $ UPPER(m.tcOpc)
      m.lcCmd = m.lcCmd + [ NOCLEAR]
    ENDIF
  ENDIF

  *-- Clausula TIMEOUT
  IF NOT EMPTY(m.tnTimeOut) AND VARTYPE(m.tnTimeOut) = "N"
    m.lcCmd = m.lcCmd + [ TIMEOUT tnTimeOut]
  ENDIF

  *-- Ejecuto el comando
  &lcCmd
  RETURN m.lcRet
ENDFUNC

*------------------------------------------------------

Para usarlo hago:

WaitWindowsCentrado("Espere un momento ..." + CHR(13) + "Generando el gráfico ...", "NOWAIT")
*...
* Proceso
*...
WAIT CLEAR 



Luis María Guayán
Tucumán, Argentina

Saludos,
Víctor.
Lambaré - Paraguay.

Christian López Gómez

unread,
Aug 14, 2014, 8:13:40 AM8/14/14
to publice...@googlegroups.com
gracias mi estimado ya lo probe y es excelente, pero no tienes algo parecido como se mustra en la imagen.

saludos

Víctor Hugo Espínola Domínguez

unread,
Aug 14, 2014, 1:02:43 PM8/14/14
to publice...@googlegroups.com
Hola Christian

Adjunto un formulario, lo puedes modificar a gusto.

Para usarlo:

En el evento Init de tu fomulario:
DO FORM Espere NAME loEspere NOSHOW

Para mostrar:
loEspere.Visible = .T.

Para ocultar:
loEspere.Visible = .F.

Para liberar:
loEspere.Release
loEspere = Null

Debes probar como afecta la inclusión de la imagen tipo GIF en el tiempo de ejecución del proceso.

Saludos,
Víctor.
Lambaré - Paraguay.



Espere._rar

Christian López Gómez

unread,
Aug 14, 2014, 3:34:26 PM8/14/14
to publice...@googlegroups.com
muchas gracias mi estimado
Reply all
Reply to author
Forward
0 new messages