過去の桐井戸端BBS (桐ver.8)
8807 遅延コマンドをイベントでも使いたい 正くん 2000/12/02-11:56
一括処理の実行を一時停止する為に遅延コマンドがありますが、イベントハンドラの中では使えません。
同じような機能を実現するには、どんな方法があるでしょうか?
8808 Re:遅延コマンドをイベントでも cheese 2000/12/02-12:18
記事番号8807へのコメント
使えてもよさそうな機能ですよね!
私は考えたあげくこうしました。

&時間切れ=""
&開始時間=#日時時刻(#日時値)
loop
&現在時間=#日時時刻(#日時値)
&待機時間=#時間(#str(&開始時間),#str(&現在時間),3)
表 &TBL,表番号=1,モード=専有,リトライ=しない,終了状態=&EOC
if(&EOC=1)
break
else if(&EOC<>1 .and &待機時間=10)
&時間切れ=1
確認 "ファイルを開けませんでした。"
終了 表 1
break
end
end

表を開こうとして、だれかが使用中などで開けないときは10秒間待ってタイムアウトするルーチンです。
遅延コマンドが使えればもっと簡単だと思います。
8809 Re:イベントで遅延コマンドの代わり 悲しげ 2000/12/02-14:50
記事番号8807へのコメント
どもっ、正くんさん
イベントで「遅延」コマンドを使えないのは、「タイマー*」イベントとの関係もありそうな気がします。
と云う訳で、「タイマー」イベントを使う方法で考えてみようとしましたが、色々考えると柿沼もとひ泥沼になりそうですので、
ちょいと手抜きな方法を書きます。
そう、詰まった時の「フォーム呼び出し」でおます。(^^;)

その名もズバリ"遅延.wfm"を作ります。
設定するオブジェクトは「b閉じる」機能の牡丹のみ(場合によりワークスペースに置いてもよい)。
イベントは「タイマー1」にチェック、その右の「タイマー値1」の値は
例えば10秒遅延なら「10」としておく。
対応するkevの「タイマー1」イベントハンドラの記述例。

  手続き定義開始 フォーム::タイマー1()
   オブジェクト操作 @フォーム.タイマー1="0"
   メソッド呼び出し @b閉じる.実行()
  手続き定義終了

お好みにより、最小化オープンさせるようにしてもいいし、あるいはどうせだから「しばらく(あるいは10秒)お待ち下さい」との
ラベルオブジェクトを付けてそれを表示させてもよい。
無言で待つのは嫌いなので、私の好みは後者かな。

元処理において遅延させたい箇所では次のように記述を行うだけです。

  フォーム呼び出し "遅延.wfm"

こうすると、場合により左下最小化状態で、あるいは「しばらくお待ち…」
のウィンドウが表示されて、10秒なりの遅延状態が実現できます。
つまり、10秒過ぎたら呼び出されたモーダルフォームは自動的に閉じて、元処理に戻ることになるはずです。
元処理において変数にて遅延時間(タイマー値)を指定して、
"遅延.wfm"のフォーム開始イベントでオブジェクト操作により任意のタイマー値1にする方法などの応用もできそうです(未試行だが)。
8817 Re:皆さんありがとうございます 正くん 2000/12/04-11:28
記事番号8807へのコメント
cheeseさん、悲しげさん、はじめまして。
早速Resをいただいてありがとうございます。
お礼が遅くなりました(日曜は遊びにでかけていたもので)。

遅延コマンドにかわるスマートな方法がちょっと思い付きませんでした。
お二人の方法は大変参考になりました。
自分でももう少し勉強してみます。

余談ですが、桐はウインドウ版になって機能も増え、便利な点も多いのですが、
LAN上で共有で使うにはもっと使い勝手をよくしてほしいと思うこの頃です。
他のソフトを知らないので比較はできませんが。

戻る