معلومات

تحديد وتسليط الضوء على صف في DBGrid

تحديد وتسليط الضوء على صف في DBGrid

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

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

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

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

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

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

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

نوع THackDBGrid = صف دراسي(TDBGrid)؛

إجراء TForm1.DBGrid1MouseMove
(المرسل: TObject ؛ Shift: TShiftState ؛ X ، Y: Integer) ؛
فار
gc: TGridCoord؛
ابدأ
gc: = DBGrid1.MouseCoord (x، y)؛
إذا (gc.X> 0) و (gc.Y> 0) thenbegin
DBGrid1.DataSource.DataSet.MoveBy
(gc.Y - THackDBGrid (DBGrid1) .Row) ؛
النهاية;
النهاية;

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

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

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

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

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

إجراء TForm1.DBGrid1DrawColumnCell
(المرسل: TObject ؛ const Rect: TRect ؛ DataCol: Integer؛
العمود: TColumn. الحالة: TGridDrawState) ؛
beginif (THackDBGrid (DBGrid1) .DataLink.ActiveRecord + 1 =
THackDBGrid (DBGrid1) .Row)
أو (gdFocused في الولاية) أو (gdSelected في الولاية) thenbegin
DBGrid1.Canvas.Brush.Color: = clSkyBlue؛
DBGrid1.Canvas.Font.Style: = DBGrid1.Canvas.Font.Style + fsBold؛
DBGrid1.Canvas.Font.Color: = clRed؛
النهاية;
النهاية;

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

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

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


شاهد الفيديو: العلوم. المجهر (أغسطس 2021).