スピンボタン

   
INF_Framework は ONnoji さん作成のフリーのライブラリです。
フォームに便利な機能を追加してくれます。
ここでは INF_Framework が適用されたフォーム の便利機能を、
簡単に利用できるように解説していきたいと思っています。
最新のライブラリ は次の通りです。
※ INF_Framework_第3.3版_改訂版(MkII) 基本セット for 桐9-2012 / 桐9s / 桐10 / 桐10s / 桐sSL
※ INF_Framework_第3.3版_改訂版(MkII) サンプル集 for 桐9-2012 / 桐9s / 桐10 / 桐10s / 桐sSL
ライブラリは 所定のサイト からダウンロードしてください。
※ 桐10 / 桐10s / 桐sSL で使用するには、ファイルのコンバートが必要です。 
更新日:2022年10月9日

「スピンボタン」とはテキストボックスの数値を増減するボタンのことです。
スピンボタン をクリックすると、テキストボックスの数値値が増加または減小します。
またボタンをマウスで押しつづけると、連続的にテキストボックスの数値値が増加または減小します。
※連続動作をオートリピートと呼びます。

次の手順で設定します。
※モダンINF_Framework、クラシックINF_Framework 共通 (Mkll を含みます)

step1.
増減対象のテキストを準備する( [ソース] にはひとつの項目名もしくは変数名を指定)。
step2.
遠隔操作する[罫線を立体に設定したテキスト]オブジェクトを準備する(テキストオブジェクトしか動作しません)。
オブジェクト名をルールに則って決める(詳細はページ最後の 仕様 をご覧になってください)。
” Up を含む任意の名称 ” + ”_ ” (アンダーバー:半角記号)+”増減対象テキストのオブジェクト名”
” Down を含む任意の名称 ” + ”_ ” (アンダーバー:半角記号)+”増減対象テキストのオブジェクト名”

例) ”txtSpinUpFor_txt最大値 ” 、” txtSpinDownFor_txt最大値 ”
step3.
step2 で準備したテキストオブジェクトを ファミリ:famSpinButton に設定する。
※ファミリに登録するのは、増減対象のテキストではありません。

以上が設定手順になります。

※サンプルをそのままコピペして、目的に応じて設定を変更して使うと簡単です(設定はページ最後の仕様をご覧になってください)。

