DBGridの列タイトルをクリックでソートさせるには?


たから  2006-11-09 21:03:38  No: 23836

ClientDataSet1.IndexFieldNames:= Column.FieldName;
でうまくソートはできてるのですが、クリックするごとに、昇順、降順と繰り返してソートさせたいのですが、どのように書けばよいのでしょうか?
AddIndexを使えばよいような気がしますが具体的にどのように書けばよいのかわかりません。どなた様かよろしくお願いします。


Basser  2006-11-09 23:06:20  No: 23837

処理の流れとしては下記のような感じでいいのでは?

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
const
  SortColumn: TColumn = nil;
  SortOrder : Byte = 0;
begin
  if (SortColumn = Column) then
    SortOrder:= SortOrder shl 4
  else
  begin
    SortColumn:= Column;
    SortOrder := 1;
  end;

  case SortOrder of
    $01: (* 昇順処理 *);
    $10: (* 降順処理 *);
  else
    // ソート解除
    ClientDataSet1.IndexFieldNames:= '';
    SortColumn:= nil;
    SortOrder := 0;
  end;
end;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加