2010-03-31 8 views
8

क्या ग्रिड-आधारित डेटाविंडो में एक पंक्ति के लिए ड्रॉपडाउन के गतिशील परिवर्तन को संभालने का कोई तरीका है?क्या ग्रिड-आधारित डेटाविंडो में एक पंक्ति के लिए ड्रॉपडाउन के गतिशील परिवर्तन को संभालने का कोई तरीका है?

उदाहरण:

NAME LIKABILITY   PURCHASED IN COLOUR 
(Text) (DropDown*)  (Text)  (Text) 
Bananas [Good]    Hands   Yellow 
     [Bad] 
     [Bananas are good] 

Apples [Good]    Bags   Red 
     [Bad] 

ऊपर देखते हुए एक ग्रिड आधारित datawindow, जहां क्षेत्रों NAME, PURCHASED IN और COLOUR पाठ फ़ील्ड, के रूप में LIKABILITY क्षेत्र एक ड्रॉपडाउन है जहां * हो रहा है।

मैं ड्रॉपडाउन * कहता हूं क्योंकि ड्रॉपडाउनलिस्ट (डिज़ाइन समय पर डेटाविंडो तत्व के भीतर हार्डकोडेड) या ड्रॉपडाउन डीडब्लू (या डीडीडीडब्लू, एक चुनिंदा कथन जो कि अन्य तत्वों पर आधारित हो सकता है) का उपयोग करके एक ही दृश्य प्रस्तुतिकरण बनाया जा सकता है। datawindow)।

हालांकि, वहाँ किसी भी तरह से मैं Bananas यह 3 ड्रॉपडाउन है होने मिल सकता है, जबकि सेब केवल 2.

है अगर मैं Bananas की अनेक पंक्तियां दर्ज करें, फिर सभी पंक्तियों 3 ड्रॉपडाउन है, लेकिन जैसे ही मैं जोड़ने के रूप में एक सेब पंक्ति, सभी ड्रॉपडाउन 2 चयनों पर वापस आते हैं।

इस कार्यक्षमता प्राप्त करने का प्रयास करने के लिए, मैं निम्नलिखित विकल्पों की कोशिश की है:

  1. dw_1.Object.likability.values("Good~tG/Bad~tB/Bananas are good~tDRWHO") ue_itemchange पर नाम संपादित करते हुए।

    विफलता: वर्तमान पंक्ति की बजाय LIKABILITY के सभी उदाहरणों को संपादित करता है।

  2. डुप्लिकेट ड्रॉपडाउन, जिसमें एक फ़िल्टर किया गया है, प्रति पंक्ति एक unfiltered चयन सूची, NAME चयन के आधार पर दिखाई दे रही है।

    विफलता: ग्रिड-आधारित डेटाविंडो पर दृश्यता/ओवरलैपिंग कॉलम सेट नहीं कर सकते हैं। (Source)

  3. डाटाबेस मान या वाइस वर्सा के रूप में हार्ड-कोड प्रदर्शन मान। GOOD, BAD, BANANASAREGOOD प्रदर्शन और डेटाबेस मान के रूप में, और इन नए मानों के लिए जी, बी, डीआरडब्ल्यूएचओ से विकल्पों को संभालने में बदलाव करें।

    विफलता: सभी पंक्तियों के लिए तीसरा विकल्प दिखाई देता है, जो अभी भी ऐप्पल पंक्तियों पर चयन योग्य है, जो गलत है।

  4. डीडीडीडब्ल्यू ड्रॉपडाउन के लिए विकल्पों की सूची पुनर्प्राप्त करें। एक डीडीडीडब्ल्यू बनाएं जो यह निर्धारित करने के लिए NAME के ​​मान का उपयोग करता है कि ड्रॉपडाउन के लिए किन चयनों के लिए होना चाहिए।

    विफलता: ड्रॉपडाउन के सभी उदाहरणों को संपादित करता है, न केवल वर्तमान पंक्ति।

  5. डीडीडीडब्ल्यू उपलब्ध विकल्पों का काउंटर पुनर्प्राप्त करें (यदि बी तो 3 अन्य 2), तो डुप्लिकेट ड्रॉपडाउन कॉलम हैं जो डीडीडीडब्ल्यू काउंटर के आधार पर सुरक्षा/असुरक्षित हैं।

    असफलता: किसी भी मामले में अन्य दो स्तंभों, बदसूरत समाधान पर सुरक्षा के कारण कॉलम को पॉप्युलेट करने के लिए dddw मान को स्वतः नहीं बदला जा सकता है।

अब किसी के लिए इस सवाल का जो मुझे एक समाधान है कि मुझे सक्षम हो जाएगा पीबी 10.5 में

उत्तर

3
एक ग्रिड आधारित datawindow पर एक ही पंक्ति के लिए एक लटकती स्तंभ संपादित करने के लिए दे सकते हैं पर एक इनाम है

