(現在 過去ログ80 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■12004 / inTopicNo.1)  マウス移動軌跡を描画したい
  
□投稿者/ 悲しげ -(2019/10/28(Mon) 19:45:15)
    2019/10/30(Wed) 11:21:32 編集(投稿者)

    (本件はNo12000の続きでもありますが)
    ある画像(地図に限らず)上でマウスを動かして、何かをやるに際し
    マウスを動かした軌跡を描画できないでしょうか?
    直前でも曲線でも、あるいは「GoogleMapのルート検索」のように
    点々を置いていくのでもよいし。

    素材だけ挙げてみますのでよろしくお願いします。
    画像と言っても地図で申し訳ない(^^;)。

    上記訂正(^^;)
    × 直前でも曲線でも
    ○ 直線でも曲線でも

mouse-tarace.zip
/95KB
引用返信 [メール受信/OFF] 削除キー/
■12005 / inTopicNo.2)  Re[1]: マウス移動軌跡を描画したい
□投稿者/ ONnoji -(2019/10/28(Mon) 19:57:30)
    2019/10/29(Tue) 10:28:49 編集(投稿者)
    2019/10/28(Mon) 22:29:08 編集(投稿者)
    2019/10/28(Mon) 22:24:30 編集(投稿者)
    2019/10/28(Mon) 20:08:35 編集(投稿者)
    2019/10/28(Mon) 20:01:48 編集(投稿者)

    > 直前でも曲線でも、あるいは「GoogleMapのルート検索」のように
    > 点々を置いていくのでもよいし。

    サンプルを用意しました。

    もちろんバグだらけです。

    あくまでも叩き台としての原始(原子)的なサンプルです。

    青い十字をマウスダウンして、マウスを移動してください。
    ラバーバンドみたいなになります。




