過去の桐井戸端BBS (桐ver.8)
16072 マウスの左ボタンを押し続けている間、マウス左ダウンイベントを繰り返し実行するようにしたい ISSEI 2002/05/21-18:07
お助けください。
一覧表フォームにコマンドボタンを配し、それに
ジャンプ 行番号=次行というコマンドを割り当てました。
このボタンをマウスでクリックすると1行だけ次の行に進みます。
これをボタンを押しつづけている間、ある程度ゆっくりとしたスピードで
行を進みつづけるようにすることが出来ないでしょうか。
マウス左ダウンイベントを考えましたが、これは左ボタンを押したとき1度だけ発生するとなっており、繰り返さないようです。
よろしくお願いします。
16082 タイマーイベントではいかが? 悲しげ 2002/05/21-23:35
記事番号16072へのコメント
どもっ、ISSEIさん
これは「タイマー*」イベントを使えば実現できます。
以下にひとつの例を挙げます。

オブジェクトの属性/イベントタブから
1)「タイマー1」をチェック。
  右側の「タイマー値1」は例えば「0.1」。
2)「タイマー1」をダブルクリックしてkevの記述に入ります。
例えば
--------------------------------
手続き定義開始 フォーム::タイマー1()
 if(&秒=1 .and #行番号<#総件数)
  ジャンプ 行番号=次行
 else if(&秒=2 .and #行番号>1)
  ジャンプ 行番号=前行
 end
手続き定義終了
---------------------------------
3)フォームに戻って「タイマー1」のチェックを消しておく。
4)ボタン(じゃなくても実はよいのですが)をひとつ設けます。
仮にオブジェクト名を「b↓」としておきます。標題も「↓」。
5)この牡丹のイベントタブから「マウス左ダウン」をチェック後
ダブルクリック。
6)kevの記述例
----------------------------------
手続き定義開始 b↓::マウス左ダウン(長整数 &マウス位置[2],・・・・・・
 &秒=1
 オブジェクト操作 @フォーム.タイマー1="1"
手続き定義終了
-----------------------------------
7)フォームに戻って今度はこの牡丹の「マウス左アップ」をチェ
ック後、ダブルクリック
8)kevの記述例
-----------------------------------
手続き定義開始 b↓::マウス左アップ(長整数 &マウス位置[2],・・・・・・・
 &秒=0
 オブジェクト操作 @フォーム.タイマー1="0"
手続き定義終了
-----------------------------------
9)以下同様に「↑」牡丹も設けたりしたとすれば、kevの記述は
-----------------------------------
手続き定義開始 b↑::マウス左ダウン(長整数 &マウス位置[2],・・・・・・・
 &秒=2
 オブジェクト操作 @フォーム.タイマー1="1"
手続き定義終了
-----------------------------------
手続き定義開始 b↑::マウス左アップ(長整数 &マウス位置[2],・・・・・・・・
 &秒=0
 オブジェクト操作 @フォーム.タイマー1="0"
手続き定義終了
-----------------------------------

このようにすれば、マウス左で[↓]牡丹を押し続けている間は下へスクロール、
離せば(マウス左アップ)スクロールは止まるはずです。
[↑]ボタンはこの逆に上スクロールとなります。(実験済)

スクロールしている内に画面が1頁変わると、牡丹の凹みが凸になってしまうけど、ま、ご愛嬌としておきましょう。(^^;)

16083 Re:タイマーイベントではいかが? 悲しげ 2002/05/21-23:51
記事番号16082へのコメント
牡丹の凹凸が気になるなら、ここはコマンドボタンを使わずに、
ラベルオブジェクトでもってマウスに似せてですね、
オブジェクト操作コマンドで「境界線モード」を "くぼみ"(ダウン時)や "立体"(アップ時)に
するといいかもしれません。(ただし未検証)
16084 Re:マウス左ダウンイベントの繰り返し 今村 誠 2002/05/22-00:08
記事番号16072へのコメント
ISSEIさんは、こんにちは、
コマンドボタンを3つ造ってみてはいかがでしょう
タイマー2のイベントのチェックをしてはいけません、
中の記述は ONnojiさんのをそのままコピーしてます(^_^)

proc 前()
&G=1
オブジェクト操作 @フォーム.タイマー値2 = "0.2" /* インターバルを0.2秒にします */
オブジェクト操作 @フォーム.タイマー2 = "1"  /* タイマー2をonにします */
end
proc 次()
&G=2
オブジェクト操作 @フォーム.タイマー値2 = "0.2" /* インターバルを0.2秒にします */
オブジェクト操作 @フォーム.タイマー2 = "1"  /* タイマー2をonにします */
end
proc 止()
&G=2
オブジェクト操作 @フォーム.タイマー値2 = "0" /* インターバルを0秒にします */
オブジェクト操作 @フォーム.タイマー2 = "0"  /* タイマー2をoffにします */
end
手続き定義開始 フォーム::タイマー2()
cond(&G=1) ジャンプ 行番号=前行
cond(&G=2) ジャンプ 行番号=次行
手続き定義終了

16085 Re:マウス左ダウンイベントの繰り返し 今村 誠 2002/05/22-00:12
記事番号16084へのコメント
悲しげさんがいいのを書いてました。
私の没にしてください、
毎回更新ボタンを押さないと、最新に変わらないので、うっかり投稿してしまいました。

16086 Re:マウスイン・アウトでも可能ですね。 【多遊】 2002/05/22-06:46
記事番号16072へのコメント
以前、別所で書いた内容ですが、私はマウスイン・アウトで行ってます。
テキストオブジェクト+タイマー使用です。

*------>行番号自動移動表示用
手続き定義開始 t上へ::マウスインアウト(長整数 &フラグ,長整数 &明細番号)
  if (&フラグ=1 .and #行番号>1)
    &obj=&this
    オブジェクト操作 @フォーム.タイマー1="1"
  else
    オブジェクト操作 @フォーム.タイマー1="0"
  end
手続き定義終了

手続き定義開始 t下へ::マウスインアウト(長整数 &フラグ,長整数 &明細番号)
  if (&フラグ=1 .and #終端行=0)
    &obj=&this
    オブジェクト操作 @フォーム.タイマー1="1"
  else
    オブジェクト操作 @フォーム.タイマー1="0"
  end
手続き定義終了

手続き定義開始 フォーム::タイマー1()
  if (&obj="t上へ" .and #行番号>1)
    ジャンプ 行番号=-1
  else if (&obj="t下へ" .and #終端行=0)
    ジャンプ 行番号=+1
  end
  メソッド呼び出し @フォーム.再描画()
手続き定義終了


16089 Re:タイマーイベントではいかが? ISSEI 2002/05/22-10:14
記事番号16082へのコメント
悲しげさん今日は。タイマーイベントかな?とは思っていましたが、このようにして使うのですね。
またひとつ勉強になりました。さっそくやってみます。
16096 できました ISSEI 2002/05/22-13:10
記事番号16082へのコメント
悲しげさんできました。感激です。タイマーイベントについてもう少し勉強したいと思います。
ありがとうございました。
16097 Re:マウス左ダウンイベントの繰り返し ISSEI 2002/05/22-13:52
記事番号16085へのコメント
今村 誠さんコメントありがとうございます。
1行ごとに解説まで入れていただいて、流れがよくわかりました。
16098 Re:マウスイン・アウトでも可能ですね。 ISSEI 2002/05/22-14:14
記事番号16086へのコメント
【多遊】さんありがとうございます。
ポインターを当てるだけですごいです。
ただ、終端行にきたとき行末の空白部分が大きくあいてしまい、少し気になります。
それさえ解決されれば面白いと思います。
今回は悲しげさんの書かれたものをボタンの代わりにテキストオブジェクトを使って作ったところうまくいきました。
ありがとうございました。
16099 Re:タイマーイベントではいかが? ISSEI 2002/05/22-14:16
記事番号16083へのコメント
悲しげさん

>牡丹の凹凸が気になるなら、ここはコマンドボタンを使わずに、ラベル
>オブジェクトでもってマウスに似せてですね、オブジェクト操作コマン
>ドで「境界線モード」を "くぼみ"(ダウン時)や "立体"(アップ時)に
>するといいかもしれません。(ただし未検証)

僕はテキストオブジェクトを使ってやってみました。
何の問題もなく見事に機能しました。
このようなイベントは今後もいろんなところで使えそうです。
本当にありがとうございました。

16104 Re:タイマーイベントではいかが?(訂正) 悲しげ 2002/05/22-21:17
記事番号16099へのコメント
どもっ、ISSEIさん
既に誤読は無かったようですが、後々のために訂正を入れておきます。(^^;)

>>牡丹の凹凸が気になるなら、ここはコマンドボタンを使わずに、ラベル
>>オブジェクトでもってマウスに似せてですね、オブジェクト操作コマン
           ~~~~~~
            ↑
           ボタン



ついでにもう1点コメント。

>僕はテキストオブジェクトを使ってやってみました。何の問題もなく見事に
>機能しました。

あ、テキストでもピクチャーでも何でも可能でしょうね。
ただ、私がテキストオブジェクトを優先させなかったのは、テキストオブジェクトの場合、
ソースの内容次第では、しばしばマウスクリックすることによって、
訂正モードになってしまうことがあるからです。
で、まずはラベルオブジェクトを勧めたのは、その恐れがないからでもあります。
ISSEIさんの場合のテキストソースはひょっとして計算式ですか?
16105 Re:タイマーイベントではいかが?(訂正) 悲しげ 2002/05/22-21:33
記事番号16104へのコメント
失礼しました。

>ISSEIさんの場合のテキストソースはひょっとして計算式ですか?

テキストソースが文字列の場合、本来は""で囲って計算式とすべきところ、
""を省略しても通るんですね。
(例えば「"↑"」も単なる「↑」も同じ扱い)
だから、本当は""を省略した計算式なんだけど、見かけ上はラベルと同じ扱いでよかったんですね。
こんな単純なこと、初めて知りました。(^^;)

戻る