• 締切済み

ListViewの選択について

VB6.0を使用しています。 ListViewでlvwReport表示形式でFullRowSelectプロパディで行全体を選択するようにしてあるのですが、一部のカラムが選択されないように見えるのです。 例えば、5カラムあるListViewで、1,2,4,5カラムは選択されているのに、3カラム目だけ選択されてません。選択されない原因かどうかわからないのですが、選択されないように見えるカラムは必ず空白となっています。しかし、他のカラムでも空白の行は存在するのにちゃんと選択されていることもあります。 このような現象をご存知の方がいらしゃいましたら、教えていただけないでしょうか?よろしくお願いいたします。

noname#10119
noname#10119

みんなの回答

回答No.1

「なにそれ?」を思いましが、再現することができました 下記がそのソースです Private Sub Form_Load()   Me.ListView1.View = lvwReport   Me.ListView1.FullRowSelect = True   Me.ListView1.Font.Size = 14   Me.ListView1.ColumnHeaders.Add , , "aaa", Me.ListView1.Width / 6   Me.ListView1.ColumnHeaders.Add , , "bbb", Me.ListView1.Width / 6   'Me.ListView1.ColumnHeaders.Add , , "ccc", Me.ListView1.Width / 6   Me.ListView1.ColumnHeaders.Add , , "ccc", 187.37009429   Me.ListView1.ColumnHeaders.Add , , "ddd", Me.ListView1.Width / 6   Me.ListView1.ColumnHeaders.Add , , "eee", Me.ListView1.Width / 6   Dim itmX As ListItem   Dim i As Integer   For i = 0 To 4 Step 1     Set itmX = Me.ListView1.ListItems.Add(, , "aaa")     itmX.SubItems(1) = "bbb"     itmX.SubItems(2) = "ccc"     itmX.SubItems(3) = "ddd"     itmX.SubItems(4) = "eee"   Next End Sub どうやら、カラムサイズが187twip以下でおきるようです ※念のためフォントサイズも変更してみましたが変化はありませんでした 対象のカラムサイズを調べるために下記の様に確認してみて下さい Private Sub Command1_Click()   MsgBox Me.ListView1.ColumnHeaders(3).Width End Sub ※ちなみに「.Net」では、このような現象は起こりません

