パネルのイベントについて

投稿者:shutzen 投稿日:2018/11/12(Mon) 18:57:18 No.2286

こんばんは。久しぶりにお世話になります。
パネル部品にラベルとスクロールバーを貼り付けて、LINEなどのタイムラインのようなインターフェースを作ろうとしているところです。スクロールバーのスクロールのイベントでパネル上の部品を移動させることはできました。が、パネル上でもマウスホイールを使ってスクロールしたいと思い、以下のコードのようにパネルのスクロールのイベントを、スクロールバーのイベントとまとめて処理するようにしてみてもスクロールバー上でしかマウスホイールが利きません。
パネルのスクロールのイベントはどのように使えばよいのでしょうか?できればスクロールバーのように移動量を取得できればありがたいのですが・・・。
よろしくお願いいたします。

--------------------------------------------------------
メイン画面を表示する
待機する

メイン画面とは
  ウィンドウを継承する
  はじめの手順
    初期化する
    パネル1の縦スクロールされた時の手順は、縦スクロールバー1がスクロールされた
    ーー貼り付けた部品に対する操作をここに書きます
  終わり
  初期化する手順
  ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
  この実質大きさを{669,628}に変える
  この内容を「メイン画面」に変える
  初期化開始する
  パネル1というパネルを作る
    その位置と大きさを{53,62,456,431}に変える
    ラベル1というラベルをパネル1へ作る
      その位置と大きさを{3,12,324,94}に変える
      その内容を「ラベル1」に変える
      そのフォントを「MS UI Gothic,14.25」に変える
      その枠を「線」に変える
      その移動順を1に変える
      その背景色を「#FFE0C0」に変える
    縦スクロールバー1という縦スクロールバーをパネル1へ作る
      その位置と大きさを{425,0,31,431}に変える
      その移動順を2に変える
  初期化終了する
終わり

  縦スクロールバー1がスクロールされた時の手順
    移動量は、縦スクロールバー1の値
    ラベル1の位置と大きさを{3,12-[移動量],324,94}に変える
  終わり
終わり
-------------------------------------------------------

Re: パネルのイベントについて

投稿者:とおりすがりや 投稿日:2018/11/12(Mon) 20:48:31 No.2287

どうも、最近初心者のくせに横から口出しするものです。

パネル自体にそのようにプログラムするのではないでしょうか?

自分で検証したわけではないので確実とは言えないのですが
ボタンを右クリックで決定したり、テキスト領域に一定数の文字を入力すると実行するといったことはしているので
多分それで行けると思うのですが……

  パネルがスクロールされた時の手順
    移動量は、パネルの値
    ラベル1の位置と大きさを{3,12-[移動量],324,94}に変える

でスクロールバーでスクロールことと同じことができないでしょうか?

> こんばんは。久しぶりにお世話になります。
> パネル部品にラベルとスクロールバーを貼り付けて、LINEなどのタイムラインのようなインターフェースを作ろうとしているところです。スクロールバーのスクロールのイベントでパネル上の部品を移動させることはできました。が、パネル上でもマウスホイールを使ってスクロールしたいと思い、以下のコードのようにパネルのスクロールのイベントを、スクロールバーのイベントとまとめて処理するようにしてみてもスクロールバー上でしかマウスホイールが利きません。
> パネルのスクロールのイベントはどのように使えばよいのでしょうか?できればスクロールバーのように移動量を取得できればありがたいのですが・・・。
> よろしくお願いいたします。
>
> --------------------------------------------------------
> メイン画面を表示する
> 待機する
>
> メイン画面とは
>   ウィンドウを継承する
>   はじめの手順
>     初期化する
>     パネル1の縦スクロールされた時の手順は、縦スクロールバー1がスクロールされた
>     ーー貼り付けた部品に対する操作をここに書きます
>   終わり
>   初期化する手順
>   ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
>   この実質大きさを{669,628}に変える
>   この内容を「メイン画面」に変える
>   初期化開始する
>   パネル1というパネルを作る
>     その位置と大きさを{53,62,456,431}に変える
>     ラベル1というラベルをパネル1へ作る
>       その位置と大きさを{3,12,324,94}に変える
>       その内容を「ラベル1」に変える
>       そのフォントを「MS UI Gothic,14.25」に変える
>       その枠を「線」に変える
>       その移動順を1に変える
>       その背景色を「#FFE0C0」に変える
>     縦スクロールバー1という縦スクロールバーをパネル1へ作る
>       その位置と大きさを{425,0,31,431}に変える
>       その移動順を2に変える
>   初期化終了する
> 終わり
>
>   縦スクロールバー1がスクロールされた時の手順
>     移動量は、縦スクロールバー1の値
>     ラベル1の位置と大きさを{3,12-[移動量],324,94}に変える
>   終わり
> 終わり
> -------------------------------------------------------

