tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。