過去の桐井戸端BBS (桐ver.9)
28121 イベントファイル名をその時によって使い分けたい 手塚 修 2004/11/05-10:51
メイン・サブフォーム(カード型と伝票形式)を作りました.
サブフォームのある項目をクリックし、メインフォームに反映させています。

メインフォーム経費の時にも、メインフォーム事故の時にも、
サブフォーム車両名を使いたいのですが、サブフォーム車両名は
メインフォーム経費より制御したkevのなかに組み込まれています。
サブフォーム車両名のイベントファイル名は、経費kevです。
このイベントファイル名を時により経費kev、
時により事故kevとしたいのですが、どのようにすればよいのでしょうか?

オブジェクト操作 @フォーム.イベントファイル名=&イベントファイル名
ではできないようですが?

よろしくお願いいたします。

28122 Re:イベントファイル名をその時によって使い分ける うにん 2004/11/05-12:46
記事番号28121へのコメント

>このイベントファイル名を時により経費kev、時により事故kevと
>したいのですが、どのようにすればよいのでしょうか?

メインフォームによって処理内容を変えるなら、そういうイベントを書けばよいのでは?

>オブジェクト操作 @フォーム.イベントファイル名=&イベントファイル名
>ではできないようですが?

フォームを開くと同時にそのイベントファイルも開いていますから、変更できるとは思えません。

28126 Re:イベントファイル名をその時によって使い分ける 手塚 修 2004/11/06-09:26
記事番号28122へのコメント
うにんさん すみません。連絡遅くなりました。

>フォームを開くと同時にそのイベントファイルも開いていますから、変更できる
>とは思えません。

わかりました。編集対象表のようにはいかないのですね。


>メインフォームによって処理内容を変えるなら、そういうイベントを書けば
>よいのでは?

実は、bonitoさん作「サブフォームからマウスで入力」(たぶん、多遊さんの
ホームページに掲載されていた気がします。200年6月)を下敷きにした
メイン・サブフォームを作っています。
サブフォームとしての科目フォームは、メインフォームのkevにより制御され
組み込まれているているのかと思いますが、この科目フォームを別なメインフォーム
で利用できないかと考えた次第です。
科目フォームを制御するkevを切り離せれば、変えられれば、いくつものメインフォーム
で使えるのではないかと思ったところです。

よく説明ができていないのと整理ができていないみたいです。
もう少し良く考えてみます。

うにんさん ありがとうございました。

bonitoさん すみませんでした。

28127 Re:イベントファイル名をその時によって使い分ける 佐田 守弘 2004/11/06-10:09
記事番号28126へのコメント
手塚 修さん
イベントファイルを共用したいとの主旨の様ですね。
まずイベントに関して、基本的な考え方を述べます。
フォームとイベントは、ペアになっているとの前提で考えた方が何かと無難です。
つまりメインフォーム、サブフォームとも、フォーム1つずつに1つのイベント
ファイルを作り、同じファイル名にしておきます。

●共用の方法
1)イベントファイルを必要なフォームの数だけコピーする
1つ作ったイベントファイルの中身をコピーすれば良いでしょう。
イベントファイルの中に、そのフォームでは使わないイベントハンドラがあっても差し支えありません。

2)ライブラリを使う
上記の方法では後から修正が出た場合、コピーしたイベントファイルの全てを訂正する必要が出て来ます。
共通する処理が多い場合には、共通するイベントハンドラだけを抜き出して、
ライブラリとします。ライブラリは一括処理と同じ.cmdファイルです。
ライブラリコマンドでライブラリファイルを指定すれば、ライブラリの中のイベント
ハンドラが、イベントファイルの中にあるものとして扱われます。

●1つのイベントファイルを複数のフォームで使う
不可能ではないのですが、かなりのリスクが伴います。
何が問題になるかといえば、フォームが開かれる時に、イベントファイルが開かれ、
メイン部分が自動で実行される点です。
メイン部分で変数を定義したり、何らかの初期化や表引き表のオープンなどをしている
場合、それが再び繰り返されます。そのために、思わぬエラーが発生する原因になる事があります。
それを充分に承知の上であれば、イベントファイルの共用は可能です。

