30 de septiembre de 2004

WAIT WINDOWS CENTRADO CONTROLADO POR ARGUMENTOS

Un WAIT WINDOW centrado.
? WaitWindowCentrado("Microsoft Visual FoxPro...",0)

FUNCTION WaitWindowCentrado
  LPARAMETERS pcmensaje, pnmodo, pnsegundos, lcarea
  IF pcount()  = 0 OR TYPE("pcmensaje") # "C"
    RETURN("")
  ENDIF
  IF TYPE("pnmodo") # "N"
    pnmodo = 0
  ENDIF
  IF TYPE("pnsegundos") # "N"
    pnsegundos = 1
  ENDIF
  IF TYPE("lcarea") # "C"
    lcarea = "_SCREEN"
  ENDIF
  LOCAL lnfila AS INTEGER, lncolumna AS INTEGER
  LOCAL lnold_scale, lcmodo AS CHARACTER, lcresp AS CHARACTER

  DO CASE
    CASE pnmodo = 0
      lcmodo = ""
    CASE pnmodo = 1
      lcmodo = "NOWAIT"
    CASE pnmodo = 2
      lcmodo = "TIMEOUT pnsegundos"
    OTHERWISE
      lcmodo = ""
  ENDCASE
  lnold_scale = &lcarea..SCALEMODE
  &lcarea..SCALEMODE = 0
  lnfila = &lcarea..HEIGHT / 2
  lncolumna = ( &lcarea..WIDTH / 2 ) - LEN(pcmensaje) / 2
  WAIT WINDOW pcmensaje TO lcresp AT lnfila, lncolumna &lcmodo
  &lcarea..SCALEMODE = lnold_scale
  RETURN(lcresp)
ENDFUNC
NOTA: El 1er parametro es el mensaje, el segundo fijese en el DO CASE, el tercero va junto cuando 'pnmodo' es igual a 2, y el ultimo parametro puede ser _SCREEN o THISFORM por ejemplo.

Jose Matute

No hay comentarios. :

Publicar un comentario