18-03-2017, 09:53 AM
(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 حين الضغط على عنوان الجدول
ملاحظة لا يهم ما تحتويه قاعدة البيانات يمكن وضع هاته الاكواد على DBRGID evement و هو يقوم بالباقيكود :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;
هذا الكود يعمل في دلفي 7 و لكن لا يعمل في XE 10 .1 ما الحل


![[-]](https://delphi4arab.net/forum/D4A2020/collapse.png)