घर
Top.Mail.Ru Yandeks.Metrika
मंच: "शुरुआती";
वर्तमान संग्रह: 2018.03.18;
डाउनलोड करें: [xml.tar.bz2];

नीचे

घटकों के साथ बातचीत इसी तरह की शाखाएँ खोजें


Илья_666   (2016-02-28 19:28) [0]

सभी को शुभ संध्या!

एक घटक है - TCustomControl का उत्तराधिकारी, जो स्वयं (डिजाइन और रन-टाइम दोनों में) कई पैनल बनाता है।
दरअसल, वह इस बात में दिलचस्पी रखती है कि डिजाइन में पैनलों के साथ बातचीत करना कैसे संभव है, टीपीजेनकंट्रोल "ए और उसके टैब्सेट" के समान है।
ठीक है, या जैसे कि फॉर्म पर एक मानक पैनल लगाते हैं, और उस पर एक और 3 पैनल।

TPageControl "एक कोड जिसे मैंने देखा था, लेकिन यह समझ नहीं आया कि यह इसे कैसे बनाता है।
कृपया बताएं कि किस दिशा में खुदाई करनी है।

अग्रिम में धन्यवाद।



Юрий Зотов ©   (2016-02-28 22:22) [1]

AcceptControls देखें



Илья_666   (2016-02-28 23:25) [2]

यूरी ज़ोटोवअगर हम csAcceptsControls के बारे में बात कर रहे हैं, तो यह ध्वज घटक के ControlStyle में सेट है। यदि आपने ध्वज का अर्थ नहीं किया है, तो मुझे AcceptControls पर कोई जानकारी नहीं मिली।
मैं इस तथ्य के बारे में बात कर रहा हूं कि मेरा घटक डिजाइन समय में खुद पर कई मानक टीपीएनएल बनाता है। यह ठीक काम करता है और मेरा घटक पैनलों का मालिक और माता-पिता है। लेकिन तथ्य यह है कि सब कुछ एक ही डिजाइन के समय में है, जब आप किसी भी पैनल पर क्लिक करने का प्रयास करते हैं, तो क्लिक करें मूल घटक से गुजरता है और यह भी बाहर खड़ा है, और निरीक्षक में आप केवल इसके साथ काम कर सकते हैं, लेकिन पैनल के साथ नहीं।

और मैं डिजाइन समय में मूल घटक और पैनल दोनों के साथ क्लिक करने और काम करने की क्षमता का एहसास करना चाहता हूं।
ऐसा लगता है जैसे आप एक फॉर्म पर TPanel डालते हैं और उस पर दो और TPanels डालते हैं। अब आपके पास माता-पिता पैनल दोनों पर क्लिक करने और इंस्पेक्टर ऑब्जेक्ट के माध्यम से इसके साथ काम करने का अवसर है, और किसी भी चाइल्ड पैनल का चयन करें और इंस्पेक्टर के माध्यम से उनके साथ काम करें।

डिज़ाइन समय के लिए यह कैसे करना है?



Юрий Зотов ©   (2016-02-29 13:47) [3]

> जैसे कि आप एक फॉर्म पर और उस पर TPanel डालते हैं
> दो और टीपानेल डालें।

इस मामले में, बड़ा पैनल केवल माता-पिता होगा, और फॉर्म मालिक होगा। और आपके पास एक बड़ा पैनल है - माता-पिता और मालिक दोनों। शायद यही हाल है।

SubComponent भी देखें। मुझे अब विवरण याद नहीं है, लेकिन ऐसा लगता है कि यह वही है जो आपको चाहिए।



Илья_666   (2016-02-29 18:50) [4]

यूरी ज़ोटोवदुर्भाग्य से, SetSubComponent ने मदद नहीं की, साथ ही मालिक के रूप में असाइन किया गया "मेरे पैनल के लिए एक ऐसा रूप जिस पर पूरा घटक निहित है। मैंने सेटडिजाइनिंग (सत्य, सत्य) का उपयोग करने की कोशिश की, लेकिन यह स्पष्ट रूप से एक बुरा विचार है। इसके अलावा, यह विकल्प यह भी सही ढंग से काम नहीं करता है।



Илья_666   (2016-02-29 21:24) [5]

