Page 1 of 1

Msgrun con texto en varias lineas (Solucionado)

PostPosted: Wed Oct 14, 2015 2:18 am
by Maggiro
Buenas Noches Amigos del Foro:
En una función msginfo('Texto Primera Linea'+CRLF+;
'Texto Segunda linea'+CRLF+CRLF+;
'Texto Cuarta Linea',' Probando texto dividido')
Esto si funciona.
Pero
En una funcion msgrun no funciona.

Alguna idea para hacerlo funcionar??

Gracias por vuestras respuestas!!

Julio César Gómez Cortéz
Godryc Experiencias
Lima Perú

Re: Msgrun con texto en varias lineas (Solucionado)

PostPosted: Wed Oct 14, 2015 10:18 am
by Antonio Linares
Julio,

Como lo solucionaste ?

Re: Msgrun con texto en varias lineas (Solucionado)

PostPosted: Wed Oct 14, 2015 12:56 pm
by Maggiro
Buenos Dias Sr. Antonio:
Lo solucioné con ésta rutina:
Code: Select all  Expand view


FUNCTION MsgRunDiv( MiTexto, MiTitulo, MiAccion )
   LOCAL DiRunDiv, nAncho,DivTexto
   LOCAL MiArreglo:={}
   LOCAL nArreglo:=0,
   DEFAULT MiTexto := "Espere, Por Favor...",;
               MiAccion := { || WaitSeconds( 4 ) }
   IF At( CRLF,MiTexto ) != 0
      DO WHILE At( CRLF,MiTexto ) != 0
         DivTexto:=Left(MiTexto,At( CRLF,MiTexto )-1)
         aadd(MiArreglo,DivTexto)
         nArreglo:=MAX(nArreglo,len(DivTexto))
         MiTexto:=substr(MiTexto,At( CRLF,MiTexto )+1)
      ENDDO
   ENDIF
   aadd(MiArreglo,MiTexto)
   nArreglo:=MAX(nArreglo,len(MiTexto))
   IF MiTitulo == NIL
      DEFINE DIALOG DiRunDiv ;
                    FROM 0,0 TO 2+LEN(MiArreglo) , nArreglo + 3 ;
                    STYLE nOr(WS_POPUP,DS_MODALFRAME) //nOr( DS_MODALFRAME, WS_POPUP )
   ELSE
      DEFINE DIALOG DiRunDiv ;
                    FROM 0,0 TO 4+LEN(MiArreglo), Max( nArreglo, Len( MiTitulo ) ) + 4 ;
                    TITLE MiTitulo STYLE nOr(DS_MODALFRAME)
   ENDIF
   DiRunDiv:lHelpIcon :=.f.
   DiRunDiv:bStart := { || Eval( MiAccion, DiRunDiv ), DiRunDiv:End(), SysRefresh() }
   nAncho := DiRunDiv:nRight - DiRunDiv:nLeft
      ACTIVATE DIALOG DiRunDiv CENTER ON PAINT DiviMsg(DiRunDiv,MiArreglo,nAncho)
RETU nil

STATIC FUNCTION DiviMsg(DiRunDiv,MiArreglo,nAncho)
   LOCAL posi
   FOR posi=1 to len(MiArreglo)
      DiRunDiv:Say( posi, 3, ALLTRIM(xPadC( MiArreglo[posi], nAncho )) )
   NEXT
RETU nil


 


Es para los mensajes RUN a los que deseo poner varias lineas divididas con CRLF.

Saludos
Julio César Gómez Cortéz
Godryc Experiencias
Lima Perú

Re: Msgrun con texto en varias lineas (Solucionado)

PostPosted: Wed Oct 14, 2015 7:49 pm
by Antonio Linares
gracias! :-)

Re: Msgrun con texto en varias lineas (Solucionado)

PostPosted: Sun Oct 18, 2015 3:00 am
by Maggiro
Sr. Antonio :
Al usar la rutina mostrada de MSGRUNDIV se presenta una contingencia:
- La rutina tal como está, espera cinco segundos antes de cerrarse.
- Si en esos cinco segundos, un usuario desesperado hace doble click o pulsa ESC O ENTER varias veces
pensando que se congeló el sistema produce lo siguiente:
- La rutina no recepta ningún tipo de acción del usuario y se cierra normal a los cinco segundos
- el problema es la ventana anterior que toma lo pulsado en desesperación
- si fueron varios ESC puede cerrarse todo el sistema. Esto puede ocasionar que un empleado usuario inexperto
- informe que el sistema lo bota en determinado modulo.
La pregunta
- puedo liberar todas las acciones sea por teclado o por mouse que presionó o pulsó el usuario inexperto
- antes de que la rutina RUN se cierre automáticamente (esta contingencia también puede estar produciéndose
- con el MSGRUN)

Saludos
Julio César Gómez Cortéz
Godryc Experiencias
Lima Perú

Re: Msgrun con texto en varias lineas (Solucionado)

PostPosted: Sun Oct 18, 2015 8:47 am
by Antonio Linares
Para evitar que el usuario pueda hacer nada haz:

oDlg:Disable()

y posteriormente

oDlg:Enable()

Re: Msgrun con texto en varias lineas (Solucionado)

PostPosted: Sun Oct 18, 2015 3:13 pm
by Maggiro
Por alguna razón, los comandos Disable() y Enable() no toman efecto ...
Probé con:

SetDialogEsc(.F.)
msgrundiv('A ver??'+CRLF+;
'Ahora pulsa el teclado como loco desesperado ...'+CRLF+;
'O Clickea repetidamente el Mouse ... ',' Probando Bloqueo Teclado y Mouse')
SetDialogEsc(.T.)

Esto si funciona!!!

Saludos
Julio César Gómez Cortéz
Godryc Experiencias
Lima Perú

Re: Msgrun con texto en varias lineas (Solucionado)

PostPosted: Sun Oct 18, 2015 3:16 pm
by Antonio Linares
Muy bien! :-)