過去の桐井戸端BBS (桐ver.8)
7627 マウスインアウトイベントのクリック時とは? 宮城 2000/09/13-16:18
どうもイベントなるもの、実験してみないとなかなか理解できません。
たとえば、こんなことをします。

フォームを作り、テキストボックスを一つ配置。
このオブジェクトの属性画面のイベントのタブで「マウスインアウト」にチェックしてダブルクリック。
適当な KEV名を指定します。

手続き定義開始 テキスト_1::マウスインアウト(長整数 &フラグ,長整数 &明細番号)
 変数宣言 文字列{&文字列ダミー}
 &文字列ダミー="イベント発生 フラグ="+#文字列(&フラグ)
 確認 &文字列ダミー

手続き定義終了

間の3行を入力(ここでは全部全角にしています)。

これを編集状態にしてマウスを出し入れしてみます。
確認のダイアログでイベントの発生とそのときのフラグが確認できます。(ダイアログはエンターで閉じます。)

ここまではいいのですが、レファランスには「または対象オブジェクトがクリックされた」とき、
&フラグ=0でイベントが発生する旨の記載があり、首をひねっています。
何も起きないのですが・・・。

ひょっとして、コマンドボタンに限るのかと思いきや、これもクリックで「マウス左クリック」イベントは発生しますが、
「マウスインアウト」イベントは発生しません。

どう理解したらいいのでしょうか?

7630 Re:マウスインアウトイベントのクリック時とは? アックン 2000/09/13-18:16
記事番号7627へのコメント
宮城さん、こんばんは。
テキストボックスのソースに項目値または変数を設定しているときは、
クリックして訂正モードに入ったら、&フラグが 0 になります。

このことは一覧表の明細部にあるテキストオブジェクトでも同様です。

リアルタイムに &フラグの値を見たいときは、次のようにされてはどうでしょう。
フォームのフッタかヘッダにテキストオブジェクトを1個配し、ソースを &秒 としておきます。
ここに &フラグの値を表示することにします。

で、任意のテキストオブジェクトのマウスインアウトイベントをこんなふうに書いてみてください。

  &秒 = &フラグ
method @フォーム.変数変更()
method @フォーム.描画更新()

アックン(=^・^=)

7631 Re:マウスインアウトイベントのクリック時とは? アックン 2000/09/13-18:19
記事番号7630へのコメント
> テキストボックスのソースに項目値または変数を設定しているときは、
項目値ではなく、項目名が正解です。

どうもミスが多くてすみません。
7635 Re:マウスインアウトイベントのクリック時とは? 宮城 2000/09/13-19:03
記事番号7631へのコメント
アックン、ありがとうございます。
更新可能なソースが設定されていれば、ということだったのですね。

さらに実験してみました。「マウス左クリック」にもチェック。
確認メッセージでどちらのイベントかがわかるようにしておきます。

インでインアウトイベント発生。フラグ=1。
クリックでインアウトイベント発生。フラグ=0。
F4表示でインアウトイベント発生。フラグ=1。
インでインアウトイベント発生。フラグ=0。

左クリックイベントは発生せず。

クリックというより、編集状態の変更で発生しているようですね。

7649 Re:マウスインアウトイベントのクリック時とは? アックン 2000/09/14-11:01
記事番号7635へのコメント
宮城さん>
> インでインアウトイベント発生。フラグ=0。
ここは "アウトで・・" の記述ミスでしょう。

> 左クリックイベントは発生せず。
マウスインアウト→マウス左クリックの順に必ず発生してます。

左クリックの &フラグの戻り値は基本的に 0 で、左クリック時に Ctrl+ とすれば 8 、
Shift+ なら 4 、Ctrl+Shist なら 12 を返します。

確認コマンドを使うと正確に確認できないと思うので、紹介した方法を使ってみてください。
イベント別に &フラグ等のパラメータ変数(自動変数)の戻り値を他の変数に代入してやります。
たとえばインアウトの &フラグを &秒に、左クリックの &フラグを &分に代入し、
&秒と &分をソースとする各テキストオブジェクトを設けます。
念のためにメソッドで描画更新してやってください。

アックン(=^・^=)

7652 Re:マウスインアウトイベントのクリック時とは? 宮城 2000/09/14-13:37
記事番号7649へのコメント
>> インでインアウトイベント発生。フラグ=0。
>ここは "アウトで・・" の記述ミスでしょう。

おおせのとおり。

ついでに&STRをソースとするテキストも追加し、イベント名を表示するようにしてみました。
クリックで「左クリック」が表示されます。ひょっとして、インアウトのクリック→左クリックのクリック?
逆なら理解しやすいんですが。

>確認コマンドを使うと正確に確認できないと思うので、紹介した方法を使っ
>てみてください。

確認コマンドが機能しないことがあるんですか。(*_*) 知りませんでした。

7660 Re:マウスインアウトイベントのクリック時とは? アックン 2000/09/14-17:42
記事番号7652へのコメント
宮城さん>
発生順がわかりにくいようでしたら、こんなにしてはどうでしょうか。

マウスインアウトに
&件数=&件数+1
&a=&件数

左クリックに
&件数=&件数+1
&b=&件数

として、&a、&bをそれぞテキストオブジェクトに表示すれば、発生順にカウントを表示してくれるはずです。
各変数値をクリアするボタンでもつけておけばいいでしょう。

オブジェクト内に入る→左クリック→出る というマウス操作は、
正確には インアウト(イン)→左クリック→インアウト(アウト) となるはずです。

アックン(=^・^=)
7922 Re:マウスインアウトイベントのクリック時とは? <(=^・^=; 2000/10/04-11:08
記事番号7660へのコメント
宮城さん>
トレース出力ウィンドウを使うと、イベントやコマンドの実行をリアルタイムで見ることが出来ます。
以前一時使っただけで、その存在をすっかり忘れておりましたが、今ではこれを使って開発してます。

レス不要です。 アックン(=^・^=)


戻る