awk वापरणे. BASH: awk इंटरप्रिटर वापरा. फिल्टर आणि प्रिंट कमांड्स एकत्र करणे

Symbian साठी 30.03.2019
Symbian साठी

डेल्फी मधील इव्हेंट काय आहे आणि डेल्फीमध्ये इव्हेंट प्रोसेसिंग प्रक्रिया काय आहेत.

डेल्फीमधील घटनेचे वर्णन करण्याचे उदाहरण म्हणून, मागील लेखांमध्ये वर्णन केलेले उदाहरण घेऊ. तयार केलेल्या फॉर्मचे स्वरूप आपल्याला सांगते की अनुप्रयोग कसे कार्य करते. अर्थात, वापरकर्त्याने संपादन फील्डमध्ये प्रारंभिक डेटा प्रविष्ट करणे आणि बटणावर क्लिक करणे आवश्यक आहे गणना करा. कमांड बटण प्रतिमेवर क्लिक करणे हे विंडोजमधील इव्हेंटचे उदाहरण आहे.

कार्यक्रम ( कार्यक्रम) डेल्फी मध्ये कार्यक्रम चालू असताना काय होते. डेल्फीमध्ये, प्रत्येक कार्यक्रमाला एक नाव दिले जाते. उदाहरणार्थ, माऊस क्लिक ही घटना आहे OnClick, डबल क्लिक - कार्यक्रम onDblClick.

तक्ता 9 काही विंडोज इव्हेंट्सची सूची देते.

तक्ता 9. काही विंडोज इव्हेंट्स.

कार्यक्रम होत
क्लिक करा माऊस क्लिकवर
OnDblClick माऊस बटणावर डबल क्लिक केल्यावर
OnMouseDown जेव्हा माउस बटण दाबले जाते
OnMouseUp जेव्हा तुम्ही माउस बटण सोडता
OnMouseMove माउस हलवताना
OnKeyPress जेव्हा तुम्ही कीबोर्ड की दाबता
OnKeyDown जेव्हा तुम्ही कीबोर्ड की दाबता. कार्यक्रम OnKeyDownआणि OnKeyPress- हे पर्यायी, पुनरावृत्ती होणाऱ्या घटना आहेत जे होल्ड की रिलीझ होईपर्यंत घडतात (ज्या ठिकाणी OnKeyUp घटना घडते)
OnKeyUp जेव्हा तुम्ही दाबलेली कीबोर्ड की सोडता
OnCreate ऑब्जेक्ट तयार करताना (फॉर्म, नियंत्रण). ही घटना हाताळण्याची प्रक्रिया सहसा व्हेरिएबल्स सुरू करण्यासाठी, पूर्वतयारी क्रिया करण्यासाठी वापरली जाते
ऑनपेंट प्रोग्रामच्या सुरुवातीला स्क्रीनवर विंडो दिसते तेव्हा, विंडोचा एक भाग दिसल्यानंतर, उदाहरणार्थ, दुसर्या विंडोने झाकलेला होता, आणि इतर प्रकरणांमध्ये
OnEnter जेव्हा नियंत्रण फोकस प्राप्त करते
OnExit जेव्हा एखादे नियंत्रण फोकस गमावते

डेल्फीमधील एखाद्या घटनेची प्रतिक्रिया ही काही प्रकारची क्रिया असावी. डेल्फीमध्ये, इव्हेंटचा प्रतिसाद म्हणून लागू केला जातो भाषेत इव्हेंट हाताळण्याची प्रक्रिया डेल्फी प्रोग्रामिंग . अशा प्रकारे, वापरकर्त्याच्या क्रियांच्या प्रतिसादात प्रोग्रामला काही कार्य करण्यासाठी, प्रोग्रामरने संबंधित कार्यक्रम हाताळण्यासाठी एक प्रक्रिया लिहिली पाहिजे. हे नोंद घ्यावे की डेल्फीमधील इव्हेंट प्रक्रियेचा एक महत्त्वपूर्ण भाग घटकाने घेतला आहे. म्हणून, प्रोग्रामरने डेल्फीमध्ये इव्हेंट हाताळण्याची प्रक्रिया विकसित केली पाहिजे जर इव्हेंटचा प्रतिसाद मानकांपेक्षा वेगळा असेल किंवा परिभाषित नसेल. उदाहरणार्थ, जर, कार्याच्या अटींनुसार, संपादन फील्डमध्ये प्रविष्ट केलेल्या वर्णांवर कोणतेही निर्बंध नाहीत, तर इव्हेंट प्रक्रिया प्रक्रिया onKeyPressलिहिण्याची गरज नाही, कारण प्रोग्राम ऑपरेशन दरम्यान या इव्हेंटच्या प्रक्रियेसाठी मानक (प्रोग्रामरपासून लपलेली) प्रक्रिया वापरली जाईल.

डेल्फीमध्ये इव्हेंट प्रोसेसिंग प्रक्रिया तयार करण्याची पद्धतइव्हेंट प्रोसेसिंग प्रक्रियेचे उदाहरण पाहू onclickकमांड बटणासाठी गणना करा.

इव्हेंट प्रक्रिया प्रक्रिया तयार करण्यास प्रारंभ करण्यासाठी, आपण प्रथम विंडोमध्ये असणे आवश्यक आहे ऑब्जेक्ट इन्स्पेक्टरज्या घटकासाठी इव्हेंट हाताळणी प्रक्रिया तयार केली आहे तो घटक निवडा. त्यानंतर, त्याच विंडोमध्ये तुम्हाला इव्हेंट टॅब निवडण्याची आवश्यकता आहे.

आकृती 21. इव्हेंट (डेल्फी) टॅब डेल्फी घटकाला जाणवू शकणाऱ्या घटनांची यादी करतो

इव्हेंट्स टॅबचा डावा स्तंभ (आकृती 21) डेल्फी प्रोग्रामिंग भाषेतील इव्हेंट्सची नावे सूचीबद्ध करतो जे निवडलेल्या घटकाला (ऑब्जेक्ट) समजू शकतात. जर एखाद्या इव्हेंटसाठी इव्हेंट प्रोसेसिंग प्रक्रिया परिभाषित (लिखित) असेल तर उजवा स्तंभ, कार्यक्रमाच्या नावापुढे, या प्रक्रियेचे नाव प्रदर्शित केले जाते.

डेल्फी प्रोग्रामिंग भाषेत इव्हेंट प्रोसेसिंग फंक्शन तयार करण्यासाठी, तुम्हाला संबंधित इव्हेंटवर प्रक्रिया करण्यासाठी प्रक्रियेच्या नाव फील्डवर डबल-क्लिक करणे आवश्यक आहे. परिणामी, एक विंडो उघडेल कोड संपादक, ज्यामध्ये इव्हेंट प्रोसेसिंग फंक्शन टेम्पलेट जोडले जाईल आणि विंडोमध्ये ऑब्जेक्ट इन्स्पेक्टर, इव्हेंटच्या नावाच्या पुढे, त्यावर प्रक्रिया करण्यासाठी फंक्शनचे नाव दिसेल (आकृती 22).

डेल्फी इव्हेंट हँडलरला दोन भाग असलेले नाव देते. नावाचा पहिला भाग ऑब्जेक्ट (घटक) असलेला फॉर्म ओळखतो ज्यासाठी इव्हेंट हाताळणी प्रक्रिया तयार केली गेली आहे. नावाचा दुसरा भाग ऑब्जेक्ट आणि घटना स्वतः ओळखतो. आमच्या उदाहरणात, फॉर्मचे नाव आहे फॉर्म १, कमांड बटणाचे नाव - बटण1, आणि कार्यक्रमाचे नाव आहे क्लिक करा.

आकृती 22. डेल्फीने व्युत्पन्न केलेल्या इव्हेंट हाताळणी प्रक्रियेची उदाहरणे

शब्दांमधील कोड एडिटर विंडोमध्ये सुरूआणि शेवटडेल्फी प्रोग्रामिंग भाषेत इव्हेंट हँडलिंग फंक्शन लागू करणाऱ्या सूचना तुम्ही मुद्रित करू शकता.

सूची 1 इव्हेंट हाताळणी कार्याचा मजकूर दर्शवते onclickकमांड बटणासाठी गणना करा. कार्यक्रम कसा सादर केला जातो याकडे लक्ष द्या. तिच्या सामान्य फॉर्मकोड एडिटर विंडोमध्ये ते कसे दिसते याच्याशी संबंधित आहे: कीवर्डठळक अक्षरात हायलाइट केल्या आहेत, टिप्पण्या इटॅलिकमध्ये आहेत (हायलाइटिंग कोड एडिटरद्वारे केले जाते). याव्यतिरिक्त, प्रोग्रामरमध्ये स्वीकारलेल्या चांगल्या शैलीच्या नियमांनुसार, प्रोग्राम सूचना इंडेंट केल्या जातात.

