タイトル | : ListViewの項目表示 |
記事No | : 5613 |
投稿日 | : 2007/06/06(Wed) 20:07 |
投稿者 | : hoido |
いつもお世話になっております。 ListViewの使い方でどつぼにはまってしまい不具合から抜け出すことが出来なくなってしまったので 何とかお知恵をお貸しください。 作業内容としてはフォーム内に1ヶ月分のリストビューを作成しその中に詳細の項目を入力する作業 です。 現在のコードは @1ヵ月分のリストビューを配置する Private Sub Balcony_Start() Dim f, No0 As Inte ger Dim x, y As Integer Dim Type As String = "Ba"
'週作成 Fo r WeekNo = 0 To 4 LabelFree(0 + WeekNo) = New Label With LabelFree(0 + WeekNo) .Bounds = New Rectangle(New Point(0, 40 + WeekNo * 310), New Size(50, 290)) .BorderStyle = Bor derStyle.FixedSingle .Text = "DEMO" End With Me.Pnl_keikaku .Controls.Add(LabelFree(0 + WeekNo))
LabelFree(3 + WeekNo) = New Label With LabelFree (3 + WeekNo) .Bounds = New Rectangle(New Point(50, 40 + WeekNo * 310), New Size(50, 290)) .BorderStyle = BorderStyle.FixedSingle End With Me.Pnl_keikaku.Controls.Add(LabelFree( 3 + WeekNo))
'日作成 For d As Integer = 0 To 6 x = (d - 1) * 400 + 100 y = WeekNo * 310 If d = 0 Then GoTo skip
'日付入力 用Label配置 LabelDate(No0) = New Label With LabelDate(No0) .Bounds = New Rectangle(New Point(x, 20 + y), New Size(400, 20)) .BorderStyle = BorderStyle.Fix edSingle .Name = "lbl_day_" & No0 .Text = DateAdd(DateIn terval.Day, No0, StartDay).ToString("M/d") End With Me.Pnl_keikaku.Con trols.Add(LabelDate(No0))
'生産台数合計入力用Label配置 LabelTotal(No0) = New Label With LabelTotal(No0) .Bounds = New Rectangle(New Point(x, 310 + y), New Size(400, 20)) .BorderStyle = BorderStyle.FixedSingle .Name = " lbl_Total_" & No0 End With Me.Pnl_keikaku.Controls.Add(LabelTotal(No0 ))
'ListView配置 ListName(f) = New ListView With ListN ame(f) .Bounds = New Rectangle(New Point(x, 40 + y), New Size(400, 270)) .Borde rStyle = BorderStyle.FixedSingle .HeaderStyle = ColumnHeaderStyle.None .Name = "lis_lis" & Type & "_" & No0 End With
'イベントプロシージャに登録 Me.Pnl_keikaku.Controls.Add(ListName(f)) Ad dHandler ListName(f).MouseUp, AddressOf ListView_MouseUp
GoTo NextStep
Skip: '日曜日の場合はここに来る LabelDate(No0) = New Label With LabelDate(No0 ) .Bounds = New Rectangle(New Point(50, 20 + y), New Size(50, 20)) .Borde rStyle = BorderStyle.FixedSingle .Name = "lbl_day_" & No0 .Text = DateAdd(DateInterval.Day, No0, StartDay).ToString("M/d") End With Me.Pnl_keikaku.Controls.Add(LabelDate(No0))
NextStep: f += 1 No 0 += 1 Next Next End Sub
以上長くなってしまって申し訳ありませんが1ヵ月分の リストビュー及び日付入力用のラベルを配置しています。
A詳細項目の配置 Dim i, L As Integer Dim Total As Long
For L = 0 To 35 Select Case L '日曜日は とばす Case 0, 7, 14, 21, 28, 35 GoTo NextStep End Select
'ListViewのフェッダー作成 With ListName(L) If Update_F = True Then .Clear() End If .View = View.Details .FullRowSelect = T rue .HeaderStyle = ColumnHeaderStyle.None .Columns.Add("DEMO1", 45, Horizo ntalAlignment.Center) .Columns.Add("DEMO2", 50, HorizontalAlignment.Center) .C olumns.Add("DEMO3", 100, HorizontalAlignment.Center) End With
'詳細項目追加 処理 Dim ItemNo As Integer = 0 Dim S_day As Date Dim Select_Day As String = &qu ot;lbl_day_" & L
For y As Long = 0 To RET - 1 S_day = B_edit(y). seisan_day If S_day = Me.Pnl_keikaku.Controls(Select_Day).Text Then
'詳細項目の追加 With ListName(L) .Items.Add(Format(B_edit(y).suetuk e, "MM/dd"), ItemNo) .Items(ItemNo).SubItems.Add(B_edit(y).type_code) .Items(ItemNo).SubItems.Add(B_edit(y).name) ItemNo += 1 End With End If Next y NextStep: Next L End Sub
以 上が詳細項目を入力するコードです。 流れ的にはヘッダーの追加⇒B_edit(y)の構造体の中から日付ラベルと同じものだけリスト ビュー内に配置 といった流れです。
問題はここからなのですが、初回起動時は正常に表示されます。 しかし表示 日付を変更しもう一度表示しようとすると値が正常に表示されません。
初回起動時は CALL Balcony_Start CALL Balcony_add
DEMO1 DEMO2 DEMO3 5/1 Ba DEMO 5/1 Ba DEMO 5/1 Ba DE MO
2回目以降はリストビューはもう作成されているので日付だけ再描画し Update_FをTrueにし CALL Bal cony_add とすると一番左の行は表示されるのですが2行目以降が表示されません。 DEMO1 DEMO2 DEMO3 5/1 Ba DEMO 5/1 5/1 といった感じです。
ながながと申し訳ないのですがどうしてもこの 不具合から抜け出せません。 ※もうはまってから2日目です。
何とかお知恵をお貸しください。m(__)m
|