tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルListBoxの行選択について
記事No13883
投稿日: 2009/07/28(Tue) 12:01
投稿者CC
いつもお世話になっています。ccです。

ListBoxにある行を選択して、それで、
削除ボタン(配置されたボタン)を押したら、
その行がListBoxに選択できなくなるということです。
どうしたらいいでしょうか。

よろしくお願いします。

環境:XP VB6.0

[ツリー表示へ]
タイトルRe: ListBoxの行選択について
記事No13884
投稿日: 2009/07/28(Tue) 12:08
投稿者花ちゃん
ここのサンプルはご覧になられましたか?
まだなら、ご覧になって試してみて下さい。

[ツリー表示へ]
タイトルRe^2: ListBoxの行選択について
記事No13885
投稿日: 2009/07/28(Tue) 13:11
投稿者CC
花ちゃん

発言する前に、
リストボックスでよく使用する設定集を見たのですが
今回の質問のことが載っていなかったのです。

よろしくお願いします。

[ツリー表示へ]
タイトルRe^3: ListBoxの行選択について
記事No13886
投稿日: 2009/07/28(Tue) 13:17
投稿者CC
ちなみに、
選択できなくなると該行が色がグレになる
(薄くグレ色を表示する)

よろしくお願いします。

[ツリー表示へ]
タイトルRe^4: ListBoxの行選択について
記事No13887
投稿日: 2009/07/28(Tue) 13:48
投稿者花ちゃん
> 選択できなくなると該行が色がグレになる
> (薄くグレ色を表示する)

   List1.Enabled = False  ではだめなのですか?
http://hanatyan.sakura.ne.jp/vbhlp/property1.htm

[ツリー表示へ]
タイトルRe^5: ListBoxの行選択について
記事No13888
投稿日: 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

[ツリー表示へ]
タイトルRe^6: ListBoxの行選択について
記事No13890
投稿日: 2009/07/28(Tue) 16:28
投稿者CC
魔界の仮面弁士さん
ご回答ありがとう。


> 誤魔化せますが、見た目をグレーにすることは ListBox では困難です。
>
わかりました。

> 見た目も重要であれば、TreeView や ListView などで色を変えて誤魔化すとか。
>
なるほど、ListViewを使ったことがないですが、提供されたサンプルを見ながら、
なんとなくできました(希望の通り)。

もう一つの問題、ListView の行を2回クリックすると、編集になってしまい、
そういうことをしないようにどうしたらいいでしょうか。

よろしくお願いします。

[ツリー表示へ]
タイトルRe^7: ListBoxの行選択について
記事No13891
投稿日: 2009/07/28(Tue) 17:47
投稿者魔界の仮面弁士
> もう一つの問題、ListView の行を2回クリックすると、編集になってしまい、
> そういうことをしないようにどうしたらいいでしょうか。

LabelEdit プロパティを変更してみてください。
マニュアル編集モードに設定しておけば、ダブルクリックしても編集されません。

[ツリー表示へ]
タイトルRe^8: ListBoxの行選択について
記事No13892
投稿日: 2009/07/28(Tue) 18:06
投稿者CC
魔界の仮面弁士さん
ご回答ありがとう。

> LabelEdit プロパティを変更してみてください。
> マニュアル編集モードに設定しておけば、ダブルクリックしても編集されません。
うまくできました。

ほんとうにありがとうございました。

[ツリー表示へ]
タイトルRe^5: ListBoxの行選択について
記事No13889
投稿日: 2009/07/28(Tue) 14:17
投稿者CC
花ちゃん
ご回答ありがとう。

>
>    List1.Enabled = False  ではだめなのですか?
そうしたら、ListBoxの全体に選択なくなりました。
ほしいのは選択された行だけ選択できないことです。
(僕の説明が悪いです、すみません。)

よろしくお願いします。

[ツリー表示へ]