DBGrid单击标题自动排序
2006-06-23 10:40
288 查看
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var
s,cFieldName:string;
i:integer;
DataSet:TDataSet;
begin
Try DataSet:=Column.Grid.DataSource.DataSet;
if not DataSet.Active then exit;
if Column.Field.FieldKind=fkLookup then
cFieldName:=Column.Field.KeyFields
else
if Column.Field.FieldKind=fkCalculated then
cFieldName:=Column.Field.KeyFields
else
cFieldName:=Column.FieldName;
if DataSet is TCustomADODataSet then
begin
s:=TCustomADODataSet(DataSet).Sort;
if s='' then
begin
s:=cFieldName;
end else
begin
if Pos(cFieldName,s)<>0 then
begin
i:=Pos('DESC',s);
if i<=0 then
begin
s:=s+' DESC';
end else
begin
Delete(s,i,4);
end;
end else
begin
s:=cFieldName;
end;
end;
TCustomADODataSet(DataSet).Sort:=s;
end else
if DataSet is TClientDataSet then
begin
if TClientDataSet(DataSet).indexfieldnames<>'' then
begin
i:=TClientDataSet(DataSet).IndexDefs.IndexOf('i'+Column.FieldName);
if i=-1 then
begin
with TClientDataSet(DataSet).IndexDefs.AddIndexDef do
begin
Name:='i'+Column.FieldName;
Fields:=Column.FieldName;
DescFields:=Column.FieldName;
end;
end;
TClientDataSet(DataSet).IndexFieldNames:='';
TClientDataSet(DataSet).IndexName:='i'+Column.FieldName;
end else
begin
TClientDataSet(DataSet).IndexName:='';
TClientDataSet(DataSet).IndexFieldNames:=column.fieldname;
end;
end;
Except
End;
end;
var
s,cFieldName:string;
i:integer;
DataSet:TDataSet;
begin
Try DataSet:=Column.Grid.DataSource.DataSet;
if not DataSet.Active then exit;
if Column.Field.FieldKind=fkLookup then
cFieldName:=Column.Field.KeyFields
else
if Column.Field.FieldKind=fkCalculated then
cFieldName:=Column.Field.KeyFields
else
cFieldName:=Column.FieldName;
if DataSet is TCustomADODataSet then
begin
s:=TCustomADODataSet(DataSet).Sort;
if s='' then
begin
s:=cFieldName;
end else
begin
if Pos(cFieldName,s)<>0 then
begin
i:=Pos('DESC',s);
if i<=0 then
begin
s:=s+' DESC';
end else
begin
Delete(s,i,4);
end;
end else
begin
s:=cFieldName;
end;
end;
TCustomADODataSet(DataSet).Sort:=s;
end else
if DataSet is TClientDataSet then
begin
if TClientDataSet(DataSet).indexfieldnames<>'' then
begin
i:=TClientDataSet(DataSet).IndexDefs.IndexOf('i'+Column.FieldName);
if i=-1 then
begin
with TClientDataSet(DataSet).IndexDefs.AddIndexDef do
begin
Name:='i'+Column.FieldName;
Fields:=Column.FieldName;
DescFields:=Column.FieldName;
end;
end;
TClientDataSet(DataSet).IndexFieldNames:='';
TClientDataSet(DataSet).IndexName:='i'+Column.FieldName;
end else
begin
TClientDataSet(DataSet).IndexName:='';
TClientDataSet(DataSet).IndexFieldNames:=column.fieldname;
end;
end;
Except
End;
end;
相关文章推荐
- DBGrid单击标题自动排序
- 单击DBGrid列头自动排序
- 单击dbgrid列标题排序 升降序
- DbGrid标题单击排序
- DBGrid控件“点击标题栏自动排序功能”
- 在C#中实现对ListView点击列标题自动排序功能
- 在C#中实现对ListView点击列标题自动排序功能
- 在C#中实现对ListView点击列标题自动排序功能
- 巧用DBGrid控件的Sort属性实现“点击标题栏自动排序功能”
- 数据窗口单击标题栏自动进行排序,并显示升降序/拖动行可以改变行顺序
- 在C#中实现对ListView点击列标题自动排序功能
- 用DBGrid控件配合数据集组件的Sort属性实现“点击标题栏自动排序功能”
- 在C#中实现对ListView点击列标题自动排序功能
- AdvStringGrid 点击标题头 自动排序
- 最全面的DBGrid点击标题实现排序
- 在用鼠标单击DBGrid标题单元格的时候总是在这个列的左侧出现一条黑色竖线,鼠标轻开后竖线消失,怎样在单击时不出现这条竖线?
- 单击ListView列标题实现项排序功能
- 在C#中实现对ListView点击列标题自动排序功能
- 设计一个如下图所示窗体:该窗体自动位于屏幕中央;大小不可调;最小化、最大化按钮不可用;窗体标题为“烟台大学”。在该窗体上,放置一个按钮、一个标签。单击按钮时,在标签上显示当前系统时间。
- DBGridEh,DBGrid点击标题排序