ठीक है, अगर आप दूसरी तरफ से अंदर जाते हैं तो क्या होगा। मानक TPageControl के डिजाइन में एक पॉपअप मीनू है, जिसमें एक "नया पृष्ठ" आइटम है, जिस पर क्लिक करने पर एक पृष्ठ जुड़ जाएगा।
अगर मैं गलत नहीं हूं, तो आप कुछ पैकेजों के माध्यम से इस तरह के मेनू को DesignXXX.pas नाम से लागू कर सकते हैं। लेकिन वह बात नहीं है। लब्बोलुआब यह है कि, शायद, पृष्ठ का चयन सिर्फ जोड़ा (साथ ही पेजकंट्रोल के अन्य पृष्ठ) ए "न्यू पेज" आइटम के हैंडलर में कुछ कोड के माध्यम से होता है।

केवल अब सवाल यह है कि मानक टीपाजैक्टरोल के "न्यू पेज" हैंडलर के स्रोत कोड को कैसे देखें?

क्या किसी को इस बारे में कोई विचार है?



Юрий Зотов ©   (2016-02-29 23:14) [6]

इसे "घटक संपादक" कहा जाता है। इसे आईडीई में लिखा और पंजीकृत होना चाहिए। उदाहरण वीसीएल में हैं



Илья_666   (2016-03-01 18:25) [7]

यूरी ज़ोटोव, मैंने वीसीएल स्रोतों को स्किम किया, लेकिन पेजकंट्रोल से संबंधित कुछ भी नहीं मिला। मैं TComponentEditor के बारे में पढ़ता हूं, लेकिन मुझे समझ नहीं आया कि यह PageControl से कैसे जुड़ा हुआ है, जो घटकों को बनाना संभव बनाता है। यह यहाँ अटक गया है। यह दुखद है।



Юрий Зотов ©   (2016-03-01 21:02) [8]

घटक संपादक एक अलग घटक के लिए बाध्य नहीं है, लेकिन इसके क्लास (यानी, इस वर्ग के सभी घटकों के लिए तुरंत)।

RegisterComponentEditor देखें।

इंटरफ़ेस टाइप TMyComponentEditor = class (TMyComponent) सार्वजनिक प्रक्रिया संपादित करें; ओवरराइड; फ़ंक्शन GetVerb (सूचकांक: पूर्णांक): स्ट्रिंग; ओवरराइड; फ़ंक्शन GetVerbCount: पूर्णांक; ओवरराइड; प्रक्रिया ExecuteVerb (सूचकांक: पूर्णांक); ओवरराइड; अंत; प्रक्रिया रजिस्टर; कार्यान्वयन प्रक्रिया रजिस्टर; शुरू करना RegisterComponentEditor (TMyComponent, TMyComponentEditor) अंत; प्रक्रिया TMyComponentEditor.Edit; // चयनित घटकों के संपादन की प्रक्रिया // उनमें से एक पर या मेनू से डबल-क्लिक करके कॉल किया गया शुरू करना ShowMessage ("संपादित प्रक्रिया कहा जाता है") अंत; प्रक्रिया TMyComponentEditor.ExecuteVerb (सूचकांक: पूर्णांक); // सूचकांक के साथ एक मेनू कमांड निष्पादित करता है शुरू करना का मामला सूचकांक 0: संपादित करें; // साइलेंट कमांड - संपादन 1: ShowMessage ("1 आइटम पूर्ण हुआ") अंत अंत; फ़ंक्शन TMyComponentEditor.GetVerb (सूचकांक: पूर्णांक): स्ट्रिंग; // मेनू आइटम के नाम लौटाता है शुरू करना का मामला सूचकांक 0: परिणाम: = "संपादित करें ..."; 1: परिणाम: = "एक बार और"; अंत अंत; फ़ंक्शन TMyComponentEditor.GetVerbCount: पूर्णांक; // मेनू आइटम की संख्या लौटाता है शुरू करना परिणाम: = एक्सएनयूएमएक्स; अंत;



Илья_666   (2016-03-02 18:50) [9]

यूरी ज़ोटोवउदाहरण के लिए धन्यवाद। उसके अलावा, मुझे अभी एक उदाहरण मिला है
http://docwiki.embarcadero.com/RADStudio/Seattle/en/Changing_the_Double-click_Behavior

प्रक्रिया TMyEditor.Edit; वर FontDlg: TFontDialog; शुरू करना FontDlg: = TFontDialog.Create (एप्लिकेशन); कोशिश अगर FontDlg.Execute तो MyComponent.FFont.Assign (FontDlg.Font); अंत में FontDlg.Free अंत; अंत;

