DBGridのRowSelectが有効にならない

解決


大網  2009-06-10 06:13:32  No: 34669  IP: 192.*.*.*

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

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

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

編集 削除
ofZ  2009-06-10 09:21:00  No: 34670  IP: 192.*.*.*

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

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

編集 削除
大網  2009-06-10 10:39:32  No: 34671  IP: 192.*.*.*

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

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

編集 削除
大網  2009-06-10 11:26:34  No: 34672  IP: 192.*.*.*

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


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

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

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

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

編集 削除