• ベストアンサー

ListViewで、非表示列って作れますか?

VB6.0です。 一覧にListViewを使用しているのですが、 非表示にしたい列があるのですが、出来ませんか? 列幅は可変としているので、列幅を0にしておく方法は使えません。 一覧には見せないけど、更新項目なので、 いちいちもう1度読み直すのは面倒なので、非表示で持っていたいのですが…。 何か方法ありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

どんな感じで ListView にアイテムを追加してるのか分かりませんが、 見せたくない項目をキーにしてしまうとか? キーが重複しそうなら連番 でも仮につけとけば良いし。 With ListView1.ListItems.Add   .Key = strKey & Chr(0) & Cstr(lngItemCnt)   .Text = strText   .SubItems(1) = strSub1Text   .SubItems(2) = strSub2Text   .SubItems(3) = strSub3Text End With このようにして、 Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)   MsgBox Left$(Item.Key, InStr(Item.Key, Chr(0)) - 1) End Sub こんな感じで非表示にしたい項目を拾うのは? > ただし、SORT機能をつけた場合、ずれますよね。 その通りですが、それが問題になりそうですか? 並びが気になるならソートしたときに非表示の ListView も同時に同項目で ソートすれば良いだけだし、そもそも配列も非表示の ListView は並び変え は必要ないと思いますよ。 表示されている ListView の ItemClick イベントなどで Key または Text は拾えるので、あとはそれを配列や 非表示 ListView から探すだけでは? 表示されていないものに並びは関係ないと思いますが、いかかでしょう? ただ、こっちの方法は効率悪いですね(´・ω・`)

wan-chan
質問者

お礼

ありがとうございます。 Keyに入れる方法でやってみます。 配列のことは、勝手にIndexで考えてました。 一意の値で探すのであれば、SORTされても問題ないですね。 非表示列にも表示している列と同じ列をすべて持たせるなら、 同項目でSORTできますね。 …私がバカでした。(--; 再度、ありがとうございました。

その他の回答 (4)

回答No.5

>試してみたのですが、 >サブアイテムがないリストの場合は無理ですか? サブアイテムの有無は関係なく使えます。

wan-chan
質問者

お礼

ありがとうございました。 出来ました!!

回答No.4

Key の代わりで、TagでOKです。ダブってもいいですし。 Private Sub Form_Load() Dim itmX As ListItem Set itmX = ListView1.ListItems.Add(, , "1番目") itmX.SubItems(1) = "First" itmX.Tag = "奇数" Set itmX = ListView1.ListItems.Add(, , "2番目") itmX.SubItems(1) = "Second" itmX.Tag = "偶数" Set itmX = ListView1.ListItems.Add(, , "3番目") itmX.SubItems(1) = "Third" itmX.Tag = "奇数" Set itmX = ListView1.ListItems.Add(, , "4番目") itmX.SubItems(1) = "Fouth" itmX.Tag = "偶数" End Sub Private Sub ListView1_Click() MsgBox ListView1.SelectedItem.Text & "は、" & _ ListView1.SelectedItem.Tag & "です。" End Sub

wan-chan
質問者

お礼

ありがとうございました。 試してみたのですが、 サブアイテムがないリストの場合は無理ですか?

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

列幅 0 がベストだと思いますけど、存在すら見せたくないんですよね? 非表示の ListView をもう一つ用意しておくとか... 要素数が少ないなら配列などで内部的に保持しておくとか...

wan-chan
質問者

補足

ありがとうございます。 現在、配列で持っています。 ただし、SORT機能をつけた場合、ずれますよね。 (現在SORTはなしですが…) その辺がイヤなので、できれば、ListVIew持っていたかったのですが。 もう1つListViewで持っておくのも本体のListViewとSORTとずれますね…。 んー。Gridにすればよかったかも。。

回答No.1

Tagプロパティは使えませんか?

wan-chan
質問者

お礼

ありがとうございます。 Tagの使い方がいまひとつ理解できていません。 調べてみます。

関連するQ&A

  • .netのListView

    暇な時にでも回答お願いします。 VB.NETで開発をしています。 ListViewの列幅を変更できないようにしたいのですが、そのような事は可能でしょうか? 可能であるならば、方法を教えて下さい。 よろしくお願いします。

  • Listviewにチェックボックスを表示して更新

    asp.net初心者です。 Listviewにチェックボックスを表示して更新したい考えております。 DB:postgres 例として・・・ 食べ物一覧をDBからselectしてListviewに一覧を表示しました。 そこへcheckboxをつけて、好きな食べ物で登録したものにチェックをつけます。 checkboxを更新して変更できるようにしたいと考えてます。 非バインド型で作る?・・・どのようにcheckboxに値を持たせて、Listviewに追加するのがよいのやら 解っておりません。 値さえ取得できれば、DB更新はなんとかできそうなのですが、ご教授頂ければ幸いです。

  • ListViewの使い方

    windows2000(sp3) vb6.0(sp5) で開発中です。 ListViewのチェックを付ける機能を使っているのですが、 ある処理中はチェックを付けさせたくありません。 そこで、ListViewのEnabled=Falseとしたら、ListView が灰色で表示され、かっこ悪くなってしまいました。 Enabledのほかに、チェックを付けさせない様にする方法 はないでしょうか? ご存知の方がいらっしゃいましたら、ご教示願います。 よろしくお願いいたします。

  • 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でのリスト表示(初歩的な質問です)

    WinXP Pro VB6.0で開発を行っています。 現在、ドラッグ&ドロップにより、ListViewでファイルのパスをリスト表示するプログラムを作成しています。 ListBoxではなくListViewを利用する理由は、パスの長さに合わせてスクロールバーを表示したいためです。 そこで、ドラッグ&ドロップイベントでファイルのパスを取得することは出来たのですが、単純なリスト表示ができません。 ListView1.ListItems.Add(, , tmpPath) でパスを追加しているのですが、プロパティの設定がよく分からずうまく表示できません。 Viewを2-lvwLstに変更し、何となく表示はしているのですが2列表示になり、縦のスクロールバーが表示されません。 なお、表示の際、ヘッダ部分は必要ありません。 また、パスのみの表示であるため、一項目の表示です。 プロパティの設定例を教えていただけませんか? 非常に初歩的な質問ですがよろしくお願いします。

  • ListViewで1つを選択して詳細表示するには

    会社でいきなりVisual Studio 2008 を使い始めた者です。 Webサイトを作成しようとしており、慣れないながら悪戦苦闘しています。 GridViewコントロールのGridViewタスクには「選択を有効にする」のチェックがあり、それにより一覧表示された中から1つを選んでDetailViewで詳細表示、という流れが出来ることは、テストWebサイトを作成して確認しました。 しかし一方、ListViewコントロールのタスクには「選択を有効にする」のチェックがなく困っています。 (「ページングを有効にする」なら、GridViewにもListViewにもあるのに。残念) ListViewから詳細表示に持っていく流れにしてみたいのですが、どうすればいいのでしょうか。 希望としては、ListViewで一覧表示、そこから1つのみ選択してDetailViewで詳細表示、ができればいいなと思っています。が、それ以外でも良い方法があれば教えてもらえれば幸いです。

  • Word97で、列の挿入について教えてください。

    私は2000使用ですが、Word97使用の友人から以下のような話を聞きました。 「2000の場合、一度作成した表に列を挿入するとページ内に収まり、表全体の幅は変わらないが、列の挿入によって、全体の列幅が、狭くなる。 ところが97で列を挿入すると、それまでの列幅と同じ列が挿入され、表全体が表示されている用紙サイズの幅よりも大きくなってしまう。 新しいバージョンのように、簡単に表のサイズを用紙サイズに合わせることはできないのだろうか?」 というもの。 私は「余白を変えるか、用紙を縦から横にするとか列幅を全体的に狭くするとかするしかないんじゃないの?」と言ったのですが。 Word97でも、2000のように自動で調節されるような設定は可能なのでしょうか?それとも、そういう「仕様」のため、面倒でもやはりいちいち調節しなければならないのでしょうか? 詳しい方いらっしゃいましたら、ぜひご教授願います。

  • ListViewにて行追加

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

  • Listviewに表示された文字のコピーペースト

    VB2005を使っています。 Listviewに表示された文字をコピーペーストを試みましたができませんでした。 プロパティを見ても、設定箇所が見あたりませんでした。 コピーペーストする方法をご存じでしたらご教授お願いします。

  • 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; 上記、設定を行っています。 この他に、何か設定が足りなくて、表示されていないのでしょうか?

専門家に質問してみよう