कार्य बटण 1 क्लिक करागती गणना करते आणि गणना परिणाम Label4 फील्डमध्ये प्रदर्शित करते. संपादन फील्डमधून प्रारंभिक डेटा प्रविष्ट केला जातो संपादित करा1आणि संपादित करा2मालमत्तेत प्रवेश करून मजकूर. मालमत्ता मजकूरप्रोग्राम चालू असताना वापरकर्ता प्रविष्ट करेल अशा वर्णांची स्ट्रिंग आहे. च्या साठी योग्य ऑपरेशनप्रोग्राम लाइनमध्ये फक्त संख्या असणे आवश्यक आहे. स्ट्रिंगला संख्यांमध्ये रूपांतरित करण्यासाठी, प्रोग्राम फंक्शन्स वापरतो StrToIntआणि StrToFloat. कार्य StrToIntपॅरामीटर म्हणून स्ट्रिंगचे वर्ण तपासते ( संपादन1.मजकूरफील्डची सामग्री आहे संपादित करा1), वैधतेसाठी, आणि सर्व वर्ण वैध असल्यास, संबंधित संख्या परत करते. ही संख्या व्हेरिएबलमध्ये लिहिली जाते जिल्हा. फंक्शन त्याच प्रकारे कार्य करते StrToFloat, जे परत येते एक अपूर्णांक संख्या, फील्डच्या सामग्रीशी संबंधित संपादित करा2. ही संख्या व्हेरिएबलमध्ये लिहिली जाते .

मूळ डेटा व्हेरिएबल्समध्ये ठेवल्यानंतर जिल्हाआणि , पूर्वतयारी क्रिया आणि गणना केली जाते. सुरुवातीला फंक्शन वापरून ट्रंक, जे "काढून टाकते" अपूर्णांक भागसंख्या, हायलाइट संपूर्ण भागचल मिनिटांची संख्या आहे. अभिव्यक्तीचे मूल्य ट्रंक(t*l00) मोड 100सेकंदांची संख्या आहे. ही अभिव्यक्ती खालीलप्रमाणे मोजली जाते. प्रथम क्रमांक ने गुणाकार केला 100 . परिणामी मूल्य फंक्शनमध्ये पास केले जाते ट्रंक, जे गुणाकार परिणामाचा पूर्णांक भाग मिळवते वर 100 . अशा प्रकारे प्राप्त झालेल्या संख्येला मोड्युलोने विभाजित केले आहे 100 . मोड्युलो डिव्हिजनचा परिणाम हा भागाचा उर्वरित भाग आहे.

सर्व डेटा तयार झाल्यानंतर, गणना केली जाते. वेग किमी/ताशी व्यक्त केला जाणे आवश्यक असल्याने, मीटर आणि मिनिटांमध्ये व्यक्त केलेले अंतर आणि वेळ मूल्ये किलोमीटर आणि तासांमध्ये रूपांतरित केली जातात.

गणना केलेले गती मूल्य फील्डमध्ये प्रदर्शित केले जाते लेबल4मालमत्तेला मूल्य नियुक्त करून मथळा. संख्यांना स्ट्रिंगमध्ये रूपांतरित करण्यासाठी कार्ये वापरली जातात IntToStrआणि FloatToStr.

बटण दाबल्याचा परिणाम म्हणून पूर्णकार्यक्रमातून बाहेर पडावे. हे होण्यासाठी, तुम्हाला मुख्य प्रोग्राम विंडो बंद करणे, स्क्रीनवरून काढून टाकणे आवश्यक आहे. हे पद्धत वापरून केले जाते बंद. इव्हेंट प्रक्रिया प्रक्रिया OnClickबटणासाठी पूर्णसूची 2 मध्ये दर्शविले आहे.

बहुतेक सामान्य व्याख्या घटना— वापरकर्ता हस्तक्षेप, सिस्टम वर्तन किंवा ऍप्लिकेशन कोड लॉजिकमुळे झालेली कोणतीही घटना. प्रोग्राममधील इव्हेंट काही कोडशी संबंधित असू शकतो, ज्याला इव्हेंट हँडलर म्हणतात, जो इव्हेंटला प्रतिसाद देतो. डेव्हलपरच्या दृष्टीकोनातून, इव्हेंट हे नाव आहे ज्याला प्रोग्राममध्ये इव्हेंट हँडलर संलग्न केला जाऊ शकतो.

विकासकाने इव्हेंट हँडलर कोड लागू केला असल्यास, इव्हेंट घडल्यावर तो अंमलात आणला जातो. IN अन्यथासहसा काहीही होत नाही.

इव्हेंटचे दोन प्रकार आहेत: वापरकर्ता परस्परसंवाद आणि स्थिती बदल. वापरकर्ता संवाद इव्हेंट जवळजवळ नेहमी त्यानुसार उडाला आहेत विंडोज संदेश, वापरकर्ता काहीतरी करत असल्याचे दर्शविते जेणेकरून घटक प्रतिसाद देऊ शकेल. राज्य बदल घडामोडी देखील Windows संदेश कमी केले जाऊ शकते.

इव्हेंट हँडलर इव्हेंटबद्दल कोणतीही माहिती परत करू शकत नाहीत, ज्याला नंतर सूचना इव्हेंट म्हटले जाते किंवा अतिरिक्त इव्हेंट-विशिष्ट माहिती परत करू शकतात. या प्रकरणात, त्याला विशिष्ट घटना म्हणतात.

सूचना इव्हेंट्स कुठे किंवा केव्हा याबद्दल माहिती न देता, काही घटना घडल्याचा अहवाल देतात. सूचना सहसा TNotifyEvent प्रकार वापरतात, ज्यामध्ये फक्त एक पॅरामीटर असतो - इव्हेंटचा प्रेषक. विशिष्ट इव्हेंट्स सूचना इव्हेंटपेक्षा भिन्न असतात आणि ज्या प्रकरणांमध्ये एखादी घटना घडली आणि कोणत्या घटकामुळे ती घडली हे केवळ जाणून घेऊ इच्छित नाही तर त्याशी संबंधित अतिरिक्त माहिती देखील मिळवण्यासाठी वापरली जाते. IN समान प्रकरणेहँडलर आवश्यक आहेत ज्यात पॅरामीटर्स समाविष्ट आहेत अतिरिक्त माहिती. अशा प्रकरणांमध्ये, विशिष्ट इव्हेंट हँडलर्सची आवश्यकता असते.

कार्यक्रमांची घोषणा

सिंटॅक्टिकली, इव्हेंट जवळजवळ गुणधर्मांप्रमाणेच घोषित केले जातात:

मालमत्ता :
[निर्देशांकवाचा ]
[लिहा }
[संग्रहित बुलियन अभिव्यक्ती>} [डीफॉल्ट शून्य|डिफॉल्ट नाही];

टिपा:
वाचन आणि लेखन आदेश पद्धती वापरत असल्या तरी, त्यांचा व्यवहारात वापर केला जात नाही. सामान्यतः, फील्डमध्ये थेट प्रवेश वापरला जातो.
संघ निर्देशांकलेखन किंवा वाचण्याच्या पद्धतींच्या संयोगाने वापरले जाते. पद्धती व्यावहारिकरित्या वापरल्या जात नसल्यामुळे, निर्देशांक कमांड देखील नाही.
संघ डीफॉल्टकिंबहुना, ते फक्त एका डीफॉल्ट मूल्यास अनुमती देते - शून्य, जे कंपाइलरने आधीच सेट केले आहे. म्हणून, डीफॉल्ट आणि त्यानुसार, NoDefault कमांड वापरणे अयोग्य आहे.
डेल्फीमधील सर्व कार्यक्रमांना सहसा " चालू": OnCreate, OnClick, इ.
IN या प्रकरणातइव्हेंट आणि संबंधित फील्ड TNotifyEvent प्रकारातील आहेत.

अशा प्रकारे, मध्ये सामान्य केसइव्हेंट घोषित करण्यासाठी तुम्हाला पुढील गोष्टी करण्याची आवश्यकता आहे:
इव्हेंट डेटा प्रकार परिभाषित करा किंवा निवडा (पद्धत पॉइंटर प्रकार)(प्रक्रियात्मक प्रकार);
इव्हेंट मूल्य संचयित करण्यासाठी योग्य प्रकारचे फील्ड घोषित करा;
घोषित करा (इव्हेंट-डिस्पॅचिंग पद्धतीशी संबंधित) एक पद्धत जी घटना घडल्यावर इव्हेंट हँडलरला कॉल करेल. या पद्धतीची अंमलबजावणी सादर करा आणि त्यास कॉल करण्यासाठी यंत्रणा निश्चित करा;
कार्यक्रम स्वतः जाहीर करा.

