Un pequeño "lío" con diálogos modales y NO Modales

Un pequeño "lío" con diálogos modales y NO Modales

Postby AngelSalom » Fri Jul 02, 2021 6:13 am

Hola amigos, estoy haciendo algunas pruebas pero no acabo de encontrar el problema.
Planteo el entorno :
- Tengo una ventana principal que se crea al entrar en el programa (TWindow)
- Pongo un botón que permite crear un diálogo NO Modal para tener un entorno multidiálogo (necesito usar TDialog porque se crearán desde recursos)
- El diálogo NO Modal permite crear desde él un diálogo, por ejemplo de edición. Este último diálogo sí que será MODAL para forzar al usuario a entrar la información sin desplazarse a otras opciones.

Hasta aquí todo correcto, el problema que me encuentro es que este último diálogo es MODAL respecto a la ventana principal pero no respecto al diálogo desde el que se ha llamado, permitiendo interactuar con el diálogo desde el que ha sido creado.

Es un poco lío pero dejo un código de ejemplo y un pequeño vídeo para ver si se me entiende correctamente.

Code: Select all  Expand view  RUN
#include 'fivewin.ch'

Function Main()

    Local oWnd

    DEFINE WINDOW oWnd FROM 0,0 TO 24,79 TITLE "Main Window"

    @ 1,1 BUTTON "Crear dialogo NO modal" ;
          SIZE 150,25 ;
          ACTION DialogoNOModal( oWnd )

    ACTIVATE WINDOW oWnd

Return( nil )


Static Function DialogoNOModal( oWnd )

    Local oDlgNoModal

    DEFINE DIALOG oDlgNoModal TITLE 'Dialogo no modal'


    @ 1,1 BUTTON "Crear dialogo modal" ;
          SIZE 150,25 ;
          ACTION DialogoModal( oWnd )


    ACTIVATE DIALOG oDlgNoModal NOMODAL

Return( nil )    


Static Function DialogoModal( oWnd )

    Local oDlgModal

    DEFINE DIALOG oDlgModal TITLE 'Dialogo modal' OF oWnd // WndMain()

    ACTIVATE DIALOG oDlgModal

Return( nil )    
 



Image
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
AngelSalom
 
Posts: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

Re: Un pequeño "lío" con diálogos modales y NO Modales

Postby cnavarro » Fri Jul 02, 2021 7:26 am

Angel, un pequeño "apaño" como posible solución:

Code: Select all  Expand view  RUN

#include 'fivewin.ch'

Function Main()

    Local oWnd

    DEFINE WINDOW oWnd FROM 0,0 TO 24,79 TITLE "Main Window"

    @ 1,1 BUTTON "Crear dialogo NO modal" ;
          SIZE 150,25 ;
          ACTION DialogoNOModal( oWnd )

    ACTIVATE WINDOW oWnd

Return( nil )


Static Function DialogoNOModal( oWnd )

    Local oDlgNoModal
    Local lSalir := .F.

    DEFINE DIALOG oDlgNoModal TITLE 'Dialogo no modal' OF oWnd
   

    @ 1,1 BUTTON "Crear dialogo modal" ;
          SIZE 150,25 ;
          ACTION DialogoModal( oWnd, oDlgNoModal )


    ACTIVATE DIALOG oDlgNoModal NOMODAL CENTERED IN PARENT

Return( nil )    


Static Function DialogoModal( oWnd, oDlg )

    Local oDlgModal

    oDlg:Disable()
    DEFINE DIALOG oDlgModal TITLE 'Dialogo modal' OF oWnd // WndMain()

    ACTIVATE DIALOG oDlgModal //CENTERED IN PARENT
    oDlg:Enable()

Return nil

 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Un pequeño "lío" con diálogos modales y NO Modales

Postby AngelSalom » Fri Jul 02, 2021 8:58 am

Gracias Cristóbal, había pensado en eso pero quería saber si este comportamiento es "normal" o si andaba yo equivocado.
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
AngelSalom
 
Posts: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

Re: Un pequeño "lío" con diálogos modales y NO Modales

Postby José Luis Sánchez » Fri Jul 02, 2021 11:32 am

Creo que si a cada dialogo le dices quien es el padre ya no tienes el problema, cuando crees el segundo dialogo usas OF oParent y listo.

Saludos,
User avatar
José Luis Sánchez
 
Posts: 556
Joined: Thu Oct 13, 2005 9:23 am
Location: Novelda - Alicante - España

Re: Un pequeño "lío" con diálogos modales y NO Modales

Postby AngelSalom » Fri Jul 02, 2021 11:49 am

José Luis Sánchez wrote:Creo que si a cada dialogo le dices quien es el padre ya no tienes el problema, cuando crees el segundo dialogo usas OF oParent y listo.

Saludos,


No, en ese caso la ventana principal ( wndmain() ) es accesible.
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
AngelSalom
 
Posts: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

Re: Un pequeño "lío" con diálogos modales y NO Modales

Postby cnavarro » Fri Jul 02, 2021 12:52 pm

AngelSalom wrote:
José Luis Sánchez wrote:Creo que si a cada dialogo le dices quien es el padre ya no tienes el problema, cuando crees el segundo dialogo usas OF oParent y listo.

Saludos,


No, en ese caso la ventana principal ( wndmain() ) es accesible.


Así es, solo es modal respecto a su contenedor padre pero no para el resto
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 58 guests