procedure TwZkjck.OnDbgrid1TitleClick(Column: TColumn); var sName:string; dtstLssjj:TClientDataset; syxx:TIndexOptions;//索引选项 begin if Column.Grid=nil then exit; if Column.Grid.DataSource=nil then exit; if Column.Grid.DataSource.DataSet=nil then exit;
dtstLssjj:=TClientDataset(Column.Grid.DataSource.DataSet); if dtstLssjj.IndexDefs.Count>0 then begin sName:=dtstLssjj.IndexDefs[0].Name; if Pos(Column.Field.FullName,sName)>0 then begin if ixDescending in dtstLssjj.IndexDefs[0].Options then syxx:=[ixCaseInsensitive] else syxx:=[ixDescending,ixCaseInsensitive]; end else syxx:=[ixCaseInsensitive]; end else syxx:=[ixCaseInsensitive];
var
sName:string;
dtstLssjj:TClientDataset;
syxx:TIndexOptions;//索引选项
begin
if Column.Grid=nil then exit;
if Column.Grid.DataSource=nil then exit;
if Column.Grid.DataSource.DataSet=nil then exit;
dtstLssjj:=TClientDataset(Column.Grid.DataSource.DataSet);
if dtstLssjj.IndexDefs.Count>0 then
begin
sName:=dtstLssjj.IndexDefs[0].Name;
if Pos(Column.Field.FullName,sName)>0 then
begin
if ixDescending in dtstLssjj.IndexDefs[0].Options then
syxx:=[ixCaseInsensitive]
else
syxx:=[ixDescending,ixCaseInsensitive];
end
else
syxx:=[ixCaseInsensitive];
end
else
syxx:=[ixCaseInsensitive];
dtstLssjj.IndexDefs.Clear;
sName:=Column.Field.FullName+timetostr(now);
dtstLssjj.IndexDefs.Add(sName,Column.Field.FullName,syxx);
dtstLssjj.IndexName:=sName;
end;
IndexFieldNames=Field1;Field2;Field3;Field4
---------------------------------------------
以上情况从表将按照Field4升序排序如果需要按照Field4降序排序,那么就创建IndexDefs;设置新IndexDef的Fields为Field1;Field2;Field3;Field4,然后设置这个IndexDef的DescFields为Field4,最后选择IndexName为这个新创建的IndexDef;