अ) इव्हेंट प्रकार घोषणा
घटना ही एक यंत्रणा आहे ज्याद्वारे काही घटना काही कोडशी संबंधित असतात. कोड एक पद्धत म्हणून स्वरूपित केला जातो, ज्याचा प्रकार वर्ग घोषणापूर्वी घोषित केला जातो, ज्यामध्ये इव्हेंट घोषणा समाविष्ट असते. ही पद्धत वर्गाशी संबंधित नसावी, परंतु वर्गाच्या उदाहरणाशी संबंधित असावी, कारण समान वर्गाच्या वस्तूंसाठी देखील, एक्झिक्युटेबल कोड सहसा भिन्न असतो. एखाद्या इव्हेंटला प्रतिसाद देणाऱ्या पद्धतीसाठी कोड तयार करणे हा प्रोग्रामरचा विशेषाधिकार आहे, परंतु डेल्फी हे सुनिश्चित करते की ती पद्धत एखाद्या इव्हेंटशी संबंधित आहे.

डेल्फीमध्ये मेथड पॉइंटर वापरून इव्हेंट आणि त्या इव्हेंटला प्रतिसाद देणारी पद्धत यांच्यातील कनेक्शन पूर्ण केले जाते. अधिक तंतोतंत, हे वर्गाच्या उदाहरणातील पद्धतीचे सूचक आहे. मेथड पॉइंटर इतर कोणत्याही प्रक्रियात्मक प्रकाराप्रमाणेच कार्य करतात, परंतु ते लपविलेल्या ऑब्जेक्ट पॉइंटरला देखील समर्थन देतात. कोणत्याही पॉइंटरप्रमाणे, हा प्रत्यक्षात एक पत्ता आहे, या प्रकरणात पद्धतीचा पत्ता, आणि मेमरीमध्ये बसण्यासाठी चार बाइट्स आवश्यक आहेत. कारण या पद्धती इव्हेंट हाताळण्यासाठी डिझाइन केल्या आहेत, त्यांना इव्हेंट हँडलर म्हणतात आणि ऑब्जेक्ट मॅनेजमेंटला इव्हेंट चालित म्हणतात.

अशा प्रकारे, एखादी घटना घोषित करण्यासाठी, आपण प्रथम घोषित करणे किंवा निवडणे आवश्यक आहे मानक प्रकारइव्हेंट हँडलर. मेथड पॉइंटर नेहमीच्या प्रक्रियात्मक प्रकारापेक्षा वेगळे असतात कारण ते एक विशेष वाक्यरचना वापरतात:

प्रकार =कार्यपद्धती(पाठवणारा: विषय[; }) च्या ऑब्जेक्ट;

अतिरिक्त कीवर्ड च्या ऑब्जेक्टकंपाइलरला सूचित करा की हा ऑब्जेक्टच्या पद्धतीचा पॉइंटर आहे आणि नाही स्वतंत्र प्रक्रिया. अशाप्रकारे, डेल्फीमधील घटनांवर प्रक्रिया करण्यासाठी, एखाद्या विशिष्ट घटनेला कारणीभूत असलेल्या उदाहरणावर (सेल्फ व्हेरिएबल) पॉइंटरचे अंतर्निहित हस्तांतरण प्रदान करणाऱ्या पद्धतीसाठी पॉइंटर घोषित करणे शक्य आहे.

बहुतेक प्रकरणांमध्ये, पद्धत पॉइंटर्स प्रक्रिया म्हणून घोषित केले जातात. जरी डेल्फी कंपाइलर तुम्हाला फंक्शन पॉईंटर्स पद्धतीसाठी घोषित करण्याची परवानगी देतो, तरीही इव्हेंट हँडलर्ससाठी त्यांचा वापर करताना तुम्ही सावधगिरी बाळगली पाहिजे. प्रोग्रामर इव्हेंटसाठी हँडलर कोड तयार करू शकत नाही आणि रिकामे फंक्शन अपरिभाषित परिणाम देत असल्याने, रिकाम्या इव्हेंट हँडलरला परवानगी नाही.

डीफॉल्ट प्रक्रिया ओव्हरराइड करण्यासाठी तुम्ही Var पॅरामीटर्स देखील वापरू शकता.

पद्धतींसाठी ठराविक पॉइंटरची उदाहरणे.
डेल्फीमधील कार्यक्रमांची यादी:

TNotyfyEvent=ऑब्जेक्टची प्रक्रिया(प्रेषक: TObject);
OnClick; OnDblClick; OnCreate; OnDestroy;
TMouseMoveEvent=प्रक्रिया(प्रेषक: TObject; Shift: TShiftState; X,Y: पूर्णांक) ऑब्जेक्टचे; => OnMouseMove

ब) इव्हेंट इनिशिएशनच्या यंत्रणेचे निर्धारण
या यंत्रणेने प्रत्यक्षात काही परिस्थितींना, घटनांना प्रतिसाद देणे आवश्यक आहे, ज्याच्या प्रतिसादात घटना सुरू केल्या पाहिजेत.

इव्हेंट सुरू करण्यासाठी, तुम्ही एकतर संबंधित पद्धतीला थेट कॉल करू शकता किंवा यासाठी मेसेज मेकॅनिझम वापरू शकता. मूल्ये नियुक्त करण्यासाठी अतिरिक्त पॅरामीटर्सयोग्य कोड टाकणे आवश्यक आहे जे त्यांची मूल्ये निर्धारित करेल आणि वापरकर्त्याच्या इव्हेंट हँडलरला पास करेल.

c) इव्हेंट हँडलर कॉल करणाऱ्या पद्धतीची घोषणा आणि अंमलबजावणीसानुकूल इव्हेंट वाढवण्याची यंत्रणा ठरविल्यानंतर, ऑब्जेक्टवर कोणत्या प्रतिक्रिया (दृश्यमान आणि अदृश्य) असाव्यात आणि इव्हेंट हँडलरला कसे कॉल केले जावे हे आपल्याला ठरवावे लागेल.

सामान्यतः, इव्हेंटवर ऑब्जेक्टवर प्रतिक्रिया देण्यासाठी आणि इव्हेंट हँडलरला कॉल करण्यासाठी कोड लागू करण्यासाठी, संबंधित (संबंधित) आभासी संरक्षित पद्धतीची अंमलबजावणी घोषित आणि तयार केली जाते.

होय, कार्यावर जा डायनॅमिक पद्धतबदलाशिवाय क्लिक करा बाह्य प्रतिनिधित्वबटण (बटण "सिंक"), त्यात इव्हेंट हँडलरची उपस्थिती तपासणे आणि तेथे असल्यास, त्यावर नियंत्रण हस्तांतरित करणे समाविष्ट आहे.

अशी पद्धत घोषित करण्यासाठी वाक्यरचना खालीलप्रमाणे आहे:

कार्यपद्धती [()]; गतिमान;

पद्धत घोषित केल्यानंतर, विभागात आवश्यक आहे अंमलबजावणीत्याची अंमलबजावणी सादर करण्यासाठी मॉड्यूल. अंमलबजावणीने घटकाला तुमच्या इव्हेंट रिपोर्टिंग पद्धतीद्वारे ट्रिगर केलेल्या क्रियांना प्रतिसाद देण्याची अनुमती दिली पाहिजे.

इव्हेंट सूचना पद्धत लागू करण्यासाठी मानक वाक्यरचना खालीलप्रमाणे आहे:

कार्यपद्धती .[()];
सुरू
नियुक्त केले असल्यास()
मग ( स्व[,]);
शेवट;

प्रोग्रामिंगमधील इव्हेंट, इव्हेंटसारखे खरं जग- ही कोणत्याही ऑपरेशन्स आहेत जी एका निर्धारित वेळी होतात. वेळ सेट करा- घड्याळाच्या दृष्टिकोनातून ही विशिष्ट वेळ नाही, ही फक्त काही इतर क्रिया आणि बदलांना प्रतिसाद आहेत. इव्हेंट ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंगमध्ये अंतर्भूत आहेत आणि त्यापैकी एक आहेत महत्वाची वैशिष्ट्येऑपरेटिंग रूम विंडोज प्रणाली. व्हिज्युअल (ग्राफिकल) इंटरफेससह प्रोग्रामचे कार्य इव्हेंटशिवाय अकल्पनीय आहे. डेल्फी प्रदान करते पूर्ण प्रवेशइव्हेंटसह कार्य करण्यासाठी आणि प्रोग्रामिंग इव्हेंट हँडलरला थोडे सोपे बनवते. धड्याचा उद्देश सर्वात सामान्यपणे वापरल्या जाणाऱ्या घटनांशी परिचित होणे, तसेच त्यांच्यासाठी हँडलर लिहिण्याच्या तंत्रांशी परिचित होणे हा आहे.

