DBGridのRowSelectが有効にならない

解決


大網  2009-06-10 15:13:32  No: 34669

DBGridを使ってデータベースの勉強をしています。
グリッドの一行を丸ごと選択したくてOptionのdgRowSelectをtrueにしていのですが、いざコンパイルしてみるとMultiSelectのように個々のセルを選択するようにしかならなくて悩んでいます。

・MultiSelectはfalseに、dgRowSelectはtrueにしています。
・ReadOnlyをTrueやFalseにしてみたりもしましたが、やはりコンパイルすると上記の症状になってしまいます。
・グリッドに表示させたくないいくつかのカラムはVisible:=falseにしています。
・同一フォーム上にStringGridを一つはりつけてありますが、これが干渉しているんでしょうか?

知らないうちにプロパティをいじってしまったのかと、新しく貼直しても直りません。
対処法をご存知の方、どうかお願いします。


ofZ  2009-06-10 18:21:00  No: 34670

とりあえずDelphi5ですが、再現できません。

FormCreate なんかで、Option を変更していたりしませんか?


大網  2009-06-10 19:39:32  No: 34671

コード上でOptionをいじったりはしてないのですが、OnDrawColumnCellのところでカラムの背景色を(データによって)変えたりはしています。

素人なので、手の込んだいじり方はしてないのですが、変わった点といえば、先に選択したところがもとに戻らないという点もあります。


大網  2009-06-10 20:26:34  No: 34672

・グリッドに表示させたくないいくつかのカラムはVisible:=falseにしています。

ポイントはここでした。
あまりに多量のDBGrid.Columns.Items[hoge].visible:=falseをやってしまうと、RowSelectは効かなくなる、という仮説をたて、該当部分をコメントアウトしてみました。

するとRowSelectは効くようになりました。

そこで、DBGrid.Columns.Items[hoge].visible:=falseではなくDBGrid.Columns.Items[hoge].Width:=0に置き換えてみました。するとRowSelectはきくようになりました。これでいこうと思います。

ofZさん、構っていただいてありがとう。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加