आप rowfocuschanged ईवेंट पर कोड तालिका की सामग्री को संपादित कर सकते हैं। चूंकि आप केवल एक ड्रॉपडाउन को एक बार में विस्तारित कर सकते हैं, इसलिए आपको आवश्यक उपयोगकर्ता अनुभव प्रदान करना चाहिए।

आप अभिव्यक्ति के आधार पर कोड तालिका को बदल नहीं सकते जैसे आप कर सकते हैं उदा। दुर्भाग्य से फ़ॉन्ट आकार।

यदि आपको ड्रॉपडाउन पर अधिक नियंत्रण की आवश्यकता है, तो आप इसे DropDownDW बना सकते हैं। आप इसे अपने दूसरे कॉलम से मूल्य पास करने, RowFocusChanged पर पुनः पुनर्प्राप्त कर सकते हैं।

+1

यह एक समाधान है जिसका समाधान मैंने किया था। मैं ड्रॉपडाउन ईवेंट को मैनिपुएट करने में सक्षम था ताकि ड्रॉपडाउन को वर्तमान में चुनने वाली किसी भी पंक्ति के लिए विशिष्ट हो। किसी अन्य पंक्ति के ड्रॉपडाउन पर क्लिक करने का प्रयास एक पंक्ति परिवर्तन घटना है, जो ड्रॉपडाउन को किसी दूसरे समाधान में बदल रहा है। मैंने इसे स्थैतिक ड्रॉपडाउन के माध्यम से किया, इसे rowchange.object.column.values ​​वाक्यविन्यास के साथ बदलकर बदल दिया। – glasnt

+0

दिलचस्प। क्या यह एक बड़े डेटाविंडो पर अच्छा प्रदर्शन करता है? –

4

तो, आपके प्रश्न का उत्तर नहीं है, आप पंक्ति-दर-पंक्ति आधार पर DropDownListBoxes (या उस मामले के लिए DropDownDataWindows) में अनन्य सामग्री नहीं रख सकते हैं।

आपकी समस्या का समाधान अधिक जटिल है। आप RowFocusChanged पर ड्रॉप डाउन की सामग्री को बदल सकते हैं, लेकिन पंक्तियों पर प्रस्तुति के साथ क्या होता है जहां कोड मान मूल्यों की सूची में नहीं है? केवल कोड मान प्रदर्शित होता है। लाल रंग की बजाय आर दिखाए जाने पर यह एक महान पंक्ति पर नहीं है जब यह बहुत अच्छा नहीं है। इसलिए, एक सामान्य समाधान है कि दो डेटा होने के लिए, सीधे एक दूसरे के शीर्ष पर, उस डेटा का प्रतिनिधित्व करने के लिए: एक पंक्ति जो ध्यान केंद्रित करती है (ड्रॉप डाउन) और जो कुछ अन्य पंक्ति में दिखाई देता है फोकस है, जो कोड के प्रदर्शन मूल्य दिखाता है। अतीत में मैंने इसे स्थिर पाठ या डमी एडिट-स्टाइल कॉलम के साथ दूसरे नियंत्रण के रूप में किया है, और पहले कॉलम के आइटम चेंज पर मान सेट किया है। हालांकि, आज सुबह मैं अनुमान लगा रहा हूं कि आप स्क्रिप्टिंग के बिना ऐसा कर सकते हैं यदि दूसरा नियंत्रण ड्रॉप-डाउन कॉलम था, जो डेटा सेट में उसी कॉलम पर इंगित करता था, जिसमें हमेशा मानों का पूरा सेट होता था। मैं प्रयोग को छोड़ दूंगा (और इस काम को करने के लिए आवश्यक कुछ अन्य टुकड़े, जैसे कि जब उपयोगकर्ता किसी अन्य पंक्ति से दूसरे नियंत्रण पर क्लिक करता है) तब तक होता है।

शुभकामनाएं,

टेरी।


परिशिष्ट

आप कैसे चीजें पंक्ति दर पंक्ति से किया जाता है के बारे में पूछा। यह आपके लिए क्रिसमस की तरह होगा (या कुछ अन्य सांस्कृतिक रूप से उचित भारी उपहार-प्राप्त छुट्टी)। डेटाविंडो पेंटर में प्रॉपर्टी फलक में उन सभी तत्वों को देखें जिनके पास बराबर चिह्न के साथ दाईं ओर एक बटन है? इससे आपको एक अभिव्यक्ति दर्ज करने की सुविधा मिलती है जो विशेषता के मान को निर्धारित करने के लिए पंक्ति-दर-पंक्ति आधार पर मूल्यांकन करेगी। एक अभिव्यक्ति दर्ज करने के लिए ताकि एक फ़ील्ड केवल तब दिखाई दे जब यह वर्तमान पंक्ति हो?