मी इव्हेंट कुठे शोधू शकतो?

पहिल्या धड्यांपैकी एका धड्यात असे नमूद केले होते की प्रत्येक वस्तूचे गुणधर्म आणि घटना असतात आणि हे सर्व त्याद्वारे उपलब्ध आहे ऑब्जेक्ट इन्स्पेक्टर. ऑब्जेक्ट सपोर्ट करत असलेल्या सर्व इव्हेंटची यादी टॅबवर आहे कार्यक्रमऑब्जेक्ट इन्स्पेक्टर. डेटा स्वरूप गुणधर्म टॅब प्रमाणेच आहे: इव्हेंटचे नाव डावीकडे सूचित केले आहे आणि इव्हेंटला नियुक्त केलेला हँडलर उजवीकडे दर्शविला आहे. कृपया लक्षात घ्या की सर्व इव्हेंट्सना सहसा "या शब्दापासून सुरू होणारी नावे दिली जातात. चालू"(इंग्रजी -" वर"). ही चांगली शिष्टाचार आणि बऱ्यापैकी सुस्थापित परंपरा आहे. अशी नावे तुम्हाला घटनांमधून गुणधर्मांमध्ये त्वरीत फरक करण्यास अनुमती देतात. गुणधर्मांच्या सादृश्याने, इव्हेंट्सला बरीच तार्किक नावे दिली जातात. एखादी अपरिचित घटना पाहून, 95% प्रकरणांमध्ये तुम्ही हे करू शकता. जेव्हा घटना घडते तेव्हा एकट्याने अंदाज लावा, किंवा तुम्हाला त्याबद्दल अधिक जाणून घ्यायचे असेल, हे करण्यासाठी, तुम्हाला कर्सर लाइनवर ठेवण्याची आवश्यकता आहे स्वारस्य असलेल्या घटनेसह आणि फक्त क्लिक करा. F1- निवडलेल्या इव्हेंटबद्दल माहितीसह मदत प्रणाली एका पृष्ठावर उघडेल (जर, अर्थातच, मदतीत वर्णन केले असेल). सर्व मानक घटकांसाठी मदत प्रणालीमध्ये भरपूर माहिती आहे. जर काही तृतीय पक्ष घटक, नंतर वर्णन दस्तऐवजात आढळले पाहिजे जे घटक स्वतः येतात. काही घटक (प्रामुख्याने मोठे पॅकेजेस मोठ्या संख्येनेघटक) इन्स्टॉलेशन दरम्यान डेल्फी मदत प्रणालीमध्ये त्यांचे दस्तऐवजीकरण स्वतंत्रपणे एकत्रित करतात.

स्वयंचलित निर्मितीकार्यक्रम हाताळणारे

इव्हेंट हँडलरआज्ञांचा एक संच आहे जो इव्हेंट उठवला जातो तेव्हा अंमलात आणला जातो. तुम्ही हँडलर दोन प्रकारे तयार करू शकता: थेट डेल्फी वातावरणात - स्वयंचलितपणे आणि प्रोग्रामॅटिकली, म्हणजे. कार्यक्रम अंमलबजावणी दरम्यान. हँडलर तयार करणे खूप सोपे आहे: ऑब्जेक्ट इन्स्पेक्टरमधील इव्हेंटच्या नावाच्या पुढील फील्डवर फक्त डबल-क्लिक करा आणि हँडलर टेम्पलेटसह कोड एडिटर उघडेल. दरम्यान आवश्यक कोड लिहिणे बाकी आहे सुरूआणि शेवट(कर्सर आधीच त्या ठिकाणी असेल) आणि हँडलर तयार आहे. जसे आपण पाहू शकता, सर्वकाही अगदी सोपे आणि जलद आहे. तथापि, मागील धड्यांमध्ये तुम्ही पाहिले की हँडलर केवळ फॉर्मवरील ऑब्जेक्टवर डबल-क्लिक करून तयार केला गेला होता... होय, खरंच, या प्रकरणात एक हँडलर देखील तयार केला जातो. परंतु ही पद्धत आत्ताच वर्णन केलेल्या पद्धतीपेक्षा वेगळी नाही, प्रत्येक ऑब्जेक्टसाठी डीफॉल्ट इव्हेंट सेट केला जातो, ज्यासाठी डबल-क्लिक केल्यावर हँडलर तयार केला जातो. सामान्यत: हे सर्वात जास्त वापरले जाणारे कार्यक्रम आहेत. उदाहरणार्थ, बटणासाठी हे अर्थातच त्यावर एक क्लिक असेल. नॉन-स्टँडर्ड घटकांसाठी, जर इव्हेंट डीफॉल्टनुसार निर्दिष्ट केला नसेल, तर पहिला जो येतो तो घेतला जातो आणि जर एकच इव्हेंट असेल तर निवड आणखी स्पष्ट आहे.
हँडलर तयार केल्यानंतर, टॅबवर कार्यक्रमत्यासाठी हँडलरचे नाव इव्हेंटच्या नावापुढे दिसेल. हे नाव व्यक्तिचलितपणे प्रविष्ट केले जाऊ शकते किंवा सर्व हँडलर्सची नावे असलेल्या सूचीमधून निवडले जाऊ शकते. हँडलर्सची नावे देखील योगायोगाने दिली जात नाहीत: ऑब्जेक्टचे नाव घेतले जाते आणि त्यास इव्हेंटचे नाव जोडले जाते. उदाहरणार्थ, बटण असल्यास बटण1आणि तिचा कार्यक्रम OnClick, नंतर हँडलरचे नाव दिले जाईल बटण 1 क्लिक करा. पुन्हा, हँडलरच्या नावावरून तुम्ही ज्या इव्हेंटशी संबंधित आहे त्याचा अंदाज लावू शकता.

इव्हेंटमध्ये फक्त एक हँडलर असू शकतो!तथापि, आपल्याला एकाधिक हँडलर निर्दिष्ट करण्याची आवश्यकता असल्यास, आपण करू शकता खालील प्रकारे: निर्दिष्ट केलेला एकल हँडलर इतर हँडलर्सला फक्त प्रोग्रामेटिकरित्या चालवतो. हे तंत्र अनेकदा वापरले जाते.
तथापि, कोणतेही उलट प्रतिबंध नाही: एकहँडलरला बांधले जाऊ शकते विविध कार्यक्रमऑब्जेक्ट आणि अगदी विविध वस्तू. हे करण्यासाठी, ऑब्जेक्टसाठी स्वारस्य असलेल्या घटनेच्या ओळीत, सूचीमधून हँडलरचे नाव निवडा.

कोडच्या दृष्टिकोनातून हँडलर

आता हँडलर कशात आहे ते पाहू प्रोग्राम कोड. आणि ही एक प्रक्रिया आहे, म्हणजे. आदेशांचा संच हा एक मिनी-प्रोग्राम आहे.
हँडलरमध्ये एक अंमलबजावणी विभाग आहे - ते दरम्यान स्थित आहे सुरूआणि शेवट(आकृतीमध्ये ते रंगाच्या चौकटीने हायलाइट केले आहे). या ब्लॉकमध्ये, जसे तुम्हाला आधीच माहित आहे, तुम्ही एक कोड लिहावा जो अंमलात येईल.
सर्वात शिर्षक ओळहँडलर हे त्याचे शीर्षक आहे (रंगात हायलाइट केलेले). शीर्षलेख घटक:
- कीवर्ड प्रक्रिया(प्रक्रिया);
- ज्या वस्तूशी संबंधित आहे त्याचे नाव ही प्रक्रिया(या प्रकरणात ते फॉर्मचे आहे - म्हणून TForm1);
- हँडलरचे नाव (रंग);
- पास केलेले पॅरामीटर्स (रंग).

वस्तूंच्या नावादरम्यान ( TForm1) आणि हँडलरचे नाव ( बटण 1 क्लिक करा) तेथे एक बिंदू आहे - हे दर्शविणारे चिन्ह आहे बटण 1 क्लिक करासंबंधित आहे TForm1. कोणत्याही संरचनेसह कार्य करताना, एक बिंदू सूचित करतो की घटक या संरचनेचा आहे. आता हे एक मोठी भूमिका बजावत नाही - फक्त एक लहान विषयांतर. उदाहरणार्थ, C++ भाषेत, असा विभाजक म्हणजे “वजा आणि चिन्हापेक्षा मोठे” चे संयोजन: ->

