2017-10-09 16 views
0

Je suis en train de code ci-dessous pour avoir un second point de vue qui peut être caché et montré à nouveau à plusieurs reprises tout en préservant les valeurs dans ses domaines:Cacher et afficher une vue en langue rouge

Red [] 

secondFstr: "" 
secondshownonce: false 
secondshowing: false 

secondview: does [ 
    secondshownonce: true 
    if not secondshowing [ 
     secondshowing: true 
     view [ below 
     text "second view" 
     f2: field secondFstr [] 
     b3: button "Hide" [ 
      secondshowing: false 
      unview ]]]] 

view [ below 
    text "first view" 
    b1: button "Print f2 text" [ 
      either not secondshownonce 
      [print "not shown"] 
      [print f2/text] ] 
    b2: button "Show 2nd view" [secondview] ] 

Il fonctionne bien si « cacher Le bouton est utilisé pour la deuxième vue. Mais si la seconde vue est fermée en cliquant sur 'x' dans son coin supérieur droit, elle ne peut plus être affichée. Comment puis-je résoudre ce problème?

+0

Est-il possible de brancher dans l'événement proche? –

+0

La documentation de fermeture n'est pas disponible: http://www.red-by-example.org/index.html#0on-close. Aussi pas sur cette page: http://www.mycode4fun.co.uk/red-beginners-reference-guide ou sur https://doc.red-lang.org/fr/view.html – rnso

Répondre

1

Vous devez ajouter un gestionnaire à l'événement close sur cette fenêtre enfant, afin de réinitialiser votre drapeau correctement, comme ceci:

view/options [ 
    below 
    text "second view" 
    f2: field secondFstr [] 
    b3: button "Hide" [ 
     secondshowing: false 
     unview 
    ] 
][ 
    actors: object [ 
     on-close: func [face event][ 
      secondshowing: false 
     ] 
    ] 
] 
+0

Après la fermeture de la deuxième vue par le coin supérieur droit 'x', je ne peux pas le rouvrir. (Il rouvre si j'utilise le bouton 'cacher'). – rnso

+0

Cela fonctionne bien après avoir remplacé votre deuxième code d'affichage par celui que j'ai posté ici. Tu n'as pas essayé? – DocKimbel