إنشاء تمييز لون الفأرة باستخدام دلفي

هل سبق لك أن رأيت عمودًا أو عمودًا أو قائمة أو صف محددًا بلون مختلف عند تحريك الماوس فوقه؟ هذا هو هدفنا هنا: لإبراز صف عندما يكون مؤشر الماوس ضمن النطاق.

مكون TDBGrid دلفي هو أحد جواهر VCL. تم تصميم DBGrid لتمكين المستخدم من عرض البيانات وتحريرها في شبكة مجدولة ، ويوفر طرقًا مختلفة لتخصيص الطريقة التي يمثل بها بياناته الخاصة. فمثلا، إضافة لون إلى شبكات قاعدة البيانات الخاصة بك سيعزز المظهر ويميز أهمية بعض الصفوف أو الأعمدة داخل قاعدة البيانات.

ومع ذلك ، لا تنخدع ببرامج تعليمية مفرطة في التبسيط حول هذا الموضوع. قد يبدو من السهل بما يكفي لتعيين dgRowSelect الملكية ، ولكن تذكر ذلك متى dgRowSelect يتم تضمينه في خيارات، ال تعديل يتم تجاهل الإشارة ، مما يعني أن تحرير البيانات باستخدام الشبكة معطّل.

ما ستجده أدناه هو شرح لكيفية تمكين على الفأرة فوق نوع من حدث لصف DBGrid، بحيث يتم تسجيل الماوس وتحديد موقعه ، مما يجعل السجل نشطًا لتمييز الصف المقابل في DBGrid.

كيفية العمل مع مكونات OnMouseOver و Delphi

الترتيب الأول للعمل هو كتابة التعليمات البرمجية من أجل OnMouseMove حدث في مكون TDBGrid بحيث يمكن تحديد موقع الصف والعمود (الخلية) DBGrid التي تحوم الماوس فوق.

instagram viewer

إذا كان الماوس فوق الشبكة (معالجة في OnMouseMove معالج الأحداث) ، يمكنك استخدام يتحرك بواسطة طريقة مكون DataSet لتعيين السجل الحالي إلى السجل المعروض "أسفل" مؤشر الماوس.

اكتب THackDBGrid = صف دراسي(TDBGrid) ؛
...
إجراء TForm1.DBGrid1MouseMove
(المرسل: الكائن ؛ التحول: TShiftState ؛ X ، Y: عدد صحيح) ؛
فار
gc: TGridCoord ؛
ابدأ
gc: = DBGrid1.MouseCoord (x، y)؛
إذا (ج. X> 0) و (ج. ص> 0) ثم تبدأ
DBGrid1.DataSource. DataSet. يتحرك بواسطة
(ج. Y - THackDBGrid (DBGrid1) .Row) ؛
النهاية;
النهاية;

يمكن استخدام رمز مشابه لإظهار الخلية التي تحوم الماوس فوقها ولتغيير المؤشر عندما يكون فوق شريط العنوان.

من أجل تعيين السجل النشط بشكل صحيح ، تحتاج إلى اختراق DBGrid ووضع يديك على المحمية صف خاصية. ال صف ممتلكات أ TCustomDBGrid يحتوي المكون على المرجع إلى الصف النشط حاليًا.

كثير مكونات دلفي لديها خصائص وأساليب مفيدة تم تمييزها على أنها غير مرئية أو محمية لمطور دلفي. نأمل ، للوصول إلى الأعضاء المحميين في أحد المكونات ، يمكن استخدام تقنية بسيطة تسمى "الاختراق المحمي".

باستخدام الرمز أعلاه ، عند تحريك الماوس فوق الشبكة ، يكون السجل المحدد هو السجل المعروض في الشبكة "أسفل" مؤشر الماوس. ليست هناك حاجة للنقر على الشبكة لتغيير السجل الحالي.

إبراز الصف النشط لتحسين تجربة المستخدم:

إجراء TForm1.DBGrid1DrawColumnCell
(المرسل: الكائن ؛ ثابت Rect: TRect؛ DataCol: عدد صحيح؛
العمود: TColumn ؛ الدولة: TGridDrawState) ؛
تبدأ (THackDBGrid (DBGrid1). DataLink. ActiveRecord + 1 =
THackDBGrid (DBGrid1) .Row)
أو (gd تركز في الدولة) أو (gdSelected in State) ثم تبدأ
DBGrid1.Canvas. فرشاة. اللون: = clSkyBlue ؛
DBGrid1.Canvas. الخط. النمط: = DBGrid1.Canvas. الخط. نمط + [fsBold] ؛
DBGrid1.Canvas. الخط. اللون: = clRed ؛
النهاية;
النهاية;

ال OnDrawColumnCell يتم استخدام الحدث لمعالجة الحاجة إلى رسم مخصص للبيانات في خلايا الشبكة.

يمكنك استخدام حيلة صغيرة لتمييز الصف المحدد عن جميع الصفوف الأخرى. اعتبر أن صف خاصية (عدد صحيح) يساوي سجل نشط (+1) ملكية وصلة البيانات الكائن الذي على وشك أن يتم رسمه في الصف المحدد.

ربما تريد تعطيل هذا السلوك ( يتحرك بواسطة الطريقة في OnMouseMove معالج الحدث) متى DataSet متصل بـ DBGrid في تعديل أو إدراج الوضع.

instagram story viewer