如何设置文本列表和其他元素的样式?

时间:2011-02-11 12:34:03

标签: rebol

默认的Rebol VID风格让人眼前一亮。我开始制作自己的默认设置,但遇到了障碍。即,如何为元素的子元素指定样式?

good-looking: stylize [
  field: field 
    edge [size: 1x1]
    colors [255.255.255 255.255.255]
  area: area
    edge [size: 1x1]
    colors [255.255.255 255.255.255]
  text-list: text-list
    ;text-list/sub-area/edge [size: 1x1]
]

我希望所有字段都有一个细边框,包括文本列表和其他字段。但我不知道如何在文本列表定义中包含该规则。

另外,如何减少样式的重复,比如颜色?

2 个答案:

答案 0 :(得分:1)

我可以部分回答你的第一个问题。在REBOL控制台上,试试这个......

>> lo: layout [t: text-list]

这两者都创建了一个布局,并允许使用PROBE ...

检查文本列表对象(t)
>> probe first t
== [self type offset size span pane text color image effect data edge font para feel saved-area rate show? options parent-face old-offset old-size line-list changes face-flags action state access style alt-action facets related words colors texts images file var keycode reset styles init multi blinker pane-size dirty? help user-data flags doc xy sz iter sub-area sld sn lc picked cnt act slf lines text-pane update resize]

注意那里的SUB-AREA。这是文本列表中的列表区域。探究这一点,你得到......

>> probe first t/sub-area/edge
== [self color image effect size]
>> probe first t/sub-area/edge/size
== 2

所以,在那里改变SIZE并查看我们制作的布局......

>> t/sub-area/edge/size: 1x1
== 1x1
>> view lo

文本列表的边缘现在应该很薄。我不确定你是如何使用风格实现的,但希望这会让你走上正确的轨道。

答案 1 :(得分:0)

所以,首先:

layout [X: field]
type? X/edge
type? X/colors

应该重新制作对象以避免对共享对象产生意外的副作用。

good-looking: stylize [
  field: field with [
    edge: make edge [size: 1x1]
    colors: copy [255.255.255 255.255.255]
  ]
  area: area with [
    edge: make edge [size: 1x1]
    colors: copy [255.255.255 255.255.255]
  ]
  text-list: text-list with [
    sub-area: make sub-area [
      edge: make edge [size: 1x1]
    ]
  ]
]