過去の桐井戸端BBS (桐ver.8)
10891 イベントでフォームを切り替えたい 若葉マークン 2001/04/16-10:52
同一編集表で"あフォーム"と"いフォーム”を切り替えたいのですが…
コマンドボタンで 多重化 表編集/モーダルフォーム "いフォーム"と同じ事を
イベントで実行したいのですが、どのように記述すればよいのかわかりません。

フォームで表の多重化は許可しています。
"メソッド呼び出し @フォーム."いフォーム"とすると
               メソッドの実行が不可能です。
"多重化 表番号=&table/フォーム呼び出し……とすると
               …表は使用中です。とエラー発生
よろしくお願いします。


10893 フォームの選択ではだめですか 今村 誠 2001/04/16-14:28
記事番号10891へのコメント
若葉マークンさんこんにちは
状況が分からないので私の環境でのテスト結果です。
m&sで編集表が一つのフォームから一覧表フォームをフォームの選択で切り替えしました。
別にエラーは帰りませんでした。
フォームの選択はコマンドボタンの機能機能名の選択から
表示 の中の 上から4つ目がフォームを選択して切り替えるコマンドになると思います。
モーダルフォームを選ぶとエラーがでました。
一括処理からウィンド作成した場合は、モーダルフォームでもエラーはでなかったと思います。
多重化フォーム編集は、現在のフォームの陰に隠れて使えないようでした。
もしフォームの選択でないときは詳しく状況を説明してください。
10894 Re:フォームの選択ではだめですか 若葉マークン 2001/04/16-15:37
記事番号10893へのコメント
>>もしフォームの選択でないときは詳しく状況を説明してください。
>説明不足のようです。すみません。状況を説明します。

あ.wfm…カード形式フォーム(対照表 あ.tbl)
い.wfm…伝票形式フォーム (対照表 あ.tbl)
メニューフォームのコマンドボタンのマウス左クリックイベントの
フォーム呼び出しで"あ.wfm"を呼出しています。
この"あ.wfm"上のコマンドボタンのマウス左クリックイベントで"い.wfm"にフォームを切り替えたいのです。
コマンドボタンの機能で
多重化 表編集/モーダルフォーム "い.wfm"
とすればうまくいくのですが
同じ事をイベントハンドら内でやりたいのですが…
いかがでしょうか?

10898 Re:フォームの選択ではだめですか 尾形 2001/04/16-17:32
記事番号10894へのコメント
若葉マークンさん、こんにちは
>"メソッド呼び出し @フォーム."いフォーム"
これは表記が不完全です。
どのメソッドなのでしょうか?

ボタンのクリックイベント内で
編集表 "あ.tbl"
多重化
代入 &多重化=#IS表
フォーム呼び出し "い.wfm",編集表=する・・・
終了 表 &多重化
手続き終了