引用返信 [メール受信/OFF] 削除キー/
■12010 / inTopicNo.3)  Re[2]: マウス移動軌跡を描画したい
□投稿者/ ONnoji -(2019/10/29(Tue) 10:26:28)
    2019/10/29(Tue) 10:37:52 編集(投稿者)
    2019/10/29(Tue) 10:37:07 編集(投稿者)

    > サンプルを用意しました。
    >
    > もちろんバグだらけです。
    >
    > あくまでも叩き台としての原始(原子)的なサンプルです。
    >
    > 青い十字をマウスダウンして、マウスを移動してください。
    > ラバーバンドみたいなになります。

    差し替えました。

    マウス移動イベントは、@フォーム明細部 と @txt起点 のどちらでもOKなんですね。

    昨晩は、@フォーム明細部 で作りましたが、@txt起点 に書き換えました。

    ■状態遷移は次の通り

    txt起点::マウス左ダウン

    └ prcマウス移動イベント … オン

     ↓

    txt起点::マウス移動

    └ prcマウス移動描画

     ↓

    txt起点::マウス左アップ

    └ prcマウス移動イベント … オフ


     ◇ ◇ ◇ ◇ ◇ ◇


    名札  メイン
     変数宣言 局所,文字列{ &mカーソルObject, &m起点Object, &mラバーバンドObject }
     変数宣言 局所,長整数{ &m起点ObjectPos[2], &mAdjust, &mTwips = 20 }

     &mカーソルObject   = "txtカーソル"
     &m起点Object     = "txt起点"
     &mラバーバンドObject = "linラバーバンド"
     &mAdjust       = 5 * &mTwips

     オブジェクト操作 &m起点Object{ &m起点ObjectPos[1] = 始点X, &m起点ObjectPos[2] = 始点Y }
     手続き実行 prcマウス移動イベント( 0 )



    手続き定義開始 txt起点::マウス左ダウン(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
     変数宣言 自動,長整数{ &posX, &posY }

     オブジェクト操作 &m起点Object{ &posX = 始点X, &posY = 始点Y }
     オブジェクト操作 &mカーソルObject{   画面表示 = 1, 始点X = &posX, 始点Y = &posY }
     オブジェクト操作 &mラバーバンドObject{ 画面表示 = 1, 始点X = &m起点ObjectPos[1] + &mAdjust, 始点Y = &m起点ObjectPos[2] + &mAdjust, 終点X = &マウス位置[1], 終点Y = &マウス位置[2] }

     手続き実行 prcマウス移動イベント( 1 )

    手続き定義終了

    手続き定義開始 txt起点::マウス左アップ(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ)

     手続き実行 prcマウス移動イベント( 0 )

     確認
    手続き定義終了

    手続き定義開始 txt起点::マウス移動(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ)

     手続き実行 prcマウス移動描画( &マウス位置 )

    手続き定義終了

    手続き定義開始 prcマウス移動イベント( 整数 &switch )

     オブジェクト操作 @txt起点{ マウス移動 = &switch }

    手続き定義終了

    手続き定義開始 prcマウス移動描画( 長整数 &マウス位置[2] )

     オブジェクト操作 &mカーソルObject{   始点X = &マウス位置[1] - &mAdjust,   始点Y = &マウス位置[2] - &mAdjust }
     オブジェクト操作 &mラバーバンドObject{ 始点X = &m起点ObjectPos[1] + &mAdjust, 始点Y = &m起点ObjectPos[2] + &mAdjust, 終点X = &マウス位置[1], 終点Y = &マウス位置[2] }
     メソッド呼び出し @フォーム明細部.再描画( 1 )

    手続き定義終了


引用返信 [メール受信/OFF] 削除キー/
■12011 / inTopicNo.4)  Re[3]: マウス移動軌跡を描画したい
□投稿者/ ONnoji -(2019/10/29(Tue) 11:00:52)
    2019/10/29(Tue) 21:09:01 編集(投稿者)
    2019/10/29(Tue) 11:40:51 編集(投稿者)
    2019/10/29(Tue) 11:13:13 編集(投稿者)

    > マウスイベントは挙動を把握するのは難しいですね。
    > フラグ※をうまく立ててコントロールするのがよいように思いました。
    > ※これは「マウス○○」イベントの引数としての「&フラグ」ではありません。

    なるほど、パズル.kev の

     &ドラッグ

    がフラグなんでしょうね。

    しかし、パズル.kev は[マウス移動]イベントを動的にセットしていません。

    つまり、最初から[マウス移動]イベントがオンのままだから、フラグが必要になったというワケでしょうね。

    当時はイベントを動的にセットするサンプルが皆無でありましたから仕方ないですが…

    <追伸>

    イベントのON/OFF は昔からヘルプに書いてありますよ。

    【引用】桐10s ヘルプ ― 【イベント処理】はじめに
     使用するイベントのON/OFFは、オブジェクトのプロパティ値を変更することで、イベントハンドラの実行中に変更できます。

    ちなみに、私が何故[マウス移動]イベントを動的にセットするかというと、無駄なイベントを発生させたくないからです。
    その他に[トレース出力]ウィンドウに無意味な[マウス移動]イベントが表示されるのを避けたいということもありますよ。

引用返信 [メール受信/OFF] 削除キー/
■12016 / inTopicNo.5)  Re[4]: マウス移動軌跡を描画したい
□投稿者/ 悲しげ -(2019/10/30(Wed) 11:08:54)
    No12011に返信(ONnojiさんの記事)
    なるほど、深い。
    じっくり検討させて戴きます。

