V8→V9で挙動の異なるプログラムについて
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
mf4306
投稿数: 73
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
V8からV9Plusへ変更したところ、挙動の異なるプログラムが現れました。
その原因がdbMagic環境設定の違いによるものなのか、或いはV8とV9でプログラムの作りを変える必要があるのかを判断したく投稿をさせていただきました。
(V8→V9Plus化は、V8.2K4SP2aをアプリケーション出力し、V9PlusSP3にてアプリケーション入力しました)
以下概要でオンラインプログラムを組んでいます。
===========================================================
親タスク ボタン設置 項目なし、実行イベント「ズーム」、コントロール名「A」
親タスク H=ハンドラには何も設定なし
子タスク ボタン設置 項目あり、実行イベント「ズーム」、コントロール名なし
子タスク H=ハンドラへ「コントロールヒット」(有効条件はCtrlname()='A')、処理コマンドはバッチ処理
===========================================================
V8の時は、
子タスクのボタン上にカーソルがある状態で、親タスクのボタンを押下すると、
子タスクのバッチ処理が実行されていただけなのですが、
V9Plusにしたら、
子タスクのバッチ処理実行後に、更に子タスク上のカーソルが止まっていたボタンが押下されるようになってしまいました。
親タスクで発生したズームイベントが子タスクまで引き継がれた、という事だと思っているのですが、
V8の時は何故今回の様な現象が出なかったのか、さっぱり理解できてないです。
環境設定の違いではそんな現象は出ませんよ、という事だけでも分かるとありがたいです。
すみません、ご助言の程どうぞ宜しくお願い致します。
その原因がdbMagic環境設定の違いによるものなのか、或いはV8とV9でプログラムの作りを変える必要があるのかを判断したく投稿をさせていただきました。
(V8→V9Plus化は、V8.2K4SP2aをアプリケーション出力し、V9PlusSP3にてアプリケーション入力しました)
以下概要でオンラインプログラムを組んでいます。
===========================================================
親タスク ボタン設置 項目なし、実行イベント「ズーム」、コントロール名「A」
親タスク H=ハンドラには何も設定なし
子タスク ボタン設置 項目あり、実行イベント「ズーム」、コントロール名なし
子タスク H=ハンドラへ「コントロールヒット」(有効条件はCtrlname()='A')、処理コマンドはバッチ処理
===========================================================
V8の時は、
子タスクのボタン上にカーソルがある状態で、親タスクのボタンを押下すると、
子タスクのバッチ処理が実行されていただけなのですが、
V9Plusにしたら、
子タスクのバッチ処理実行後に、更に子タスク上のカーソルが止まっていたボタンが押下されるようになってしまいました。
親タスクで発生したズームイベントが子タスクまで引き継がれた、という事だと思っているのですが、
V8の時は何故今回の様な現象が出なかったのか、さっぱり理解できてないです。
環境設定の違いではそんな現象は出ませんよ、という事だけでも分かるとありがたいです。
すみません、ご助言の程どうぞ宜しくお願い致します。
投票数:0
平均点:0.00
Tanda
投稿数: 2151
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
mf4306 さん、こんにちは。
それぞれのハンドラ行の「伝播」欄の設定はどうなっていますか?
タンダコンピュータ/丹田 昌信
それぞれのハンドラ行の「伝播」欄の設定はどうなっていますか?
タンダコンピュータ/丹田 昌信
投票数:0
平均点:0.00
mf4306
投稿数: 73
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
Tandaさん、本当にたびたびありがとうございます。
伝播は全てNoになっていました。
伝播は全てNoになっていました。
投票数:0
平均点:0.00
Tanda
投稿数: 2151
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
mf4306 さん、こんにちは。
伝播が No になっていれば、その後のハンドラの検索は行われなく
なるはずなんですが、そのあたりをもう一度チェックされてみては?
タンダコンピュータ/丹田 昌信
伝播が No になっていれば、その後のハンドラの検索は行われなく
なるはずなんですが、そのあたりをもう一度チェックされてみては?
タンダコンピュータ/丹田 昌信
投票数:0
平均点:0.00
mf4306
投稿数: 73
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
Tandaさん、お返事ありがとうございます。
プログラム内を見てみましたが、見るだけでは伝播Yesになっている箇所は見当たりませんでした。
もう少し伝播のあたりを検証してみます。
結果はまたこの場にご報告させていただきます。
プログラム内を見てみましたが、見るだけでは伝播Yesになっている箇所は見当たりませんでした。
もう少し伝播のあたりを検証してみます。
結果はまたこの場にご報告させていただきます。
投票数:0
平均点:0.00
null
投稿数: 191
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
質問内容から判断すると伝播されないのは「コントロールヒット」イベントであって、プログラムに伝播 No の
「ズーム」ハンドラが無いのであれば、ボタンに割り当てた「ズーム」は伝播すると思います。
親ボタン上で左クリック→「コントロールヒット」→バッチ実行
→左クリックを離すことで親ボタンがクリックされたことになり、実行イベント「ズーム」が発生
→この時、子ボタンにパークしているので、子ボタンにパークしている時に F5 を押したと同じ状態になる
→子ボタン押下時の処理が実行
親ボタンをパーク出来るようにするか、親ボタンの実行イベントを「ズーム」以外にすれば回避出来るのでは?
# V8 でそうならなかったのはどうしてなのかは判りませんが…
「ズーム」ハンドラが無いのであれば、ボタンに割り当てた「ズーム」は伝播すると思います。
親ボタン上で左クリック→「コントロールヒット」→バッチ実行
→左クリックを離すことで親ボタンがクリックされたことになり、実行イベント「ズーム」が発生
→この時、子ボタンにパークしているので、子ボタンにパークしている時に F5 を押したと同じ状態になる
→子ボタン押下時の処理が実行
親ボタンをパーク出来るようにするか、親ボタンの実行イベントを「ズーム」以外にすれば回避出来るのでは?
# V8 でそうならなかったのはどうしてなのかは判りませんが…
投票数:0
平均点:0.00
mf4306
投稿数: 73
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
nullさん、ありがとうございます。
そのプログラムはその動きになる!と断定していただけたのはありがたいです。
なかなかMagicの機能を理解していない部分がありまして、指摘いただいた回避方法を分かっていても、
V8の時は動作していた、という実績を目の前に、正しい判断が出来なくなっておりました。
さっそくV9で正しく動作するプログラムに直してみます。
伝播の動作もテストプログラム作って理解してみます。
そのプログラムはその動きになる!と断定していただけたのはありがたいです。
なかなかMagicの機能を理解していない部分がありまして、指摘いただいた回避方法を分かっていても、
V8の時は動作していた、という実績を目の前に、正しい判断が出来なくなっておりました。
さっそくV9で正しく動作するプログラムに直してみます。
伝播の動作もテストプログラム作って理解してみます。
投票数:0
平均点:0.00