リストビュー Item選択

[戻る]
しんじ 2002/07/18(木) 08:07:27
vc++ 6.0です。

リストビューで複数行表示しています。

行を選択し色を変える(反転表示でも良い)方法はないのでしょうか。
カーソルでクリックしたときと同じ表示にしたいのでが。

SetPos(行)のような関数はないでしょうか。

宜しくお願いします。

sugar 2002/07/18(木) 09:22:43
> リストビューで複数行表示しています。
>
??
複数行表示って、レポートビューのことですか?

> 行を選択し色を変える(反転表示でも良い)方法はないのでしょうか。
>
「任意のアイテムをプログラムから選択状態にしたい」
という解釈でよろしいでしょうか?
CListCtrl::SetItemState()を調べてください。
LVIS_SELECTEDを指定すればよいはずです。

しんじ 2002/07/18(木) 11:22:12
ご返事ありがとうございます。

>「任意のアイテムをプログラムから選択状態にしたい」
>という解釈でよろしいでしょうか?
>CListCtrl::SetItemState()を調べてください。
>LVIS_SELECTEDを指定すればよいはずです

やりたいことはそのとうりです。

指摘していただいたとうり試してみましたが上手くいきませんでした。
以下の方法でためしましたが、何か間違いがあるのでしょうか。


@5行の表示は

     LV_ITEM para;
     para.mask = LVIF_TEXT| LVIF_STATE
     para.state = 0;
   para.stateMask = 0;

     DeleteAllItem();
   
     para.pszText = テキスト
   para.iSubItem = 0;

   item = InsertItem(&para)
     繰り返し

A3行目を選択状態にしたいとき。

    para.mask = LVIS_SELECTED;

  SetItemState(2,&para)
  としました。

 でも3行目が選択状態になりませんでした。


としています。

sugar 2002/07/18(木) 13:29:37
SetItemState(アイテムインデックス, LVIS_SELECTED, LVIS_SELECTED);

これでどうですか?

不良PG [E-Mail] 2002/07/18(木) 13:53:11
>A3行目を選択状態にしたいとき。
>
>    para.mask = LVIS_SELECTED;
>
>  SetItemState(2,&para)

para.mask = LVIF_STATE;
para.stateMask = LVIS_SELECTED;
para.state = LVIS_SELECTED;

SetItemState(2,&para)

これで良いのでは?

もちろん、sugarさんの回答でも問題ないかと・・

しんじ 2002/07/18(木) 17:56:46
[[解決]]
sugarさん、 不良PGさん
  ありがとうございました。

選択でき、クリックしたときと同様になりました。

古いスレッドには追加発言できません。