掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TObjectでご指導ねがいます。 (ID:37316)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>2,年齢の他にも血液型など文字列を追加する ということなら、複数要素を一目で見渡せるStringGridを使うのが便利だと思います。 StringGridを使うのならこれでどうでしょうか。 FormにStringGridを貼り付けて、RowCount:=21に、次にButtonを2個貼り付けてください。20個の要素を1列目または2列目を基準に並び替えるデモです。 procedure GridSort(Grid : TStringGrid; SortCol : Integer); var TempStList1, TempStList2 : TStringList; k : Integer; begin TempStList1 := TStringList.Create; try TempStList1.Assign(Grid.Cols[SortCol]); for k := 1 to Grid.FixedRows do TempStList1.Delete(0); //年齢を一桁と二桁の混在と仮定//************************************ for k:=0 to TempStList1.Count-1 do begin if Length(TempStList1[k])=1 then TempStList1[k]:='0'+TempStList1[k] end; for k := Grid.FixedRows to Grid.RowCount - 1 do begin TempStList2 := TStringList.Create; TempStList2.Assign(Grid.Rows[k]); TempStList1.Objects[k - Grid.FixedRows] := TempStList2 end; TempStList1.Sort; for k := Grid.FixedRows to Grid.RowCount - 1 do begin Grid.Rows[k].Assign(TStringList(TempStList1.Objects[k - Grid.FixedRows])); TStringList(TempStList1.Objects[k - Grid.FixedRows]).Free end; finally TempStList1.Free end; end; procedure TForm1.FormCreate(Sender: TObject); var k: integer; begin Stringgrid1.Cells[1,0]:='条件1'; Stringgrid1.Cells[2,0]:='条件2'; for k:=1 to 20 do begin Stringgrid1.Cells[1, k]:=InttoStr(21-k); Stringgrid1.Cells[2, k]:=InttoStr(k); end end; procedure TForm1.Button1Click(Sender: TObject); begin GridSort(StringGrid1, 1) //第二引数で並び替え基準列をCol値で指定 end; procedure TForm1.Button3Click(Sender: TObject); begin GridSort(StringGrid1, 2) end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.