DBGridを使ってデータベースの勉強をしています。
グリッドの一行を丸ごと選択したくてOptionのdgRowSelectをtrueにしていのですが、いざコンパイルしてみるとMultiSelectのように個々のセルを選択するようにしかならなくて悩んでいます。
・MultiSelectはfalseに、dgRowSelectはtrueにしています。
・ReadOnlyをTrueやFalseにしてみたりもしましたが、やはりコンパイルすると上記の症状になってしまいます。
・グリッドに表示させたくないいくつかのカラムはVisible:=falseにしています。
・同一フォーム上にStringGridを一つはりつけてありますが、これが干渉しているんでしょうか?
知らないうちにプロパティをいじってしまったのかと、新しく貼直しても直りません。
対処法をご存知の方、どうかお願いします。
とりあえずDelphi5ですが、再現できません。
FormCreate なんかで、Option を変更していたりしませんか?
コード上でOptionをいじったりはしてないのですが、OnDrawColumnCellのところでカラムの背景色を(データによって)変えたりはしています。
素人なので、手の込んだいじり方はしてないのですが、変わった点といえば、先に選択したところがもとに戻らないという点もあります。
・グリッドに表示させたくないいくつかのカラムはVisible:=falseにしています。
ポイントはここでした。
あまりに多量のDBGrid.Columns.Items[hoge].visible:=falseをやってしまうと、RowSelectは効かなくなる、という仮説をたて、該当部分をコメントアウトしてみました。
するとRowSelectは効くようになりました。
そこで、DBGrid.Columns.Items[hoge].visible:=falseではなくDBGrid.Columns.Items[hoge].Width:=0に置き換えてみました。するとRowSelectはきくようになりました。これでいこうと思います。
ofZさん、構っていただいてありがとう。
ツイート | ![]() |