FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Un pequeño "lío" con diálogos modales y NO Modales
Posts: 728
Joined: Fri Oct 07, 2005 07:38 AM
Un pequeño "lío" con diálogos modales y NO Modales
Posted: Fri Jul 02, 2021 06: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 (fw): Select all Collapse
#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 )



Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Un pequeño "lío" con diálogos modales y NO Modales
Posted: Fri Jul 02, 2021 07:26 AM
Angel, un pequeño "apaño" como posible solución:

Code (fw): Select all Collapse
#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
Posts: 728
Joined: Fri Oct 07, 2005 07:38 AM
Re: Un pequeño "lío" con diálogos modales y NO Modales
Posted: Fri Jul 02, 2021 08: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
Posts: 564
Joined: Thu Oct 13, 2005 09:23 AM
Re: Un pequeño "lío" con diálogos modales y NO Modales
Posted: 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,

Posts: 728
Joined: Fri Oct 07, 2005 07:38 AM
Re: Un pequeño "lío" con diálogos modales y NO Modales
Posted: 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
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Un pequeño "lío" con diálogos modales y NO Modales
Posted: 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

Continue the discussion