過去の桐井戸端BBS (桐ver.8) |
3510 | 機能キーの代用はどうすれば? | 太郎 | 1999/11/26-17:02 |
桐5で以下のような処理をしてました 繰り返し &work1=1,5,1 機能キー入力 入力待ち=しない 編集表 &work1 選択 [a]>1 書き出し 繰り返し終了 ちょっと省略してますが、 表を次々に処理していくのに、途中で中止 したい場合、あるキーを押すと機能キーがそれを 受けて繰り返しを中断させてました。 桐8に置き換えるのに、同じ処理を イベントの手続きに記述したいのですが 機能キーはイベントでは使用不可になってます。 何か良い方法はないでしょうか よろしくお願いします。 | |||
3514 | 「機能キー入力」の代用と云うか | 悲しげ | 1999/11/26-20:58 |
記事番号3510へのコメント どもっ、太郎さん、 「機能キー入力」コマンドの代用は、先ずは「キーダウン」イベント で考えることができそうです。 と云うことで、これでうまく動くかどうかは判りませんが、一応次のようなものを考えてみましたので、 ちょっと試してみて下さい。うまく動かなければごめんなさい。(^^;) V5の場合にどのキーで中断させていたのかは判りませんが、ここでは Pauseキー(&仮想キーコード=19)を使うと仮定します。 懸案の繰り返し処理はボタン「b実行」で実行に入る、メイン部で繰り 返し制御用の変数「&制御F=0」が宣言されている等も仮定します。 --------------------------------------------------- 手続き定義開始 b実行・・・・・ &制御F=1 繰り返し &work1=・・・・ 条件(&制御F=0) 繰り返し中止 ・・・・・ 繰り返し終了 ・・・・・ 手続き定義終了 手続き定義開始 キーダウン・・・・ if(&仮想キーコード=19 .and &制御F=1) &制御F=0,&処理中止=1 end 手続き定義終了 ---------------------------------------------------- あるイベント手続き内の繰り返しが、他のイベント手続きで発生させ た値で制御できるかどうか、未確認ながら興味がありますので、この 際、実験台になっていただきたく・・・。(^^;) | |||
3521 | 機能しないようです | 太郎 | 1999/11/27-08:19 |
記事番号3514へのコメント >あるイベント手続き内の繰り返しが、他のイベント手続きで発生させ >た値で制御できるかどうか、未確認ながら興味がありますので、この >際、実験台になっていただきたく・・・。(^^;) どうも、悲しげさん。 実験しましたが、キーダウンを受け付けるのは 繰り返し終了後(手続き終了後かもしれませんが)みたいです。 キーダウンイベントに長い処理を割り付けていたら それが途中で割り込みしたらおかしくなる からですかね。 | |||
3524 | 繰り返し中止の制御 | 悲しげ | 1999/11/27-12:29 |
記事番号3521へのコメント どもっ、太郎さん、 やっぱし駄目でしたか。それは残念です。(;_;) では見方を変えて、元の記述から再検討してみます。 ----------------------- 繰り返し &work1=1,5,1 機能キー入力 入力待ち=しない 編集表 &work1 選択 [a]>1 書き出し 繰り返し終了 ----------------------- これからすると繰り返しは5回程度ですし、かつ処理の真っ最中に中断する訳でもないようですから、 1組の処理毎に逐一実行継続の有無を確認するだけでも、さほど手間ではないような気がします。 と云うことで、とても初歩的な方法で、中止は[Esc]キーしか利きませんが(^^;) ----------------------- 繰り返し &work1=1,5,1 編集表 &work1 選択 [a]>1 書き出し if(&work1<5) 確認 "○○を継続しますか?",&実行リターン 条件(&実行リターン=0) 繰り返し中止 end 繰り返し終了 ----------------------- なんてのは、やっぱ許せないですか? | |||
3545 | Re:機能キーの代用はどうすれば? | いかすぱげてぃ | 1999/11/29-14:30 |
記事番号3510へのコメント 太郎さんこんにちわ。 >桐8に置き換えるのに、同じ処理を >イベントの手続きに記述したいのですが >機能キーはイベントでは使用不可になってます。 >何か良い方法はないでしょうか >よろしくお願いします。 少し(かなり)面倒ですが、例えば複数のイベントを工夫すれば代用することも可能です。 ・基本的な考え方 繰り返し処理をタイマーイベントで指定回数行わせる。 ・処理の流れ 0)トリガーになるイベント、タイマーイベント、キーダウンイベントの3つを利 用する。 1)まず、イベントトリガーとなるイベント手続きを記述し、実際に行いたい処理 は独立ルーチンにして記述しておく。 2)トリガーイベント(1回目に相当)が終わったら 1)オフ設定のタイマーイベントをオンにする。 3)タイマーイベントにより、自動的に2回目の実行に入る。 4)処理中に任意キーをした場合、キーダウンイベントにてフラグを立てる。(遅延対応) 5)タイマーイベントの先頭にてタイマーイベントをオフにして、フラグの値で処 理を継続するか判断する。 そんなこんなを適当に書いたものが次のものです。 *-------------------------------------------------------------------* 名札 メイン 変数宣言 文字列{&MSG},整数{&MSGh,&i&break} * 手続き定義開始 トリガー::マウス左クリック(……) &i=1 call 実行() 手続き定義終了 手続き定義開始 フォーム::キーダウン(長整数 &仮想キーコード,……) if(&仮想キーコード=27) */[esc]でブレーク &break = 1 end 手続き定義終了 手続き定義開始 フォーム::タイマー1() オブジェクト操作 ハンドル=&hwindow,@フォーム.タイマー1 = "0" if (&break) 確認 &break = "" else call 実行() &i=&i+1 end 手続き定義終了 手続き定義開始 実行() *---------------------* * 実際に行う処理記述 *---------------------* if(&i<5) */ 繰り返した回数の制御 /* オブジェクト操作 ハンドル=&hwindow,@フォーム{タイマー1 = "1",タイマー値1 = "1.0"} end 手続き定義終了 *-------------------------------------------------------------------* 結構面倒くさいですね。(^^; もっとシンプルな方法もありそうですね。うーん… | |||
3557 | Re:あきらめようかな・・・ | 太郎 | 1999/11/30-08:24 |
記事番号3545へのコメント 悲しげさん、いかすぱさんどうもありがとうございます。 質問には5つの編集表を切り替えるような処理で 記述してますが、実はこれ書くのが面倒なので こうしましたが、本当は変数でファイル名を指定 しながら何回も続くのです。 ですから、毎回確認するのはちょっと無理でしょう。 いかすぱさんの方法は今の私のレベルでは 難しそうです。後々読むのもなんかつらそう。 なんか、簡単にはいかないようですね。 途中中断させるのやめようかなと思います。 でも、この手法結構気に入って使ってたんですけど・・・。 |