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;
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章