2012-09-13 4 views
0

PopUpMenuButton 컨트롤에 관한 질문이 있습니다.PopUpMenuButton 사용자 정의 컨트롤 (flex)

이 컨트롤의 기존 동작은 다음과 같습니다

"(V"아래 arraow 기호) PopUpMenuButton의 제어는 두 개의 버튼, 메인 버튼과 보조 버튼 (모양)이있다. " 사용자가 주 단추를 클릭하면 컨트롤은 선택한 메뉴 항목에 대한 정보가 들어있는 itemClick (MenuEvent.ITEM_CLICK) 이벤트를 전달합니다. 따라서 사용자가 기본 버튼을 클릭하거나 팝업 메뉴에서 현재 항목을 선택할 때 동일한 itemClick 이벤트가 전달됩니다. 동일한 이벤트가 두 경우 모두 전달되기 때문에 주 단추를 클릭하면 마지막으로 선택한 menuItem을 클릭하는 것과 동일한 동작이 발생하므로 주 단추가 자주 사용하는 메뉴 항목의 역할을합니다. "

내 응용 프로그램에서 기본 버튼의 기존 기능을 변경해야한다는 요구 사항이 있습니다. 자주 사용하는 메뉴 항목 화면으로 이동하면 안되며 팝업이 열리고 보조 버튼 (v)과 똑같이 작동해야합니다.

나는 PopUpMenuButton 컨트롤의 openAlways = true 속성을 사용해 보았습니다. 그러나 그것은 문제를 완전히 해결하지 못했습니다. 어떤 도움이라도 대단히 감사합니다.

EDIT -

이미 TRISH에서 언급 한 옵션을 시도해 보았습니다. 그러나 그것은 내 문제를 해결하지 못합니다.

PopUpMenuButton 컨트롤의 주 버튼을 클릭 할 때마다 두 개의 이벤트가 전달됩니다. 첫 번째 클릭 이벤트가 전달되고 itemClick 이벤트가 전달됩니다. Click 이벤트 핸들러에서는 팝업을 열어 팝업을 열어서 코드를 작성하여 itemclick 이벤트 핸들러에서 각각의 페이지 탐색 코드가 있으므로 특정 페이지로 이동합니다. (이 두 가지가 하나씩 차례로 진행되므로 첫 번째 팝업이 열리 며 초 이내에 itemclick 핸들러 코드로 인해 최근에 열었던 페이지로 이동합니다. 따라서 메인 버튼을 클릭 할 때마다이 두 가지 작업이 병렬로 진행되므로 팝업이 표시됩니다 깜박이지만 안정적인 팝업이 아닙니다. 항목 클릭 핸들러에서 아무 것도 수정하면 버튼 클릭에 대해 동일한 핸들러가 적용되므로 팝업 버튼의 기능을 수행합니다. 주 버튼이나 팝업 버튼과 상관없이 itemclick 이벤트의 경우에도 이벤트 타겟도 동일합니다.)

답변

1

편집 : PopUpButton의 동작이 PopUpMenuButton보다 잘 작동하는 것처럼 보입니다. 나는 당신이 좋아하는 것 이해 해요 동작을 보여줍니다 응용 프로그램을 작성 :

메인 버튼을
  • 클릭하면 바로 메인 버튼을
  • 클릭이 실행되지 않습니다 화살표 버튼처럼 팝업 메뉴를 엽니 다 답 트리쉬의 마지막 선택 메뉴 항목의 항목을 클릭이

    <?xml version="1.0" encoding="utf-8"?> 
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx"> 
    
        <fx:Script> 
         <![CDATA[ 
          import mx.controls.Alert; 
          import mx.controls.Menu; 
          import mx.events.MenuEvent; 
    
          [Bindable] 
          private var menu:Menu; 
    
          private function initMenu():void { 
           menu = new Menu(); 
           var dp:Object = [ 
             {label: "New Folder"}, 
             {label: "Sent Items"}, 
             {label: "Inbox"} 
            ];   
           menu.dataProvider = dp; 
           menu.addEventListener("itemClick", changeHandler); 
          } 
    
          private function changeHandler(event:MenuEvent):void { 
           var label:String = event.label;   
           Alert.show(label); 
           // popUpButton.label = event.label; 
           popUpButton.close(); 
          }   
         ]]> 
        </fx:Script> 
    
        <s:VGroup> 
         <mx:PopUpButton id="popUpButton" openAlways="true" 
                 label="Select a control..." 
                 popUp="{menu}" 
                 preinitialize="initMenu()" /> 
        </s:VGroup> 
    </s:Application> 
    
+0

감사합니다 ... 나는 이전에 같은 접근 방식을 시도했지만 힘은 행운을 찾을 ... 다시 내 업데이트 된 질문을 참조하고 나에게 알려 주시기 바랍니다 수 너의 생각을 알아라. .. –

+0

설명해 주셔서 고맙습니다. 제 편집 된 응답을 참조하십시오. –

+0

Trish 정말 고마워요, 당신의 대답에 +1 해준 답도 받아 들였습니다 :-) –