procedure Tformbrty.DbGridSetOrder(paraDbGrid: TDbGrid;
paraColumn: TColumn);
var locClientDataSet :TClientDataSet;
strColumn :String;
nReturn :Integer;
function CdsSetOrder(paraCds: TClientDataSet;
paraColumn: String):Integer; //1升2降-1出错
var strIndexName :String;
begin
Result := -1;
strIndexName :=paraCds.IndexName;
if strIndexName = 'Asc_Index' then
begin
Try
ParaCds.AddIndex('Des_Index', paraColumn, [ixDescending],'','',0);
paraCds.DeleteIndex(strIndexName);
paraCds.IndexName := 'Des_Index';
Result := 2;
Except
Exit;
End;
end
else
begin
Try
ParaCds.AddIndex('Asc_Index', paraColumn, [],'','',0);
if strIndexName<>'' then
begin
paraCds.DeleteIndex(strIndexName);
end;
paraCds.IndexName := 'Asc_Index';
Result := 1;
Except
Exit;
End;
end;
end;
procedure RestoreTitle(paraDbGrid :TDbGrid);
var nColCount,i:Integer;
strCaption :String;
begin
nColCount := ParaDbGrid.Columns.Count;
for i:= 0 to nColCount - 1 do
begin
strCaption := paraDbGrid.Columns[i].Title.Caption;
if (Copy(strCaption,length(strCaption) - 1,2)='↑') or (Copy(strCaption,length(strCaption) - 1,2)='↓') then
begin
strCaption := Copy(strCaption ,1,length(strCaption) - 2);
paraDbGrid.Columns[i].Title.Caption := strCaption;
end;
end;
end;
begin
Try
locClientDataSet := paraDbGrid.DataSource.DataSet as TClientDataSet;
Except
Exit;
end;
Try
strColumn := paraColumn.FieldName;
Except
Exit;
end;
nReturn := CdsSetOrder(locClientDataSet,strColumn);
Case nReturn of
1:
begin
RestoreTitle(paraDbGrid);
paraColumn.Title.Caption := paraColumn.Title.Caption +'↑'
end;
2:
begin
RestoreTitle(paraDbGrid);
paraColumn.Title.Caption := paraColumn.Title.Caption +'↓'
end;
else
end;
end;
delphi DBGRID 升序降序排序 方法
最新推荐文章于 2020-04-06 17:52:11 发布