كيفية MultiSelect في دلفي DBGrid

كيفية MultiSelect في دلفي DBGrid

دلفي DBGrid هي واحدة من المكونات الأكثر دراية DB تستخدم في تطبيقات قاعدة البيانات ذات الصلة. الغرض الرئيسي منه هو تمكين مستخدمي التطبيق من معالجة السجلات من مجموعة بيانات في شبكة جدولية.

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

السماح باختيارات متعددة

لتمكين الاختيار المتعدد ، تحتاج فقط إلى تعيين dgMultiSelect عنصر إلى "صحيح" في خيارات خاصية. متى dgMultiSelect هو "صواب" ، يمكن للمستخدمين تحديد صفوف متعددة في الشبكة باستخدام التقنيات التالية:

  • انقر فوق Ctrl + Mouse
  • التحول + مفاتيح الأسهم

يتم تمثيل الصفوف / السجلات المحددة كإشارات مرجعية وتخزينها في الشبكة SelectedRows خاصية.

لاحظ أن SelectedRows هو مفيد فقط عندما يكون خيارات تم تعيين الخاصية إلى "صواب" لكليهما dgMultiSelect و dgRowSelect. من ناحية أخرى ، عند استخدام dgRowSelect (عندما يتعذر تحديد خلايا فردية) لن يتمكن المستخدم من تحرير السجلات مباشرة من خلال الشبكة ، ويتم ضبط dgEditing تلقائيًا على "خطأ".

ال SelectedRows الخاصية هي كائن من النوع TBookmarkList. يمكننا استخدام SelectedRows خاصية إلى ، على سبيل المثال:

  • الحصول على عدد الصفوف المحددة
  • مسح التحديد (إلغاء التحديد)
  • حذف جميع السجلات المحددة
  • تحقق من تحديد سجل معين

لتعيين dgMultiSelect إلى "صحيح" ، يمكنك إما استخدام كائن المفتش في وقت التصميم أو استخدم أمر مثل هذا في وقت التشغيل:

DBGrid1.Options: = DBGrid1.Options + dgMultiSelect؛

مثال dgMultiSelect

وضع جيد لاستخدامه dgMultiSelect قد تكون عندما تحتاج إلى خيار لتحديد سجلات عشوائية أو إذا كنت بحاجة إلى مجموع قيم الحقول المحددة.

يستخدم المثال التالي مكونات ADO (AdoQuery متصلا ADOConnection و DBGrid متصلا AdoQuery على مصدر البيانات) لعرض السجلات من جدول قاعدة البيانات في مكون DBGrid.

يستخدم الرمز تحديدًا متعددًا للحصول على مجموع القيم في حقل "الحجم". استخدم نموذج التعليمة البرمجية هذا إذا كنت تريد تحديد DBGrid بالكامل:

إجراء TForm1.btnDoSumClick (Sender: TObject)؛
فار
i: عدد صحيح
المبلغ: واحد ؛
beginif DBGrid1.SelectedRows.Count> 0 thenbegin
sum: = 0؛
مع DBGrid1.DataSource.DataSet dobeginfor أنا: = 0 إلى DBGrid1.SelectedRows.Count-1 dobegin
GotoBookmark (مؤشر (DBGrid1.SelectedRows.Itemsi))؛
sum: = sum + AdoQuery1.FieldByName ('Size'). AsFloat؛
النهاية;
النهاية;
edSizeSum.Text: = FloatToStr (sum)؛
النهاية
النهاية;