11-06-2015, 02:02 PM
11-06-2015, 03:53 PM
السلام عليكم
استعمل Query
استعمل Query
كود :
SELECT column_name, column_name
FROM table_name
ORDER BY column_name ASC|DESC;30-06-2015, 05:09 AM
السلام عليكم
ملاحظة هاته اول مشاركة لي اعتذر كوني لا اجيد التعامل مع الموقع و خاصة كيفية كتابة الكود و ارساله
ربما يكون مبعثر بعض الشي لكنه صحيح و شغال و هو سهل جدا.
على العموم هناك ملف مرفق يشمل الكود كاملا مع source
ترتيب DBGRID سهل جدا و دون الحاجة الى SQL
ضع الاكواد التالية في DBGRID
الكود الاول يسمح بمعرفة احداثيات الماوس حتى يتم الترتيب حسب الحقل الذي يوجد فوقه الماوس
الكود الثاني يسمح بالترتيب الفعلي لـ DBGRID حين الضغط على عنوان الجدول
ملاحظة لا يهم ما تحتويه قاعدة البيانات يمكن وضع هاته الاكواد على DBRGID evement و هو يقوم بالباقي
ملاحظة هاته اول مشاركة لي اعتذر كوني لا اجيد التعامل مع الموقع و خاصة كيفية كتابة الكود و ارساله
ربما يكون مبعثر بعض الشي لكنه صحيح و شغال و هو سهل جدا.
على العموم هناك ملف مرفق يشمل الكود كاملا مع 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;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 ما الحل
23-03-2017, 09:24 PM
الحمد لله تم تعديل الكود حيث يعمل الان في 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;