1. 程式人生 > >Delphi DBGridEh按標題進行排序

Delphi DBGridEh按標題進行排序

DBGridEh按標題進行排序

         DBGridEh元件可以在標題行單元格中顯示小三角形升、降排序標誌符圖片,在執行時可點選標題行,
圖片自動切換並做相應排序。具體屬性設定如下: 
     OptionsEh=dghAutoSortMarking   
      Column.Title.TitleButton=true  
      SortMarkedColumns   :當前排序列(可在執行時,程式碼中使用).

兩種程式碼:

第一種:

procedure TManageProjForm.dbgrdh1TitleBtnClick(Sender: TObject;
  ACol: Integer; Column: TColumnEh);
begin
  if   FieldName   =   ' '   then   Exit;

  if TADOQuery(TDBGridEh(Sender).DataSource.DataSet).Active = False then
  begin
      Exit;
  end;

  if Column.Title.SortMarker = smdowneh then
    TADOQuery(TDBGridEh(Sender).DataSource.DataSet).Sort := Column.FieldName
  else
    TADOQuery(TDBGridEh(Sender).DataSource.DataSet).Sort :=column.FieldName +' DESC';
end;

第二種:

procedure TManageProjForm.dbgrdhProjectTitleBtnClick(Sender: TObject;
  ACol: Integer; Column: TColumnEh);
var
  sortstring:string;   //排序列
begin
//進行排序
  with   Column   do
  begin
    if   FieldName   =   ' '   then   Exit;

    if TADOQuery(TDBGridEh(Sender).DataSource.DataSet).Active = False then
    begin
      Exit;
    end;

    case   Title.SortMarker   of
    smNoneEh:
      begin
        Title.SortMarker := smDownEh;
        sortstring := Column.FieldName + ' ASC ';
      end;
    smDownEh:
      begin
        sortstring := Column.FieldName + ' ASC ';
      end;
    smUpEh:
      begin
        sortstring := Column.FieldName + ' DESC ';
      end;
    end;
  //進行排序
    try
      TADOQuery(TDBGridEh(Sender).DataSource.DataSet).Sort := sortstring   //dataset為實際資料集變數名
    except
    end;
  end;
end; 


其實兩者差不多。注意:切記lookup型欄位不可做上述設定,否則系統會提示錯誤。