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
Problema con Dialogo que no se cierra en FiveLinux
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Problema con Dialogo que no se cierra en FiveLinux
Como has definido la función msgbox() ?
La has implementado tu ?
Este código funciona bien:
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
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
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
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.
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
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Problema con Dialogo que no se cierra en FiveLinux
Llama a SysRefresh() para procesar los eventos pendientes.
Igual que en FiveWin
Igual que en FiveWin
Re: Problema con Dialogo que no se cierra en FiveLinux
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
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
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Problema con Dialogo que no se cierra en FiveLinux
Si, está bien
Es una forma correcta de hacerlo modal
Es una forma correcta de hacerlo modal
Re: Problema con Dialogo que no se cierra en FiveLinux
Una vez mas gracias... Antonio.
Antonio Linares wrote:Si, está bien
Es una forma correcta de hacerlo modal