関連するQ&A

  • ListViewでの行全体の選択

    ListViewで行を選択すると行全体を選択表示させたい(ウォッチウィンドウのような感じです)のですが、方法がわかりません。 Helpを見るとFullRowSelectプロパティを使うとかかれてありますが、実行時にそんなプロパティはないとエラーになります。 SubItemsも含む行全体を選択表示させる方法を教えてください。

  • ListViewの行選択について

    ListViewを使っているのですが、チェックボックスのチェックを付けた行全体を選択状態にし(選択状態は1行ずつ)、行をクリックしただけでは選択状態にしたくないのです。 どうすればいいでしょうか?

  • ListViewの選択、選択解除を行いたい

    VB6.0にて開発をしています。 ListViewで複数選択を可能とし、 Ctrl+クリックで選択、選択解除をせずに、クリックのみで選択、選択解除を行いたいです。 その際、複数選択されている場合はクリックした行のみが選択・選択解除される状態にしたいです。 CheckBoxesプロパティで行う方法は見つけられたのですが、 checkboxesプロパティが使用できないため困っています。 なにか方法がありますでしょうか?

  • 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でサブアイテムが表示されない

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

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

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

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

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

  • Listviewの内容を数字の降順に並べ替えたい

    こんばんは、いつもお世話になっております。 ListViewにアイテムを追加し、降順に並べ変えたいのですが、 方法がよくわからず、手間取っております。 ListViewの形式が アイテム名、数字1、数字2、数字3、数字4、数字5、数字1~5の合計、判定 となっていて、数字1~5の合計を基準に降順にしたいのです。 たとえばアイテムが アイテムA、2、2、2、1、5、12、判定:B アイテムB、4、4、5、5、5、23、判定:A アイテムC、1、1、2、2、4、10、判定:C アイテムD、3、3、4、5、6、21、判定:A となっていたとき、 アイテムB、4、4、5、5、5、23、判定:A アイテムD、3、3、4、5、6、21、判定:A アイテムA、2、2、2、1、5、12、判定:B アイテムC、1、1、2、2、4、10、判定:C となるように…。 並べ替えのタイミングはカラムヘッダをクリックした時でなく、 ListViewにアイテムを全部追加し終えてからにしようと考えています。 使用ソフトはVB2008です。 方法をご存知の方、ご教授をお願いします。

  • C# ListView 自作列幅調整 描画されない

    いつもお世話になっております。 今回はC#のListViewで皆様にお聞きしたいことがあり、 質問させて頂きました。 ListViewに3列追加しListViewの幅が変更された際に 2列目のみを引き延ばすものを作りたいと思っています。 しかし、以下操作を行うと、ListViewのリサイズ等で 描画更新されない状態になってしまいます。 (また、リストアイテムをクリックするとその列は描画されるのですが、 アイテムの描画開始Y位置がおかしくなっています。)  1.縦スクロールバーが表示されるまで縮小する  2.スクロールバーのノブを下に移動  3.縦スクロールバーの表示が消えるまで拡大する サンプルコード及び画像を添付いたします。 内容は、  3列のListViewに適当なアイテムを10個追加し、  OnClientSizeChangedでClientSize.Widthと1列3列の幅から  2列目の幅を算出・設定しています。 ※画像は、以下コントロールをFormに張り付けただけのもので  問題の起こる操作をした際のものになります。 class MyListView : ListView {   public const int COL_1_WIDTH  = 30;   public const int COL_3_WIDTH  = 75;   enum LISTVIEW_COL   {     COL1,     COL2,     COL3,     NUM   }   public MyListView() {     Dock = DockStyle.Fill;     HeaderStyle = ColumnHeaderStyle.None;     FullRowSelect = true;     HideSelection = false;     View = System.Windows.Forms.View.Details;     //ヘッダ追加     ColumnHeader column1 = new ColumnHeader();     ColumnHeader column2 = new ColumnHeader();     ColumnHeader column3 = new ColumnHeader();     ColumnHeader[] columnHeaders = { column1, column2, column3 };     this.Columns.AddRange( columnHeaders );     //ヘッダ幅追加     this.Columns[( int )LISTVIEW_COL.COL1].Width = COL_1_WIDTH;  //1列固定     this.Columns[( int )LISTVIEW_COL.COL3].Width = COL_3_WIDTH; //3列固定     int width = ClientRectangle.Width;     for( int i = 0; i < Columns.Count; i++ ) {       if( i == ( int )LISTVIEW_COL.COL2 ) { continue; }       width -= Columns[i].Width;     }     //2列 リストビューの幅いっぱいになるように調節     this.Columns[( int )LISTVIEW_COL.COL2].Width = width;     //適当にアイテム追加     for( int i = 0; i < 10; i++ ) {       string[] strs = { "COL1", "COL2", "COL3" };       ListViewItem item = new ListViewItem( strs );       this.Items.Add( item );     }   }   protected override void OnClientSizeChanged( EventArgs e ) {     base.OnClientSizeChanged( e );     //2列の幅を調整     int width = ClientRectangle.Width;     for( int i = 0; i < Columns.Count; i++ ) {       if( i == ( int )LISTVIEW_COL.COL2 ) { continue; }       width -= Columns[i].Width;     }     Columns[( int )LISTVIEW_COL.COL2].Width = width;   } } 何故このようになってしまうのかご存知の方いらっしゃいましたら教えてください。

  • DataGridコントロールの行複数選択

    いつもお世話になっております! DataGridコントロールを使って データを表示させているのですが 行を複数選択してコピーするような 処理を作成しています。 複数行を選択状態にするためには どうすればよいでしょうか? 表全体の選択はできるのですが… どうぞ、よろしくお願いします 環境はVB6.0です

専門家に質問してみよう