वर्णन विभाग देखील येथे आहे, तो फक्त रिक्त आहे. अपेक्षेप्रमाणे, ते हँडलर हेडर आणि अंमलबजावणी विभाग दरम्यान स्थित आहे, म्हणजे. पहिली आणि दुसरी ओळ दरम्यान. चल किंवा स्थिरांक घोषित करणे आवश्यक असल्यास, या विभागाचे वर्णन नेहमीच्या पद्धतीने केले जाते - कीवर्ड जोडणे varकिंवा constआणि चल किंवा स्थिरांकांचे वर्णन.


इव्हेंट प्रोसेसिंग उदाहरण क्रमांक 1

प्रक्रिया TForm1.Button1Click(प्रेषक: TObject);
सुरू
ShowMessage("बटण1 दाबले")
शेवट ;

प्रक्रिया TForm1.Button2Click(प्रेषक: TObject);
सुरू
ShowMessage("Button2 दाबले")
शेवट ;

प्रक्रिया TForm1.Button3Click(प्रेषक: TObject);
सुरू
ShowMessage("Button3 दाबले")
शेवट ;

नक्कीच, ते कार्य करेल... परंतु वास्तविक प्रोग्रामर तसे करत नाहीत... स्वत: साठी निर्णय घ्या: जर 100 बटणे असतील तर - मग काय? 100 हँडलर्स? नक्कीच नाही!

तुम्ही एकाच वेळी सर्व बटणांसाठी एक हँडलर तयार करू शकता. आपण ऑब्जेक्ट इन्स्पेक्टरमधील सूचीमधून इव्हेंट हँडलर निवडल्यास हे केले जाऊ शकते असे वर सांगितले होते... परंतु 100 बटणे असल्यास, ही पद्धत देखील अनुपयुक्त आहे - यास बराच वेळ लागेल. आणखी एक गोष्ट आहे: जर तुम्ही फॉर्मवर एकाच वेळी अनेक ऑब्जेक्ट्स निवडल्या, तर ऑब्जेक्ट इन्स्पेक्टरमध्ये, गुणधर्म आणि इव्हेंट्समध्ये, केवळ सर्व निवडलेल्या ऑब्जेक्ट्समध्ये तेच राहतील. याचाच फायदा घ्यावा.

म्हणून, फॉर्मवरील सर्व 3 बटणे निवडा (माऊससह क्षेत्राची रूपरेषा दर्शवा, किंवा शिफ्ट धरून ठेवा), नंतर टॅबवर जा. कार्यक्रम IO मध्ये आणि इव्हेंट हँडलर तयार करा OnClick. काय होते: कोड एडिटर उघडतो, परंतु फक्त एक हँडलर तयार केला जातो, जरी तो सर्व तीन बटणांना नियुक्त केला जातो.

संदेश आउटपुट देखील एका ओळीत लागू केला जातो, ज्यामध्ये दाबलेल्या बटणाचे नाव बदलले जाते.

प्रक्रिया TForm1.Button1Click(प्रेषक: TObject);
सुरू
ShowMessage("दाबले" +(प्रेषक म्हणून TButton).नाव)
शेवट ;

ते नेमके कसे कार्य करते आणि ऑपरेटर काय करतो? म्हणूनआता स्पष्ट करणे खूप कठीण आहे. प्रत्येक गोष्टीची वेळ असते. डुप्लिकेशन नेहमी कोणत्या ना कोणत्या प्रकारे टाळता येते हे दाखवण्यासाठी हे उदाहरण तयार केले आहे.

पॅरामीटर्स हँडलर्सना पास केले

घटनांना पॅरामीटर्स असतात. बऱ्याच इव्हेंटमध्ये एक पॅरामीटर असतो, परंतु काहींमध्ये अधिक असते - इव्हेंटच्या प्रकारावर अवलंबून. उत्तीर्ण केलेल्या पॅरामीटर्समधून आपण अतिरिक्त डेटा आणि परिस्थिती शोधू शकता ज्या अंतर्गत घटना घडली. उदाहरणार्थ, जर आम्हाला माहित असेल की वापरकर्त्याने माउस कर्सर हलवला आहे, तर याचा अर्थ काहीही नाही आणि उपयुक्त माहितीव्यावहारिकपणे वाहून जात नाही. परंतु जर आपल्याला माहित असेल की कर्सर काही ज्ञात निर्देशांकांसह स्क्रीनवरील एका बिंदूवर हलविला गेला आहे (x;y)- हे आधीच काहीतरी आहे.
एक पॅरामीटर जो जवळजवळ सर्व घटनांमध्ये आढळतो - पाठवणारा. हे इव्हेंट ट्रिगर करणाऱ्या ऑब्जेक्टकडे निर्देश करते. एकाच इव्हेंटसाठी एक हँडलर स्थापित केलेल्या अनेक ऑब्जेक्ट्सच्या बाबतीत हे वापरणे सोयीचे आहे (आमच्या उदाहरण क्रमांक 1 प्रमाणे).

आता आम्हाला इव्हेंटबद्दल बरेच काही माहित आहे, आम्ही शेवटी मानक आणि वारंवार वापरल्या जाणाऱ्या गोष्टींचा विचार करू शकतो.

OnClick - ऑब्जेक्टवर माउस क्लिक करा. बटणासाठी, इनपुट फोकस बटणावर असताना तुम्ही Enter किंवा Space दाबल्यास इव्हेंट देखील ट्रिगर होतो.

OnDblClick - डबल क्लिक.

OnContextPopup - कॉल केल्यावर संदर्भ मेनूऑब्जेक्ट, म्हणजे क्लिक केल्यावर राईट क्लिकउंदीर. पॅरामीटर्समध्ये आहे MousePos- क्लिक करण्याच्या क्षणी कर्सरचे निर्देशांक. द्वारे समन्वय साधा एक्सम्हणून उपलब्ध MousePos.X, आणि द्वारे वाय- कसे MousePos.Y.

OnEnter - ज्या क्षणी ऑब्जेक्टला इनपुट फोकस प्राप्त होतो (इनपुट फोकस सहसा ऑब्जेक्टवर ठिपके असलेल्या फ्रेमद्वारे दर्शविला जातो; इनपुट फील्डमध्ये तो कर्सर असतो; संपूर्ण ऍप्लिकेशनसाठी फक्त एकच फोकस असतो, म्हणजे तुम्ही फक्त एकासह कार्य करू शकता. एका वेळी ऑब्जेक्ट).

OnExit - तो क्षण जेव्हा ऑब्जेक्ट इनपुट फोकस गमावतो.

OnMouseDown - जेव्हा माउस बटण दाबले जाते (डावीकडे आवश्यक नसते). पॅरामीटर बटण- दाबलेले बटण ( mb डावे - डावे बटण, mbRight- बरोबर, mbमध्य- सरासरी). शिफ्ट- क्लिक केल्यावर कोणत्या फंक्शन की दाबून ठेवल्या होत्या हे दर्शवणारा संच. अशा प्रकारे तुम्ही ट्रॅक करू शकता, उदाहरणार्थ, Ctrl + Alt, इ. धरून असताना क्लिक. एक्स, वाय- दाबताना कर्सरचे निर्देशांक (डावीकडे सापेक्ष वरचा कोपराघटक स्वतःच, फॉर्म नाही!).

OnMouseUp सारखाच इव्हेंट आहे OnMouseDown. जेव्हा माउस बटण सोडले जाते तेव्हा उद्भवते. या दोन घटनांच्या संयोजनाचे उदाहरण आहे ग्राफिक्स संपादक: जेव्हा माउस बटण दाबले जाते तेव्हा रेखाचित्र येते, परंतु जेव्हा ते सोडले जाते तेव्हा ते होत नाही.

OnMouseMove हा आणखी एक माउस इव्हेंट आहे जो कर्सर ऑब्जेक्टवर फिरतो तेव्हा होतो. एक्स, वाय- नवीन स्थितीचे समन्वय, शिफ्ट- अनेक दाबले फंक्शन की.

OnKeyDown - इनपुट फोकस ऑब्जेक्टवर असताना कोणतीही कीबोर्ड की दाबली जाते. की- दाबलेल्या कीचा कोड, शिफ्ट- फंक्शन कीचा समान संच (हे पॅरामीटर अनेक कार्यक्रमांमध्ये आढळते).

OnKeyUp - जेव्हा की सोडली जाते (अँटीपोड OnKeyDown).

OnKeyPress - जेव्हा तुम्ही अक्षर (अक्षर, संख्या, चिन्ह) छापणारी की दाबता. की- यापुढे की कोड नाही, परंतु चिन्ह स्वतःच (डेटा प्रकार: चार- एक वर्ण).

OnResize - जेव्हा ऑब्जेक्टचा आकार बदलतो.

ऑनपेंट - स्क्रीनवर ऑब्जेक्ट काढताना (उदाहरणार्थ, एक फॉर्म).