スピンボタンは設定を変えるためのものなので、数値を増減した後には
コマンドボタン等で、変更された設定に従った ”何かのイベント等”を実行しましょう (^^♪


1.
スピンボタンの各オブジェクトの属性(設定)
1-1.
サンプル集に含まれるフォームの ”FW_Sample_クラシックINF_変数受け渡し元.wfx ” を定義画面で開いて
 
ワークスペースにある スピンボタンのオブジェクトをフォーム画面上に移動させます。




1-2.
各オブジェクトの属性は次の通りです。
 




1-3.
増減値が入力されるテキストオブジェクトの[ソース] には項目名または変数名を指定します。
 
ここでは オブジェクト名:txt最大値 の [ソース] に &最大値(組込変数ですね) が設定されていて増減した値が表示(入力)されます。



※詳細はページ最後の [SpinButton / RecordUpDown 仕様メモ] をご覧になってください。


1-4.
増減を操作するオブジェクト名の設定にはルールがあります。
 
"Up" または "Down" どちらか一方のキーワードを含む任意の名称に引き続き、下線(_)と増減対象テキストのオブジェクト名を付加します。



※詳細はページ最後の [SpinButton / RecordUpDown 仕様メモ] をご覧になってください。


1-5.
入力ガイドにはスピンボタンのパラメータが設定されています。
 

▲(オブジェクト名:txtSpinUpFor_txt最大値)のパラメータは
刻み値:1 最小値:なし 最大値:12 キャレット位置:すべて選択 フォーカス:増減対象テキストにフォーカス移動 となっています。

▼(オブジェクト名:txtSpinDownFor_txt最大値)のパラメータは
刻み値:1 最小値:1 最大値:なし キャレット位置:すべて選択 フォーカス:増減対象テキストにフォーカス移動 となっています。




※詳細はページ最後の [SpinButton / RecordUpDown 仕様メモ]  をご覧になってください。

2.
増減するテキストを操作するオブジェクトは ”ファミリ:famSpinButton” に属していなくてはなりません。
 

 
ファミリ:famSpinButto は INF_Fremework が標準で準備している ファミリ名です。
左図はサンプルの ”FW_Sample_クラシックINF_変数受け渡し元.wfx ” のファミリパレットです。


サンプルでは下図のように増減対象のテキストを操作するオブジェクト

オブジェクト名:txtSpinUpFor_txt最大値 (ボタンの表示:▲)
オブジェクト名:txtSpinDownFor_txt最大値 (ボタンの表示:▼)

の属性にファミリ名が登録されていることがわかります。


     


 
なお、オブジェクトへのファミリーの登録はオブジェクト操作コマンドを使ってでもOKです。

オブジェクト操作 @txtSpinUpFor_txt最大値{ オブジェクトファミリー = "famSpinButton" }
オブジェクト操作 @txtSpinDownFor_txt最大値{ オブジェクトファミリー = "famSpinButton" }

※オブジェクト操作コマンドで設定すると、ファミリパレットの登録順序が変更された場合でも対応できます。
 
 


 

[SpinButton / RecordUpDown 仕様メモ] ※ Spec_Memo_Spinbutton.txt INF_Framework 第3.3版 改訂版(MkII) より転載

 

 

 ■命名規則
 【増減対象テキストの指定】
 スピンボタンのオブジェクト名には、
 "Up" または "Down" どちらか一方のキーワードを含む任意の名称に引き続き、
 下線(_)と増減対象テキストのオブジェクト名を付加します。
 ※下線(_)は半角記号です。

 (例)
  ○×△Up  + "_" + テキストオブジェクト名
  ○×△Down + "_" + テキストオブジェクト名
  Up○×△  + "_" + テキストオブジェクト名
  Down○×△ + "_" + テキストオブジェクト名
  ○Up×△  + "_" + テキストオブジェクト名
  ○Down×△ + "_" + テキストオブジェクト名

 下線(_)以降を増減対象テキストオブジェクト名と見なします。

 ※増減対象テキストの[ソース]にはひとつの項目名または変数名を指定してください。
 ※配列要素はリテラルな数字で書いてください。
 ※SpinButtonは[グループ項目]オブジェクトを対象にできません。
 ※グループ項目オブジェクトと重複した項目名は指定しないでください。

 【アップダウン属性の指定】
 アップダウン属性の指定には、
 スピンボタンのオブジェクト名の中に、
 "Up" または "Down" どちらか一方のキーワードを含む必要があります。
 キーワードは全角半角、大文字小文字を問いません。

 ※増減対象のオブジェクト名の中に含まれるキーワードは対象外です。
 ※キーワードが無い場合、スピンボタンは動作しません。
 ※"Up" と "Down" 両方のキーワードを含む場合には、 "Down"が有効です。

 ■カスタマイズ
 それぞれのスピンボタン:テキストごとに、
 刻み値・最小値・最大値・キャレット位置・フォーカスを任意に設定できます。

 【スピンボタン:テキストのパラメータ】
 スピンボタン:テキストのオブジェクトの、[オブジェクトの属性]の[テキスト]タブの、
 [入力ガイド]ボックスにパラメータを記述します。
 ※増減対象テキストのオブジェクトの[入力ガイド]ボックスに設定しても無効です。

 【パラメータ書式】
  [[刻み値][<,>[最小値][<,>[最大値][<,>[キャレット][<,>[フォーカス]]]]]]
  ※コンマは半角・全角でも、または読点(、)でもOKです。

 刻み値   … 任意の数値 省略時:1
 最小値   … 任意の数値 省略時:最小値なし
 最大値   … 任意の数値 省略時:最大値なし
 キャレット … "右"|"左" 省略時:すべて選択
 フォーカス … "しない"  省略時:増減対象テキストにフォーカス移動

 (記述例)
  2       … 刻み値を 2 にする
  ,-50      … 最小値 -50 を超えてダウンしない
  ,, 100    … 最大値 100 を超えてアップしない
  ,,,右    … キャレットを 右 にセットする
  ,,,左    … キャレットを 左 にセットする
  ,,,,しない … テキストボックスへフォーカスを設定しない

 ※刻み値に負の値を指定しても絶対値として扱います。
 ※Up属性のスピンボタンの場合には最小値指定は無視されます。
 ※Down属性のスピンボタンの場合には最大値指定は無視されます。

 【値チェックに関するご注意】
 最小値と最大値はスピンボタンのリミッターですが、テキストボックスの値範囲(レンジ)ではありません。
 テキストボックスの値範囲(レンジ)は、自作の入力チェック手続き等で対応してください。

 ■ファミリ
 <スピンボタン:テキスト>はファミリ:famSpinButton に属している必要があります。