मैंने संदर्भ मेनू का उपयोग करते हुए उसी तरह पैनल को सम्मिलित करने की कोशिश की और यह निकला:
प्रक्रिया TPanelEditor.ExecuteVerb (सूचकांक: पूर्णांक); वर पैनल: टीपेनेल; शुरू करना निहित ExecuteVerb (सूचकांक); का मामला सूचकांक 0: शुरू करना पैनल: = टीपीएनएल.क्रिएट (डिजाइनर.रूट); पैनल.पेंट: = डिज़ाइनर.रूट; पैनल। नाम: = डिज़ाइनर। यूनीकनेम ("पैनल"); डिज़ाइनर.सेलेकटेम्पोनेंट (पैनल); Designer.Modified; अंत; अंत; अंत;

अब सॉकेट को ऑब्जेक्ट इंस्पेक्टर के माध्यम से संसाधित किया जा सकता है और यहां तक ​​कि हटाया भी जा सकता है))
ईमानदारी से, इससे पहले कि यह मुझे लगता था कि समान संपादकों के माध्यम से घटक बनाना असंभव है, आप केवल निर्दिष्ट वर्ग के घटक से कुछ प्रक्रिया कह सकते हैं। लेकिन जाहिर तौर पर मैं गलत था।
धन्यवाद, यूरी ज़ोटोव, शौकिया समय बिताने के लिए))



Юрий Зотов ©   (2016-03-02 21:26) [10]

> यह मुझे ऐसा लगता था कि समान के माध्यम से घटकों का निर्माण
> संपादक असंभव


आप कहीं से भी एक कंपोनेंट बना सकते हैं, जब तक कि उसका कंस्ट्रक्टर उपलब्ध है (और विजुअल कंपोनेंट्स के लिए भी पेरेंट)।

पूरी तरह से सक्षम होने के लिए, यह करें:

1। हम 2 पैकेज बनाते हैं: रिन-टाइम (RT) और डिज़ाइन-टाइम (DT)।

2। आरटी पैकेज में हम घटक के मॉड्यूल और इसके लिए आवश्यक मॉड्यूल को रन-टाइम में काम करने के लिए रखते हैं। हम आरटी पैकेज में कुछ और नहीं डालते हैं।

3। डीटी पैकेज में हम मॉड्यूल को संपादक और रजिस्टर प्रक्रिया के साथ रखते हैं (जिसमें एक्सएनयूएमएक्स लाइनें घटक के पंजीकरण और उसके संपादक हैं)। यदि घटक का अपना आइकन है, तो अपने संसाधन को DT पैकेज में भी रखें।

4। डीटी पैकेज के आवश्यक अनुभाग में, आरटी पैकेज निर्दिष्ट करें।

5। हम RT पैकेज को IDE सुलभ निर्देशिका में संकलित करते हैं।

5। IDE में DT पैकेज स्थापित करें।

6। हम अपनी असाधारण स्थिरता के बारे में जानते हैं !!!



Германн ©   (2016-03-03 01:03) [11]


> हम अपनी असाधारण स्थिरता के बारे में जानते हैं!

जिसे शायद ही कोई और सराहेगा। डेल्फी को छोड़कर लगभग कोई भी आरटी पैकेट का उपयोग नहीं करता है। :)



Игорь Шевченко ©   (2016-03-03 12:35) [12]


> जिसे शायद ही कोई और सराहेगा। लगभग किसी भी आरटी पैकेट के लिए नहीं
> डेल्फी को छोड़कर, उपयोग नहीं करता है। :)


क्या आप अपनी कल्पनाओं को अपने तक रख सकते हैं, और उन्हें मंच के साथ साझा नहीं कर सकते? एक आराम और एक फव्वारा दें।



Илья_666   (2016-03-03 17:05) [13]

यूरी ज़ोटोव[10] पोस्ट में वर्णन के लिए धन्यवाद। मेरे पास खुद के लिए लिखे गए कई घटक हैं। मैं केवल पैनल के साथ नियंत्रण समाप्त करूँगा और पैकेज की व्यवस्था करूँगा, जैसा कि अपेक्षित है))

हरमन, और इस पंक्ति का क्या अर्थ है:

> डेल्फी को छोड़कर लगभग कोई भी आरटी पैकेट का इस्तेमाल नहीं करता है

? तो, क्या ऐसे पैकेज डेल्फी के बाहर इस्तेमाल किए जा सकते हैं?

इगोर शेवचेंकोअच्छा, आप कार्यशाला में अपने भाई के साथ इतने असभ्य क्यों हैं? आय-य-याय, यह हमारी विधि नहीं है)



Юрий Зотов ©   (2016-03-03 17:45) [14]

