過去の桐井戸端BBS (桐ver.7)
6062 「ウィンドウ作成」で画面に表示したフォームのコマンドボタンが機能しません。 中野隆雄 2000/05/16-17:20
お世話になります。標記の件ですが、次のような処理をしたいと考えています。
(1) 一括処理の「ウィンドウ作成」コマンドで、カード形式のフォーム(参照表、編集対象表なし)を画面に表示する。
(2) 「遅延」コマンドで処理が延期されている間に、フォームのコマンドボタンをマウスでクリックした時は変数に値を代入、
クリックしなかった時は変数は初期値のままにする。
(3) 「画面消去」コマンドでフォームを閉じる。

 実際にやってみたところ、(2)の段階でコマンドボタンをクリックしても変数に値が代入されませんでした。
同じフォームを「フォーム呼出し」コマンドで表示すると代入できますが、フォームを手動で閉じなければなりません。
一定時間が経過したらフォームが自動的に閉じられ、なおかつコマンドボタンが機能するようにすることは
できるのでしょうか。よろしくご教示お願いします。

「桐」のバージョンは、「7.1」です。
6064 Re:「ウィンドウ作成」で画面に表示したフォームのコマンドボタンが機能しません。 宮城 2000/05/16-18:41
記事番号6063へのコメント
中野隆雄さん、こんにちは。

一括処理の中では、コマンドボタンは「その他&一括処理へ戻る」(あれ、V7.1だったらどうだったでしょうか?)しか
機能しません(少なくともそう割り切ったほうがよい。)

その間一括処理は止まっているはず。つまり、遅延コマンドは動いていません。
ボタン名を取得しそれにより処理を振り分けるような使い方をします。
よって、ボタンを「変数入力」「既定値」とでもふたつ作り、ケース制御ででも振り分けるぐらいでしょうね。

6070 Re:「ウィンドウ作成」で画面に表示したフォームのコマンドボタンが機能しません。 KH 2000/05/16-21:03
記事番号6062へのコメント
 何をされようとしているのよくわからないでコメントするのもどうかと思いましたが、
一般的なメニューフォームから実行をする場合と考えて、宮城さんのコメントに付け加えさせて頂きます。
 多分フォームのボタンの部分の押下状態が取得できないのだと思われます。
コマンドボタンに一括処理へ戻るを設定したら、遅延コマンドではなく繰り返しコマンドとウィンドウ会話で取得すると
良いかと思われます。
ウィンドウ呼び出しはオーバーラップ形式フォーム(桐システムを隠してしまうフォーム)のためのもののようです。
画面消去コマンドは実行ウィンドウ表示の時のみ実行可能ですが?。以下にサンプルをのせます。

代入 &FM=“******.WFM”
ウィンドウ作成 &FM,ハンドル=&メインメニュー
繰り返し
ウィンドウ会話 &メインメニュー,カーソル=→,更新=禁止,許可作業=なし,ガイド="処理
を選択してください。",終了状態=&終了状態,ボタン=&メイン処理
    条件 ( &メイン処理="終了" ) 繰り返し中止
    ケース開始
         ケース(&メイン処理="あああ")
            手続き実行 あ実行
         ケース(&メイン処理="いいい")
            手続き実行 い実行




    ケース終了
繰り返し終了
ウィンドウ終了 &メインメニュー
終了
名札 あ実行
  ・
  ・
  ・
手続き終了
名札 い実行
  ・
  ・
  ・
手続き終了
  ・
  ・
  ・
長くなってすいません。

6080 Re:「ウィンドウ作成」で画面に表示したフォームのコマンドボタンが機能しません。 佐田 守弘 2000/05/16-23:30
記事番号6062へのコメント
中野隆雄さん
既に宮城さんとKHさんがコメントされていますので、概論的な部分で一般的な解説をします。

●桐ver.7でのフォーム編集について
桐ver.8でも一括処理からフォームを呼び出す時は同じですが、ウィンドウ作成コマンドで行うのが普通の方法です。
そして、作成したウィンドウに対してウィンドウ会話コマンドを行う事によって、会話処理モードのフォーム編集になります。
そして、フォーム編集を行っている間は、一括処理のプログラムは中断しています。
正しくは、ウィンドウ会話コマンドが実行されていて、このコマンドが終わるのを待っている状態というべきでしょう。
そして「一括処理に戻る」の機能を実行することによって、フォームが終了し、ウィンドウ会話コマンドが終わります。
一括処理コマンドは、この段階で次の行が実行されます。

●一括処理に戻った後の処理のブランチ
ウィンドウ会話コマンドの中に書いた「ボタン=」のパラメータで、どのコマンドボタンで
「一括処理に戻る」が実行されたかを調べられます。
変数に戻されるのはコマンドボタンのオブジェクト名です。

そこで、ケースコマンドなどを使い、指定した変数に入力された値(コマンドボタンのオブジェクト名)によって、
次に行う処理を選びます。

佐田守弘(KS-00119)
6083 お礼と補足説明 中野隆雄 2000/05/17-13:30
記事番号6062へのコメント
ご教示下さいましたみなさま、お礼を申し上げます。
と同時に、私の説明が不十分で、何をしたいのか悩ませてしまったようでおわびします。
要するに、処理の流れを条件によって、AとBに分けたいのですが、Aの方は年度始めなどの特殊な条件の場合にのみ
実行します。
つまり、通常はBの方に決まっているので、一括処理中で何もしなければ自然にBに処理が流れ、
フォームのコマンドボタンをクリックするなどの特定の処理をした時だけ、Aの方に分かれるようにしたいと考えたのです。
例えば、Windows95を起動する時、何もしなければ通常のモードで起動が完了しますが、起動中に「F8」キーを押すと
「Safe」モードで起動が完了します。
こういう感じで処理が分けられないかと考えたのですが、みなさまのコメントを読むとできないようなので、
おとなしく、メニューで分かれさせます。ありがとうございました。

戻る