delphi4arab منتديات دلفي للعرب
كيف ارتب الجدول dbgrid في البرنامج تنازليا على قاعدة البيانات في دلفي - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف ارتب الجدول dbgrid في البرنامج تنازليا على قاعدة البيانات في دلفي (/showthread.php?tid=7039)



كيف ارتب الجدول dbgrid في البرنامج تنازليا على قاعدة البيانات في دلفي - عبدالباقي - 11-06-2015

السلام عليكم كيف ارتب الجدول dbgrid في البرنامج تنازليا على قاعدة البيانات و اضهاره على تطبيق دالفي


كيف ارتب الجدول dbgrid في البرنامج تنازليا على قاعدة البيانات في دلفي - Mr.DOS - 11-06-2015

السلام عليكم

استعمل Query
كود :
SELECT column_name, column_name FROM table_name ORDER BY column_name ASC|DESC;



كيف ارتب الجدول dbgrid في البرنامج تنازليا على قاعدة البيانات في دلفي - karimprog - 30-06-2015

السلام عليكم
ملاحظة هاته اول مشاركة لي اعتذر كوني لا اجيد التعامل مع الموقع و خاصة كيفية كتابة الكود و ارساله
ربما يكون مبعثر بعض الشي لكنه صحيح و شغال و هو سهل جدا.
على العموم هناك ملف مرفق يشمل الكود كاملا مع 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 و هو يقوم بالباقي


RE: كيف ارتب الجدول dbgrid في البرنامج تنازليا على قاعدة البيانات في دلفي - format82 - 18-03-2017

(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  ما الحل


RE: كيف ارتب الجدول dbgrid في البرنامج تنازليا على قاعدة البيانات في دلفي - format82 - 23-03-2017

الحمد لله تم تعديل الكود حيث يعمل الان في XE 10.1
هذا هو الكود حتي يستفيد منه الجميع 
كود :
{$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 (WideString (Column.Field.FieldName), Sort) = 1) and (Pos (WideString ('DESC'), Sort) = 0) then      Sort := Column.Field.FieldName + ' DESC'    else      Sort := Column.Field.FieldName + ' ASC';  end;