كيف ارتب الجدول dbgrid في البرنامج تنازليا على قاعدة البيانات في دلفي
#4
(30-06-2015, 05:09 AM)karimprog كتب : السلام عليكم
ملاحظة هاته اول مشاركة لي اعتذر كوني لا اجيد التعامل مع الموقع و خاصة كيفية كتابة الكود و ارساله
ربما يكون  مبعثر بعض الشي لكنه صحيح و شغال و هو سهل جدا.
على العموم هناك ملف مرفق يشمل الكود كاملا مع source

ترتيب DBGRID سهل جدا و دون الحاجة الى SQL
ضع الاكواد التالية في DBGRID
الكود الاول يسمح بمعرفة احداثيات الماوس حتى يتم الترتيب حسب الحقل الذي يوجد فوقه الماوس

كود :
procedure TForm1.DBGrid1MouseMove(Sender: TObject;  Shift: TShiftState; X, Y: Integer); var  pt: TGridcoord; begin  pt:= DBGrid1.MouseCoord(x, y);  if pt.y=0 then    DBGrid1.Cursor:=crHandPoint  else    DBGrid1.Cursor:=crDefault; end;

الكود الثاني يسمح بالترتيب الفعلي لـ DBGRID حين الضغط على عنوان الجدول

كود :
procedure TForm1.DBGrid1TitleClick(Column: TbsColumn); {$J+} const PreviousColumnIndex : integer = 0; {$J-} begin  if DBGrid1.DataSource.DataSet is TCustomADODataSet then  with TCustomADODataSet(DBGrid1.DataSource.DataSet) do  begin    try      DBGrid1.Columns[PreviousColumnIndex].title.Font.Style :=      DBGrid1.Columns[PreviousColumnIndex].title.Font.Style - [fsBold];   except    end;    Column.title.Font.Style :=    Column.title.Font.Style + [fsBold];    PreviousColumnIndex := Column.Index;    if (Pos(Column.Field.FieldName, Sort) = 1)    and (Pos(' DESC', Sort)= 0) then      Sort := Column.Field.FieldName + ' DESC'    else      Sort := Column.Field.FieldName + ' ASC';  end; end;
ملاحظة لا يهم ما تحتويه قاعدة البيانات يمكن وضع هاته الاكواد على DBRGID evement و هو يقوم بالباقي

هذا الكود يعمل في دلفي 7 و لكن لا يعمل في XE 10 .1  ما الحل
[-] كل من 2 users say قال شكرا ل format82 على المشاركة المفيدة
  • sami_altomi, rm31
الرد


الردود في هذا الموضوع
RE: كيف ارتب الجدول dbgrid في البرنامج تنازليا على قاعدة البيانات في دلفي - بواسطة format82 - 18-03-2017, 09:53 AM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم