掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
コレクションについて (ID:101132)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
うーん,残念ながら 氏名、生年月日、住所、電話番号等をコレクションとして扱うサンプル を紹介しているサイトは知りません. コレクションはサイズ可変長で,動的に値を追加/削除可能な配列だと考える事が出来ます. 例として,以下の4つのクラスを使うアプリケーションが浮かびました. 何かの参考になれば嬉しいです. --------------------------- 'Record.cls '氏名、生年月日、住所、電話番号をレコードとして持つクラス Public Name As String Public BirthDay As Date Public PostalAddress As String Public PhoneNumber As String --------------------------- 'IFilter.cls 'Collectionをフィルタリングするインターフェイス Public Function Filter(ByVal col As Collection) As Collection End Function --------------------------- 'AndohFilter.cls 'RecordのNameが安藤から始まる人だけを選択するフィルタ Implements IFilter Private Function IFilter_filter(ByVal item As Record) As Boolean If item.Name Like "安藤*" Then IFilter_filter = True Else IFilter_filter = False End If End Function --------------------------- 'Records.cls 'Recodクラスをコレクションとして扱うクラス Private col_ As Collection Private Sub Class_Initialize() Set col_ = New Collection End Sub Public Sub add(ByVal v As Record) col_.add v End Sub Public Sub add2(ByVal Name As String, ByVal BirthDay As Date, ByVal PostalAddress As String, ByVal PhoneNumber As String) Dim rec As Record Set rec = New Record With rec .Name = Name .BirthDay = BirthDay .PostalAddress = PostalAddress .PhoneNumber = PhoneNumber End With col_.add rec End Sub Public Function Filtering(ByVal filter As IFilter) As Records Dim rec As Records Dim item As Record Set rec = New Records For Each item In col_ If filter.filter(item) Then rec.add item End If Next Set Filtering = rec End Function Public Function getCollection() As Collection Set getCollection = col_ End Function --------------------------- 'Form1.frm 'Recodsクラスを使ったサンプル Private Sub Form_Load() Dim recs As Records Set recs = New Records recs.add2 "安藤A", #1/1/1954#, "住所1", "000-1111-111" recs.add2 "安藤B", #2/2/1954#, "住所2", "000-2222-222" recs.add2 "佐藤A", #3/3/1954#, "住所3", "000-3333-333" recs.add2 "佐藤B", #4/4/1954#, "住所4", "000-4444-444" Dim rec As Record 'recsに含まれるレコード全体を表示 For Each rec In recs.getCollection() Debug.Print rec.Name Next 'recsに含まれるレコードの内,名前が安藤から始まるものだけを表示 For Each rec In recs.Filtering(New AndohFilter).getCollection() Debug.Print rec.Name Next End Sub
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.