過去の桐井戸端BBS (桐ver.8)
4887 イベントで表の終了 田中 2000/02/27-15:11
またまた、行き詰まってしまいました。

それは、下記の内容です。
売上入力フォームで保存のコマンドボタンを押すと、売上.kevの手続き実行処理で
うりあげ.tblを売上台帳へ保存するのです。
しかし、この保存処理中に、新商品の登録などさまざまな処理をしています。
よって表を開いたり、表を閉じたりするんですが、
イベント中には表を閉じることが出来ないようです。
なにか、いい方法はないでしょうか。
みなさん、よろしくご指導ください。
4888 Re:イベントで表の終了 佐田 守弘 2000/02/27-15:48
記事番号4887へのコメント
田中さん
イベントは、会話処理の延長線上の機能のため、自分自身の表やフォームを閉じる事は(原則として)できません。
●自分自身のフォームを閉じる方法
フォーム上にコマンドボタンを作り、「閉じる」の機能名を設定して下さい。このボタンは非表示で構いません。
そして、イベントの中からこのボタンを実行するメソッドを呼び出します。
メソッド呼び出し @閉じるボタン.実行()

●イベントハンドラの中で呼び出した表
そのイベントハンドラの中で呼び出した表であれば、表コマンドで閉じられるはずなのですが。

佐田守弘(KS-00119)
4893 Re:イベントで表の終了 田中 2000/02/28-09:04
記事番号4888へのコメント
佐田先生、早々にご回答頂きありがとうございます。
>●イベントハンドラの中で呼び出した表
>そのイベントハンドラの中で呼び出した表であれば、表コマンドで閉じられるはずなのですが。
以前は一括処理で作っていたシステムを全てイベントに変更しいようとしています。
そこで、売上入力のデータを売上台帳に保存し、新商品の登録をします。
この流れをイベントに置き換えたいのです。

表  ”売上台帳”
ジャンプ 行番号=最終
読み込み 表,"売上入力",{・・・・・

表  ”売上入力”
絞り込み [新商品]<>#未定義
表  ”商品”
読み込み 表,”売上入力”,{・・・・

表  ”売上入力”
行削除 *


といった流れを作りたいのですが、
表コマンドはエラーになるのです。
どうすればこの流れが造れるでしょうか?

なぜイベントかと言いますと、
フォームをオーバーラップで造りたいのです。
こうすれば、桐が表面にでてこない
よろしくご指導ください。

4895 Re:イベントで表の終了 bonito 2000/02/28-14:53
記事番号4893へのコメント
田中さん、こんにちは。
>なぜイベントかと言いますと、
>フォームをオーバーラップで造りたいのです。
>こうすれば、桐が表面にでてこない

私もそうです、特にメニューバーってのが邪魔くさいですよね。
ついでに、ステータスバーもオーバーラップとポップアップで
は、取ったり付けたり出来るといいんだけど・・・。

「表」コマンド(全ての表を閉じる < 私自身は使った事がない)
ではなく「終了 表・・」「中止 表・・」コマンドを使ったら
いかがですか?

もっとも、WIN桐では(多分)、田中さんの例のような場合、表は
いちいち閉じる必要もあんまりなくて(使用できる表の制限が大幅
に拡大されたし・・・)、閉じたり、開いたりするのは、ほとんど
多重化された表だけのような気がします、が・・・。

4897 Re:イベントで表の終了 悲しげ 2000/02/28-21:15
記事番号4893へのコメント
どもっ、田中さん、
既にbonitoさんがお答えになっているとおり、犯人は「表」コマンド
にありそうです。これは全ての表を閉じることを意味します。
おそらくは、ある表を対象表としたフォームからイベントを実行して
いるのだと思われますが、そして以前に佐田さんがおっしゃったよう
にフォーム自身の編集対象表を閉じることはできませんから、「表」
コマンドでは許してくれないものと思われます。
対応方法は、これもbonitoさんがお書きになったとおり、「終了 表」
コマンドを使って、閉じる表を個々に指定すればいいと思います。
----------------------------
表  ”売上台帳”
ジャンプ 行番号=最終
読み込み 表,"売上入力",{・・・・・
終了 表 編集対象表
     *↑または上で表番号を割り付けてあればそれでもいい

*以下同様
----------------------------

4905 (参考)イベントはその中で完結する事が必要です 佐田 守弘 2000/02/29-00:58
記事番号4897へのコメント
田中さん
●イベントの中で表を閉じる
bonitoさんと悲しげさんがコメントされている通り、「表」コマンドをパラメータを付けずに使うと、
全ての開かれている表を閉じる意味になります。
イベントの中では、そのイベントを実行しているフォームで開かれている表は閉じる事ができません。
敢て説明する事もないと思いますが、イベントはフォームの中から実行されている機能ですから、
自分自身を呼び出しているフォームが開いている表を閉じてしまうと、イベントそのものの行き場所がなくなってしまう、
と理解して下さい。

ですが、イベントの中で開いた表であれば、そのイベントの中で閉じられますし、閉じてからそのイベントハンドラを
終了するのが良いと思います。

●イベントはその中で完結すべし
やや質問の主旨から外れますが、関連する事なので補足事項として付け加えさせて頂きます。

1つのイベントハンドラで表を開いたままにし、別のイベントハンドラでその表を閉じられるのかどうかは試していません。
仮にできるとしても、「行儀が良くない方法」と考えます。

イベントハンドラはその中で行った事を、その中で完結して終わる、という考え方に徹した方が良いでしょう。

そうでないと、いつどの場面から呼び出されるかも知れないイベントですから、思わぬ事が発生する事が考えられます。
例えば、表を開いて閉じずに終わってしまえば、同じイベントが再度呼び出された時に、同じ表をもう一度開いてしまう
おそれがあります。
そういう意味で、イベントで別のフォームを開く時には、モーダルフォームだけが開ける様になっているのだと考えます。

佐田守弘(KS-00119)
4907 ありがとうございました。 田中 2000/02/29-08:21
記事番号4905へのコメント
みなさん、ご指導ありがとうございました。
チャレンジしてみます。

戻る