掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
リストを保持するクラスをリスト化するには? (ID:12772)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
好みで修正してください。 Add,Delete,Clearとかカスタマイズはご自分でどうぞ。 眠くなったので、作りかけで途中ですが寝ます。 間違いなどは自分で修正してください あとはご自分でいろいろ試行錯誤してください。 では、 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} type TMyClass1 = class private MyList1:TList; MyList2:TList; public { Public 宣言 } constructor Create; destructor Destroy; override; end; type TMyClass2 = class private MyList3 : TList; //このリスト内にTMyClass1が入る function GetMyItem(Index: Integer): TMyClass1; public { Public 宣言 } property MyItems[Index: Integer]: TMyClass1 read GetMyItem; constructor Create; destructor Destroy; override; end; constructor TMyClass1.Create; begin inherited Create; MyList1 := TList.Create; MyList2 := TList.Create; end; destructor TMyClass1.Destroy; begin // MyList2 のdata保持内容をFreeするメソッドを書く // MyList1 ” MyList2.Free; MyList1.Free; inherited Destroy; end; ////////////////////////// function TMyClass2.GetMyItem(Index: Integer): TMyClass1; begin Result := TMyClass1(MyList3.Items[Index]) end; constructor TMyClass2.Create; begin inherited Create; MyList3 := TList.Create; end; destructor TMyClass2.Destroy; var i: integer; begin for i := MyList3.Count-1 downto 0 do TMyClass1(MyList3.Items[i]).Free; MyList3.Free; inherited Destroy; end; var Mylist : TMyClass2; procedure TForm1.FormCreate(Sender: TObject); begin Mylist := TMyClass2.Create; // データ一個追加 Mylist.MyList3.add(TMyClass1.Create); end; procedure TForm1.FormDestroy(Sender: TObject); begin Mylist.Free; end; procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.add(IntToStr(Mylist.MyList3.Count)); Memo1.Lines.add(IntToStr(Mylist.MyItems[0].MyList1.Count)); Memo1.Lines.add(IntToStr(Mylist.MyItems[0].MyList2.Count)); Mylist.MyItems[0].MyList2.add(nil); Mylist.MyItems[0].MyList2.add(nil); Memo1.Lines.add(IntToStr(Mylist.MyItems[0].MyList2.Count)); end; end.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.