佐田守弘(KS-00119)
28130 Re:イベントファイル名をその時によって使い分ける 手塚 修 2004/11/06-11:22
記事番号28127へのコメント
お世話になります。教えていただきましてありがとうございます。

過去BBSの5327以下のやりとりや今回の本文は、難しくて、
具体的に理解できる状態ではありません。残念ながら当方のレベルです。

>フォームとイベントは、ペアになっているとの前提で考えた方が何かと無難です。
>共通する処理が多い場合には、共通するイベントハンドラだけを抜き出して、
>ライブラリとします。

フォームの数が多くなる、kevも多くなる、かえって分りにくくなるような
気がしている状態ですが、イベントの理解が進めばその真意もわかるようになるのかなと思っています。

桐関係のホームページを探しライブラリの具体例も見てみるつもりです。

ありがとうございました。
28133 イベントファイルが多くなると 佐田 守弘 2004/11/06-23:06
記事番号28130へのコメント
手塚 修さん
 >フォームの数が多くなる、kevも多くなる、かえって分りにくくなるような
 >気がしている状態ですが、
そう思う人は少なくない様です。これは私も経験しました。

佐>イベントはフォーム毎に作った方が良いですよ。
某>フォーム毎にイベントを作るなんて、それは仕様がおかしい。
 イベントは1つにまとめてくれなければ困る。
佐>それ程言うなら、できるだけ同じイベントを共用する様に作りましょう。

で、結果は予期しないエラーの連続でした。
イベントファイルを見る限りでは、エラーは見つからないんですね。
長期間調べた結果、原因は前回書いた通りでした。

分ってしまえば、かなり複雑になるとしても、対策のコマンドの書き様はある訳ですが
エラー原因の究明や、面倒な対策案を考案するのは、かなり面倒なものです。
こればかりは原因不明のエラーで、致命的な状況を経験しないと、分りません。

十倍や百倍の苦労と労力、それに時間を惜しまないのであれば、経験と勉強にはなるかと思います。
しかし苦労せずに最短の未知を選ぶのであれば、フォームとイベントは対にした方が宜しいかと思います。

佐田守弘(KS-00119)
28134 Re:イベントファイル名をその時によって使い分ける ONnoji 2004/11/06-23:58
記事番号28130へのコメント
>フォームの数が多くなる、kevも多くなる、
>かえって分りにくくなるような気がしている状態ですが

手塚 修さん、こんばんは。

横レスで失礼します。

イベントはフォーム( .wfm )に組み込まれた機能です。

しかし、イベントに対応する手続き、
つまりイベントハンドラは、
フォーム( .wfm )とは別のイベント処理( .kev )に作成します。

桐の場合、実はここが一番問題になる点だろうと思います。

イベントはフォーム( .wfm )自身の機能であるので、
それに対応するイベントハンドラもフォーム( .wfm )自身の機能であるはずです。

しかし、実際にはイベントハンドラはフォーム( .wfm )自身から、
別のファイルとして切り離されています。

フォーム( .wfm )自身からイベント処理( .kev )が切り離されているゆえに、
ついつい、他のフォームとイベント処理( .kev )を共用出来ないかと思ってしまいます。

もしも、ひとつのイベント処理( .kev )を複数のフォーム( .wfm )と共用するならば、
それぞれのフォーム( .wfm )の機能は同じであるはずです。
実際、ファイル名が異なるだけで同一のフォーム( .wfm )であれば共用可能です。
さらに、それぞれのフォーム( .wfm )の編集対象表が異なっていても、
表( .tbl )の定義が同じであれば問題ありません。

しかし、どこかひとつでも機能やオブジェクトやソース等に違うところがあれば、
イベント処理( .kev )に記述されているイベントハンドラに、
if ... else ... end などを山ほど書いて対処しなければ正しく動作しません。
このことはすでに佐田さんがお書きになっていますが、これはとても大変な作業になります。


これはタラレバの話ですが…

もしも、イベントハンドラをフォーム( .wfm )自身に記述するという桐の仕様であったら、
このような問題は最初から生じなかっただろうと思います。
残念ですが…


戻る