Page 1 of 1
Msgrun con texto en varias lineas (Solucionado)
Posted:
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)
Posted:
Wed Oct 14, 2015 10:18 am
by Antonio Linares
Julio,
Como lo solucionaste ?
Re: Msgrun con texto en varias lineas (Solucionado)
Posted:
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)
Posted:
Wed Oct 14, 2015 7:49 pm
by Antonio Linares
gracias!
Re: Msgrun con texto en varias lineas (Solucionado)
Posted:
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)
Posted:
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)
Posted:
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)
Posted:
Sun Oct 18, 2015 3:16 pm
by Antonio Linares
Muy bien!