Spec_Memo_Spinbutton.txt  SpinButton / RecordUpDown 仕様メモ by ONnoji                         Rev.0 2005.03.14 コラム10 MNU Tools 第1.0版                         Rev.1 2020.09.08 Spec_Memo_Spinbutton.txt                         Rev.2 2020.09.18 INF_FW 3.3/3.4 セットアップ  この文書はINF_Framework(以降 INF_FW と表記する)の機能:SpinButton と 機能:RecordUpDown に関する仕様メモです。  ■INF_FW 3.3/3.4 セットアップ  ― ファミリ:famSpinButton と ファミリ:famRecordUpDown が必要です。  ※ファミリは作るだけでOKです。  ― モダン(オート)INF_FW では、自動的にセットアップします。  ― クラシックINF_FW と NULL INF_FW では、イベント処理側の手続き:INFprcStartup( )  ※イベント処理側の手続き:INFprcStartup( )で、INFprcUTLStartup( ) を実行します。  ※イベント処理側の手続き:INFprcStartup( )を使用しない NULL INF_FW ではモダン(オート)INF_FW と同じく自動的にセットアップされます。  ■SpinButton とは(概要)  機能名:SpinButton( スピンボタン )は、スピンボタン(spin button)はGUIパーツ(ウィジェット)の意味です。  機能:SpinButtonは、数値の入力を補助するためのユーティリティです。  動作:スピンボタンをクリックすると、テキストボックスの数値の値が増加または減小します。     また、ボタンをマウスで押しつづけると、連続的にテキストボックスの数値値が増加または減小します。  【引用】スピンボタン 出典: フリー百科事典『ウィキペディア(Wikipedia)』   スピンボタン(spin button)はGUIパーツ(ウィジェット)の一種。   主としてテキストボックス(テキストフィールド)の横に三角形マークの付いた小さな増減ボタン(▲/▼)として配置され、   数値の入力などを補助するためのコントロールである。   TVリモコンでいえばチャンネル送りボタンや音量ボタンに相当する。   スピンボタンのついたテキストボックスのことはスピンボックスと呼ばれる。  ■スピンボックスとスピンボタン  スピンボックス … ソース属性に項目または変数を指定したテキストボックス  スピンボタン  … スピンボックスの横の三角形マークの付いた小さな増減ボタン(▲/▼)  ただし、機能:SpinButton では、スピンボタンにはコマンドボタンオブジェクトではなくテキストオブジェクトを使用します。  ■作り方  1.スピンボックスに相当するテキストオブジェクトを配置します。  2.スピンボックスの横にソース属性が "▲" のテキストオブジェクトとソース属性が "▼" のテキストオブジェクトと配置します。  ※罫線モードを立体にすると、ボタンらしく見えます。  ※桐10s 環境で INF_Framework 第3.3版 を使用している場合には、自動的にフラットUIで表示できます。  3.スピンボタン[▲][▼]と、スピンボックスのオブジェクト名の関係を作ります。  関係を作るには次の規則を適用して、  ・増加ボタン[▲]には、キーワード Up  を含んだ文字列 + 下線(_) + スピンボックスオブジェクト名  ・減少ボタン[▼]には、キーワード Down を含んだ文字列 + 下線(_) + スピンボックスオブジェクト名  をオブジェクト名を決定します。  以下の例では、スピンボックスのテキストオブジェクト名を txt最大値 としています。  スピンボックス:txt最大値  増加ボタン[▲]: txtSpinUpFor_txt最大値 ← キーワード UP  を含んだ文字列 + 下線(_) + スピンボックスオブジェクト名  減少ボタン[▼]:txtSpinDownFor_txt最大値 ← キーワード DOWN を含んだ文字列 + 下線(_) + スピンボックスオブジェクト名  4.増加ボタン[▲]と減少ボタン[▼]をファミリ:famSpinButton に所属させます。  ※もしも、ファミリ:famSpinButton が存在しない場合には、ファミリパレットで作成してください。  ※ファミリ:famSpinButton は作成するだけでOKです。  5.これで完成ですが、さらに詳細な設定ができます。  ・刻み値   … 任意の数値 省略時:1  ・最小値   … 任意の数値 省略時:最小値なし  ・最大値   … 任意の数値 省略時:最大値なし  ・キャレット … "右"|"左" 省略時:すべて選択  ・フォーカス … "しない"  省略時:増減対象テキストにフォーカス移動  設定は以降の[機能:SpinButton のAPPENDIX]の[カスタマイズ]の項を参照してください。  ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇  ― 機能:SpinButton のAPPENDIX  ■命名規則  【増減対象テキストの指定】  スピンボタンのオブジェクト名には、  "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 に属している必要があります。  ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆  以下は、機能:SpinButton から派生したコマンドボタンのリピート(繰り返し)機能に関する説明です。  ■RecordUpDown とは(概要)  機能名:RecordUpDown( レコードアップダウン )は、マウスで押し込んでいる間、コマンドボタンを連続して実行します。  機能:RecordUpDown は、コマンドボタンの実行を繰り返すためのユーティリティです。  なお開発当初はレコードアップダウンがリピートすることを念頭にしていましたので RecordUpDown と命名しています。  しかし、その後 AKome氏によってレコードアップダウンに限らずコマンドボタンに適用できることが分かりました。  ■作り方  1.疑似コマンドボタンに相当するテキストオブジェクトを配置します。  ※罫線モードを立体にすると、本物のコマンドボタンらしく見えます。  ※桐10s 環境で INF_Framework 第3.3版 を使用している場合には、自動的にフラットUIで表示できます。  2.このテキストオブジェクトのソース属性に標題に相当する文字列をセットします。  3.疑似ボタンのテキストオブジェクトのオブジェクト名と実際に実行するコマンドボタンのオブジェクト名の関係を作ります。  ※実際に実行するコマンドボタンは、見えている必要がないのでワークスペースに配置しておきます。  関係を作るには次の規則を適用して、  ・疑似コマンドボタンに相当するテキスト + 下線(_) + 実際に実行するコマンドボタンのオブジェクト名  をオブジェクト名を決定します。  以下の例では、疑似コマンドボタンに相当する相当するテキストの元のオブジェクト名を txt次行へ としています。  テキスト   :txt次行へ_cmd次行へ  ← テキストオブジェクトのオブジェクト名 + 下線(_) + コマンドボタンのオブジェクト名  コマンドボタン:cmd次行へ  4.疑似コマンドボタンに相当するテキストオブジェクトをファミリ:famRecordUpDown に所属させます。  ※もしも、ファミリ:famRecordUpDown が存在しない場合には、ファミリパレットで作成してください。  ※ファミリ:famRecordUpDown は作成するだけでOKです。  5.これで完成ですが、さらに詳しくは以降の[機能:RecordUpDown のAPPENDIX]を参照してください。  ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇  ― 機能:RecordUpDown のAPPENDIX  ■命名規則  【実行コマンドボタンの指定】  レコードアップダウンのオブジェクト名には、  任意の名称に引き続き、下線(_)と実行コマンドボタンオブジェクト名を付加します。  ※下線(_)は半角記号です。  (例)   ○×△ + "_" + コマンドボタンオブジェクト名  下線(_)以降を実行コマンドボタンオブジェクト名と見なします。  ■ファミリ  <レコードアップダウン:テキスト>はファミリ:famRecordUpDown に属している必要があります。  以下は 2005.10.02 VK_library より  ■SPN:レコードアップダウン機能の場合の[擬似コマンドボタン]に関して  <前作からの変更点>  レコードアップダウン機能の場合、  [境界線モード]のプロパティが存在しないオブジェクトでも、  [擬似コマンドボタン]として利用できるように変更しました。  ※スピンボタン機能の[擬似コマンドボタン]は常にテキストです。  SPN:レコードアップダウン機能の場合の<レコードアップダウン:テキスト>とありますが、  この[擬似コマンドボタン]は[テキスト]オブジェクトで無くても構いません。  実は[ラベル]オブジェクトでも[ピクチャ]オブジェクトでも大丈夫です。(^^ゞ  ※SPN:スピンボタン機能の<スピンボタン:テキスト>は必ず[テキスト]オブジェクトです。  しかし、SPN:レコードアップダウン機能では、  [擬似コマンドボタン]を押し込んだり離したりする状態を表現するために、  [境界線モード]のプロパティ(属性)を操作しています。  [テキスト]/[ラベル]/[ピクチャ]オブジェクトには[境界線モード]のプロパティがありますが、  [境界線モード]のプロパティが存在しないオブジェクトを、  [擬似コマンドボタン]として利用すると前作ではエラーになります。  例えば[コマンドボタン]オブジェクトを[擬似コマンドボタン]として利用すると前作ではエラーになります。  そこで、[境界線モード]のプロパティが存在しないオブジェクトでも、  レコードアップダウン機能の[擬似コマンドボタン]として利用できるように変更しました。  <ご注意>  [擬似コマンドボタン]としてコマンドボタンの場合には、機能名をすべて”なし”に設定してください。  ※行を移動するとコマンドボタンが凹んだ状態が解除される場合があります。  オブジェクト名:cmd○×△_実行コマンドボタンオブジェクト名  オブジェクトファミリ:famRecordUpDown  機能名  [1]なし  [2]なし  [3]なし  [4]なし  ※[1]なし の代わりに[1]実行条件 を利用してもOK  以上