फॉर्ममध्ये देखील अनेक घटना आहेत. चला त्यापैकी काही लक्षात घेऊया:

OnCreate - फॉर्म तयार करताना. सामान्यतः, या इव्हेंट हँडलरमध्ये अशा क्रिया असतात ज्या जेव्हा प्रोग्राम सुरू होतो तेव्हा व्हायला हव्यात. परंतु स्टार्टअपवर, हे केवळ तेव्हाच कार्यान्वित केले जाईल जेव्हा अर्जामध्ये फॉर्म मुख्य असेल आणि फॉर्म आपोआप तयार झाला असेल. अर्जाचा एक फॉर्म असल्यास, तो मुख्य आहे.

OnClose - फॉर्म बंद करताना.

OnCloseQuery - फॉर्म बंद करण्याचा प्रयत्न करताना. तुम्हाला फॉर्म बंद करणे अवरोधित करण्याची आवश्यकता असल्यास हा कार्यक्रम वापरला जाऊ शकतो. हँडलरमध्ये एक पॅरामीटर असतो बंद करू शकता(इंग्रजी - " बंद केले जाऊ शकते"): बुलियन मूल्य, डेटा प्रकार - बुलियन. हँडलर कार्यान्वित केल्यानंतर व्हेरिएबलचे मूल्य बंद करू शकताते बाहेर वळते खोटे, नंतर फॉर्म बंद होणार नाही. या व्हेरिएबलचे मूल्य प्रोग्रामॅटिक पद्धतीने सेट केले आहे. हा कार्यक्रम वापरण्याचे उदाहरण आहे मजकूर संपादक. जर वापरकर्त्याने मजकूर प्रविष्ट केला असेल परंतु तो फाइलमध्ये जतन केला नसेल तर, प्रोग्राममधून बाहेर पडताना, बदल जतन करावे की नाही हे विचारले पाहिजे.

इव्हेंट प्रोसेसिंग उदाहरण क्रमांक 2

उद्देशः फॉर्म "थेट" बंद करणे प्रतिबंधित करणे, परंतु वापरकर्त्याला खरोखर प्रोग्राम बंद करायचा आहे की नाही हे विचारणे. फॉर्म इव्हेंट वापरणे OnCloseQuery. हँडलरमध्ये आम्ही एक डायलॉग बॉक्स प्रदर्शित करू आणि जर वापरकर्त्याने उत्तर दिले तर " नाही", आम्ही क्लोजिंग ब्लॉक करू. डायलॉग बॉक्स प्रदर्शित करण्यासाठी, आम्ही फंक्शन वापरू MessageDlg. तुम्ही पुढीलपैकी एका धड्यात त्याबद्दल आणि त्याच्या पॅरामीटर्सबद्दल अधिक जाणून घ्याल. आमचे हँडलर:

प्रक्रिया TForm1.FormCloseQuery(प्रेषक: TObject; var Canclose: बुलियन);
सुरू
तर MessageDlg( "तुला खरंच निघायचं आहे का?",mtWarning,,0) = mrNo नंतर
बंद करू शकता:= असत्य
शेवट ;

" बटण दाबले आहे की नाही हे तपासले जात आहे नाही". ते दाबल्यास, व्हेरिएबल नियुक्त करून क्लोजर ब्लॉक केले जाईल बंद करू शकतामूल्ये खोटे. परिणामी, बंद करताना आम्हाला खालील दिसेल:


कार्यक्रम (चालू)

OnDestroy - जेव्हा फॉर्म नष्ट होतो (बंद केल्यानंतर, फॉर्म नष्ट होतो आणि त्याद्वारे व्यापलेली मेमरी मुक्त होते).

ऑनशो - जेव्हा फॉर्म स्क्रीनवर दर्शविला जातो.

ऑनहाइड - स्क्रीनवरून फॉर्म लपवताना.

OnActivate - ज्या क्षणी फॉर्म सक्रिय होतो, उदा. जेव्हा ते इनपुट फोकस प्राप्त करते (उदाहरणार्थ, जेव्हा वापरकर्ता फॉर्मवर क्लिक करतो).

OnDeactivate - अनुक्रमे, जेव्हा फॉर्म फोकस गमावतो.

OnChange - जेव्हा काहीतरी बदलते (उदाहरणार्थ, इनपुट फील्ड TEditजेव्हा या फील्डमधील मजकूर बदलतो तेव्हा हा कार्यक्रम सक्रिय होतो).

OnDragDrop, OnDragOver, OnEndDock, OnEndDrag, OnStartDock, OnStartDrag - या सर्व घटना तंत्रज्ञानाशी संबंधित आहेत. ओढा टाका(म्हणजे जेव्हा एखादी वस्तू माउसद्वारे "पकडली" जाते आणि दुसऱ्या ठिकाणी हलवली जाते), आणि सोबत गोदी-तंत्रज्ञान. या (डॉक) तंत्रज्ञानाचे सार म्हणजे काही वस्तू इतरांमध्ये एम्बेड करणे. उदाहरणार्थ, जर आपण घेतो ऑब्जेक्ट इन्स्पेक्टरशीर्षक मागे आणि हलवा तळाचा भाग ऑब्जेक्ट ट्री व्ह्यूआणि नंतर सोडा, खिडक्या विलीन होतील, आणि जर तुम्ही ते मध्यभागी हलवले ऑब्जेक्ट ट्री व्ह्यू, नंतर 3 बुकमार्क असतील ( ऑब्जेक्ट ट्री व्ह्यूतिसरा बुकमार्क होईल).

जसे आपण पाहू शकता, तेथे अनेक घटना आहेत आणि त्या सर्वांचे वर्णन करणे निरर्थक आहे - त्यांची नावे स्वतःच घटनांचा अर्थ प्रकट करतात. सामान्यतः कोणत्या घटना अस्तित्वात आहेत हे जाणून घेणे पुरेसे आहे.

निष्कर्ष

आम्ही इव्हेंटसह कार्य करण्याकडे पाहिले - ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंगच्या तत्त्वांपैकी एक. अशा प्रकारे, विकास व्हिज्युअल कार्यक्रमविंडोजसाठी हे इव्हेंट हँडलर लिहिण्यापर्यंत येते जे एकमेकांशी ऑब्जेक्ट्सच्या परस्परसंवादाचे वर्णन करतात.

तयार केलेल्या फॉर्मचे स्वरूप आपल्याला सांगते की अनुप्रयोग कसे कार्य करते. अर्थात, वापरकर्त्याने संपादन फील्डमध्ये प्रारंभिक डेटा प्रविष्ट करणे आणि बटणावर क्लिक करणे आवश्यक आहे गणना करा. कमांड बटणाच्या प्रतिमेवर क्लिक करणे हे विंडोजमध्ये काय म्हणतात याचे उदाहरण आहे कार्यक्रम.

कार्यक्रम ( कार्यक्रम) प्रोग्राम चालू असताना काय होते. डेल्फीमध्ये, प्रत्येक कार्यक्रमाला एक नाव दिले जाते. उदाहरणार्थ, माऊस क्लिक ही घटना आहे OnClick, डबल क्लिक इव्हेंट OnDblClick.

टेबलमध्ये Q9 मध्ये काही Windows इव्हेंट्सची सूची आहे.

तक्ता B9. कार्यक्रम.

कार्यक्रम होत
OnClick माऊस क्लिकवर
OnDblClick माऊस बटणावर डबल क्लिक केल्यावर
OnMouseDown जेव्हा माउस बटण दाबले जाते
OnMouseUp जेव्हा तुम्ही माउस बटण सोडता
OnMouseMove माउस हलवताना
OnKeyPress जेव्हा तुम्ही कीबोर्ड की दाबता
OnKeyDown जेव्हा तुम्ही कीबोर्ड की दाबता. कार्यक्रम OnKeyDownआणि OnKeyPress- या पर्यायी, पुनरावृत्ती होणाऱ्या घटना आहेत ज्या होल्ड की रिलीझ होईपर्यंत घडतात (ज्या ठिकाणी घटना घडते OnKeyUp)
OnKeyUp जेव्हा तुम्ही दाबलेली कीबोर्ड की सोडता
OnCreate ऑब्जेक्ट तयार करताना (फॉर्म, नियंत्रण). ही घटना हाताळण्याची प्रक्रिया सहसा व्हेरिएबल्स सुरू करण्यासाठी, पूर्वतयारी क्रिया करण्यासाठी वापरली जाते
ऑनपेंट प्रोग्रामच्या सुरुवातीला स्क्रीनवर विंडो दिसते तेव्हा, विंडोचा एक भाग दिसल्यानंतर, उदाहरणार्थ, दुसर्या विंडोने झाकलेला होता, आणि इतर प्रकरणांमध्ये
OnEnter जेव्हा नियंत्रण फोकस प्राप्त करते
OnExit जेव्हा एखादे नियंत्रण फोकस गमावते

