タイトル | : Re^5: ListBoxの行選択について |
記事No | : 13888 |
投稿日 | : 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
|