[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2004/09/03(Fri) 15:19
投稿者名:ダンボ
URL :
タイトル:
デバッグ時にはMouseRowの値が不定
VB6(SP5)でフレキシブルグリッドののデバッグをすると.MouseRowの値が不定になるのですが、
常識でしょうか?皆さんどうやって逃げますか?

具体的には、コーディングで実験すれば分かるように、プログラムがデバッグモードに入っても、
MouseRowの値は、マウスの動きにつれて変化してしまいます。

Private Sub Grid1_Click()
With Grid1
  .Row = .MouseRow
  If .Row <> .MouseRow Then Stop
  Debug.Print .MouseRow
  Debug.Print .MouseRow
  Debug.Print .MouseRow
  If .Row <> .MouseRow Then Stop
End With

投稿時間:2004/09/04(Sat) 21:43
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: デバッグ時にはMouseRowの値が不定
> 具体的には、コーディングで実験すれば分かるように、プログラムがデバッグモードに入っても、
> MouseRowの値は、マウスの動きにつれて変化してしまいます。

実行結果
2
2
2

さて、何の事でしょうか?

MouseRow プロパティ :現在のマウス ポインタの位置を行と列の座標で返します。

投稿時間:2004/09/06(Mon) 10:59
投稿者名:ダンボ
URL :
タイトル:
Re^2: デバッグ時にはMouseRowの値が不定
> 実行結果
>  2
>  2
>  2
> さて、何の事でしょうか?

言葉が足りませんでした。F8でデバッグ行をステップ実行すれば、それは問題なく上記のとおりになります。
しかし、その間に別なウィンドウを見たり他の箇所のコードを見たりするためにマウス操作をすると、
.MouseRowの値が変わってしまい、「If .Row <> .MouseRow Then Stopでストップするよ」ということが
言いたかったのです。

言い直すと、3行のDebug.Printを実行する間にマウスを動かすと、.MouseRowの値が変わります。
(クリックしなくても。)

「MouseRow プロパティ:現在のマウス ポインタの位置を行と列の座標で返します。」と言われても
デバッグ中にも.MouseRowの値を変えられるとデバッグが困難だなあ。

私が、あって欲しい仕様:「MouseRowプロパティ:フレキシブルグリッドをマウスクリックしたRow位置」
実装仕様:「常にマウス位置を監視しており、フレキシブルグリッド座標に変換したRow値」

それが前提知識に加わったので、現在はCMouseRow=.MouseRowのように、急いで保存してから以後は
.MouseRow値を使わずにデバッグするようにしたので、問題は回避できていますけどね。

投稿時間:2004/09/06(Mon) 10:40
投稿者名:nanashi
Eメール:
URL :
タイトル:
Re: デバッグ時にはMouseRowの値が不定
> VB6(SP5)でフレキシブルグリッドののデバッグをすると.MouseRowの値が不定になるのですが、
> 常識でしょうか?皆さんどうやって逃げますか?

デバッグ時にステップ実行すると、ってことですよね?
仕方ないんじゃないですかね。
別にexeにした時に特に問題になる訳でもないし、私は諦めてますけど。

しいて言えば、イベントの頭でMouseRowの値を変数に入れておくくらいです。

投稿時間:2004/09/06(Mon) 11:08
投稿者名:ダンボ
URL :
タイトル:
Re^2: デバッグ時にはMouseRowの値が不定
> 仕方ないんじゃないですかね。
> 別にexeにした時に特に問題になる訳でもないし、私は諦めてますけど。

nanashiさん、どうもです。私だけではないことが分かって安心しました。
Form_MouseMoveのデバッグ時はどうよ、ということで下記コーディングで実験するとやはりリアルタイムで
更新していますね。

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Debug.Print Y
Debug.Print Y
Debug.Print Y