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
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________