Re^2: パネルのイベントについて

投稿者:shutzen 投稿日:2018/11/12(Mon) 22:02:36 No.2288

早速のレス、ありがとうございます。
ご提案いただいたやり方を今試してみましたが、動作しませんでした(残念)。
パネルの設定項目には値の変数がないので(スクロールバーにはありますよね)、もしや隠し機能的に使えるのでは?と期待したのですが、やっぱり無理でしたね。
ともあれ、レスありがとうございました。また何かありましたらよろしくお願いいたします。

> どうも、最近初心者のくせに横から口出しするものです。
>
> パネル自体にそのようにプログラムするのではないでしょうか?
>
> 自分で検証したわけではないので確実とは言えないのですが
> ボタンを右クリックで決定したり、テキスト領域に一定数の文字を入力すると実行するといったことはしているので
> 多分それで行けると思うのですが……
>
>   パネルがスクロールされた時の手順
>     移動量は、パネルの値
>     ラベル1の位置と大きさを{3,12-[移動量],324,94}に変える
>
> でスクロールバーでスクロールことと同じことができないでしょうか?
>

Re^3: パネルのイベントについて

投稿者:通りすがり 投稿日:2018/11/15(Thu) 23:15:51 No.2291

パネルの「マウスのホイールが移動した」イベントを使ってみてください。
このイベントの記載は、パネルの継承元となる「ウィンドウ部品」種類の説明のところ載っています。
このイベント含めて引数のあるイベントを使用する際の注意点として、イベントに手順を設定するのではなく、イベントの手順を直接定義してください。これをしないと、「イベント」変数が参照でいません(手順内にイベント変数が存在しない状態になってしまう)
また、イベント変数にどんな内容が含まれるかは、ステップ実行などで確認してみてください。

解決しました

投稿者:shutzen 投稿日:2018/11/19(Mon) 09:41:19 No.2296

通りすがりさん、アドバイスありがとうございました。お陰様でうまく行きました。
下記のように、ホイール移動のイベントの処理でスクロールバーの値を変化させ、スクロールバーの値変化イベントでオブジェクト移動の処理を行ってみました。
ちなみに色々試してみて分かったのですが、パネル上のオブジェクトは、ラベルならその中でホイール移動してもパネルのイベントとして扱われるようですが、書式付きテキストだとそうはならず、それ自体のイベントとして扱われてしまうようなので、8行目「パネル1のマウスのホイールが移動した時の手順は〜」と同様にホイール移動のイベントを記述しないといけないようですね。

ともあれ、プロデルは細かいところまで柔軟に記述できるのでありがたいですね。
-----------------------------------------------------------
メイン画面を表示する
待機する

メイン画面とは
  ウィンドウを継承する
  はじめの手順
    初期化する
    パネル1のマウスのホイールが移動した時の手順は、スクロール処理する
    ーー貼り付けた部品に対する操作をここに書きます
  終わり
  
  初期化する手順
  ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
  この実質大きさを{669,628}に変える
  この内容を「メイン画面」に変える
  初期化開始する
  パネル1というパネルを作る
    その位置と大きさを{53,62,456,431}に変える
    ラベル1というラベルをパネル1へ作る
      その位置と大きさを{3,12,324,94}に変える
      その内容を「ラベル1」に変える
      そのフォントを「MS UI Gothic,14.25」に変える
      その枠を「線」に変える
      その移動順を1に変える
      その背景色を「#FFE0C0」に変える
    縦スクロールバー1という縦スクロールバーをパネル1へ作る
      その位置と大きさを{425,0,31,431}に変える
      その移動順を2に変える
  初期化終了する
終わり

  縦スクロールバー1の値が変化した時の手順
    移動量は、縦スクロールバー1の値
    ラベル1の位置と大きさを{3,12-[移動量],324,94}に変える
  終わり
  
  スクロール処理する手順
      もしこの時のホイール移動量<0なら
        移動方向=1
      他でもしこの時のホイール移動量>0なら
        移動方向=-1
      もし終わり
    臨時は、(縦スクロールバー1の値+10*[移動方向])
    もし臨時>=0かつ臨時<=100なら
      縦スクロールバー1の値を、臨時に変える
    もし終わり   
    終わり
  
  
  終わり

▲ページの先頭へ

- WebForum -