今、VB6で、階層フレキシブルグリッドコントロール(MSHFLEXGRID)を
使用して、ADOデータコントロール(ADODC)で接続した、
ODBCデータベースのデータを表示させています。

その表示されたセルをクリックすることで、横1行データを選択して、
変更用フォームにデータをコピーさせているのですが、
垂直方向のスクロールをしていない状態と
スクロールさせた状態で、クリックした位置(プロパティMouseRowを使用)が
違うのです。
具体的には、データ件数40件で、最大表示30件の状態で、以下のようでした。

『スクロール前』  クリック位置  MouseRowの値
           項目欄      0
           1行目      0
           2行目      1
          20行目     19
          35行目    クリックせず
          40行目    クリックせず
            欄外    クリックせず

『スクロール後』
           項目欄      0
           1行目      1
           2行目      2
          20行目     20
          35行目     35
          40行目     40
            欄外     40

また、表示件数15件だと、まったく『スクロール前』の状態でしたが、
別の日付のデータでスクロールをさせると、『スクロール後』の状態に
なりました。

どうも、ADODCを使用すると、こうなるらしいのですが、
対策を教えていただけませんか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

そうですかー。

ならばMSHFlexGridを使用せざるをえないですね。。。

要はクリックした正確な位置を取得したいのですよね?

回避方法ですが
1.Private宣言により変数2つを宣言
2.マウスダウンのイベントでMouseRow/MouseColを取得し、Private宣言した変数にセット
3.クリック時イベントでMouseRow/MouseColを取得しないで、Private宣言した変数を使用する

はずしてたら、すいません。
    • good
    • 0
この回答へのお礼

この通りやりましたが、うまくいきませんでした。
ただ、SQL文がまずかったらしく、構成を変えたら
うまくいきました。結果オーライ!ありがとございます。

お礼日時:2001/11/19 18:55

回答になってはないとは思うけど、、、



僕の場合はあまりFlexGridは使用してません。必要のない機能が多いからです。データを連結して表示するようなことをしてたり、Grid単位での色づけをしてるのであれば話は別ですが・・・

そんなことがないのであれば、DataGridを使用してみてはいかがでしょうか?
ADOデータコントロールを使用してるみたいだし、DataGridとの相性も悪くないですよ。

どうしてもFlexGridじゃなきゃだめですか?

この回答への補足

書き忘れてましたが、おっしゃる通り、データ内容で、3色に塗り分けていますので、FlexGridでないと・・・

補足日時:2001/11/04 20:52
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング