2017-09-08 11 views
1

많은 컨트롤이있는 카드 (33 개의 버튼, 33 개의 메뉴 및 33 개의 라디오 버튼 쌍)가 있습니다. 컨트롤이 사용될 때마다 컨트롤의 속성이 변경됩니다 - 각 쌍의 라디오 버튼 중 하나의 하이라이트가 활성화되고 원래 레이블 (0) 이외의 메뉴 항목이 나타나고 버튼의 색상이 변경됩니다 태만. 모든 컨트롤을 기본 상태로 재설정하는 루프를 작성하려고합니다. 버튼에는 RB01 ~ RB33, 메뉴 항목에는 RM01 ~ RM33, 라디오 버튼 쌍에는 RR01 ~ RR33이 표시됩니다. 또한 컨트롤의 ID 번호가 연속되지 않습니다. 여기에 지금까지이 작업은 다음과 같습니다Livecode : 루프를 사용하여 컨트롤 속성 변경

on mouseUp 
     repeat with x = 1 to 33 
      set the backgroundColor of button "RB[x]" to default 
      set the Label of button "RM[x]" to 0 
      set the highlite of of group "RR[x]" to FALSE 
     end repeat 
    end mouseUp 

"RB [X]"의 사용은 여기에 문제를 내가 검색에도 불구하고 아무것도에게 좋은 해결책을 찾을 수 없어. Livecode에서이 작업을 수행 할 수있는 방법이 있습니까? 아니면 루프에서이 작업을 수행 할 수 있도록 컨트롤에 더 좋은 명명 규칙이 있습니까?

답변

0

귀하의 솔루션은 매우 근접해 있습니다. 배열에 예약 된 [] 표기법을 사용하면 문제가 발생합니다. 연결 연산자 &을 대신 사용하십시오. 필요하다면 앞에 0을 채우는 것에 주목하자.()는 연결 문자열이 객체 이름보다 먼저 평가되도록합니다.

on mouseUp 
    repeat with x = 1 to 33 
     if length(x) < 2 then put "0" before x 
     set the backgroundColor of button ("RB" & x) to default 
     set the Label of button ("RB" & x) to 0 
     set the highlite of of group ("RB" & x) to FALSE 
    end repeat 
end mouseUp 
+0

나는 내 자신의 질문에 답을하고 아래에 추가했습니다. 그러나 나는 네 답을 더 좋아한다. 내가 생각한 것보다 훨씬 더 작아서 받아 들였다. 당신의 도움을 주셔서 감사합니다. – credenzamatic

0

나는 컨트롤의 ID 번호를 연구했다. 버튼이 연속적이지는 않지만 5 단계 (예 : 버튼 ID 1350, 버튼 ID 1355 등)로 나타납니다. 그럼 내가 훨씬 이런 루프의 각 대조군의 변화 주소 : 하나의 색상을 변경하려면 :

repeat x = 1350 to 1515 step 5 
     set backgroundColor of button id x to default 
    end repeat 

각 루프 다른 값에 그리는 것 때문에을 (ID 번호 기준), 네 개의 루프가 필요했다 버튼, 메뉴 버튼의 레이블을 변경하는 버튼, 그룹화 되었음에도 불구하고 각 라디오 버튼에 대한 버튼 등이 있습니다. 이 방법이 효과적이지만 Devin의 대답만큼 효율적이지는 않습니다.