Как создавать субпанели
Revised: 1-Feb-2010
Original: 1-May-2001
Return to: REBOL How To
СОДЕРЖАНИЕ
Как запустить примеры
Чтобы запустить любой из примеров, показанных ниже, откройте текстовый редактор и создайте строку заголовка REBOL, например:
REBOL [Title: "Example"]
Затем просто вырежьте пример текста и вставьте его после этой строки. Сохраните текстовый файл и дайте ему имя, например example.r. Затем запустите файл так же, как и любой файл REBOL.
Создание главного окна
Вот как создать подпанели, которые можно быстро переключать из одного окна.
В макете верхнего уровня (окна) укажите область окна, которая будет содержать субпанели. Это можно сделать с помощью стиля VID, например BOX.
Вот пример макета верхнего уровня. BOX размером 240x200 предназначен для размещения субпанелей, а две кнопки предназначены для переключения между панелями.
main: layout [
vh2 "Subpanel Examples"
guide
pad 20
button "Panel 1" [panels/pane: panel1 show panels]
button "Panel 2" [panels/pane: panel2 show panels]
button "Quit" [quit]
return
box 2x140 maroon
return
panels: box 220x140
]
Это будет выглядеть так:

Слово панели будет относиться к окну, и оно используется кнопками для переключения его содержимого. Действия кнопок будут описаны позже.
Для отладки вы можете захотеть увидеть расположение субпанелей, вы можете использовать этот удобный трюк. Установите цвет окна при отладке. Например, цвет рамки панели ниже установлен на темно-синий.
main: layout [
vh2 "Subpanel Examples"
guide
pad 20
button "Panel 1" [panels/pane: panel1 show panels]
button "Panel 2" [panels/pane: panel2 show panels]
button "Quit" [quit]
return
box 2x140 maroon
return
panels: box 220x140 coal
]
Это будет выглядеть так:

Создание субпанелей
Теперь вы можете создавать субпанели, которые будут отображаться в окне. Вы можете иметь любое количество субпанелей в области BOX, и эти субпанели могут включать в себя любые возможности REBOL/View, такие как изображения, анимации, списки или даже другие субпанели.
Первая субпанель имеет заголовок, два поля и кнопку.
panel1: layout [
origin 8x8
h3 "Panel 1"
field "Field 1"
field "Field 2"
button "The Answer" [alert "I know nothing."]
]
Он будет выглядеть так:

Вторая субпанель содержит пару ползунков и флажков. Флажки изменят цвет фона субпанели.
panel2: layout [
origin 8x8
h3 "Panel 2"
across
txt "X:"
slider 150x16
return
txt "Y:"
slider 150x16
return
check [panel2/color: maroon show panel2]
txt "Don't click this"
return
check [panel2/color: silver show panel2]
txt "Click this"
return
]
Он будет выглядеть так:

Сборка и запуск
Приведенные выше примеры собраны здесь в единую программу, которую вы можете вырезать и вставить в текстовый редактор.
REBOL [Title: "Subpanels"]
main: layout [
vh2 "Subpanel Examples"
guide
pad 20
button "Panel 1" [panels/pane: panel1 show panels]
button "Panel 2" [panels/pane: panel2 show panels]
button "Quit" [quit]
return
box 2x140 maroon
return
panels: box 220x140
]
panel1: layout [
origin 8x8
h2 "Panel 1"
field "Field 1"
field "Field 2"
button "The Answer" [alert "I know nothing."]
]
panel2: layout [
origin 8x8
h2 "Panel 2"
across
txt "X:"
slider 150x16
return
txt "Y:"
slider 150x16
return
check [panel2/color: maroon show panel2]
txt "Don't click this"
return
check [panel2/color: silver show panel2]
txt "Click this"
return
]
panel1/offset: 0x0
panel2/offset: 0x0
panels/pane: panel1
view main
Смещения панели установлены на 0x0, чтобы уменьшить необходимое пространство.
Вторая предпоследняя строка устанавливает начальную панель на panel1. Если этого не сделать, начальная панель отображаться не будет.
Чтобы изменить панель, действия кнопок изменяют панель для BOX, затем обновляют BOX с помощью функции SHOW.
Вы можете расширить этот пример и добавить несколько панелей, добавив несколько стилей BOX к вашему основному макету и определив дополнительные субпанели.