请问wwdbgrid这控件,点击title排序就根据选中的字段排序(升序,降序)

feiyunxiaozi 2004-09-23 04:58:58
请问wwdbgrid这控件,点击title排序就根据选中的字段排序(升序,降序),不用改变sql语句的,
我知道下面这个函数可以对dbgrid有这样的作用,但wwdbgrid怎么做呢,请大侠指教
procedure TForm1.DbGridSort(Column: TColumn);
var s,cFieldName:string;
i:integer;
DataSet:TDataSet;
procedure setTitle;
var ii:integer;
cStr:string;
c:TColumn;
begin
for ii:=0 to TDBGrid(Column.Grid).Columns.Count-1 do
begin
c:=TDBGrid(Column.Grid).Columns[ii];
cStr:=c.Title.Caption;
if (pos('▲',cStr)=1) or (pos('▼',cStr)=1) then begin
Delete(cStr,1,2);
c.Title.Caption:=cStr;
end;
end;

end;
begin
setTitle;
DataSet:=Column.Grid.DataSource.DataSet;
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;
Column.Title.Caption:='▲'+Column.Field.DisplayName;
end
else begin
if Pos(cFieldName,s)<>0 then begin
i:=Pos('DESC',s);
if i<=0 then begin
s:=s+' DESC';
Column.Title.Caption:='▼'+Column.Field.DisplayName;
end
else begin
Column.Title.Caption:='▲'+Column.Field.DisplayName;
Delete(s,i,4);
end;
end
else begin
s:=cFieldName;
Column.Title.Caption:='▲'+Column.Field.DisplayName;
end;
end;
TCustomADODataSet(DataSet).Sort:=s;
end
else if DataSet is TClientDataSet then begin
// TClientDataSet(DataSet).IndexFieldNames:=Column.FieldName;
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;
Column.Title.Caption:='▼'+Column.Field.DisplayName;
end
else
begin
TClientDataSet(DataSet).IndexName:='';
TClientDataSet(DataSet).IndexFieldNames:=column.fieldname;
Column.Title.Caption:='▲'+Column.Field.DisplayName;
end;
end;
end;
...全文
363 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
masterjames 2004-09-23
  • 打赏
  • 举报
回复
adodateset有一个 sort方法
Column: TColumn 做参数一样的传
feiyunxiaozi 2004-09-23
  • 打赏
  • 举报
回复
还是没有人回答呢
feiyunxiaozi 2004-09-23
  • 打赏
  • 举报
回复
没人知道吗?
feiyunxiaozi 2004-09-23
  • 打赏
  • 举报
回复
什么设置,可以说详细一点吗?
应该怎么做呢?
chinaandys 2004-09-23
  • 打赏
  • 举报
回复
用 dbgrideh里有一个设置
chinaandys 2004-09-23
  • 打赏
  • 举报
回复
兄弟,有这么麻烦吗, adodateset有一个 sort方法吗

5,916

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