एखाद्या घटनेची प्रतिक्रिया ही एक प्रकारची कृती असावी. डेल्फीमध्ये, इव्हेंटचा प्रतिसाद म्हणून लागू केला जातो घटना प्रक्रिया. अशा प्रकारे, वापरकर्त्याच्या क्रियांच्या प्रतिसादात प्रोग्रामला काही कार्य करण्यासाठी, प्रोग्रामरने योग्य कार्यक्रम हाताळण्यासाठी एक प्रक्रिया लिहिली पाहिजे. कृपया लक्षात घ्या की इव्हेंट प्रक्रियेचा महत्त्वपूर्ण भाग घटकाद्वारे हाताळला जातो. म्हणून, प्रोग्रामरने इव्हेंट हाताळण्याची प्रक्रिया विकसित केली पाहिजे जर इव्हेंटचा प्रतिसाद मानक किंवा अपरिभाषितपेक्षा वेगळा असेल. उदाहरणार्थ, जर समस्येच्या परिस्थितीनुसार फील्डमध्ये प्रविष्ट केलेल्या वर्णांवर निर्बंध आहेत सुधारणे, नाही, नंतर इव्हेंट हाताळणी प्रक्रिया OnKeyPressलिहिण्याची गरज नाही, कारण प्रोग्राम ऑपरेशन दरम्यान या इव्हेंटच्या प्रक्रियेसाठी मानक (प्रोग्रामरपासून लपलेली) प्रक्रिया वापरली जाईल.

इव्हेंट प्रोसेसिंग प्रक्रियेचे उदाहरण वापरून इव्हेंट प्रोसेसिंग प्रक्रिया तयार करण्याच्या पद्धतीचा विचार करूया OnClickकमांड बटणासाठी गणना करा.

इव्हेंट प्रक्रिया प्रक्रिया तयार करण्यास प्रारंभ करण्यासाठी, आपण प्रथम विंडोमध्ये असणे आवश्यक आहे ऑब्जेक्ट इन्स्पेक्टरज्या घटकासाठी इव्हेंट हाताळणी प्रक्रिया तयार केली आहे तो घटक निवडा. मग त्याच विंडोमध्ये तुम्हाला टॅब निवडण्याची आवश्यकता आहे कार्यक्रम(घटना)

गणना करा. कार्यक्रम

तक्ता B9.कार्यक्रम

कार्यक्रम

होत

माऊस क्लिकवर

जेव्हा माउस बटण दाबले जाते

जेव्हा तुम्ही माउस बटण सोडता

माउस हलवताना


गणना करा.

ऑब्जेक्ट इन्स्पेक्टर कार्यक्रम(घटना)

तांदूळ. B26.टॅबवर कार्यक्रम

टॅबच्या डाव्या स्तंभात कार्यक्रम

ऑब्जेक्ट इन्स्पेक्टर

तांदूळ. B27.

गणना करा.

B1 सूची.

// दाबा बटणांची गणना करा

प्रक्रिया

dist: पूर्णांक; // अंतर, मीटर

t: वास्तविक; // अपूर्णांक म्हणून वेळ

मि: पूर्णांक; // वेळ, मिनिटे

sek:पूर्णांक; // वेळ, सेकंद

v:वास्तविक; // गती

सुरू

//

//

मि:= ट्रंक(टी); //

sek:= Trunc(t*100) मोड 100;

//

// संख्या टी

// गणना

// आउटपुट परिणाम

शेवट

मोड्युलो

बटण दाबल्याचा परिणाम म्हणून पूर्ण पूर्ण B2 सूची मध्ये दाखवले आहे.

B2 सूची.

// Finish बटणावर क्लिक करून

प्रक्रिया

सुरू

फॉर्म 1. बंद करा; //

कार्यक्रम आणि कार्यक्रम प्रक्रिया

तयार केलेल्या फॉर्मचे स्वरूप आपल्याला सांगते की अनुप्रयोग कसे कार्य करते. अर्थात, वापरकर्त्याने संपादन फील्डमध्ये प्रारंभिक डेटा प्रविष्ट करणे आणि बटणावर क्लिक करणे आवश्यक आहे गणना करा.कमांड बटणाच्या प्रतिमेवर क्लिक करणे हे विंडोजमध्ये काय म्हणतात याचे उदाहरण आहे कार्यक्रम

कार्यक्रम चालू असताना घडणारी एखादी घटना असते. डेल्फीमध्ये, प्रत्येक कार्यक्रमाला एक नाव दिले जाते. उदाहरणार्थ, माउस क्लिक म्हणजे OnClick इव्हेंट, डबल क्लिक म्हणजे OnDblClick इव्हेंट.

टेबलमध्ये Q9 मध्ये काही Windows इव्हेंट्सची सूची आहे.

तक्ता B9.कार्यक्रम

कार्यक्रम

होत

माऊस क्लिकवर

माऊस बटणावर डबल क्लिक केल्यावर

जेव्हा माउस बटण दाबले जाते

जेव्हा तुम्ही माउस बटण सोडता

माउस हलवताना

जेव्हा तुम्ही कीबोर्ड की दाबता

जेव्हा तुम्ही कीबोर्ड की दाबता. OnKeyDown आणि OnKeyPress इव्हेंट्स पर्यायी आहेत, धरून ठेवलेली की रिलीझ होईपर्यंत घडणाऱ्या घटनांची पुनरावृत्ती होत आहेत (ज्या ठिकाणी OnKeyUp इव्हेंट होतो)

जेव्हा तुम्ही दाबलेली कीबोर्ड की सोडता

ऑब्जेक्ट तयार करताना (फॉर्म, नियंत्रण). ही घटना हाताळण्याची प्रक्रिया सहसा व्हेरिएबल्स सुरू करण्यासाठी, पूर्वतयारी क्रिया करण्यासाठी वापरली जाते

प्रोग्रामच्या सुरुवातीला स्क्रीनवर विंडो दिसते तेव्हा, विंडोचा एक भाग दिसल्यानंतर, उदाहरणार्थ, दुसर्या विंडोने झाकलेला होता, आणि इतर प्रकरणांमध्ये

जेव्हा नियंत्रण फोकस प्राप्त करते

जेव्हा एखादे नियंत्रण फोकस गमावते

एखाद्या घटनेची प्रतिक्रिया ही एक प्रकारची कृती असावी. डेल्फीमध्ये, इव्हेंटचा प्रतिसाद म्हणून लागू केला जातो घटना प्रक्रिया प्रक्रिया.अशा प्रकारे, वापरकर्त्याच्या क्रियांच्या प्रतिसादात प्रोग्रामला काही कार्य करण्यासाठी, प्रोग्रामरने योग्य कार्यक्रम हाताळण्यासाठी एक प्रक्रिया लिहिली पाहिजे. कृपया लक्षात घ्या की इव्हेंट प्रक्रियेचा महत्त्वपूर्ण भाग घटकाद्वारे हाताळला जातो. म्हणून, प्रोग्रामरने इव्हेंट हाताळण्याची प्रक्रिया विकसित केली पाहिजे जर इव्हेंटला प्रतिसाद मानक किंवा अपरिभाषितपेक्षा वेगळा असेल. उदाहरणार्थ, जर, कार्याच्या अटींनुसार, संपादन फील्डमध्ये प्रविष्ट केलेल्या वर्णांवर कोणतेही निर्बंध नाहीत, तर OnKeyPress इव्हेंटवर प्रक्रिया करण्यासाठी प्रक्रिया लिहिण्याची आवश्यकता नाही, कारण प्रोग्राम ऑपरेशन दरम्यान मानक (पासून लपवलेले आहे या कार्यक्रमाच्या प्रक्रियेसाठी प्रोग्रामर) प्रक्रिया वापरली जाईल.

कमांड बटणासाठी OnClick इव्हेंटवर प्रक्रिया करण्याच्या प्रक्रियेचे उदाहरण वापरून इव्हेंट प्रोसेसिंग प्रक्रिया तयार करण्याची पद्धत पाहू. गणना करा.

इव्हेंट प्रक्रिया प्रक्रिया तयार करण्यास प्रारंभ करण्यासाठी, आपण प्रथम विंडोमध्ये असणे आवश्यक आहे ऑब्जेक्ट इन्स्पेक्टरज्या घटकासाठी इव्हेंट हाताळणी प्रक्रिया तयार केली आहे तो घटक निवडा. मग त्याच विंडोमध्ये तुम्हाला टॅब निवडण्याची आवश्यकता आहे कार्यक्रम(घटना)

