关闭

dbgrideh点击标头排序函数

标签: string
674人阅读 评论(0) 收藏 举报
procedure SortDBGridEh(Sender: TObject; ACol: Integer; Column: TColumnEh);
var
  FieldName : 
string;
  SortStr   : 
string;
begin
  Screen.Cursor :
= crSQLWait;
  
try
    
if (Sender is TDBGridEh) and ((Sender as TDBGridEh).DataSource.DataSet <> nil) then
    begin
      
if not ((Sender as TDBGridEh).DataSource.DataSet is TCustomADODataSet) then
        Exit;
      
if not (Sender as TDBGridEh).DataSource.DataSet.Active then
        Exit;
      FieldName :
= Column.FieldName;
      
if (Sender as TDBGridEh).DataSource.DataSet.FindField(FieldName).IsBlob then
        Exit;
      
if (Sender as TDBGridEh).DataSource.DataSet.FieldByName(FieldName).FieldKind =fkData then
        SortStr :
= FieldName
      
else if (Sender as TDBGridEh).DataSource.DataSet.FieldByName(FieldName).FieldKind =fkLookup then
        FieldName :
= (Sender as TDBGridEh).DataSource.DataSet.FieldByName(FieldName).KeyFields
      
else
        FieldName :
= '';
      
if (FieldName = '') or (Pos(';', FieldName) > 0) then
        Exit;
      
case Column.Title.SortMarker of
        smNoneEh:
        begin
          TCustomADODataSet((Sender 
as TDBGridEh).DataSource.DataSet).Sort :=FieldName+' DESC';
        end;
        smUpEh:
        begin
          TCustomADODataSet((Sender 
as TDBGridEh).DataSource.DataSet).Sort :=FieldName + ' DESC';
        end;
        smDownEh:
        begin
          TCustomADODataSet((Sender 
as TDBGridEh).DataSource.DataSet).Sort := FieldName;
        end;
      end;
    end;
  
finally
    Screen.Cursor :
= crDefault;
  end;
end;
 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:53197次
    • 积分:769
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:5篇
    • 译文:1篇
    • 评论:16条
    文章分类