डेल्फी का उपयोग करके एक माउसओवर रंग हाइलाइट बनाएं

click fraud protection

क्या आपने कभी एक मेनू या टेबल कॉलम या पंक्ति हाइलाइट देखा है जब आपका माउस उस पर मंडराता है? यही हमारा लक्ष्य यहां है: जब माउस पॉइंटर सीमा के भीतर हो तो एक पंक्ति हाइलाइट हो जाती है।

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

हालांकि, इस विषय पर अति-सरलीकृत ट्यूटोरियल द्वारा मूर्ख मत बनो। बस सेट करना काफी आसान लग सकता है dgRowSelect संपत्ति, लेकिन याद है कि जब dgRowSelect में शामिल है विकल्प, को dgEditing ध्वज को अनदेखा किया जाता है, जिसका अर्थ है कि ग्रिड का उपयोग करके डेटा को संपादित करना अक्षम है।

नीचे आपको जो मिलेगा, वह है कि कैसे सक्षम किया जाए मूषक के ऊपर से प्रकार का DBGrid पंक्ति के लिए ईवेंट, ताकि माउस रिकॉर्ड और स्थित हो, जिससे रिकॉर्ड सक्रिय हो जाए ताकि डीबीग्रिड में संबंधित पंक्ति को उजागर किया जा सके।

instagram viewer

कैसे OnMouseOver और डेल्फी घटकों के साथ काम करने के लिए

व्यापार का पहला क्रम है लेखन कोड के लिए OnMouseMove TDBGrid घटक में घटना ताकि वह DBGrid की पंक्ति और स्तंभ (सेल) का पता लगा सके कि माउस ओवर होवर कर रहा है।

यदि माउस ग्रिड के ऊपर है (हाथ में है OnMouseMove घटना हैंडलर), आप का उपयोग कर सकते हैं MoveBy माउस कर्सर को "नीचे" प्रदर्शित करने के लिए वर्तमान रिकॉर्ड सेट करने के लिए डेटासेट घटक की विधि।

प्रकार ThackDBGrid = कक्षा(TDBGrid);
...
प्रक्रिया TForm1.DBGrid1MouseMove
(प्रेषक: Tobject; शिफ्ट: TShiftState; एक्स, वाई: इंटेगर);
वर
gc: TGridCoord;
शुरू
gc: = DBGrid1.MouseCoord (x, y);
अगर (जीसी। X> 0) तथा (जीसी। Y> 0) thenbegin
DBGrid1.DataSource। डेटासेट। MoveBy
(जीसी। Y - THackDBGrid (DBGrid1) .Row);
समाप्त;
समाप्त;

समान कोड का उपयोग यह दिखाने के लिए किया जा सकता है कि शीर्षक बार के ऊपर माउस किस सेल पर घूमता है और कर्सर को बदलने के लिए।

सक्रिय रिकॉर्ड को सही ढंग से सेट करने के लिए, आपको एक DBGrid को हैक करने और संरक्षित पर अपने हाथों को प्राप्त करने की आवश्यकता है पंक्ति संपत्ति। पंक्ति की संपत्ति TCustomDBGrid घटक वर्तमान में सक्रिय पंक्ति का संदर्भ रखता है।

अनेक डेल्फी घटक उपयोगी गुण और विधियाँ हैं जो एक डेल्फी डेवलपर के लिए अदृश्य या संरक्षित हैं। उम्मीद है, घटक के ऐसे संरक्षित सदस्यों तक पहुंचने के लिए, "संरक्षित हैक" नामक एक सरल तकनीक का उपयोग किया जा सकता है।

ऊपर दिए गए कोड के साथ, जब आप माउस को ग्रिड पर ले जाते हैं, तो चयनित रिकॉर्ड माउस कर्सर के "नीचे" ग्रिड में प्रदर्शित होता है। वर्तमान रिकॉर्ड को बदलने के लिए ग्रिड पर क्लिक करने की कोई आवश्यकता नहीं है।

उपयोगकर्ता के अनुभव को बढ़ाने के लिए सक्रिय पंक्ति को हाइलाइट करें:

प्रक्रिया TForm1.DBGrid1DrawColumnCell
(प्रेषक: Tobject; const Rect: TRect; DataCol: पूर्णांक;
कॉलम: टीसीओल्यूम; राज्य: TGridDrawState);
beginif (THackDBGrid (DBGrid1) .DataLink ActiveRecord + 1 =
THackDBGrid (DBGrid1) .Row)
या (राज्य में gdFocused) या (राज्य में gdSelected) thenbegin
DBGrid1.Canvas। ब्रश। रंग: = clSkyBlue;
DBGrid1.Canvas। फ़ॉन्ट। शैली: = DBGrid1.Canvas। फ़ॉन्ट। शैली + [fsBold];
DBGrid1.Canvas। फ़ॉन्ट। रंग: = लिपटा;
समाप्त;
समाप्त;

OnDrawColumnCell इवेंट का उपयोग ग्रिड की कोशिकाओं में डेटा के लिए एक अनुकूलित ड्राइंग की आवश्यकता को संभालने के लिए किया जाता है।

आप सभी अन्य पंक्तियों से चयनित पंक्ति को अलग करने के लिए थोड़ी चाल का उपयोग कर सकते हैं। गौर कीजिए कि द पंक्ति संपत्ति (पूर्णांक) के बराबर है ActiveRecord (+1) की संपत्ति डेटा लिंक ऑब्जेक्ट जो चयनित पंक्ति चित्रित होने वाली है।

आप शायद इस व्यवहार को अक्षम करना चाहते हैं ( MoveBy में विधि OnMouseMove घटना हैंडलर) जब डेटासेट एक DBGrid से जुड़ा है संपादित करें या सम्मिलित करें मोड।

instagram story viewer