2

注:これはチャットでの質問でした

プレス時にボタンのスタイルを変更するにはどうすればよいですか?

l: layout [

style bteal button teal
style bred button red

b1: bteal "Ok" [b1/style: 'bred]
]

view l

buttonクリック時にこのように変更したい:

最初は->期待されるクリック

答えはおそらく vid が方言であることと関係があります。また、style単語がその内容をどのように評価するか

補遺

おそらくそうではありません。

前:

>> ? b1/style
B1/STYLE is a word of value: bteal

後:

>> ? b1/style
B1/STYLE is a word of value: bred

したがって、設定されているものは正しいです。おそらく、イベントをトリガーする必要がありますか?

4

1 に答える 1

4

stylelayoutは関数内でのみ意味を持ち、layout関数はこれをショートカットとして使用して、事前定義されたファセット (色、サイズなど) を持つ新しい面を生成します。

したがって、顔のスタイルを変更しても何も変わりません。ファセット (面のプロパティ) を直接変更する必要があります。

lay: layout [
    style by box yellow
    b: by "Test" [b/color: random white  show b]
]
view lay

しかし、同じことを で行うとbutton、色が変更されないため、混乱する可能性があります。

lay: layout [
    b: button yellow "Test" [b/color: random white  show b]
]
view lay

これは、ボタンがeffectsファセットにいくつかの効果を持ち、レイアウト関数内のフェイスの生成中に色がそこで定義されるためです。

>> ? b/effects
B/EFFECTS is a block of value: [
    [gradient 0x1 255.255.32 223.223.0]
    [gradient 0x-1 255.255.32 223.223.0]
]

そのブロックをすると、変更が表示されるか、それに応じてclearそのブロックを変更する必要があります。

編集:

あなたの例の実用的なバージョンは次のとおりです。

l: layout [
    style bteal button teal effect []
    style bred button red effect []
    b1: bteal "Ok" [b1/color: red]
]
view l
于 2017-01-02T07:20:31.993 に答える