2011-01-05 1 views
2

사용자가 열의 가시성을 전환 할 수있는 메커니즘을 사용하여 Flex (Advanced) DataGrid 구성 요소를 만들려고합니다. 오른쪽 클릭 메뉴에서 열을 읽음으로써 이것을 진지하게 구현했으며 여기에서 열 이름을 선택하면 가시성이 전환됩니다. 작동하지만 가장 세련된 솔루션은 아닙니다.어도비 플렉스 DataGrid 선택 가능한 열

특히, 저는 모질라 썬더 버드가 이메일을 표시하기 위해 사용하는 "DataGrid"를 에뮬레이션하려고합니다. 다음은 이미지입니다

오른쪽 상단에서

thunderbird_datagrid.png

는, 스크롤 막대를 통해 아이콘이 있습니다. 스크롤 바가없는 경우 아이콘은 같은 위치에 유지됩니다. 아이콘을 클릭하면, 다음과 같이 그 옆에 체크 표시를 갖는 보이는 사람과, 가능한 모든 열을 표시하는 메뉴가 열립니다

thunderbird_select_columns.png 또한

는, 스크롤 막대가 항상이 아래에 나타납니다 버튼을 누르지 마십시오. 결코 자신의 컬럼으로 넘어 가지 않습니다.

저는 이것을 Flex에서 다시 만들고 싶습니다. 메뉴 부분과 단추 headerRenderer로 열을 만드는 것이 쉽습니다. 그러나 스크롤바가 항상 "자체 열"인 것처럼 보이기 때문에 스크롤바를 사용하여이 작업을 수행하는 방법을 이해할 수는 없습니다. 어떤 아이디어 나 도움을 주시면 감사하겠습니다. 고맙습니다.

  • 이안
+1

안녕하세요 이안, 저는 ADG와 함께 많은 작업을 해왔으며, 이러한 종류의 컨트롤을 얻으려는 시도로 인해 ADG 확장 프로그램을 만들 필요가 없으며 재정의해야 할 필요가 있다는 것을 알게되었습니다. 방법 중 일부는 예를 들어, AS3 언어 참조 보호 된 메서드를 보면 : drawColumnBackground, drawHeaderBackground 또한 스크롤 막대 앞에 팝업 막대를 사용하여 팝업 메뉴를 넣고 방금 가져온 경우이를 속일 수 있음을 알 수 있습니다 그것의 너비의 밖으로 그려 클리핑을 해제합니다. – shaunhusain

답변

1

한 더러운 솔루션은 마음에 온다. Canvas를 기반으로 구성 요소를 만든 다음 createChildren을 재정 의하여 AdvancedDataGrid를 추가합니다. updateDisplayList를 재정의하고 Thunderbird에있는 것과 같은 버튼을 Canvas의 오른쪽 위에 추가하십시오. 이렇게하면 단추가 DataGrid 위에 표시됩니다. 문제는 해결 되었습니까?

+0

흠, 이것은 흥미로운 해결책처럼 들립니다. 나는 아마도 그것을 시도 할 것이다. 바로 지금, 내 더러운 솔루션은 Button과 List를 VBox에 넣어 스크롤바 열로 사용하는 것으로 구성됩니다. 버튼의 높이는 ADG headerHeight와 같습니다. 목록과 ADG는 동일한 데이터 공급자에 바인딩되지만 목록에는 항목에 대한 레이블이 표시되지 않습니다. 따라서 ADG가 스크롤을 필요로하지 않는다면 ADG는 훌륭하게 작동합니다. 그럴 경우 목록 스크롤에 따라 ADG를 스크롤합니다. – istrasci

+0

실제로 스크롤 바가 없을 때 mouseOver 강조 표시를 제외하고는 꽤 잘 작동합니다. 예를 들어 ADG에서 마우스 오버 한 경우 목록의 해당 항목도 강조 표시되지 않으므로 조금 재미 있습니다. 나는 당신의 솔루션이 그것을 피할 수 있다고 생각합니다. – istrasci

+0

괜찮 으면 스크린 샷과 코드를 게시하십시오. 그리고 이것을 정답으로 선택하십시오 ;-) – VikramAdith