flex - Add Context menu in Datagrid -
हम डेटाग्रिड कॉलम हेडर में संदर्भ मेनू कैसे जोड़ते हैं धन्यवाद
संदर्भ मेनू राइट क्लिक की आवश्यकता होती है, और वे कब्जा MouseEvent.CLICK
घटना से पहले आप कर सकते हैं (घटना के साथ यह परीक्षण नहीं किया प्राथमिकता
हालांकि, इसलिए कोशिश है कि)।
तो क्या आप डेटा ग्रिड (या का एक हिस्सा करने के लिए एक हैंडलर जोड़ने की जरूरत हैडर की तरह datagrid) या आप एक वैश्विक एक जोड़ सकते हैं (यह मैं करता हूं)।
फिर जांचें कि वर्तमान लक्ष्य माउस के नीचे क्या है। आप शायद अभ्यस्त ठीक वही आइटम (DisplayObject / UIComponent, आदि) तुम सिर्फ event.relatedObject संपत्ति की जाँच के लिए देख रहे हैं हो जाते हैं और इस तरह है, तो आपका सर्वश्रेष्ठ दांव stage.getObjectsUnderPoint (नई प्वाइंट (stage.mouseX उपयोग करने के लिए है, stage.mouseY)
।
तो फिर एक बार आप वस्तु मिल (या आप पाते हैं, तो आप गतिशील संदर्भ मेनू सेट कर सकते हैं) "इस वस्तु एक मैं चाहता हूँ कि"।
< p> इस तरह: संरक्षित समारोह updateTarget (घटना: ContextMenuEvent): शून्य {var लक्ष्य: सरणी = stage.getObjectsUnderPoint (नई प्वाइंट (stage.mouseX, stage.mouseY)) // कम या ज्यादा सही रूप में, event.mouseTarget; वर लक्ष्य: DisplayObject = लक्ष्य [targets.length - 1]; अगर (लक्ष्य) {// ContextMenuItem वस्तुओं लक्ष्य वर contextMenuItems के आधार पर की सरणी: सरणी = getMyContextMenuItems (लक्ष्य) है, अगर (contextMenuItems ) {Var मेन्यू: फ्लैश.यूआई। कॉन्टेक्समेन्यू = स्टेज। कन्टेक्स्ट मेन्नू; // या किसी अन्य टारगेट वर् मेनूआइटम: अर्रे = []; Var i: int = 0, n: int = contextMenuItems.length; के लिए (i; i & lt; n; i ++) {menuItems.push (संदर्भ मेन्यू आइटम्स [i] .getItem ()); } Menu.customItems = menuItems; अगर (छिपानेवाला इनइटम) मेनू। एचडीबीआईएलटीआईआईटीम्स (); Target.contextMenu = मेनू;
Comments
Post a Comment