2017-12-18 15 views
0

I 버튼 새로 고침을 클릭, 나는 오류Rebol/Red에서 쇼 윈도우에 오류가 발생하는 이유는 무엇입니까?

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

방법 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

쇼는 얼굴이 아닌 블록을 기대하고있다. 당신은 당신이 버튼을 클릭하기 전에 두 번째 입력 필드에 뭔가를 입력해야 변화를 확인하려면 아마

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

을 따라 뭔가를 원한다.

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

다시 얼굴을 정의 블록을로드하지 않습니다을 보여 사용할 수있는 업데이트 작업 (유용) 뭔가를 만들려면,하지만 red-gui-system docs

"레드 /보기가 업데이트됩니다 말 속성이 변경되면 실시간으로 얼굴 및 그래픽 객체가 표시됩니다.이 동작이 기본 동작이지만 화면 업데이트를 완전히 제어해야하는 경우 스위치를 끌 수 있습니다.이 작업은 다음을 통해 이루어집니다.

system/view/auto-sync?: off 

자동 동기화가 해제되어 있으면 얼굴에 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

새로 고침이 실행됩니다. 첫 번째 필드 ** f1 **의 내용은 두 번째 필드 ** f2 **의 내용으로 업데이트됩니다. 물론 두 번째 필드의 내용을 변경하여 변경 사항을 확인해야합니다. 그렇지 않으면 항상 동일합니다. – sqlab

+0

당신은 f1/text를 버튼 새로 고침에 넣습니다. 레이아웃은 이미 f1 : 필드 데이터 테스트/: i/1이므로 반드시 필요하지 않습니다. 그래서 v가 다시로드되어야합니다. 처음로드되었습니다. – user310291

0

는 "새로 고침"무슨 뜻인지 모르겠지만, 레드의 GUI는 반응하지, 당신은 명시 적으로 업데이트하도록 지시 할 필요가 없습니다. 그냥 (그 값을 증가) 텍스트 데이터를 업데이트하려면

는 - 여기에 짧은 작업 예제 :입니다

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

, f는 단지 field 생성에 할당됩니다. 버튼을 누를 때마다 data 멤버를 통해 새 값을받습니다.