if (getrow() = currentrow(), 1, 0) 

आप इन अभिव्यक्तियों को रन टाइम पर भी संशोधित कर सकते हैं। मैं आपको इसे खोदने में मदद के लिए छोड़ दूंगा। सहायता आपको प्रत्येक डेटाविंडो नियंत्रण तत्व के लिए विशेषताओं की एक सूची भी देती है, जिसमें तालिका में शामिल है कि प्रत्येक विशेषता अभिव्यक्ति लेती है या नहीं। (दॅ के बराबर होती है बटन कहानी की 100% नहीं हैं, नहीं सभी expressionable विशेषताओं आईडीई के माध्यम से expressioned जा सकता है।)

साइड नोट: यदि आप भाव मिलता है और उन्हें कैसे गुरु जानने के हैं, तो आप बिजली मिल जाएगा डेटाविंडो का।

ग्रिड के लिए, कॉलम पर कॉलम का मेरा दूसरा सुझाव ग्रिड में काम नहीं करेगा, जाहिर है पर्याप्त। उदाहरण के लिए, एक आइटम चेंज स्क्रिप्ट के साथ, कॉलम और स्थिर टेक्स्ट का उपयोग करने के लिए वापस आने का यही समय है।

टी

+0

http://pbbraindump.wordpress.com/category/2-datawindows/drop-down-data-window-dddw/ –

+0

पर वर्णित दूसरी विधि टेरी का एक अच्छा लेखन है मेरे सिर के शीर्ष पर मेरे पास 2 समस्याएं हैं: 1: क्या आप कह रहे हैं कि मैं पंक्ति के आधार पर एक ड्रॉपडाउन की एक पंक्ति पर दृढ़ता से सेट कर सकता हूं, लेकिन मैं कोडेटेबल मानों को उसी आधार पर सेट नहीं कर सकता हूं? 2: यह बहु-पंक्ति डेटाविंडो एक ग्रिड गठन है, जिसका अर्थ है कि मुझे दो स्तंभों को एक-दूसरे के नीचे एक होने के लिए कॉलम स्थानों के कुछ हार्डकोडिंग करना होगा (मैंने गलती से इसे पहले किया है, लेकिन अन्यथा, यह ग्रिड मोड में कॉलम के बीच कुछ ओवरलैपिंग/रिक्त स्थान प्राप्त करने के लिए अंतर्निहित कोड परिवर्तन की आवश्यकता है) – glasnt

+0

मेरा परिशिष्ट देखें। – Terry

0

चयन में एक डमी स्तंभ बनाएं कि इतना बड़ा प्रदर्शन मूल्य धारण करने के लिए है। प्रदर्शन मूल्य और डेटा मान दोनों के लिए प्रदर्शन मान कॉलम का उपयोग करके इस कॉलम पर DropDownDataWindow का उपयोग करें। जब आप DataWindow पुनर्प्राप्त करते हैं, तो सही मानों को देखकर इस कॉलम को पॉप्युलेट करें (संकेत: वास्तविक, छुपे हुए कॉलम पर एक डीडीडीडब्ल्यू का उपयोग करें और LookUpDisplay() पर कॉल करें, सुनिश्चित करें कि जब आप ऐसा करते हैं तो फ़िल्टर साफ़ हो जाता है); फिर ResetUpdate() को कॉल करें। मौजूदा पंक्ति पर मानों के अनुसार वांछित के रूप में ड्रॉप-डाउन में मान फ़िल्टर करें। ItemChanged ईवेंट में, जब डमी कॉलम मान बदलता है, तो डीडीडीडब्ल्यू से कोड प्राप्त करें (कॉलम फोकस होने पर डीडीडीडब्ल्यू सही पंक्ति पर होगा) और छुपा कॉलम में मान बदलें, फिर डमी कॉलम स्थिति को NotModified में बदलें । चूंकि डमी कॉलम में डिस्प्ले वैल्यू होता है, इसलिए डीडीडीडब्लू को फ़िल्टर करने से यह कोड प्रदर्शित नहीं होता है। नई पंक्तियां और अद्यतन स्वयं का ख्याल रखेंगे।

+0

देर से उत्तर के लिए खेद है, मैंने थोड़ा सा लिया है कोशिश करें और काम करें कि इस सलाह को एक व्यावहारिक समाधान में कैसे प्राप्त किया जाए। यह मुझे सही रास्ते पर रखता है, लेकिन मैं वैसे भी पूरा जवाब पोस्ट करूंगा। – glasnt

+0

कभी-कभी एक सेटोर्ट(), सॉर्ट(), groupcalc() कमांड पर चल रहा है डेटाविंडो डेटा समूहों के समूहों और सॉर्टिंग वाले रिकॉर्ड्स को सॉर्ट करने और/या ऑर्डर करने का हल करता है। –