過去の桐井戸端BBS (桐ver.9)
25581 フォームからタイマーイベントを実行しその中で一括処理を動かそうとしたけどうまくいかない miyako 2004/03/24-11:54
以前にタイマーについて質問しました。
再度お願いします。

フォーム 1.wfmにイベント タイマー1 にチェック
              タイマー1値 に600を設定しました。

1.kevに下記のように書きました。

手続き定義開始 フォーム::タイマー1()
  一括処理実行 111.cmd
手続き定義終了

としましたが、動作しません。
ご指導ください。

25583 Re:タイマーイベント アックン(=^・^=) 2004/03/24-14:52
記事番号25581へのコメント
miyakoさん、こんにちは。基本的なことと解決策を示しますので、よく読んでください。

kevから cmdを実行することはできません。
kevでは「一括処理実行」コマンドを使えません。

ではどうするかというと。
cmdの中身を 現在使っているkevの中に移植して、手続きにしておきます。
タイマー1イベント中から、この手続きを実行します。

手続き定義開始 フォーム::タイマー1()
  手続き実行 111() ← call 111() と書いてもいいです
手続き定義終了

手続き定義開始 111() ← proc 111() と書いてもいいです
  111.cmdの中身を移植します(注意点は下記参照)。
手続き定義終了

移植に際し、cmdの中身を一部書き換える必要が生じます。

1)kevでは使えないコマンドを書き換えてください。
 使える使えないは、オンラインヘルプの各コマンドの説明画面の上の方に書いてあります。

2)cmdの「名札」は、kevでは「手続き名」にします。

例:cmdの名札名が A のとき
手続き定義開始 A()
  コマンド群
手続き定義終了

3)cmdの「手続き実行 名札名」は、kevでは「手続き実行 手続き名()」にします。

手続き実行 A() ← call A() と書いてもいいです

他にも移植に際しての変更があると思いますが、今はこれだけしか思い出せません。
また、cmdの内容によっては、動作させるのが難しいものもあるかもしれません。
また、cmdをkevの冒頭のメイン処理で、
 ライブラリ "abcd.cmd" ← load "abcd.cmd" と書いてもいいです
として、あらかじめcmd内容を読み込んでおく方法があります。
この方法が使えるか使えないかは、miyakoさんがcmdを使って何をしたいかによります。

ところで、タイマーをON/OFF切り替えするやり方をすでにご存じかもしれませ
んけど、ついでに書き添えておきます。
objectはオブジェクト操作コマンドのことです。

 object ハンドル=&hwindow , @フォーム. タイマー1="1" /* タイマー1をONにする */

 object ハンドル=&hwindow , @フォーム. タイマー1="0" /* タイマー1をOFFにする */

25584 Re:タイマーイベント miyako 2004/03/24-18:38
記事番号25583へのコメント
アックン(=^・^=)さんありがとうございます。

>kevから cmdを実行することはできません。
>kevでは「一括処理実行」コマンドを使えません。

説明不足で申し訳ありません。
メールの受信・送信処理を行いたいのです。

何か方法はありませんか。
25594 メール送受信だから一括でという理由は? 佐田 守弘 2004/03/24-21:50
記事番号25584へのコメント
アックンさん、横から口で済みません。さて、
miyakoさんの
 >説明不足で申し訳ありません。
 >メールの受信・送信処理を行いたいのです。
の意味が良く解らないのですが。

他のコマンドと同様に、メール送信やメール受信のコマンドも、イベントの中で使えます。
但し、表が表示モードの時に限られますが、メソッド呼び出しコマンドで、表示モードに戻せば済む話です。

メールの送受信だからイベントでは駄目で、一括処理で行いたいという何か特別の理由があるのでしょうか。

どうしても一括処理を開きたいのであれば、コマンドボタンの機能に
「開く」を、パラメータに一括処理ファイル名を指定して、このコマンドボタンを実行してみて下さい。

佐田守弘(KS-00119)


25595 Re:メール送受信だから一括でという理由は? miyako 2004/03/24-21:55
記事番号25594へのコメント
佐田 守弘さん、ありがとうございます。
メールの送信・受信はイベントでも可能なのですか

桐9-2004のヘルプには 一括処理コマンドとなっていますが。
まちがっていたらすみません。

25597 一括処理コマンドとは 佐田 守弘 2004/03/24-22:45
記事番号25595へのコメント
miyakoさん
一括処理の中で使うコマンド(命令語)も、イベントファイルの中で使うコマンドも、どちらも一括処理コマンドと呼ばれます。
「イベントコマンド」の用語はありません。
イベント専用のコマンドで一括処理では使えなくても、一括処理コマンドといいます。

一部のコマンドには、一括処理でしか使えないコマンド、イベントの中でしか使えないコマンドもあります。
それは一括処理とイベントのシチュエーションの違いによるものです。
そういった細かい差異はありますが、大ざっぱにザックリと言うならば、
イベントと一括処理は似た所もあります。

さて、ある一括処理コマンドが、一括処理とイベントのどちらで使えるのかは、
「一括処理&イベントリファレンス」を見て下さい。
桐のヘルプからトピックスを選び、[一括処理&イベント処理]を選ぶと開きます。
直接開きたい場合には、K3\KIRIV9\Helpにある KIRICMD9.CHM をダブルクリックで開いて下さい。
ショートカットを作っておくと便利です。

この中に、それぞれの一括処理コマンド毎に、イベントで使用できるかどうか、
使用できる場合の制限事項(表示中または、項目値の入力中など)が書かれています。
また、説明の中に、
「このコマンドは、フォームのイベントハンドラ内に記述します。」
と書かれている場合には、一括処理では使えない一括処理コマンドです。

佐田守弘(KS-00119)
25600 Re:タイマーイベント miyako 2004/03/25-12:58
記事番号25583へのコメント
アックン(=^・^=)さんご指導ありがとうございます。

まだうまく動作しません。
>手続き定義開始 フォーム::タイマー1()
>  手続き実行 111() ← call 111() と書いてもいいです
>手続き定義終了
とご指導いただいたので下記のように書きました。

手続き定義開始 フォーム::タイマー1()
  手続き実行 受信
手続き定義終了

タイマーは600.00に設定しています。

手続き定義開始 受信()
  メール受信 ・・・・・・・
  〜
  〜
手続き定義終了


上と同じように書いているのですが、全く動作しません。
よろしくご指導ください。
25604 Re:タイマーイベント アックン(=^・^=) 2004/03/25-13:30
記事番号25600へのコメント
miyakoさん>
>  手続き実行 受信
手続き名の最後には、必ずカッコを付けます。
  手続き実行 受信() ←ここにカッコを書きます
----------------------------

動作確認するために、確認コマンドをはさんでみましょう。
確認メッセージ画面が出ればオーケーです。

>手続き定義開始 受信()
  確認 ←ここに書いてください
>  メール受信 ・・・・・・・
----------------------------

それと、ちょっと次の点が気にかかっているのですが。
何らかの操作をすることで、タイマーをオンオフするのではないですか?
たとえば、コマンドボタンをクリックしたら、タイマーがオンになって、メール受信を開始するとか。

それと、メール送信コマンドはイベントファイル(kev)に使えます。
佐田さんが書かれている通りです。
25606 Re:タイマーイベント miyako 2004/03/25-14:50
記事番号25604へのコメント
アックン(=^・^=)さんは
ありがとうございました。

>>  手続き実行 受信
>手続き名の最後には、必ずカッコを付けます。
>  手続き実行 受信() ←ここにカッコを書きます
           ↑この()が抜けていました。

うまく動作しました。

戻る