ग्रुपबॉक्स के अंदर एक बटन पर प्रतीक्षा कर्सर रखें


वीबी 2008 एक्सप्रेस का उपयोग करना।
मेरे पास एक मुख्य प्रपत्र है जिसमें कई समूह बॉक्स हैं।

जैसा कि वांछित है, मैं निम्नलिखित कोड लाइनों का उपयोग करके मुख्य फॉर्म पर नियंत्रण पर एक प्रतीक्षा कर्सर को सफलतापूर्वक रख सकता हूं जो समूह बॉक्स के भीतर नहीं है: (मान लें कि बटन 1 समूह बॉक्स के भीतर नहीं है)

कर्सर.स्थिति = पॉइंटटूस्क्रीन(बटन1.स्थान)
कर्सर = कर्सर.प्रतीक्षा कर्सर
अनुप्रयोग.DoEvents()

लेकिन, यदि बटन1 किसी ग्रुप बॉक्स (उदाहरण के लिए ग्रुपबॉक्स1) के भीतर स्थित है, तो मुझे यह पता नहीं चला है कि उस बटन पर कर्सर कैसे लाया जाए। इसके बजाय इसे मुख्य फॉर्म पर किसी अन्य स्थान पर रखा जाता है जो GroupBox1 के भीतर नहीं है।

मैंने सफलता के बिना निम्नलिखित में से विविधताएँ आज़माई हैं:

कर्सर.स्थिति = पॉइंटटूस्क्रीन(बटन1.स्थान), और
कर्सर.स्थिति = पॉइंटटूस्क्रीन(ग्रुपबॉक्स1.बटन1.स्थान)

कोई त्रुटि उत्पन्न नहीं होती लेकिन वांछित परिणाम प्राप्त नहीं होता।
मेरा मानना ​​है कि इसका संबंध इस तथ्य से है कि समूह बॉक्स के भीतर बटन की स्थान संपत्ति समूह बॉक्स के ऊपरी बाएं कोने से संबंधित है। लेकिन वीबी कर्सर को ऐसे रखता है मानो बटन की स्थान संपत्ति मुख्य फॉर्म के ऊपरी बाएँ कोने से संबंधित हो।
मार्गदर्शन की सराहना करेंगे – धन्यवाद, माइक

मैंने क्या प्रयास किया है:

Cursor.Position = PointToScreen(Button1.Location), and
Cursor.Position = PointToScreen(GroupBox1.Button1.Location)

समाधान 1

नियंत्रण का स्थान हमेशा उसके कंटेनर से संबंधित होता है: यदि आपके पास किसी फॉर्म पर ग्रुपबॉक्स है, और ग्रुपबॉक्स में एक बटन है, तो myGroupBox.Location myForm.ClientRectangle के ऊपरी बाएं कोने से संबंधित है, और myButton.Location सापेक्ष है myGroupBox.ClientRectangel के ऊपरी बाएँ कोने पर।

इसलिए myForm के सापेक्ष myButton के स्थान की पहचान करने के लिए, आपको myButton.Location को myGroupBox.Location में जोड़ना होगा – परिणाम फॉर्म.ClientArea के ऊपरी बाएं कोने से संबंधित है। फिर आप यह पहचानने के लिए पॉइंटटूस्क्रीन का उपयोग कर सकते हैं कि यह वास्तविक मॉनिटर के ऊपरी बाएँ कोने के सापेक्ष कहाँ है।

सही बात?

コメント

タイトルとURLをコピーしました