StringGridで五十音順にソートするには?


デコデコ  2003-11-20 22:13:07  No: 5698  IP: [192.*.*.*]

はじめまして!
いつも参考にさせて頂いております。

StringGridを使ってアドレス帳を作っているのですが、
編集や新規で登録した場合に、それを五十音順で並べ替えるように
したいと思っています。
どのようにすればよいのでしょうか。

いろいろ検索してみたのですが見つけられなかったため
質問させていただきました。

よろしくお願いします。

編集    削除
にしの  2003-11-21 04:25:01  No: 5699  IP: [192.*.*.*]

ソートに関しては、まずアルゴリズムを探してみてください。
いろいろあります。
# 単純ソート、クイックソート、バブルソート、ヒープソート、マージソートetc...
それぞれ、速度や安定性が違います。不安定で良ければ、クイックソートをおすすめします。
それをふまえて、Rowsプロパティで1行読み込み、その内容によって比較・並べ替えを行います。
「並べ替え」が並べ替えアルゴリズムを適用する箇所です。

わざわざコーディングするのが面倒であれば、Rowsプロパティの値(TStrings)から、CommaTextを取得し、その文字列の先頭に、その行のキーとなる値を追加し、TStringListに格納。TStringList.Sortを使ってソート、各行をRowsに戻す・・・とすれば良いかと。

編集    削除
にしの  2003-11-21 04:26:39  No: 5700  IP: [192.*.*.*]

> その文字列の先頭に、その行のキーとなる値を追加し、
これは、CustomSortを使えば必要なかったです。

編集    削除
デオデオ  2003-11-21 23:00:27  No: 5701  IP: [192.*.*.*]

にしのさん、ありがとうございます。

ソートの種類がいくつかあることは知っていたのですが、
初心者のため、どのようにプログラムを組めばよいかがわからなくて・・・(=_=;)
参考書を見てもプログラムに関して詳しく載っているものがなかったのです。
にしのさんのレスを参考にまた勉強してみます。

編集    削除