برنامه نویس

به وبلاگ خودتان خوش آمدید.

برنامه نویس

به وبلاگ خودتان خوش آمدید.

sort clientdataset در دلفی

کد زیر عمل مرتب سازی بر روی کلاینت دیتاست را انجام میدهد . ( نظر یادتون نشه )  

 

 procedure SortClientDataset(Column: TDBGridColumnItem;grid:tdbadvgrid;ClientDataSet:TClientDataSet);
var
 andstr:string;
 i:integer;
begin
try
  andstr:='';
  if (trim(Column.FieldName ) ='') then exit;
  if (grid.DataSource.DataSet.FieldByName(Column.FieldName ).FieldKind<>fkData ) then exit;


  if (grid.DataSource.DataSet.ClassNameIs ('TClientDataSet')=true) then
  begin
    if ClientDataSet.IndexName='' then
      andstr:=''
    else
      andstr:=';';
  ClientDataSet.AddIndex(Column.FieldName,Column.FieldName,[ixCaseInsensitive]);
  ClientDataSet.AddIndex(Column.FieldName+' DESC',Column.FieldName,[ixCaseInsensitive,ixDescending]);
//مرتب سازی به صورت صعودی
   if  KeyDataToShiftState(1)=[] then
    begin
       for i:=0 to grid.Columns.Count -1 do
        grid.Columns[i].HeaderFont .Color:=clWhite;
        Column.HeaderFont .Color:=clyellow;
        ClientDataSet.IndexName:=Column.FieldName
    end;
//مرتب سازی نزولی
    if  KeyDataToShiftState(1)=[ssshift] then
    begin
     for i:=0 to grid.Columns.Count-1 do
      grid.Columns[i].headerFont.Color:=clWhite;
      Column.HeaderFont .Color:=$001D9DE2;
      ClientDataSet.IndexName:= Column .FieldName+ ' DESC';
    end;
//مرتب سازی چند ستون به صورت صعودی
    if  KeyDataToShiftState(1)=[ssctrl] then
    begin
       ClientDataSet.IndexFieldNames :=ClientDataSet.IndexName+andstr+Column.FieldName;
       Column.HeaderFont .Color:=clyellow;
    end;
       ClientDataSet.First;

  end;
except on  e:exception do
       ShowMessage (e.Message );
end;
end;

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد