2017-12-18 13 views
0

私はボタンのリフレッシュをクリックすると、私はVを更新するにはどうすればよいのエラーRebol/Redのshow windowでエラーが発生するのはなぜですか?

v: [field1 "to refresh" field2 "to refresh" 
button "refresh" [show v]] 
view v 

を取得しますか?

アップデート:私は、エラーを持っていないが、それは更新されません:

test: [ 
     ["a1" "b1"] 
     ["a2" "b2"] 
    ] 

    i: 1 
    v: layout compose [ 
     field data test/:i/1 field data test/:i/2 button "refresh" [i: i + 1 show v] 
    ] 
    view v 
+0

あなたのスクリプトで何をすべきかあなたが何を期待しているかを示すことができますか? ** i **が指している値を数えるだけです。それはあなたのレイアウトから完全に独立しています。 – sqlab

答えて

1

ショーは顔ではなく、ブロックを期待しています。 あなたがボタンをクリックする前に、第2の入力フィールドに何かを入力する必要がある変更を確認するには、おそらく

v: layout [ 
    f1: field "to refresh" 
    f2: field "to refresh" 
    button "refresh" [f1/text: f2/text show v ] 
    ] 

に沿って何かをしたいです。何か(有効)あなたのアップデートでの作業あなたは再び顔定義ブロックをロードしますが、red-gui-system docsは「レッド/ビューが更新されます

を言っていない

i: 1 
sw: true 
v: layout compose [ 
    f1: field data test/:i/1 
    f2: field data test/:i/2 
    button "refresh" [ 
     i: pick [1 2] sw: not sw 
     f1/text: test/:i/1 
     f2/text: test/:i/2 
     show v 
    ] 
] 

ショーを使用することができますを作るために

そのプロパティが変更されるとリアルタイムで顔とグラフィックの両方のオブジェクトが表示されますが、これはデフォルトの動作ですが、画面の更新を完全に制御することが望ましい場合はオフにすることができます。

自動同期機能がオフになっている場合は、画面上でグラフィックオブジェクトを更新するために、面にshow機能を使用する必要があります。

古い顔オブジェクトを破棄し、仕様ブロックで新しいものを作成することで、あなたの意図に似た何かを得ることができると思います。

test: [ 
    ["a1" "b1"] 
    ["a2" "b2"] 
] 
i: 1 
sw: true 

vvw: layout v: [ 
    field data test/:i/1 
    field data test/:i/2 
    button "refresh" [ 
     i: pick [1 2] sw: not sw 
     unview vvw 
     view v 
    ] 
] 
view vvw 
+0

ありがとう、私のコードを更新しました。エラーはなくなりましたが、リフレッシュしません。 – user310291

+0

リフレッシュします。第1のフィールド** f1 **の内容は、第2のフィールド** f2 **の内容に更新される。もちろん、第2フィールドの内容を変更して最初に変更する必要があります。それ以外の場合は、常に同じになります。 – sqlab

+0

ボタンの更新にf1/textを入れるレイアウトはすでにf1:field data test /:i/1であるので、表示する必要はありません。vを再読み込みする必要がありますが、そうではありません。初めてロードした。 – user310291

0

ないあなたは、「リフレッシュ」によって何を意味するか確認してください、しかし、赤のGUIが反応で、明示的に更新するように指示する必要はありません。

あなただけのテキストデータを更新する場合(その値をインクリメント) - ここでは、短い作業例です:

view [f: field "42" button "increment" [f/data: f/data + 1]] 

fがちょうどfield作成に割り当てられている、です。ボタンを押すと、dataのメンバーにアクセスして新しい値を受け取ります。

関連する問題