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

解決


とも  2007-05-10 01:55:56  No: 26092

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-10 03:02:40  No: 26093

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

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

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


とも  2007-05-10 04:54:03  No: 26094

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

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


Ru  2007-05-10 17:19:36  No: 26095

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

これでできます。


とも  2007-05-10 19:20:19  No: 26096

>Ruさん

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


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

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






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