メインコンテンツへスキップ

サブフォームから親タスクをクリックすると移動します

コメント

8件のコメント

  • nkmt

    サブフォームを入力中、親タスクをクリックしても親タスクにパークが戻らないようにしたい場合がある、というご要望なのでしょうね。
    サブフォームの場合、その動きは出来て当然だと思います。
    それを出来ないようにするには、自分ならサブフォーム側の最初の項目のコントロール後処理か、最後のコントロール検証処理でエラー表示を行い、サブフォームから抜けられないようにするとか、いい方法ではないかもしれませんがそれぐらいしか思いつきません。

    もっといい方法もあるかもしれないので別の方の投稿を期待します。

  • kago

    nkmtさん

    ありがとうございます。

    サブフォームを抜ける時に、キャンセルしますか?等のメッセージで対処しようと思います。

     

  • Tanda

    kagoさん、

    サブフォームは親のフォームと一体で動くフォームですから、サブタスク側の「ウィンドウタイプ」の設定は無視されるみたいですね。

    ちなみに、「モーダル」とは、もともと「ポップアップで表示されるウィンドウ」という意味のウィンドウですので、サブフォームで使用するにはあまり意味がないでしょうね。

  • kago

    Tandaさん、私もそう思っていました。

    何か、他の方法がないか聞いてみました。

  • sudo

    kagoさん

    こんにちは

     

    昔はできました。

    私の場合、XPA2から4に変えて正常に出来なくなりました。

    ひょっとしたらできるかもしれません。

     

    親タスクのコントール名の先頭に同じ文字を定義します。

    例としてa_~。

    サブフォームで「コントロールヒット」イベントを追加し、

    条件に「Left(LastClicked(),2)='a_'」。

    処理の明細には何も定義しない。

     

    そーすると、サブフォーム内でコントロールヒットが無効化され、カーソルが移動しません。

     

    私のバージョン4.9では、1回のクリックは正常に動作し、ダブルクリックでは親のカーソルに移動します。

    2.4以前では移動しませんでした。

    plusなら正常に動くかもしれません。

     

  • sudo

    また、強引なやり方もあります。

     

    最初は親タスクとサブフォームを表示しますが、

    サブフォームを編集しようとすると、サブフォームを表示ではなく、

    親タスクとサブフォームが一体になった子タスクを起動する方法があります。

     

    サブフォームの編集は、コントールヒットまたは実行ボタン等でイベントを取得できます。

    そのイベントを親タスクで実行させ、一体型の子タスクを起動します。

    サブフォーム(一体型)の編集が終了したならば、

    親に戻り、サブフォームを再表示すれば、変更が反映します。

     

    画面のちらちらや、サブフォームの位置付け等は上手く調整してください。

  • nkmt

    sudoさん、こんにちは。
    Magicのバージョンによって効かないかもしれないとの事ですがいいですね。
    (私はスレッド主ではありませんが)貴重な情報ありがとうございます。

  • kago

    sudoさん、貴重な情報ありがとうございました。

    最新バージョンで作成してますので、まだ何かありそうですね?

サインインしてコメントを残してください。