• 締切済み

ListViewでサブアイテムが表示されない

VC++2008にて、プロジェクト形式がWindowsエクスプローラの MFCアプリケーションにてプログラムを作成しています。 ListViewにて、InsertColumn、InsertItem、SetItemTextを 行い、カラムと項目のデータ設定をしているのですが、 ListViewを詳細表示にすると、設定したサブアイテムが 表示されない場合があります。 InsertItemで設定した文字列は、設定した分だけ、 左端にキチンと表示されているのですが、 それ以降のサブアイテムについては、表示されている行もあれば 表示されていない行もあります。 1行に複数のサブアイテムを設定しているのですが、 表示されている場合は、サブアイテム全てが表示されており、 表示されていない場合は、サブアイテム全てが表示されていません。 デバッグで追う限り、データ設定自体は問題なく、 表示される行と、されない行について、 差異を探してみましたが、別段、違ったことはしていません。 ListViewについては、PreCreateWindowにて cs.style |= TVS_SHOWSELALWAYS; cs.style |= LVS_SINGLESEL; cs.style &= ~LVS_TYPEMASK; 上記、設定を行っています。 この他に、何か設定が足りなくて、表示されていないのでしょうか?

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

こういった場合 現象の再現できる最小限のコードと その手順を明示したほうがいいでしょう また現状の表示画像などを投稿してみるのもひとつの方法ですよ

lhouse
質問者

お礼

