چند سال پیش، آی بی ام تصمیم گرفت که تولید یکی از قطعات کامپیوترهایش را به ژاپنیها بسپارد.
در مشخصات تولید محصول نوشته بود سه قطعه معیوب در هر ۱۰۰۰۰قطعه ای که تولید می شود قابل قبول است. هنگامیکه قطعات تولید شدند و برای آی بی ام فرستاده شدند، نامه ای همراه آنها بود با این مضمون
مفتخریم که سفارش شما را سر وقت آماده کرده و تحویل می دهیم.
برای آن سه قطعه معیوبی هم که خواسته بودید خط تولید جداگانه ای درست کردیم و آنها را فراهم ساختیم
امیدواریم این کار رضایت شما را فراهم سازد.
(این ژاپنی ها خوب بلدن تیکه بندازن )
کد زیر عمل مرتب سازی بر روی کلاینت دیتاست را انجام میدهد . ( نظر یادتون نشه )
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;