DBGridで複数の条件でソートするには?

解決


とも  2007-05-09 16:55:56  No: 26092  IP: 192.*.*.*

DBGridのタイトルをクリックしたらその列でソートしようと考えていて、
今のところClientDataSetコンポーネントを用いて

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
   ClientDataSet1.IndexFieldNames := Column.FieldName;
end;

まではうまくいっているのですが、例えば2列目でそーとした際に、同じものは次に1列目でソートするにはどうすればよいですか?
4 c     3 a
3 a     2 b
5 b  ⇒ 5 b
2 b     4 c
のようにしたいです。

AddIndexで出来るとは書いてあったのですが、Helpを見てもよくわかりません。よろしくお願いします。

編集 削除
Ru  2007-05-09 18:02:40  No: 26093  IP: 192.*.*.*

設計時の場合
1.ClientDataSet.IndexDefsプロパティにIndexDefを一つ作成します。
2.Nameプロパティを任意に指定。
3.Fieldsプロパティに フィールド名1;フィールド名2。
4.ClientDataSet.IndexNameプロパティに 2 で指定したName値を設定。

これでソートは出来るはずです。

AddIndexは使ったこと内ので分かりませんが,
上記手順をプログラムに置き換えれば可能(のはず)

編集 削除
とも  2007-05-09 19:54:03  No: 26094  IP: 192.*.*.*

>Ruさん
ありがとうございました。出来ました。

もうひとついいですか?
3a
5b
2b
4c
のように、2列目は昇順にソート、1列目は降順にソートなどは出来ないですか?

編集 削除
Ru  2007-05-10 08:19:36  No: 26095  IP: 192.*.*.*

3.  Fieldsプロパティに フィールド名2;フィールド名1。
3.5 DescFieldsプロパティに  フィールド名1
4.  ClientDataSets.IndexNameプロパティを設定

これでできます。

編集 削除
とも  2007-05-10 10:20:19  No: 26096  IP: 192.*.*.*

>Ruさん

出来ました!ありがとうございました!

編集 削除