dbgrideh点击标头排序函数

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;
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值