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=10788)



الترتيب في DBGrid - appakar - 21-04-2020

لدي المكونات التالية
FDConnection1
FDTable1
Datasourece1
DBGrid1

في الحدث dbgridonTitleClick كيف ترتيب البيانات
جربت هذا الكود
كود :
procedure TForm1.DBGrid1TitleClick(Column: TColumn); begin if FDTable1.IndexFieldNames = column.Field.FieldName then FDTable1.IndexFieldNames := column.Field.FieldName +' DESC' else FDTable1.IndexFieldNames := column.Field.FieldName; end;
يتم الترتيب في الضغطة الأولى لكن عند اعادة الترتيب تظهر رسالة الخطأ التالية
L'objet [<عنوان الخانة>DESC] est introuvable



RE: الترتيب في DBGrid - ghostdz - 22-04-2020

التعليمة DESC تعمل في Query وليس في Table عليك بمراجعة الرابط التالي 
http://docwiki.embarcadero.com/Libraries/Rio/fr/FireDAC.Comp.Client.TFDTable.IndexFieldNames

جرب الكود التالي 
كود :
procedure SortingTable(DataSet: TFDDataSet; AColumn: TColumn); var   FieldName, Sort: string;   SortPos: Integer;   procedure SwapSort;   begin     if Sort = '' then       Sort := ':AN'     else     begin       if Sort[2] = 'D' then         Sort[2] := 'A'       else Sort[2] := 'D';     end;   end; begin   if AColumn.Field.IsBlob then     Exit;   SortPos := Pos(':', DataSet.IndexFieldNames);   if SortPos = 0 then     SortPos := Length(DataSet.IndexFieldNames) + 1   else Sort := Copy(DataSet.IndexFieldNames, SortPos, 3);   FieldName := Copy(DataSet.IndexFieldNames, 1, SortPos - 1);   if FieldName = AColumn.Field.FieldName then     SwapSort   else   begin     Sort := ':AN';     FieldName := AColumn.Field.FieldName;   end;   DataSet.IndexFieldNames := FieldName + Sort; end;



RE: الترتيب في DBGrid - appakar - 22-04-2020

مشكور الأخ ghostdz
حلت المشكلة