引用返信 [メール受信/OFF] 削除キー/
■12021 / inTopicNo.6)  Re[4]: マウス移動軌跡を描画したい
□投稿者/ 悲しげ -(2019/11/05(Tue) 00:24:45)
    No12011に返信(ONnojiさんの記事)
    長文失礼します。

    (1)変数の扱いで判ったこと
    例えば
    -------------------
    手続き定義開始 txt起点::マウス移動(長整数 &マウス位置[2]・・・・
     手続き実行 prcマウス移動描画( &マウス位置 )
    -------------------
    配列変数の引数を持つ手続き実行の場合、
    後の「&マウス位置」は先の「&マウス位置[2]」の配列変数群を代表して
    扱えるんですね。
    また「&マウス位置」は自動変数だと思うのですが、手続き実行の引数と
    してなら、別な手続き定義内の受け変数に渡すことができるんですね。

    (2)トレースはまだよく判らないので、教えられた「印字」書き出しで
    随時確認しました。便利です。

    (3)オブジェクト操作の記述(文字列or数値?)
    例えばオブジェクトのリストの例示では
      オブジェクト操作 @○○.マウスイベント = "1"
      オブジェクト操作 @○○.画面表示 = "1"
    とか
      オブジェクト操作 @○○.始点X = "94.5 pt"
    のように文字列扱いですが、今回のサンプルでは
    -----------------
    手続き定義開始 prcマウス移動イベント( 整数 &switch )
     オブジェクト操作 @txt起点{ マウス移動 = &switch }
    -----------------
    とか
    -----------------
    手続き定義開始 txt起点::マウス左ダウン(長整数 &マウス位置[2]・・・・
     変数宣言 自動,長整数{ &posX, &posY }
     オブジェクト操作 &mカーソルObject{画面表示 = 1, 始点X = &posX, 始点Y = &posY }
    -----------------
    とか、数値系で記述されています。
    ここは実は数値でよいと理解していいのでしょうか?

    (4)改良=応用したい点
    サンプルでは特定の固定点が始点とされているのですが、希望としては
    明細部(ピクチャobj上)の任意の場所(初めにマウスDnした地点)から
    スタートさせたい。

    そして、複数の直線を繋ぎたい。
    具体的には、
    最初の地点AでマウスDn → マウスドラッグ → 次の地点BでマウスUp。
    この結果、直線ABが描画される。
    次に前回の終点B(次の始点となる)でマウスDn → マウスドラッグ →
    終点CでマウスUp。これで直線BCが描画される。
    ・・・・・
    この繰り返しで、取りあえずは点A〜点Eくらいを繋げてみたい。
    (それ以上は繰り返せば応用できそう)
    変数はもちろん、直線objもそれなりの数の用意が必要でしょうね。
    (直線はファミリを使えなさそうなので痛い)

    同様の処理を繰り返すことになるから、ここは配列変数の出番でしょうが、
    頭の中がスパゲティになるかもしれないので、愚直にもAB等の固有名の使
    用も有りかな、とか。

    (5)質問(twipとpoint)
    マウスイベントで得られる&マウス位置[2]の値はtwipです。(1point=20twip)
    だとしても
    -----------------
     ・・・,&mTwips = 20,・・・
     &mAdjust = 5 * &mTwips
    -----------------
    の意味が判らない。(?_?)
    pointに換算するのならば「twip値/20」とするのではないかと思うのですが、
    もしかして、直線objとかもpointに換算する必要は無く、twipのまま記述して
    よいのでしょうか?
    それと
    -----------------
    手続き定義開始 prcマウス移動描画( 長整数 &マウス位置[2] )
     オブジェクト操作 &mカーソルObject{ 始点X = &マウス位置[1] - &mAdjust, 始点Y = &マウス位置[2] - &mAdjust }
     オブジェクト操作 &mラバーバンドObject{ 始点X = &m起点ObjectPos[1] + &mAdjust, 始点Y = &m起点ObjectPos[2] + &mAdjust, 終点X = &マウス位置[1], 終点Y = &マウス位置[2] }
    -----------------
    のように、始点X・Y値に「&mAdjust」値をそれぞれ加減しています。
    この意味がますます判らなくて、詰まっています。

    ここんとこ解説お願いしてよいですか?


    ps.
    添付ファイルが消されていますが、改良版が出る予定だから?

引用返信 [メール受信/OFF] 削除キー/
■12022 / inTopicNo.7)  Re[5]: マウス移動軌跡を描画したい
□投稿者/ ONnoji -(2019/11/05(Tue) 11:47:13)
    2019/11/05(Tue) 12:10:53 編集(投稿者)

    > (1)変数の扱いで判ったこと
    > また「&マウス位置」は自動変数だと思うのですが、手続き実行の引数と
    > してなら、別な手続き定義内の受け変数に渡すことができるんですね。

    Yes.

    【桐10ヘルプ】―手続き実行 <手続き名>

    ・配列変数の引数を持つ手続きを実行します( &番号リストは配列変数 )。

     手続き実行 指定行絞り込み( &番号リスト )

    【桐10ヘルプ】―手続き定義開始

    ・引数を、配列変数でまとめて受け取る手続きを定義します。この手続きを実行するときは「手続き実行 指定行絞り込み( &番号リスト )」などとして、配列変数で引数を渡します( &ID は配列変数 )。

     手続き定義開始 指定行絞り込み( 長整数 &ID[32] )
       … (コマンド) …
     手続き定義終了

    ・手続き実行時に渡される配列変数の要素数に応じて、手続き定義内で使用する変数の要素数を決めることができます(ただし、データ型が一致しない場合、または配列変数でないものは指定できません。
     この場合、つぎの例のように、要素数を空にしておきます。

     手続き定義開始 対象項目抽出( 参照 文字列 &処理項目[] )
       … (コマンド) …
     手続き定義終了

    > (3)オブジェクト操作の記述(文字列or数値?)
    > ここは実は数値でよいと理解していいのでしょうか?

    Yes.

    【桐10ヘルプ】―【一括処理】一括処理の書き方

    <属性値>
    オブジェクトの属性に設定する値を指定します(計算式)。
    一覧からいずれかひとつを選択する設定値の全角と半角は区別しません。大文字と小文字は区別します。
    各オブジェクトの属性に設定できる値は、<属性名>同様、[オブジェクトのリスト]で確認できます。
    [オブジェクトのリスト]でチェックボックスになっている属性値は、ONにするならONまたは1、OFFにするならOFFまたは0(ゼロ)を指定します。

    ONnoji注:現行では、ON、OFFの指定でエラーするオブジェクトがあるので、イチ(1)とゼロ(0)を使うことをおススメします。

    > (4)改良=応用したい点
    > 変数はもちろん、直線objもそれなりの数の用意が必要でしょうね。

    オブジェクトを増やすしか対策はないと思いますよ。


    > (5)質問(twipとpoint)
    > -----------------
    >  ・・・,&mTwips = 20,・・・
    >  &mAdjust = 5 * &mTwips
    > -----------------
    > の意味が判らない。(?_?)

    これは単に補正値として、5ポイントという意味です。

    拙作は属性値{ 始点X,始点Y,高さ,幅 }などを数値(長整数)で扱うので、"5 pt" は、5 * &mTwips となります。

    > もしかして、直線objとかもpointに換算する必要は無く、twipのまま記述して
    > よいのでしょうか?

    Yes.

    【桐10ヘルプ】―APPENDIX 単位
    twips は、各オブジェクトの単位つきの属性値を、数値型で設定または取得するときに使用します。厳密には、数値の後ろに pt、in、mm、cm が表示される属性値を数値で操作する場合は、twips として扱います。
    たとえば[オブジェクト操作] コマンドで、オブジェクトの高さを数値の 280 にすると、14 points になります(280 twips = 14 points × 20)。


    > のように、始点X・Y値に「&mAdjust」値をそれぞれ加減しています。
    > この意味がますます判らなくて、詰まっています。

    単にオブジェクトの{ 始点X, 始点Y }属性の値を補正しているだけですよ。
    つまり、現物あわせの微調整ということで、必要なければ不要です。

    > 添付ファイルが消されていますが、改良版が出る予定だから?

    もう用が済んだので削除しました。もしも、必要ならば期間限定で再度アップしますのでお知らせください。

    改良版の予定はありません。(^^ゞ


引用返信 [メール受信/OFF] 削除キー/
■12023 / inTopicNo.8)  Re[6]: マウス移動軌跡を描画したい
□投稿者/ ONnoji -(2019/11/06(Wed) 15:07:32)
    > 変数はもちろん、直線objもそれなりの数の用意が必要でしょうね。

    [直線]オブジェクトにコダワラル必要はないと思いますよ。

    [ラベル]オブジェクト、または[テキスト]オブジェクトで[罫線]属性を"囲み罫線"に指定して、

    オブジェクトの[高さ]属性をゼロ(0)にしてしまうと、矩形ではなく直線になります。

    しかも線の種類も選べる!。

    と、ここまで書いて気が付きました。

    この方法だと、水平線と垂直線しか作れないですね。

    いやはや、ぬか喜びでした。(T_T)

    せっかくだから投稿しておきます。

    <追伸>

    変数は[直線]オブジェクトの数の分用意する必要はないと思いますよ。


引用返信 [メール受信/OFF] 削除キー/
■12024 / inTopicNo.9)  Re[7]: マウス移動軌跡を描画したい
□投稿者/ 悲しげ -(2019/11/06(Wed) 20:20:15)
    No12023に返信(ONnojiさんの記事)

    ご丁寧な返信ありがとうございました。
    では再度チャレンジしてみます。
    また詰まったら質問させて戴きますので、よろしく!

引用返信 [メール受信/OFF] 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -