過去の桐井戸端BBS (桐ver.8)
5327 kevのファミリーをcmdにまとめられませんか? 今村 誠 2000/03/28-01:11
初歩的な質問で恐縮ですが、
イベントファイルで検索や印刷をファミリーに登録していますが、
同じ記述がフォーム毎に発生します。手続き定義開始 印刷::マウスインアウトや
手続き定義開始 印刷::マウス左クリック
cmdにまとめて、全てのフォームで使用できるように記述できますか?


5331 ファミリではなくライブラリで 佐田 守弘 2000/03/28-18:14
記事番号5327へのコメント
今村 誠さん
ファミリとは、1つのフォームの中の類似のオブジェクトをまとめて1つのファミリとし、
イベントをファミリの中で共通に使う機能です。
例えばコマンドボタンにマウスカーソルを近づけたら表示を変化させるといったイベント
を設定する時などに使います。

一方、ご質問の件は、同じ機能を異なるイベントファイルの中で供用したいといった事だと思います。
この機能はライブラリの機能で実現します。
つまり共通利用する手続き定義をライブラリとしてkevファイルあるいはcmdファイルとして作成しておき、
これを読み込むことによって、他のコマンドやイベントの中でその中の手続きを共通利用します。

佐田守弘(KS-00119)

5333 重箱の隅ですけど(^^ 悲しげ 2000/03/28-19:29
記事番号5331へのコメント
どもっ、佐田さん、

>この機能はライブラリの機能で実現します。つまり共通利用する手続き定義
>をライブラリとしてkevファイルあるいはcmdファイルとして作成しておき、これを読み込
>むことによって、他のコマンドやイベントの中でその中の手続きを共通利用します。

桐のヘルプから引用します。(^^;)
------------------------------------------------
一括処理が記述されたファイルの名前を指定します。
拡張子を省略した場合は「.cmd」を付加します。
イベント処理ファイル(*.kev)は指定できません。
------------------------------------------------

と云うわけで、たとえ中味がkevの手続き定義群であっても、拡張子は「.CMD」でなければなりませぬ。

5334 Re: 悲しげ 2000/03/28-19:40
記事番号5327へのコメント
どもっ、今村さん、

どうやら用語の用い方の混同が見られるようで、コメントするために真意を
推測するのがなかなか大変だったりしますが、それはさておき。(^^;)
本件は、用語としては「ファミリー」ではなくて「ライブラリ」であることは、
佐田さんのおっしゃるとおりです。

5336 Re:重箱の隅ですけど(^^ hidetake 2000/03/28-21:41
記事番号5333へのコメント
元のファミリの意味がどうかはわかりませんが...

別にフォームに関連付けるイベントファイル名って、
*.KEV で無くても *.CMD でも良いのでは?

桐 Ver7 から Ver8 に移ったとき、フォームに関連
付けるための ... では *.KEV しか設定できないし、
ダミーでも設定しないと、オブジェクト操作の引用が
出来なくなったことに K3 に文句を書いたことがあり
ましたが手書きで指定すると *.CMD も指定できます。

実際に *.CMD まで指定して使用することはありませんが、
*.KEV をやたらに増やしたくないため、1つの
*.KEV を複数のフォームで使用することはあります。
別にライブラリなんて使わなくとも *.KEV でファミリ
を設定して私も使っておりますが、取り敢えず問題は無いようです。
もちろんメインとかフォーム開始とか、共用できない場合や、
同じオブジェクト名および同じイベント名で
異なった内容を実行したい場合は問題外ですが...


5337 Re:重箱の隅ですけど(^^ hidetake 2000/03/28-22:15
記事番号5336へのコメント
今まで、ライブラリで「手続き定義開始 イベントハンドラ」までは
登録したことは無かったけれど、これも可能なのですね!
でもこれだと、ライブラリの *.CMD に統合できる部分もあるけど、
フォームに関連付ける *.KEV は多少は増えるのですね...

それに今まで使っていたライブラリの *.CMD を *.KEV にリネーム
して見たけれど、ちょっと動作が変!!! 不思議な動きだ!!! (^_^ゞ


5338 Re:重箱の隅ですけど(^^ 悲しげ 2000/03/28-22:17
記事番号5336へのコメント
どもっ、hidetakeさん、
どうも言葉足らずですいません。

>たとえ中味がkevの手続き定義群であっても、拡張子
>は「.CMD」でなければなりませぬ。

と書いたのは、「ライブラリ」コマンドで読み込む記述の
ことで、「ファミリ」その他のことではありません。(^^;)

5342 Re:重箱の隅ですけど(^^ hidetake 2000/03/28-23:21
記事番号5338へのコメント
>と書いたのは、「ライブラリ」コマンドで読み込む記述の
>ことで、「ファミリ」その他のことではありません。(^^;)

ハイ、それはわかっておりました。
別にライブラリでなくとも *.CMD でも *.KEV でも共用は
可能なのではと思い書いた次第です...



5343 ライブラリはCMD 佐田 守弘 2000/03/28-23:44
記事番号5333へのコメント
悲しげさん、フォローありがとうございました。
記憶だけで書いてしまったので、間違っていた様です。
ライブラリとして読み込めるファイルはcmdを指定する様ですね。

補足になりますが、ライブラリとして指定するcmdファイルは、それだけで別に作ったものでなくて、
一括処理として他の目的に使われているものを使っても構いません。
要するに、その一括処理の中に目的の手続き(手続き定義開始から手続き定義終了までのくくり)があれば、
それが読み込まれる仕組みです。

また、イベントはフォームと対で作成する必要もありません。複数のフォームで1つのイベントを共用することも可能です。
つまり、1つのフォームに対して、最大1つのイベントないしは一括処理と、ライブラリとして読み込む(確か)10個までの
一括処理ファイルを使えます。
一方、1つのイベントファイルは、複数のフォームで共用したり、同時に開かれるフォームのイベントが1つの
イベントファイルに記述してあっても構いません。

佐田守弘(KS-00119)

5345 Re:重箱の隅ですけど(^^ hidetake 2000/03/29-00:06
記事番号5336へのコメント
>もちろんメインとかフォーム開始とか、共用できない
>場合や、同じオブジェクト名および同じイベント名で
>異なった内容を実行したい場合は問題外ですが...

これも、フォーム自体に局所変数で、自分自身のフォーム
ファイル名を登録しており、その呼び出し元のフォームに
より実行を制御することも可能だろうけど、さすがにそこまでする人はいないですよね... (^_^ゞ

*.KEV を共用するかしないか?、出来るか出来ないかを?
を考えた場合、もし1つのフォームに1つの KEV であれば
KEV 自体を別ファイルにするのでは無く、*.WFM の内部に
取り込んだ方がよっぽどわかりやすいし、管理面やスピード
でも利点は大きいはずなのに、敢えて別ファイルにわけて
作ってあるようだから... というのもありますね。

KEV で宣言する局所変数と、WFM の定義中に変数管理で
設定した局所変数で取り扱いが違うもの、WFM の定義中に
変数管理で設定したものは *.WFM の内部に (*.KEVとは
全く別管理で)取り込んで(最後の方に全くのテキストで)あったりします...


5348 Re:kevファミリーをprg.cmdにまとめられました 今村 誠 2000/03/29-03:39
記事番号5334へのコメント
手続き定義開始 印刷::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,
長整数 &フラグ,参照 長整数 &処理中止)
    代入 &検索1=#s(&this,"a",""),&PT=#cat(&検索1,".rpt")
    条件 (#ファイルサイズ(&PT)<1) \
    確認  "指定の印刷帳票は作成されていません",&期間1
    条件 (#ファイルサイズ(&PT)<1 ) 手続き終了
条件 (#絞り込み状態 =0 )絞り込み 行数=1
    レポート印刷 &PT,部数=1,開始ページ=1,終了ページ=0,罫線印字=する\
,カラー印刷=しない,ソート=しない,編集表=する,会話=しない,プレビュー=しない,終了状態=&終了
絞り込み解除 *
手続き定義終了
手続き定義開始 印刷::マウスインアウト(長整数 &フラグ,長整数 &明細番号)
    代入 &検索1=#s(&this,"a",""),\
&PRT1=#cat(&検索1,"を印刷します。okなら左クリックを押して下さい。")
 if ( &フラグ = 1 )
 オブジェクト操作 @フォーム.フォーム表題 = &PRT1
 else
 オブジェクト操作 @フォーム.フォーム表題 = "TABきーかEnterきーで次の項目に移動します。"
 end
手続き定義終了
佐田先生、hidetakaさん、悲しげさんすっきりできて大感激です。
イベントが手続きになり、一括処理が甦ったようです。
prg.cmdでメニューから入り、フォーム編集で、.kevを定義し、
名札 メイン
ライブラリ "prg.cmd"、
を記述し、上記の手続きで、印刷や、検索、絞込が、
ラベルオブジェクトだけで選べます。
 

戻る