Msgrun con texto en varias lineas (Solucionado)

Msgrun con texto en varias lineas (Solucionado)

Postby Maggiro » Wed Oct 14, 2015 2:18 am

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ú
User avatar
Maggiro
 
Posts: 84
Joined: Thu Oct 14, 2010 3:26 am
Location: LIMA - PERU

Re: Msgrun con texto en varias lineas (Solucionado)

Postby Antonio Linares » Wed Oct 14, 2015 10:18 am

Julio,

Como lo solucionaste ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42077
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Msgrun con texto en varias lineas (Solucionado)

Postby Maggiro » Wed Oct 14, 2015 12:56 pm

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ú
User avatar
Maggiro
 
Posts: 84
Joined: Thu Oct 14, 2010 3:26 am
Location: LIMA - PERU

Re: Msgrun con texto en varias lineas (Solucionado)

Postby Antonio Linares » Wed Oct 14, 2015 7:49 pm

gracias! :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42077
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Msgrun con texto en varias lineas (Solucionado)

Postby Maggiro » Sun Oct 18, 2015 3:00 am

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ú
User avatar
Maggiro
 
Posts: 84
Joined: Thu Oct 14, 2010 3:26 am
Location: LIMA - PERU

Re: Msgrun con texto en varias lineas (Solucionado)

Postby Antonio Linares » Sun Oct 18, 2015 8:47 am

Para evitar que el usuario pueda hacer nada haz:

oDlg:Disable()

y posteriormente

oDlg:Enable()
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42077
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Msgrun con texto en varias lineas (Solucionado)

Postby Maggiro » Sun Oct 18, 2015 3:13 pm

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ú
User avatar
Maggiro
 
Posts: 84
Joined: Thu Oct 14, 2010 3:26 am
Location: LIMA - PERU

Re: Msgrun con texto en varias lineas (Solucionado)

Postby Antonio Linares » Sun Oct 18, 2015 3:16 pm

Muy bien! :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42077
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 73 guests