再現できる最小限コードを作成していったところ、自己解決しました。 アプリ終了時に、アイコン/一覧/詳細のどれを表示させていたかを iniファイルに書き込み、次に立ち上げた時に、 その情報から、初期の表示タイプを設定していたのですが、 値をDWORDではなくintで、設定・読み込みしていたことが 問題でした。 新規にプロジェクトを作成して、バグを洗い出すのも 常套手段ということを、焦り過ぎて忘れていました。 アドバイスの結果、バグ改修に至りました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ListViewについて

    いつもお世話になっています。 タイトルの通り、ListViewについて2つ質問があります。 (1)ListViewにDBから検索したデータを代入してますが、動きが遅いんです。  各項目ごとで色を変更したりするためだと思いますが、ListViewの表示を速くする方法はなにかありませんか?  ちなみに今は、ListViewを2枚使って、データをセットしている間は、VisibleをFalseにして、  データセットが完了した時点で、Trueに切り替えています。 (2)(1)の動きで、ListViewを使っているところ、今表示されているListView(Iとします)で  クリックしたデータを次に表示させるListView(IIとします)に引き継がせたいです。  Iで、選択している行をIIで選択状態にすることはできたのですが、  Iで選択している行がスクロールして下にあった場合、IIでもスクロールした場所に  ListViewを移動させたいのですが、その方法が分かりません。 何かご存知の方がいましたら、教えてください。 よろしくお願いいたします。

  • ListViewで表示されたデータの選択行指定

    ListViewで複数行データが表示されている場合に指定の行を選択状態にする事は可能なのでしょうか?いろいろ調べているのですが分かりません。ご存知の方いらっしゃいましたらよろしくお願いします。

  • VB6.0 ListViewの一行目を表示しないようにするには?

    VB6.0 ListViewの一行目を表示しないようにするには? こんにちは。 環境WinXP,VB6.0です。 リストビューを表示する際に、一行目を表示させたくないのですが、 どのように書けばいいのでしょうか? DBの値をリストビューに表示しているのですが、テストで入れたデータが表示されてしまいます。 かといって、このテストデータが重要な役割をしているので、消したくありません。 このテストデータは、常に一行目に表示されるので、リストビュー表示の際に一行目だけ消して表示したいです。 何か良い方法があればご教授下さい。

  • ListViewにて行追加

    Visual C# 2005初心者です。 ListViewを使用して、データを表示するのに、 listView1.Items.Add("1111111", 3); listView1.Items.Add("2222222", 3); listView1.Items.Add("3333333", 3); と書くと、列が追加されます。 行を追加するには、どうすればよいのでしょうか? どうか、教えてください。

  • VB6 API LISTVIEW(チェックボックス付き)にチェックを付けたい

    CreateWindowExでLISTVIEW(チェックボックス付きのレポートビュー)を作ったのですが、「山田花子」行にソースでチェックを付ける方法が分かりません。 Form1のソース ↓ Option Explicit Private Sub Form_Load() Dim lngRet As Long Dim lvcol As LV_COLUMN Dim rStyle As Long Dim item As LV_ITEM '-- リストビューの作成 hList = CreateWindowEx(WS_EX_CLIENTEDGE, _ WC_LISTVIEW, "", _ WS_CHILD Or WS_VISIBLE Or WS_BORDER Or _ WS_CLIPSIBLINGS Or WS_CLIPCHILDREN Or _ LVS_REPORT, _ 0&, 0&, Me.ScaleWidth / Screen.TwipsPerPixelX, 200&, _ Me.hwnd, _ 0&, _ App.HINSTANCE, _ ByVal 0&) '拡張スタイルを設定 rStyle = rStyle Or LVS_EX_FULLROWSELECT Or LVS_EX_GRIDLINES Or LVS_EX_CHECKBOXES SendMessageByNum hList, LVM_SETEXTENDEDLISTVIEWSTYLE, 0&, rStyle '-- カラムヘッダーの追加 With lvcol .mask = LVCF_FMT Or LVCF_WIDTH Or LVCF_TEXT Or LVCF_SUBITEM .fmt = LVCFMT_LEFT .cx = 100 .pszText = "名前" .iSubItem = 0 lngRet = ListView_InsertColumn(hList, 0&, lvcol) End With '-- リストアイテムの追加 With item .mask = LVIF_TEXT Or LVIF_IMAGE ' 1つめ .pszText = "山田 太郎" .iItem = 0 .iSubItem = 0 .iImage = 0 lngRet = ListView_InsertItem(hList, item) ' 2つめ .pszText = "山田 花子" .iItem = 1 .iSubItem = 0 .iImage = 1 lngRet = ListView_InsertItem(hList, item) End With End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) '-- リストビューを破棄 DestroyWindow hList End Sub 標準モジュールは補足に書きます

  • ListView

    Borland C++Builderを使用しています。 ListViewにカラムを設定し,データをそれぞれ表示させたい のですが,やり方がわかりません。 ViewStyleはvsReportです。 何かサンプルプログラムを紹介したいただけませんか? よろしくお願いします。

  • Exce VBA ListViewの文字位置

    ExcelのUserForm内のListViewで文字位置を設定しようと思いますが、ヘッダー行とデータ行で位置が連動しているようです。 ヘッダー行はすべてセンター、データ行は文字は左、数値は右という風にはできないのでしょうか? よろしくお願いいたします。

  • C#:ListViewのEnable処理について

    すいません、教えてください。 .Net2003のC#でアプリを作成しているのですが、 ListViewのEnableにfalseをセットしたときに、データ行がない所はグレーに変色されるのですが、データがある行だけはグレーに変色されません。 ちなみにFormのEnableをfalseにした場合は、綺麗にグレーになったと思うのですが、訳あってそうする事にもいかず困っています。 すいませんが、ご指導願えますでしょうか。 OSはWindowsXPです。 (マニュフェストファイルでXPスタイルを使用してます。)

  • ListViewで処理経過表示

    ListViewを使って処理の経過を表示する機能を作っています。例えば ***** Start ***** 001 処理1の開始 002 処理1の終了 003 処理2の開始 004 処理2の終了 005 処理3の開始 006 処理3の終了 ***** End ***** のような感じです。全て表示し終わると完了メッセージを表示し画面は閉じます。 処理件数が多くなるとListViewの見えない部分にデータが追加され、処理経過が分かりません。処理を追加しながら常にスクロールを下に移動する方法をお分かりの方がいましたらよろしくお願いします。

  • ダイアログボックスにリストビューを付けたが、リストが表示されない

    ダイアログボックスにリストビューを付けて、ダイアログボックスにデータの一覧を表示させたいのですが、うまく表示されません。  http://gurigumi.s349.xrea.com/programming/visualcpp/sdk_dialog_listview1.html を参考にして、プログラミングしました。 プログラムの大まかな処理としては、  1.InitCommonControls()をコール  2.GetDlgItem()で、ダイアログボックスに貼り付けられているウィンドウハンドルを取得  3.ListView_InsertColumn()をコールして、項目を追加  4.ListView_InsertItem()をコールして、1つ目の値を設定  5.ListView_SetItem()をコールして、2つ目以降の値を設定 だと思いますが、この手順で行っても、うまく表示されませんでした。 何か抜けている手順はあるのでしょうか? また、上記以外に、何かポイントにしなければならないことはあるのでしょうか? 申し訳ありませんが、ご返答くださいますよう、よろしくお願いいたします。