DBGrid单击标题自动排序

原创 2006年06月23日 10:40:00
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;

DBGridEh,DBGrid点击标题排序

最近在找关于解决DBGridEh,DBGrid点击标题排序的最简单方法的同时,发现说法很多,但是没有找到一个比较详细的。 所以我在这里做一个小的总结,有不足之处请大家多多指教。 首先说下关于DBG...
  • haynes
  • haynes
  • 2013年06月11日 14:01
  • 479

数据窗口单击标题栏自动进行排序,并显示升降序/拖动行可以改变行顺序

这是一个PB9写的数据窗口单击标题自动排序的标准datawindow对象forward global type uo_datawindow from datawindow end type end f...
  • yyoinge
  • yyoinge
  • 2011年05月26日 17:33
  • 2243

WPS文档标题自动排序的方法

  • 2015年09月23日 11:05
  • 231KB
  • 下载

JS点击标题自动排序

站长特效 js实现点击分类排序效果 站长特效网  * {   padding:0;   margin:0;  }  body {   font-family:verdana;   f...

单击列标题排序

  • 2004年07月08日 00:00
  • 12KB
  • 下载

Delphi中实现DBGrid列宽度自动调整

      发现一些ERP的软件的查询,查询出来结果之后,有的字段列宽过大,这时候要通过右键--初始化表格设置 这样的方式来调整表格的列宽。这样操作让人觉得麻烦,突然在网上看到这样的一篇文章,记下来备...

单击列标题排序

  • 2006年02月23日 09:05
  • 9KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: DBGrid单击标题自动排序
举报原因:
原因补充:

(最多只允许输入30个字)