Скрыть и показать вид на красном языке

Я пытаюсь использовать следующий код, чтобы иметь второе представление, которое можно скрывать и снова отображать повторно, сохраняя значения в своих полях:

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] ]

Это работает нормально, если кнопка «скрыть» используется для второго просмотра. Но если второй вид закрыть, щелкнув «x» в правом верхнем углу, его нельзя будет показать снова. Как я могу решить эту проблему?


person rnso    schedule 09.10.2017    source источник
comment
Есть ли способ подключиться к событию закрытия?   -  person Graham Chiu    schedule 09.10.2017
comment
документация по закрытию недоступна: red-by-example.org/ index.html#0при закрытии . На этой странице также нет: mycode4fun.co.uk/red-beginners-reference -guide или на doc.red-lang.org/en/view. html   -  person rnso    schedule 09.10.2017


Ответы (1)


Вам нужно добавить обработчик события close в этом дочернем окне, чтобы правильно сбросить ваш флаг, например:

view/options [
    below
    text "second view"
    f2: field secondFstr []
    b3: button "Hide" [
        secondshowing: false
        unview
    ]
][
    actors: object [
        on-close: func [face event][
            secondshowing: false
        ]
    ]
]
person DocKimbel    schedule 09.10.2017
comment
После закрытия второго вида в верхнем правом углу «x» я не могу снова открыть его. (Он снова открывается, если я использую кнопку «скрыть»). - person rnso; 09.10.2017
comment
Он отлично работает после замены вашего второго кода просмотра на тот, который я разместил здесь. Вы не пробовали? - person DocKimbel; 09.10.2017