タイトル : Re^5: ListBoxの行選択について 投稿日 : 2009/07/28(Tue) 14:11 投稿者 : 魔界の仮面弁士
> > 選択できなくなると該行が色がグレになる > > (薄くグレ色を表示する) > List1.Enabled = False ではだめなのですか? 『該行』の意味するところにもよりますが: コントロールその物を使えなくしたいのであれば、Enabled = False で良いですが、 特定の行のみをグレーに変えたいという意味であれば、無理だと思います。 (オーナードローでもしない限りは、項目ごとに色を変える事ができないので) で。 選択できなくするだけであれば、選択時に Selected(行) = False を行う事で 誤魔化せますが、見た目をグレーにすることは ListBox では困難です。 見た目も重要であれば、TreeView や ListView などで色を変えて誤魔化すとか。 Private Sub Command1_Click() If ListView1.SelectedItem Is Nothing Then MsgBox "選択されていません" ElseIf ListView1.SelectedItem.ForeColor = vbGrayText Then MsgBox "使用できない項目です。" Else MsgBox "選択された項目:" & ListView1.SelectedItem.Text End If End Sub Private Sub Form_Load() 'この辺りは、デザイン時設定でも OK ListView1.ColumnHeaders.Clear ListView1.HideColumnHeaders = True ListView1.HideSelection = False ListView1.ColumnHeaders.Add Width:=ListView1.Width - 360 ListView1.View = lvwReport ListView1.FullRowSelect = True ListView1.MultiSelect = False Dim n As Long, s As String For n = 1 To 20 s = "test" & String(n, "*") ListView1.ListItems.Add Text:=s Next '2項目のみ淡色表示 ListView1.ListItems(3).ForeColor = vbGrayText ListView1.ListItems(7).ForeColor = vbGrayText End Sub Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem) If Item.ForeColor = vbGrayText Then Item.Selected = False End If End Sub |