Page 1 of 1

Problema con Dialogo que no se cierra en FiveLinux

Posted: Wed Mar 30, 2011 8:38 pm
by jgayoso
Tengo un dialogo que me dice si deseo repetir o salir, el problema que si le digo repetir el mismo dialogo el anterior no se cierra .

do while .T.
i:=msgbox('Pregunta',{'Repetir','Salir'})
if I=2
Exit
endif
Enddo

Msgbox es un dialogo que desplega los 2 botones (Repetir y Salir), al dar salir todo OK y sale. Pero al dar repetir, no cierra el dialogo de msgbox y al entrar de nuevo al mismo, lo muestra pero no deja seleccionar nada y se va un ciclo.

Estoy con UBUNTU 10.04 LTS

Quedo a la espera... y se agradece desde ya

Re: Problema con Dialogo que no se cierra en FiveLinux

Posted: Fri Apr 01, 2011 9:44 am
by Antonio Linares
Como has definido la función msgbox() ?

La has implementado tu ?

Este código funciona bien:

Code: Select all

do while .T.
i:=msgyesno('Pregunta')
if i
   Exit
endif
Enddo
 

Re: Problema con Dialogo que no se cierra en FiveLinux

Posted: Mon Apr 04, 2011 6:29 pm
by jgayoso
Antonio, coloque un msgalert e igual, despues de presionar una tecla de confirmación, no sale del Dialogo de MsgAlert me lo sigue mostrando.

Mi programa realiza un chequeo y luego si esta todo OK muestra el menu. Si hay algo malo lo informa mediando un menasaje, antes de mostrar la ventana principal.

Se agradece cualquier ayuda.

Jorge Gayoso


Antonio Linares wrote:Como has definido la función msgbox() ?

La has implementado tu ?

Este código funciona bien:

Code: Select all

do while .T.
i:=msgyesno('Pregunta')
if i
   Exit
endif
Enddo
 

Re: Problema con Dialogo que no se cierra en FiveLinux

Posted: Mon Apr 04, 2011 6:50 pm
by jgayoso
Si coloco msgalert entre mis proceso, se van refrescando a medida que pasa de un msgalert a otro. ¿Habra algo que refresque windows despues de msgalert como doevent en visual basic?

Se agrade cualquier ayuda.



Antonio Linares wrote:Como has definido la función msgbox() ?

La has implementado tu ?

Este código funciona bien:

Code: Select all

do while .T.
i:=msgyesno('Pregunta')
if i
   Exit
endif
Enddo
 

Re: Problema con Dialogo que no se cierra en FiveLinux

Posted: Mon Apr 04, 2011 8:01 pm
by Antonio Linares
Llama a SysRefresh() para procesar los eventos pendientes.

Igual que en FiveWin :-)

Re: Problema con Dialogo que no se cierra en FiveLinux

Posted: Tue Apr 05, 2011 6:11 pm
by jgayoso
Antonio, pude hacer parar el dialogo de la siguiente manera, adjunto extracto del codigo:

No se si esta correcto, pero me funciona bien.

Agradecere tus comentarios u opinión como maestro....

Jorge Gayoso


Function msgbox(cTextoMsg, aPrompts, nDef, nStp, sStp, sColor, tNotas,xdescr, cJustificado)
Local oDlg, lExit := .F., nSeleccion := 0, nI, nC:=1, nLB, tG:={}, nL, nAnchoDialogo, nAltoDialogo
Local nAnchoLetra:=9, nAltoLetra:=24,nAnchoParaBotones
.
.
.
.
DEFINE DIALOG oDlg SIZE nAnchoDialogo, nAltoDialogo
nL:=1
for nI:=1 to len(tG)
@nL,1 say tG[nI] OF oDlg SIZE len(tG[nI])*nAnchoLetra,nAltoLetra
nL:=nL+2
next nI
nL:=nL+1
@ nL, nC BUTTON aPrompts[1] OF oDlg SIZE nLB*nAnchoLetra,nAltoLetra ACTION ( nSeleccion:=1, lExit := .T., oDlg:End() )
nC+=nLB
if len(aPrompts)>=2
@ nL, nC BUTTON aPrompts[2] OF oDlg SIZE nLB*nAnchoLetra,nAltoLetra ACTION ( nSeleccion:=2, lExit := .T., oDlg:End() )
nC+=nLB
endif
.
.
.
ACTIVATE DIALOG oDlg VALID lExit CENTER
do while .not. lExit
SysRefresh()
enddo
msgalert('paso')
Return nSeleccion



Antonio Linares wrote:Llama a SysRefresh() para procesar los eventos pendientes.

Igual que en FiveWin :-)

Re: Problema con Dialogo que no se cierra en FiveLinux

Posted: Tue Apr 05, 2011 10:06 pm
by Antonio Linares
Si, está bien :-)

Es una forma correcta de hacerlo modal

Re: Problema con Dialogo que no se cierra en FiveLinux

Posted: Wed Apr 06, 2011 1:39 pm
by jgayoso
Una vez mas gracias... Antonio.
Antonio Linares wrote:Si, está bien :-)

Es una forma correcta de hacerlo modal