> यह पता चला कि ऐसे पैकेज डेल्फी के बाहर इस्तेमाल किए जा सकते हैं?

आप RT पैकेज के साथ एक कार्यक्रम संकलित कर सकते हैं। फिर आकार बहुत कम हो जाता है, लेकिन इसके लिए आवश्यक पैकेजों को इसके साथ खींचा जाना होगा।



Игорь Шевченко ©   (2016-03-03 18:13) [15]

Ilya_666 (03.03.16 17: 05) [13]

क्या मुझे आपके द्वारा बताए गए विवरणों का पता चल सकता है, उदाहरण के लिए, चैट में? साइट पर एक चैट है, इसे मंच के साथ भ्रमित न करें।



Илья_666   (2016-03-04 17:42) [16]

यूरी ज़ोटोवमदद के लिए फिर से धन्यवाद)



Макс Черных ©   (2016-03-18 02:04) [17]


> लेकिन तथ्य यह है कि सब कुछ एक ही डिजाइन समय में है, जब कोशिश कर रहा है
> किसी भी पैनल पर क्लिक करें, मूल घटक के माध्यम से पास पर क्लिक करें
> और यह बाहर खड़ा है, और आप निरीक्षक में काम कर सकते हैं
> केवल उसके साथ, लेकिन पैनल के साथ नहीं। और मैं अवसर का एहसास करना चाहूंगा
> मूल घटक और पैनल दोनों पर क्लिक करें और काम करें
> डिजाइन समय में।


यदि ऐसा है, तो आपको यह पता लगाने की आवश्यकता है कि CM_DESIGNHITTEST संदेश किस लिए है और यदि आप MessageResult में इसे वापस करते हैं तो क्या होगा।



Илья_666   (2016-03-21 17:43) [18]


> मैक्स चेर्निख © (18.03.16 02: 04) [17]

कृपया इसे सब कुछ पढ़ने के लिए एक नियम बनाएं जो आपके सामने लिखा गया है।
यह आपको जीवन और इंटरनेट दोनों पर कई समस्याओं से बचाएगा।


> Ilya_666 (02.03.16 18: 50) [9]

आत्मज्ञान से पहले पढ़ें।

ZY
cmDesignHittest मेरे मामले में मदद नहीं करेगा।



पन्ने: 1 पूरी शाखा

मंच: "शुरुआती";
वर्तमान संग्रह: 2018.03.18;
डाउनलोड करें: [xml.tar.bz2];

ऊपर





मेमोरी: 0.63 एमबी
समय: 0.02 c
2-1459026105
lewka
2016-03-27 00:01
2018.03.18
बफर प्रोटोकॉल


2-1456676881
Ilya_666
2016-02-28 19:28
2018.03.18
घटकों के साथ बातचीत


15-1471037402
यूरी
2016-08-13 00:30
2018.03.18
आपको जन्मदिन की शुभकामनाएं! 13 अगस्त 2016 शनिवार


2-1459159042
थीड
2016-03-28 12:57
2018.03.18
केवल बटन के साथ DBGridEh सेल का संपादन


8-1243716518
v1ctar
2009-05-31 00:48
2018.03.18
छवि प्रसंस्करण। विभाजन।





अफ्रीकी अल्बानियन अरबी भाषा अर्मेनियाई आज़रबाइजानी बस्क बेलारूसी बल्गेरियाई कैटलन सरलीकृत चीनी) चीनी पारंपरिक) क्रोएशियाई चेक डेनिश डच अंग्रेज़ी एस्तोनियावासी फिलिपिनो फिनिश फ्रेंच
गैलिशियन् जॉर्जियाई जर्मन यूनानी हाईटियन यहूदी हिंदी हंगरी आइसलैंड का इन्डोनेशियाई आयरिश इतालवी जापानी कोरियाई लात्वीयावासी लिथुआनियाई मेसीडोनियन मलायी मोलतिज़ नार्वेजियन
फ़ारसी पोलिश पुर्तगाली रोमानियाई रूसी सर्बियाई स्लोवाक स्लोवेनियाई स्पेनिश स्वाहिली स्वीडिश थाई तुर्की यूक्रेनी उर्दू वियतनामी वेल्श यहूदी बंगाली बोस्नियाई
सिबुआनो एस्पेरांतो गुजराती हौसा हमोंग ईग्बो जावानीस कन्नड़ खमेर लाओ लैटिन माओरी मराठी मंगोलियन नेपाली पंजाबी सोमाली तामिल तेलुगु योरूबा
ज़ुलु
Английский Французский Немецкий Итальянский Португальский Русский Испанский