तांदूळ. B26.टॅबवर कार्यक्रमघटकाला जाणवू शकणाऱ्या घटनांची यादी करते (या प्रकरणात, कमांड बटण)

टॅबच्या डाव्या स्तंभात कार्यक्रम(Fig. B26) निवडलेल्या घटकाला (वस्तू) समजू शकणाऱ्या घटनांची नावे सूचीबद्ध करतात. एखाद्या इव्हेंटसाठी इव्हेंट प्रोसेसिंग प्रक्रिया परिभाषित (लिहिलेली) असल्यास, या प्रक्रियेचे नाव इव्हेंटच्या नावाच्या पुढे उजव्या कॉलममध्ये प्रदर्शित केले जाते.

इव्हेंट प्रोसेसिंग फंक्शन तयार करण्यासाठी, तुम्हाला संबंधित इव्हेंटवर प्रक्रिया करण्यासाठी प्रक्रियेच्या नाव फील्डवर डबल-क्लिक करणे आवश्यक आहे. याचा परिणाम म्हणून, कोड एडिटर विंडो उघडेल, ज्यामध्ये इव्हेंट प्रोसेसिंग प्रक्रियेसाठी टेम्पलेट जोडले जाईल आणि विंडोमध्ये ऑब्जेक्ट इन्स्पेक्टरत्यावर प्रक्रिया करण्यासाठी फंक्शनचे नाव इव्हेंटच्या नावाच्या पुढे दिसेल (Fig. B27).

डेल्फी इव्हेंट हँडलरला दोन भाग असलेले नाव देते. नावाचा पहिला भाग ऑब्जेक्ट (घटक) असलेला फॉर्म ओळखतो ज्यासाठी इव्हेंट हाताळणी प्रक्रिया तयार केली गेली आहे. नावाचा दुसरा भाग ऑब्जेक्ट आणि घटना स्वतः ओळखतो. आमच्या उदाहरणात, फॉर्मचे नाव Form1 आहे, कमांड बटणाचे नाव Buttoni आहे आणि इव्हेंटचे नाव क्लिक आहे.

तांदूळ. B27.डेल्फीद्वारे व्युत्पन्न केलेले इव्हेंट प्रक्रिया टेम्पलेट

कोड एडिटर विंडोमध्ये, सुरुवात आणि शेवट या शब्दांदरम्यान, तुम्ही इव्हेंट प्रोसेसिंग फंक्शन लागू करणाऱ्या सूचना टाइप करू शकता.

सूची B1 कमांड बटणासाठी ऑनक्लिक इव्हेंट हाताळण्यासाठी फंक्शनचा मजकूर दर्शवते. गणना करा.कार्यक्रम कसा सादर केला जातो याकडे लक्ष द्या. त्याचे सामान्य स्वरूप कोड एडिटर विंडोमध्ये कसे दिसते याच्याशी संबंधित आहे: कीवर्ड ठळक आहेत, टिप्पण्या इटॅलिकमध्ये आहेत (कोड एडिटरद्वारे हायलाइट केले जाते). याव्यतिरिक्त, प्रोग्रामरमध्ये स्वीकारलेल्या चांगल्या शैलीच्या नियमांनुसार प्रोग्राम सूचना इंडेंट केल्या जातात.

B1 सूची. Button1 वर OnClick इव्हेंट हाताळण्याची प्रक्रिया (गणना करा)

// दाबा बटणांची गणना करा

प्रक्रिया TForm1.ButtonlClick(प्रेषक: TObject);

dist: पूर्णांक; // अंतर, मीटर

t: वास्तविक; // अपूर्णांक म्हणून वेळ

मि: पूर्णांक; // वेळ, मिनिटे

sek:पूर्णांक; // वेळ, सेकंद

v:वास्तविक; // गती

सुरू

// इनपुट फील्डमधून कच्चा डेटा मिळवा

dist:= StrToint(Edit1.Text); t:= StrToFloat(Edit2.Text);

// प्राथमिक परिवर्तने

मि:= ट्रंक(टी); // मिनिटांची संख्या ही संख्या t चा पूर्णांक भाग आहे

sek:= Trunc(t*100) मोड 100;

// सेकंदांची संख्या हा एक अंशात्मक भाग आहे

// संख्या टी

// गणना

v:= (dist/1000) / ((min*60 + sek)/3600);

// आउटपुट परिणाम

label4.Caption:= "अंतर: "+ Edit1.Text

+ " m" + #13 + "वेळ: " + IntToStr(मिनिटे)

+ "मि" + IntToStr(sek) + "सेकंद" + #13 +

"वेग: " + FloatToStrF(v,ffFixed,4,2) + " km/h";

शेवट

Button1click फंक्शन गती गणना करते आणि Label4 फील्डमध्ये गणना परिणाम प्रदर्शित करते. मजकूर गुणधर्मात प्रवेश करून Editl आणि Edit2 संपादन फील्डमधून स्त्रोत डेटा प्रविष्ट केला जातो. मजकूर गुणधर्मामध्ये वर्णांची एक स्ट्रिंग असते जी प्रोग्राम चालू असताना वापरकर्ता प्रविष्ट करेल. प्रोग्राम योग्यरित्या कार्य करण्यासाठी, स्ट्रिंगमध्ये फक्त संख्या असणे आवश्यक आहे. स्ट्रिंगला संख्यांमध्ये रूपांतरित करण्यासाठी, प्रोग्राम StrToInt आणि strToFloat फंक्शन्स वापरतो. strToInt फंक्शन वैधतेसाठी पॅरामीटर (Edit1.Text ही Editl फील्डची सामग्री आहे) म्हणून पास केलेल्या स्ट्रिंगचे वर्ण तपासते आणि, सर्व वर्ण वैध असल्यास, संबंधित संख्या परत करते. ही संख्या डिस्ट व्हेरिएबलमध्ये लिहिली जाते. strToFioat फंक्शन अशाच प्रकारे कार्य करते, जे Edit2 फील्डमधील सामग्रीशी संबंधित फ्रॅक्शनल नंबर मिळवते. ही संख्या टी व्हेरिएबलवर लिहिली जाते.

प्रारंभिक डेटा डिस्ट आणि टी व्हेरिएबल्समध्ये ठेवल्यानंतर, तयारीचे चरण आणि गणना केली जाते. सुरुवातीला, ट्रंक फंक्शन वापरून, जे संख्येचा अंशात्मक भाग "काढून टाकते", व्हेरिएबल t चा पूर्णांक भाग वाटप केला जातो - ही मिनिटांची संख्या आहे. Trunc(t*100) mod 100 या अभिव्यक्तीचे मूल्य सेकंदांची संख्या आहे. ही अभिव्यक्ती खालीलप्रमाणे मोजली जाते. प्रथम, संख्या t चा 100 ने गुणाकार केला जातो. परिणामी मूल्य Trunc फंक्शनला दिले जाते, जे t ला 100 ने गुणाकार केल्याने निकालाचा पूर्णांक भाग मिळतो. परिणामी संख्या विभाजित केली जाते. मोड्युलो 100 द्वारे. मोड्युलो भागाकाराचा परिणाम हा भागाचा उर्वरित भाग आहे.

सर्व डेटा तयार झाल्यानंतर, गणना केली जाते. वेग किमी/ताशी व्यक्त केला जाणे आवश्यक असल्याने, मीटर आणि मिनिटांमध्ये व्यक्त केलेले अंतर आणि वेळ मूल्ये किलोमीटर आणि तासांमध्ये रूपांतरित केली जातात.

कॅप्शन गुणधर्माला मूल्य नियुक्त करून गणना केलेले गती मूल्य लेबल4 फील्डमध्ये प्रदर्शित केले जाते. संख्यांना स्ट्रिंगमध्ये रूपांतरित करण्यासाठी, IntToStr आणि FloatToStr फंक्शन्स वापरा.

बटण दाबल्याचा परिणाम म्हणून पूर्णकार्यक्रमातून बाहेर पडावे. हे होण्यासाठी, तुम्हाला मुख्य प्रोग्राम विंडो बंद करणे, स्क्रीनवरून काढून टाकणे आवश्यक आहे. हे बंद पद्धत वापरून केले जाते. प्रक्रिया प्रक्रिया घटनांवर क्लिक कराबटणासाठी पूर्ण B2 सूची मध्ये दाखवले आहे.

B2 सूची.बटण2 (समाप्त) वर ऑनक्लिक इव्हेंट हाताळण्याची प्रक्रिया

// Finish बटणावर क्लिक करून

प्रक्रिया TForm1.Button2Click(प्रेषक: TObject);

सुरू

फॉर्म 1. बंद करा; // मुख्य प्रोग्राम विंडो बंद करा



आम्ही वाचण्याची शिफारस करतो

वर