में डेल्फी, हर परियोजना में कम से कम एक खिड़की है - कार्यक्रम की मुख्य खिड़की। एक डेल्फी आवेदन की सभी खिड़कियां आधारित हैं TForm ऑब्जेक्ट.
प्रपत्र
रूप वस्तु डेल्फी एप्लिकेशन के मूल बिल्डिंग ब्लॉक्स हैं, वास्तविक विंडोज़ जिसके साथ एक उपयोगकर्ता बातचीत करता है जब वे एप्लिकेशन चलाते हैं। प्रपत्रों के अपने गुण, घटनाएँ और विधियाँ होती हैं जिनकी सहायता से आप उनके स्वरूप और व्यवहार को नियंत्रित कर सकते हैं। एक फॉर्म वास्तव में डेल्फी घटक है, लेकिन अन्य घटकों के विपरीत, एक फॉर्म घटक पैलेट पर दिखाई नहीं देता है।
हम आम तौर पर एक नया एप्लिकेशन शुरू करके एक फॉर्म ऑब्जेक्ट बनाते हैं (फाइल | न्यू एप्लीकेशन)। यह नया बनाया गया फॉर्म होगा, डिफ़ॉल्ट रूप से, एप्लिकेशन का मुख्य फॉर्म - रनटाइम पर बनाया गया पहला फॉर्म।
नोट: डेल्फी प्रोजेक्ट में एक अतिरिक्त फॉर्म जोड़ने के लिए, फ़ाइल का चयन करें नए रूप मे।
जन्म
OnCreate
OnCreate घटना को निकाल दिया जाता है जब एक TForm पहली बार बनाया जाता है, अर्थात केवल एक बार। प्रपत्र बनाने के लिए जिम्मेदार कथन परियोजना के स्रोत में है (यदि प्रपत्र परियोजना द्वारा स्वचालित रूप से निर्मित होने के लिए सेट है)। जब कोई प्रपत्र बनाया जा रहा है और उसकी दृश्यमान संपत्ति सत्य है, तो निम्न घटनाएं सूचीबद्ध क्रम में होती हैं: OnCreate, OnShow, OnActivate, OnPaint।
आपको OnCreate ईवेंट हैंडलर का उपयोग करना चाहिए, उदाहरण के लिए, स्ट्रिंग सूचियों को आवंटित करने जैसे इनिशियलाइज़ेशन कोर।
OnCreate घटना में बनाई गई किसी भी ऑब्जेक्ट को OnDestroy घटना से मुक्त किया जाना चाहिए।
OnCreate -> OnShow -> OnActivate -> OnPaint -> OnResize -> OnPaint...
शो में
यह ईवेंट इंगित करता है कि प्रपत्र प्रदर्शित किया जा रहा है। ऑनशॉ को एक फॉर्म दिखाई देने से ठीक पहले कहा जाता है। मुख्य रूपों के अलावा, यह घटना तब होती है जब हम फ़ॉर्म दृश्यमान गुण को True पर सेट करते हैं, या Show या ShowModal विधि को कॉल करते हैं।
OnActivate
इस घटना को कहा जाता है जब प्रोग्राम फॉर्म को सक्रिय करता है - अर्थात, जब फॉर्म इनपुट फ़ोकस प्राप्त करता है। इस घटना का उपयोग बदलकर करें जो वास्तव में ध्यान केंद्रित करता है अगर यह वांछित नहीं है।
OnPaint, OnResize
ऑनपेंट और ऑनसाइज़ जैसी घटनाओं को हमेशा फॉर्म के शुरू होने के बाद कहा जाता है, लेकिन बार-बार भी कहा जाता है। ऑनपेंट पेंट पर किसी भी नियंत्रण से पहले होता है (फॉर्म पर विशेष पेंटिंग के लिए इसका उपयोग करें)।
जिंदगी
एक रूप का जन्म इतना दिलचस्प नहीं है जितना कि उसका जीवन और मृत्यु हो सकती है। जब आपका फॉर्म बन जाता है और सभी नियंत्रण घटनाओं को संभालने के लिए इंतजार कर रहे हैं, तो कार्यक्रम चल रहा है जब तक कोई फॉर्म को बंद करने की कोशिश नहीं करता है!
मौत
एक ईवेंट-चालित एप्लिकेशन चलना बंद हो जाता है जब इसके सभी फॉर्म बंद हो जाते हैं और कोई कोड निष्पादित नहीं होता है। यदि अंतिम रूप दिखाई देने के बाद भी कोई छिपा हुआ रूप मौजूद है, तो आपका आवेदन दिखाई देगा समाप्त हो गया (क्योंकि कोई रूप दिखाई नहीं दे रहा है), लेकिन वास्तव में तब तक चलता रहेगा जब तक कि सभी छिपे हुए रूप न हों बन्द है। ऐसी स्थिति के बारे में सोचें जहां मुख्य रूप जल्दी छिप जाता है और अन्य सभी रूप बंद हो जाते हैं।
... OnCloseQuery -> OnClose -> OnDeactivate -> OnHide -> OnDestroy
OnCloseQuery
जब हम क्लोज़ विधि या अन्य माध्यमों (Alt + F4) का उपयोग करके फ़ॉर्म को बंद करने का प्रयास करते हैं, तो OnCloseQuery ईवेंट कहा जाता है। इस प्रकार, इस घटना के लिए इवेंट हैंडलर एक फॉर्म के समापन को रोकने और इसे रोकने के लिए जगह है। हम उपयोगकर्ताओं से पूछने के लिए OnCloseQuery का उपयोग करते हैं यदि वे सुनिश्चित हैं कि वे वास्तव में फॉर्म को बंद करना चाहते हैं।
प्रक्रिया TForm1.FormCloseQuery (प्रेषक: TObject; वर CanClose: बूलियन);
शुरू
अगरMessageDlg('वास्तव में इस विंडो को बंद करें?', MtConfirmation, [mbOk, mbCancel], 0) = mrCancel फिर CanClose: = गलत;
समाप्त;
एक OnCloseQuery ईवेंट हैंडलर में एक CanClose वैरिएबल होता है जो यह निर्धारित करता है कि फॉर्म को बंद करने की अनुमति है या नहीं। OnCloseQuery इवेंट हैंडलर बंद विधि को निरस्त करने के लिए बंद करने का मान को गलत (CanClose पैरामीटर के माध्यम से) सेट कर सकता है।
OnClose
यदि OnCloseQuery इंगित करता है कि प्रपत्र बंद होना चाहिए, तो OnClose ईवेंट कहा जाता है।
OnClose ईवेंट हमें फ़ॉर्म को बंद होने से रोकने के लिए एक आखिरी मौका देता है। OnClose ईवेंट हैंडलर में निम्न चार संभावित मानों के साथ एक एक्शन पैरामीटर है:
- caNone. फॉर्म को बंद करने की अनुमति नहीं है। ठीक वैसे ही जैसे हमने OnCloseQuery में CanClose to False सेट किया है।
- Cahide. फॉर्म को बंद करने के बजाय आप इसे छिपा दें।
- caFree. फ़ॉर्म बंद है, इसलिए इसे आवंटित की गई मेमोरी डेल्फी द्वारा मुक्त कर दी गई है।
- caMinimize. फॉर्म को बंद करने के बजाय कम से कम किया जाता है। यह एमडीआई बच्चे के रूपों के लिए डिफ़ॉल्ट क्रिया है। जब कोई उपयोगकर्ता Windows को बंद करता है, तो OnCloseQuery इवेंट सक्रिय होता है, न कि OnClose। यदि आप विंडोज को बंद करने से रोकना चाहते हैं, तो अपना कोड OnCloseQuery ईवेंट हैंडलर में डालें, निश्चित रूप से CanClose = गलत यह नहीं करेगा।
OnDestroy
OnClose विधि संसाधित होने के बाद और प्रपत्र को बंद करना है, OnDestroy ईवेंट कहा जाता है। OnCreate इवेंट में उन लोगों के विपरीत संचालन के लिए इस ईवेंट का उपयोग करें। OnDestroy का उपयोग फ़ॉर्म से संबंधित वस्तुओं को डील करने और संबंधित मेमोरी को मुक्त करने के लिए किया जाता है।
जब किसी प्रोजेक्ट के लिए मुख्य फॉर्म बंद हो जाता है, तो एप्लिकेशन समाप्त हो जाता है।