でどんなでしょうか?
多重化した後に変数に表番号を確保していますが、必要ないかもしれません。
安全の為 (^^;

10900 Re:フォームの選択ではだめですか 尾形 2001/04/16-17:44
記事番号10898へのコメント
ボタンを押してなるのであれば
メソッド呼び出し @b多重化.実行()
でもいいのかな。
(ボタンのオブジェクト名を"b多重化"とした例です)

10901 Re:フォームの選択ではだめですか 佐田 守弘 2001/04/16-18:33
記事番号10894へのコメント
若葉マークンさん

●コマンドボタンをイベント内で実行させる
イベントハンドラ内でコマンドとして行えないものはいくつかあります。
しかしコマンドボタンの機能で実行できるものであれば、その機能のコマンドボタンを作っておき、
「メソッド呼び出し 実行」
コマンドでそのボタンを実行して下さい。
このコマンドにより、コマンドボタンをおしたのと同じ結果になります。

●元来は
質問の主旨は、フォームの切替ですね。多重化は本質的には切替ではなく、もう1つフォームを開いています。
最初に開いたメニューのフォームが、オーバーラップフォームでなければ、
コマンドボタンの
 「開く」<新しいフォーム名>
 「閉じる」
で切り換えるのが元来の切り換え方です。
また、モーダルフォームでなく、編集対象表が同じであれば、フォーム選択で切り換えるのが本来の方法だと思います。

しかし、トップメニューをオーバーラップにしようとすると、この点からうまく行かなくなります。
オーバーラップで開いたフォームは、自身を閉じる以外には消せません。
従って次に開くフォームは、フォーム呼出しで呼びださるを得ず、モーダルフォームになります。
モーダルフォームは、終了するまで他のフォームに切り換える事ができないフォームですから、
御質問の様な事がどうしても起きます。

佐田守弘(KS-00119)


10906 Re:フォームの選択ではだめですか ONnoji 2001/04/16-21:34
記事番号10894へのコメント
>>説明不足のようです。すみません。状況を説明します。
>あ.wfm…カード形式フォーム(対照表 あ.tbl)
>い.wfm…伝票形式フォーム (対照表 あ.tbl)
>メニューフォームのコマンドボタンのマウス左クリックイベントの
>フォーム呼び出しで"あ.wfm"を呼出しています。
>この"あ.wfm"上のコマンドボタンのマウス左クリックイベントで"い.wfm"
>にフォームを切り替えたいのです。
>コマンドボタンの機能で
>多重化 表編集/モーダルフォーム "い.wfm"
>とすればうまくいくのですが
>同じ事をイベントハンドら内でやりたいのですが…
>いかがでしょうか?

今村さん こんばんは。

上の説明を読んでやりたいことが理解できました。
以下が参考になればいいんですけれど。

まず最初に、メニューフォームで あ.wfm を開くときに、
[フォーム呼び出し]コマンドの代わりに、
[ウィンドウ作成]コマンドを使用します。
*イベントでも[ウィンドウ作成]コマンドは使えます。
*コマンドボタンの機能名の[開く]と同じ結果が得られます。

手続き定義開始 openあwfm( )
 変数宣言 自動,整数{&handle}
 ウィンドウ作成 "あ.wfm",ハンドル=&handle,編集表=開く
手続き定義終了

次に あ.wfm と い.wfm の[フォーム]の[ウィンドウの形式]属性は "ポップアップ" にしておきます。

最後に あ.wfm のコマンドボタンは次のように設定します。
*[マウス左クリック]イベントでは[表示]と[閉じる]を実装するのが難しいです。

機能名 パラメータリスト
[1]表示
[2]手続き実行 ChangeForm
[3]閉じる

手続き定義開始 ChangeForm( )
 変数宣言 自動,整数{&handle}
 編集表 "あwfmの編集対象.tbl"
 多重化
 *フォーム呼び出し "い.wfm",編集表=する
 ウィンドウ作成 "い.wfm",ハンドル=&handle,編集表=する
手続き定義終了

これで い.wfm が開いて あ.wfm が閉じます。
しかし、い.wfm はポップアップ形式のフォームですが、
モーダルフォームではなくてモードレスフォームです。
*どうしてもモーダルフォームにしたい場合は
*メニューフォーム側で対処しなければならないでしょう。たぶん。

メニューフォームがチャイルド形式のフォームになっていればさほど気にならないと思います。

<蛇足>
モーダルフォームでなければならないのは
(1)モーダルフォームの操作結果を取得したい時
(2)他のフォームを操作された場合に矛盾や破綻が生じる時
だと思います。

10908 Re:再投稿です。 ONnoji 2001/04/16-21:55
記事番号10906へのコメント
若葉マークンさん すいません。
宛名を間違えました。
今村さん すいません。

>>説明不足のようです。すみません。状況を説明します。
>あ.wfm…カード形式フォーム(対照表 あ.tbl)
>い.wfm…伝票形式フォーム (対照表 あ.tbl)
>メニューフォームのコマンドボタンのマウス左クリックイベントの
>フォーム呼び出しで"あ.wfm"を呼出しています。
>この"あ.wfm"上のコマンドボタンのマウス左クリックイベントで"い.wfm"
>にフォームを切り替えたいのです。
>コマンドボタンの機能で
>多重化 表編集/モーダルフォーム "い.wfm"
>とすればうまくいくのですが
>同じ事をイベントハンドら内でやりたいのですが…
>いかがでしょうか?

若葉マークンさん こんばんは。

上の説明を読んでやりたいことが理解できました。
以下が参考になればいいんですけれど。

まず最初に、メニューフォームで あ.wfm を開くときに、
[フォーム呼び出し]コマンドの代わりに、
[ウィンドウ作成]コマンドを使用します。
*イベントでも[ウィンドウ作成]コマンドは使えます。
*コマンドボタンの機能名の[開く]と同じ結果が得られます。

手続き定義開始 openあwfm( )
 変数宣言 自動,整数{&handle}
 ウィンドウ作成 "あ.wfm",ハンドル=&handle,編集表=開く
手続き定義終了

次に あ.wfm と い.wfm の[フォーム]の[ウィンドウの形式]属性は "ポップアップ" にしておきます。

最後に あ.wfm のコマンドボタンは次のように設定します。
*[マウス左クリック]イベントでは[表示]と[閉じる]を実装するのが難しいです。

機能名 パラメータリスト
[1]表示
[2]手続き実行 ChangeForm
[3]閉じる

手続き定義開始 ChangeForm( )
 変数宣言 自動,整数{&handle}
 編集表 "あwfmの編集対象.tbl"
 多重化
 *フォーム呼び出し "い.wfm",編集表=する
 ウィンドウ作成 "い.wfm",ハンドル=&handle,編集表=する
手続き定義終了

これで い.wfm が開いて あ.wfm が閉じます。
しかし、い.wfm はポップアップ形式のフォームですが、
モーダルフォームではなくてモードレスフォームです。
*どうしてもモーダルフォームにしたい場合は
*メニューフォーム側で対処しなければならないでしょう。たぶん。

メニューフォームがチャイルド形式のフォームになっていればさほど気にならないと思います。

<蛇足>
モーダルフォームでなければならないのは
(1)モーダルフォームの操作結果を取得したい時
(2)他のフォームを操作された場合に矛盾や破綻が生じる時
(3)操作の流れを設定したい時
だと思います。

10910 Re:皆様、貴重な時間をすみません。 若葉マークン 2001/04/17-17:10
記事番号10891へのコメント
今村さん、尾形さん、佐田さん、ONnojiさん
皆さん、ありがとうございます。
僕の不注意と不勉強のせいです。
まず最初コマンドボタンのマウス左クリックイベントで

メソッド呼び出し @フォーム.フォーム選択("い.wfm")

とすると、メソッドが実行できません…となりました。
次に
過去ログ等をいろいろと見て

多重化 表番号=&table   (&tableは編集対象表の表番号)
フォーム呼び出し "い.wfm"

と記述すると ”現在*表は使用中です” と成り…教えてください。
と、なった訳です。
多重化コマンドが理解できていませんでした。
多重化 表番号=5
とすると、表番号が5のテーブルを多重化するものと、思い込んでいました。
お騒がせいたしました。

戻る