◎ 例題−6 マウス操作で、拡大表示

例題紹介も、6回目となりました。ありがとうございます(しかし今回は苦労しました)

[例題−6」 作成のポイント


◎ 今回のオブジェクトは大きくわけて、次の3種類に分かれます

  1. 背景に小さく表示されてる256個のオブジェクト(テキスト)
  2. 中央の大きく拡大表示させるオブジェクト(ラベル)
  3. 右側のボタンオブジェクト(コマンドボタン)

詳細は、下記参照下さい

◎ イベント処理は、マウスインしたとき、オブジェクト名を取得しておき、マウス左ダウンで値取得と、
   オブジェクトの位置の計算を行い拡大オブジェクトの表示を行ってます
   また、イベントショリの中でb移動ボタン表示の処理も行います。

◎ 漢字コード表をTBLで作成する方法もありますが、ファイルサイズが大きくなるため今回はフォームのみで
 表示するように作成いたしました(皆さん。是非お試し下さい)  

 

[例題−6] フォームオブジェクト設定 備 考 & 補 足
テキスト
(256個)
・変数 &cnv を、#jis で、文字に変換します

・途中、変換・表示の都合で &puras・&puras2 で、調整している箇所があります
イベントは、ファミリー「jisdsp」を利用しています
ラベル
(1個)
なぜ、ラベルなのか
理由:変数に、”(ダブルコーテション)や、式に使う符号等が代入された場合、テキストボックスのソースでは、エラーとなるため、やむを得ずラベルを使用しました。
(これがわかるまで数時間かかりました)
イベント処理は、行いません
拡大用ラベルを、選択オブジェクトの近くに表示させる計算も必要です
コマンドボタン
(9個)
各分類の先頭番地を変数に格納後、b移動ボタンの表示を更新させます 編集属性式に、変数の値が対象となるとき、背景色の変更式を設定しています
★ コマンドボタンのコマンド(機能名 & パラメータリスト)と、一括処理(cmd)イベント処理(kev)の区分

答はないと思います。どちらに書いても同じ動きをさせることが出来る場合もたくさんありますから。
では、今回のフォームでは、どのように区別(利用)をしているかは

 コマンドボタンの、パラメータリストに、「#代入(&cnv,12320)」の変数に値を代入後イベントファイルの移動表示を呼び出しています。
 ボタンが1個の場合は、手続きも1個ですみますが、今回のように9個ある場合は、手続き処理が9個も必要になります。
そこで、各ボタンでそれぞれ、変数代入後に呼び出すようにしてあります

★コマンドボタンで、イベント処理を実行するときは、今回の方法でなく、オブジェクトのイベントから処理をさせることも可能です

 

説明−1 フォーム作成

詳細の内容は、作品をダウンロードして

ご確認下さい

補足:画面右下のコード( hex )です.

  • 半角文字=0000
  • 記号英数=2120
  • ひらがな=2420
  • ギリシャ=2620
  • ロ シ ア=2720
  • 特殊文字=2820
  • 第一水準=3020
  • 第二水準=5020
  • 外  字=7F20

以上をスタートとして、表示しています


 補 足
  1. 拡大用オブジェクトは、幅・高さとも、80に設定してあります。フォントサイズは、72です
  2. スクロールバーは見せ掛けです。機能していません

 

説明−2 イベント処理一部の説明(全体はプログラムを、ダウンロードしてご確認お願いいたします)

◎マウスインアウトで、オブジェクト名を取得します

手続き定義開始 jisdsp::マウスインアウト(長整数 &フラグ,長整数 &明細番号)
  if(&フラグ=1)
    &focus=&this
  else
    &focus=""
  end
手続き定義終了

◎マウス左ダウンでは、

  1. オブジェクトの値(拡大表示するデータ)を取得
  2. 取得データが、空白でない場合は、ラベル(bigdsp)の表題として設定します
  3. またオブジェクトの位置から少し離れたところに表示されるよう始点X・始点Yに値を設定します

手続き定義開始 jisdsp::マウス左ダウン(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
  メソッド呼び出し &focus.ソース値取得(&dsps,0)
  if(&dsps<>"" .and &dsps<>" " .and &dsps<>" ")
    オブジェクト操作 @bigdsp.標題 =&dsps
    オブジェクト操作 &x=&focus.始点X
      &xpt=#文字列(&x/20+20)+" pt"
      条件(&x/20>160) &xpt=#文字列(&x/20-80)+" pt"
    オブジェクト操作 &y=&focus.始点Y
      &ypt=#文字列(&y/20+20)+" pt"
      条件(&y/20>160) &ypt=#文字列(&y/20-80)+" pt"
    オブジェクト操作 @bigdsp{画面表示="1",始点X=&xpt,始点Y=&ypt}
  end
手続き定義終了

◎マウス左アップでは、ラベル(bigdsp)の画面表示="0"を設定して、非表示にします

手続き定義開始 jisdsp::マウス左アップ(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ)
  オブジェクト操作 @bigdsp.画面表示 = "0"
手続き定義終了


    説明に使用いたしましたファイルのダウンロードコーナです