कॉलम शीर्षक से डेल्फी डीबीग्रिड में रिकॉर्ड कैसे छाँटें

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

में वर्णित अवधारणाओं के बाद डेल्फी डेटाबेस प्रोग्रामिंग के लिए शुरुआती गाइडनीचे दिए गए उदाहरण ADO घटकों (AdoQuery / AdoTable ADOConnection से जुड़े, DBGrid AdoQuery से जुड़े DataSource पर) का उपयोग करने के लिए प्रदर्शित करने के लिए अभिलेख DBGrid घटक में डेटाबेस तालिका से।

सभी घटक नाम डेल्फी के रूप में छोड़ दिए गए थे जब उन्हें फॉर्म पर गिरा दिया गया था (DBGrid1, ADOQuery1, AdoTable1, आदि)।

माउस डीबीग्रीड टाइटल एरिया पर चलता रहता है

सबसे पहले, देखते हैं कि DBGrid शीर्षक क्षेत्र में चलते समय माउस पॉइंटर को कैसे बदलना है। आपको बस इतना करना होगा कि DBGrid घटक के लिए OnMouseMove इवेंट में कोड जोड़ें।

नीचे दिए गए कोड बस माउसगार्ड गुण का उपयोग करता है DBGrid घटक की "गणना" करने के लिए जहां माउस पॉइंटर है। यदि यह DGBrid शीर्षक क्षेत्र के ऊपर है, तो pt.y बराबर हो जाता है, जो DBGrid (स्तंभ / फ़ील्ड शीर्षक प्रदर्शित करने वाला शीर्षक क्षेत्र) में पहली पंक्ति है।

instagram viewer
प्रक्रिया TForm1.DBGrid1MouseMove
(प्रेषक: Tobject; शिफ्ट: TShiftState; एक्स, वाई: इंटेगर);
वर
पीटी: टीग्रिडकोर्ड;
शुरू
pt: = DBGrid1.MouseCoord (x, y);
अगर pt.y = 0 फिर
DBGrid1.Cursor: = crHandPoint
अन्य
DBGrid1.Cursor: = crDefault;
समाप्त;

कॉलम पर क्लिक करें और कॉलम शीर्षक फ़ॉन्ट बदलें

यदि आप डेल्फी डेटाबेस विकास के लिए ADO दृष्टिकोण का उपयोग कर रहे हैं, और डेटासेट में रिकॉर्ड को सॉर्ट करना चाहते हैं, तो आपको अपने AdoDataset (ADOQuery, AdoTable) की सॉर्ट संपत्ति सेट करने की आवश्यकता है।

सॉर्ट प्रॉपर्टी मानक SQL क्वेरी के "ORDER BY" भाग को इंगित करने वाला व्यापक मूल्य है। बेशक, आपको सॉर्ट प्रॉपर्टी का उपयोग करने में सक्षम होने के लिए SQL क्वेरी लिखने की आवश्यकता नहीं है। किसी एकल फ़ील्ड या किसी अल्पविराम से अलग की गई फ़ील्ड के नाम के आधार पर सॉर्ट प्रॉपर्टी को क्रमबद्ध क्रम के अनुसार सेट करें।

यहाँ एक उदाहरण है:

ADOTable1.Sort: = 'वर्ष DESC, ArticleDate ASC'

DBGrid घटक के OnTitleClick इवेंट में एक कॉलम पैरामीटर है, जिसमें उपयोगकर्ता द्वारा क्लिक किए गए कॉलम पर संकेत मिलता है। प्रत्येक कॉलम (ऑब्जेक्ट का प्रकार टीसीओल्यूम) के पास एक फील्ड प्रॉपर्टी है जो फील्ड (TField) को दर्शाती है कॉलम, और फ़ील्ड में अपनी FieldName संपत्ति अंतर्निहित क्षेत्र का नाम रखती है डाटासेट।

इसलिए, फ़ील्ड / स्तंभ द्वारा ADO डेटासेट को सॉर्ट करने के लिए, एक सरल रेखा का उपयोग किया जा सकता है:

TCustomADODataSet (DBGrid1.DataSource के साथ डेटासेट) करते हैं
क्रमबद्ध करें: = कॉलम। खेत। क्षेत्र का नाम; // + 'ASC' या 'DESC'

नीचे दिए गए कॉलम के आधार पर रिकॉर्ड्स को सॉर्ट करने वाले ऑनटाइट क्लिक के लिए भी कोड है। कोड, हमेशा की तरह, विचार का विस्तार करता है।

सबसे पहले, हम चाहते हैं, किसी तरह, उस कॉलम को चिह्नित करें जो वर्तमान में क्रमबद्ध क्रम के लिए उपयोग किया जाता है। अगला, यदि हम एक कॉलम शीर्षक पर क्लिक करते हैं और डेटासेट पहले से ही उस कॉलम द्वारा सॉर्ट किया जाता है, तो हम ASC (आरोही) से DESC (अवरोही) और इसके विपरीत सॉर्ट क्रम बदलना चाहते हैं। अंत में, जब हम किसी अन्य कॉलम द्वारा डेटासेट को सॉर्ट करते हैं, तो हम पहले से चयनित कॉलम से चिह्न हटाना चाहते हैं।

रिकॉर्ड को "सॉर्ट" करने वाले कॉलम को चिह्नित करने के लिए, सरलता के लिए, हम कॉलम शीर्षक की फ़ॉन्ट शैली को केवल बोल्ड में बदल देंगे, और जब कोई अन्य कॉलम का उपयोग कर डेटा सॉर्ट किया जाएगा, तो इसे हटा दें।

प्रक्रिया TForm1.DBGrid1TitleClick (कॉलम: TColumn);
{$ जे +}स्थिरांक पिछलाकॉलमाइंडेक्स: पूर्णांक = -1;
{$ जम्मू}
beginif DBGrid1.DataSource। डेटासेट है TCustomADODataSet thenwith TCustomADODataSet (DBGrid1.DataSource डेटासेट) dobegintry
DBGrid1.Columns [PreviousColumnIndex] .title। फ़ॉन्ट। शैली: =
DBGrid1.Columns [PreviousColumnIndex] .title। फ़ॉन्ट। शैली - [एफएसबोल्ड];
exceptend;
Column.title। फ़ॉन्ट। शैली: =
Column.title। फ़ॉन्ट। शैली + [fsBold];
पिछलाकॉलमाइंडेक्स: = कॉलम। सूचकांक;
अगर (पद (कॉलम) खेत। फ़ील्डनाम, सॉर्ट करें) = 1)
तथा (पद ('DESC', सॉर्ट) = 0) फिर
क्रमबद्ध करें: = कॉलम। खेत। फ़ील्डनाम + 'DESC'
अन्य
क्रमबद्ध करें: = कॉलम। खेत। फ़ील्डनाम + 'एएससी';
समाप्त;
समाप्त;

उपरोक्त कोड का उपयोग करता है टाइप कांस्टेंट सॉर्ट क्रम के लिए पहले "चयनित" कॉलम के मूल्य को संरक्षित करने के लिए।