2014-12-08 3 views
0

내가콤보 항목을 선택하는 방법은 무엇입니까?

combo(["A","B","C","D"]) 

어떻게 selectIndex (2) 또는 selectItem ("B")과 같은 속성이 있는가 항목 B를 선택할 수 있다고 가정?

해당 속성을 찾을 수 없습니다.

data C = combo(list[str] items); 

이 같은 값 (질문과 정렬하기) :

+0

나는 주어진대로 콤보가 선언되었다고 가정하고 대답했지만, 뭔가 다른 것을 찾고 있다면 질문에서 명확하지 않다. –

+0

답변 주셔서 감사하지만 이것은 질문이 아니 었습니다. 콤보에 A, B, C를로드하면 기본적으로 A가 선택되어 표시됩니다 (화살표 옆에 표시). A..C 주문을 유지하면서 B가 선택되면 B가 선택되기를 바란다. – robert

답변

1

내가 당신이 이런 식으로 선언 된 데이터 유형이 있다고 가정합니다

rascal>c = combo(["A","B","C","D"]); 
C: combo(["A","B","C","D"]) 

점을 감안를 여러 가지 방법이 있습니다 목록의 두 번째 항목으로 이동할 수 있습니다. 당신이 combo (위,이 items이다)에있는 데이터에 필드 이름을 제공 한 경우, 당신은 단지 (인덱스 0 불량배의 목록이라는 것을 기억)이 말을 할 수

rascal>c.items[1]; 
str: "B" 

당신이하지 않은 경우 이 이름을 부여하고, 일치를 사용하여, 당신은이 작업을 수행 할 수 있습니다 싶지 않아 :

rascal>if (combo(l) := c) println(l[1]); 
B 

변수 lcombo 내에서 개최 된 목록에 바인딩됩니다; 이 새로운 변수는 if 안에 있습니다. 물론이 두 경우 모두 목록의 길이가 충분한 지 확인하여 두 번째 요소를 읽는 동안 오류가 발생하지 않도록해야합니다. 당신은 중첩 된 목록 일치 사용하는 다음, 할도 수 :이 경우

rascal>if (combo([s1,s2,s*]) := c) println(s2); 
B 

s1 목록, 두 번째로 s2의 첫 번째 요소를 발견하고, 무엇이든 (0 이상으로 s됩니다 , 이는 다음에 나오는 * 의미입니다). combo에 보관 된 목록의 길이가 2 이상인 경우에만 일치하므로이 항목을 별도로 확인하지 않아도됩니다. https://github.com/cwi-swat/rascal/blob/master/src/org/rascalmpl/library/vis/figure/interaction/swtwidgets/Combo.java#L40

그래서 당신이 원하는 항목을 선택 할 수있는 유일한 방법은 당신이 선택하고자하는 하나의 첫 번째 항목으로 콤보를 만드는 것입니다 : 첫 번째 항목은 하드 와이어가 기본적으로 선택하는 것입니다 같은