サブフォームから親タスクをクリックすると移動します
皆さん、こんばんは。
上記件名の通り、サブフォームにテーブルコントロールを設置し
テーブルの入力途中に親タスクをクリックするとカーソルが親タスクに移動します。
子タスクのウインドウタイプはM=モーダルにしてます。
サブフォームを使用しないサブタスクにしたら問題ありませんでした。
解決法がございましたら教えてください。
-
サブフォームを入力中、親タスクをクリックしても親タスクにパークが戻らないようにしたい場合がある、というご要望なのでしょうね。
サブフォームの場合、その動きは出来て当然だと思います。
それを出来ないようにするには、自分ならサブフォーム側の最初の項目のコントロール後処理か、最後のコントロール検証処理でエラー表示を行い、サブフォームから抜けられないようにするとか、いい方法ではないかもしれませんがそれぐらいしか思いつきません。
もっといい方法もあるかもしれないので別の方の投稿を期待します。 -
nkmtさん
ありがとうございます。
サブフォームを抜ける時に、キャンセルしますか?等のメッセージで対処しようと思います。
-
kagoさん、
サブフォームは親のフォームと一体で動くフォームですから、サブタスク側の「ウィンドウタイプ」の設定は無視されるみたいですね。
ちなみに、「モーダル」とは、もともと「ポップアップで表示されるウィンドウ」という意味のウィンドウですので、サブフォームで使用するにはあまり意味がないでしょうね。
-
Tandaさん、私もそう思っていました。
何か、他の方法がないか聞いてみました。
-
kagoさん
こんにちは
昔はできました。
私の場合、XPA2から4に変えて正常に出来なくなりました。
ひょっとしたらできるかもしれません。
親タスクのコントール名の先頭に同じ文字を定義します。
例としてa_~。
サブフォームで「コントロールヒット」イベントを追加し、
条件に「Left(LastClicked(),2)='a_'」。
処理の明細には何も定義しない。
そーすると、サブフォーム内でコントロールヒットが無効化され、カーソルが移動しません。
私のバージョン4.9では、1回のクリックは正常に動作し、ダブルクリックでは親のカーソルに移動します。
2.4以前では移動しませんでした。
plusなら正常に動くかもしれません。
-
また、強引なやり方もあります。
最初は親タスクとサブフォームを表示しますが、
サブフォームを編集しようとすると、サブフォームを表示ではなく、
親タスクとサブフォームが一体になった子タスクを起動する方法があります。
サブフォームの編集は、コントールヒットまたは実行ボタン等でイベントを取得できます。
そのイベントを親タスクで実行させ、一体型の子タスクを起動します。
サブフォーム(一体型)の編集が終了したならば、
親に戻り、サブフォームを再表示すれば、変更が反映します。
画面のちらちらや、サブフォームの位置付け等は上手く調整してください。
-
sudoさん、こんにちは。
Magicのバージョンによって効かないかもしれないとの事ですがいいですね。
(私はスレッド主ではありませんが)貴重な情報ありがとうございます。 -
sudoさん、貴重な情報ありがとうございました。
最新バージョンで作成してますので、まだ何かありそうですね?
サインインしてコメントを残してください。
コメント
8件のコメント