Tmemo内の並べ替え


ともこ  2003-09-13 07:03:07  No: 4805

Tmemoを使ってソートを行いたいと思っています。
33333
22222
11111
とデータが入力されていれば
11111
22222
33333
と並び替えたいと思っています。
まだまだ初心者の為、Tmemoが並び替えを行える
ものであるか?という事すら分かりません。
どの様な並び替えの方法があるか、教えて下さい。
よろしくお願いします。


Halbow  URL  2003-09-13 07:13:51  No: 4806

Halbow です。

TMemo.Lines は TStrings 型ですのでソートメソッドがありません。
TStringList のインスタンスに写し取って、ソートしてから戻します。

Form1 に Memo1 と Button1 を置いて以下のようにします。

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Clear;
  Memo1.Lines.Add('33333');
  Memo1.Lines.Add('22222');
  Memo1.Lines.Add('11111');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  SL:TStringList;
begin
  SL := TStringList.Create;
  try
    SL.Assign(Memo1.Lines);
    SL.Sort;
    Memo1.Lines.Assign(SL);
  finally
    SL.Free;
  end;
end;


たかみちえ  URL  2003-09-13 07:44:06  No: 4807

わたしが先日作ったものに、"TStringsをソートする"クラスがあります。
ソート用メソッドは自分で書かなければいけませんけど、それなら問題なく、ソートができます。

  が、作ったばっかり(一応ちゃんと動くことは確認しました)なので、まだアップロードしてません。

  とりあえずどこでもいいからアップロードするとして、アップロードまでにもあと半日くらいかかると思いますけど、それでもよければ…。


ともこ  2003-09-13 08:23:17  No: 4808

Halbowさんたかみちえさん、素早いお返事ありがとうございます。

Halbowさんに教えて頂いたソースを実行した所ソートは出来ました。
今、実際にやりたい事は、スケジュールをTmemoの中に登録して
登録される毎に並べ替えを実行したいと思っております。
TmemoのOnChangeイベント内で行えるかなと思っていたのですが
上手く行きません。
よろしければ、もう少し教えていただけないでしょうか。
よろしくお願いします。


Halbow  URL  2003-09-13 15:05:54  No: 4809

Halbow です。

>TmemoのOnChangeイベント内で行えるかなと思っていたのですが

ソートは、コストがかかる演算です。TMemo.OnChange イベントは
一文字でも変更があるとおきます。このタイミングでソートするのは
大変です。数行ならすぐにできますが、行が多くなると時間がかかります。

>登録される毎に並べ替えを実行したいと思っております。

「登録された」瞬間をプログラムでとらえることができればいいのですね?
しかし、これはどの瞬間なのか作っている本人しか分からないのでは。
改行が入力されたときとか?

個人的には、ソートするためのボタンかメニュー項目があって、自動
ソートではなく、ユーザがソートしたいときにソートするとよいと
思います。


ともこ  2003-09-15 03:30:56  No: 4810

新たにFormを作成しMemoを貼り付けて登録ボタンを
クリックしたら時にソートするようにしたら、無事に
ソートを行う事が出来ました。

Delphiは全くの初心者のため、現在はTMemoを42個使って
カレンダーを作っている状態です・・・。
これでは、後々の処理等も複雑になってくると思います。

単純にスケジュール管理ソフトを作るとすれば、
どのようなものを、使えば楽(やり易い)に作れますか?

TStringGridなどを使いたいとは思っているのですが
使い方が分からず苦戦しております。

よろしければ、再度ご教授お願いいたします。


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

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






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