|
|
シームレスに( [入力支援ボタン]を使わずに )
データ型が日付の項目では カレンダー が、
数値(通貨等)を入力する項目では電卓 機能が起動するように設定できます。
フレームワーク の ” INF_Framework.cmx , IPS_Framework.cmx , INF_MNU.kex ,
INF_MNU.wfx ” の4ファイルに加えて、 サンプル集(INF_Framework_2022_Secondary)に含まれている以下のファイルが必要です。 |
日付入力に |
”INF_DatePicker.wfx , INF_DatePicker.kex , INF_DatePicker_年月Set.wfx
, INF_DatePicker_年月Set.kev , INF_DatePicker_Option.wfx , INF_DatePicker_Option.kex , INF_Date年月日Set.wfx , INF_Date年月日Set.kex ” が必要です。 |
|
電卓に | |
”INF_電卓.wfx , INF_電卓.kex ” の2ファイルが 必要です。 |
モダンINF_Framework、クラシックINF_Framework 共通
1. | サンプルフォーム ” FW_Sample_モダン_現金出納帳.wfx ” を見てみましょう。 |
日付入力(編集)項目で カレンダー が起動できます(サンプルの設定では Endキー ) 。 また数値(通貨等)が入力できる項目では 電卓機能が利用できるようになっています。 |
※サンプルは モダンINF_Framework です。 オートINF_Framework を モダンINF_Framework にする手順は こちら(クリックしてください)。 |
1-1. | 日付を入力中(編集中)に指定した起動キーを押すと(サンプルの設定は Endキー ) カレンダー を起動できます。 |
1-2. | 日付入力の項目を日時型ではなく文字列型としている場合は、自動でカレンダー起動はセットされません。 |
後述の APPENDIX を参考にして、手作業でセットすることができます。 |
2. | 数値(通貨)を入力してみましょう (ここでは [収入] と [支出] )です。 |
2-1. | 防寒アウター 、支出項目に 2800 と入力し続けて *キー(半角入力してください)を押すと、ポップアップで電卓が起動します。 |
電卓には 2800× と入力されていて 次の入力待ちの状態となります。 |
2-2. | 続けて 1.1(半角)と入力します。 電卓が大きいので、縮小しておきます(サイズは覚えてくれます) |
2-3. | Enterキーを押すと計算結果が入力されました。シームレスに電卓が起動し、終了し、結果が反映されました。 |
※一応ですが、この例は レシートを見ながら単品ごとに表示されている金額に消費税(8%や10% 等)を追加するという想定です (^^♪ |
3. | 電卓は 数値を入力する項目で入力(訂正)中に 計算キー( + - * / :半角 )を押すことで起動し 計算結果が転送されます。 |
大げさに言えば 入力中の項目が、電卓の最初の数値入力画面になっているということです。 |
4. | イベントファイルを見てみましょう。 |
4-1. | 名札メインは次のようになっています。 |
【重要】 | カレンダーを起動するキーはここで設定します。 |
4-2. | 次は WIDGETprc電卓カレンダStartup を起動している部分です。 |
ここでは [開始時実行]に登録した コマンドボタンから実行しています。 [cmdStartup] ボタンは標準で準備されているので、実行するプロシージャ名を確認(もしくは設定)して、 [開始時実行] コマンドボタンに cmdStartup を実行するように設定します。 |
※ | フォームの開始時実行コマンドの登録方法についての詳細は→ こちら(クリックしてください) をご覧になってください。 |
おまけ)
サンプルフォーム ” FW_Sample_モダン_現金出納帳.wfx ” の日付項目には 項目の表示条件が設定されています。日付が 土曜、日曜 の場合 色が変わります。
また ” FW_Sample_モダン_現金出納帳.wfx ” は モダンINF_Framework なので ”表” で設定した 項目の表示条件 が反映されています。
※クラッシックINF_Framework を利用したフォームの場合、手順は
こちら(クリックしてください)。
※上図の日付はサンプルデータと異なります(サンプルデータに日曜日がなかったもので (^^♪ |
5. | 日付・電卓を クラシックINF_Framework への適用する例。 |
※クラシックINF_Framework については→ こちら(クリックしてください) をご覧になってください。 |
5-1. | フォームの定義画面です。フォーム開始時に実行するコマンドボタンを作成・登録します( ここでは "cmdStartup" ) 。 |
5-2. | イベントファイル( kvx )の、”名札 メイン” と プロシージャ ( ”cmdStartupClick” を作成) に |
サンプルの ” FW_Sample_モダン_現金出納帳.kvx ” から該当の部分をコピーします。カレンダーのトリガーも変更してみましょう。 |
5-3. |
[日付]項目で カレンダー呼び出しができるようになりました。 |
5-4. |
電卓機能も呼び出せるようになりました( [単価] 項目で機能します)。 |
付録1)
INF_電卓の仕様メモ 2019.10.11 ( 作者 ONnoji さんのメモです )
※ダウンロードした INF_Framework に含まれる 1st_Spec_Memo_WIDGET_電卓・カレンダ.txt
もご覧になってください。
■演算について
入力操作 補助表示
2 + = 2 ( 2 + 0 と同じ ) 計算モード 2+[?]
2 - = 2 ( 2 - 0 と同じ ) 計算モード 2-[?]
2 * = 4 ( 2 * 2 と同じ ) 計算モード 2×[2]
2 / = 1 ( 2 / 2 と同じ ) 計算モード 2÷[2]
↑これらは、手持ちのカシオの電卓と同じ動作です。
■演算子の変更
m op n nを入力する前では、演算子:operator( + - * / ) を変更できます。
[CE]を押した時には、演算子:operator( + - * / ) を変更できます。
■定数計算
定数計算はサポートしていません。
■百分率計算
(例)
・500の5%増しを求める
500 [+] 5 [%]
・500の5%引きを求める
500 [-] 5 [%]
・500の5%を求める
500 [×] 5 [%]
付録2) INF_Widget_電卓・カレンダ・都道府県 for 桐9-2012 / 桐9s / 桐10 / 桐10s に含まれる仕様メモ をそのまま引用。
WIDGET_電卓・カレンダの仕様メモ.txt By ONnoji Copyright (C) 2019
この仕様メモは[INF_Framework Rev.238]で追加された、[WIDGET_電卓・カレンダ]機能について書きとめたものです。
[入力支援ボタン]で[INF_電卓 /
INF_DatePicker]を利用する場合には、別書の[ヘルプ―INF_Widget_電卓・カレンダ・都道府県.txt]を参照してください。
[WIDGET_電卓・カレンダ]機能を体験するには、フォーム:INF_現金出納帳 を操作してください。
■概要
[INF_Framework
Rev.238]では、[入力支援ボタン]使わずに[INF_電卓]と[INF_DatePicker]をシームレスにポップアップする機能が追加されました。
この機能を[WIDGET_電卓・カレンダ]機能と呼ぶことにします。
―[INF_電卓]のポップアップ
値がある数値・通貨・長整数・整数のテキストボックスで、四則演算キー[+][-][*][/]を押すと[INF_電卓]がポップアップします。
ただし、表示モードを除きます。
―[INF_DatePicker]のポップアップ
日時型のテキストボックスで任意のキーを押すと[INF_DatePicker]がポップアップします。ただし、表示モードを除きます。
※文字列型のテキストボックスで利用する場合には、後述のAPPENDIXを参照してください。
キーはデフォルトで[End]キーが割り当てられています。
【キーに指定できる文字】
キーに指定できる文字は、以下の文字でこれは基本的にキートップの文字と同じです。(例)"End" "Shft + End" "Ctrl + End"
BackSpace,Tab,Clear,Enter,Shift,Ctrl,Alt,Pause,CapsLock,英数,漢字,Esc,変換,無変換,
スペース,PageUp,PageDown,End,Home,←,↑,→,↓,PrintScreen,Insert,Delete,Help
F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12
Windows左,Windows右,Application
0,1,2,3,4,5,6,7,8,9,*,+,Separator,-,.,/
NumLock,ScrollLock
:,;,comma,-,.,/,@
[,\,],^,-,backslash
漢字番号,カタカナ,ひらがな,半角/全角,ローマ字
※これらは VK_Frammework の定数として定義されています。キーボードの種類よっては存在しないキーがあります。
■初期化
Widget_電卓 の変数宣言は、[名札 メイン]で行う。
配置位置は[標準 INF Framework 第3.2版 名札 メイン]の前後のどこでもよい。
―[名札 メイン]の例
名札 メイン
:
:
*---------- begin Widget_電卓・カレンダ 名札 メイン ---------------*
** Widget:ウィジェット パソコンのデスクトップやWebページなどで動作する小さなアプリケーションのこと
変数宣言 局所,整数 { &WIDGETmLive = 1 }
if ( #変数( "WIDGETmLive" ) )
変数宣言 局所,整数 { &WIDGETmKeyDownContinue = 0, &WIDGETmSystemKeyDownContinue = 0 }
/* 継続フラグ */
変数宣言 局所,整数 { &WIDGETmControlEventType } /* WIDGETprcFieldPopupEval の参照引数
キーダウン:1 システムキーダウン:2 */
変数宣言 局所,文字列{ &WIDGETm電卓項目FieldList }
変数宣言 局所,数値 { &WIDGETm電卓計算結果 }/* 変数受け渡しパラメータ */
変数宣言 局所,数値 { &WIDGETmSendVal } /* 変数受け渡しパラメータ */
変数宣言 局所,文字列{ &WIDGETmSendOperator }/* 変数受け渡しパラメータ */
変数宣言 局所,文字列{ &WIDGETmカレンダFieldList, &WIDGETmTriggerKey }
変数宣言 局所,文字列{ &WIDGETmカレンダ結果 }/* 変数受け渡しパラメータ */
変数宣言 局所,日時 { &WIDGETmSendDate } /* 変数受け渡しパラメータ */
&WIDGETmTriggerKey = "End" /* 指定例 "Shift + End" "Ctrl + End"
など。カレンダをポップアップするキー操作(トリガー)※注意:表示モードでは動作しません */
end
*---------- end Widget_電卓・カレンダ 名札 メイン ---------------*
:
:
*
■スタートアップ
Widget_電卓 のスタートアップは、WIDGETprc電卓Startup( ) で行う。
WIDGETprc電卓Startup( )は、編集対象表の項目を調査するので、[フォーム開始]イベントハンドラ以降であればどのタイミングでもよい。
※つまり、編集対象表が開いていない[名札 メイン]では実行できない。
以下は、[開始時実行コマンド]に指定したコマンドオブジェクト:cmdStartup から実行した例である。
―[開始時実行コマンド]の例
手続き定義開始 cmdStartupClick( )
:
:
*---------- begin Widget_電卓・カレンダ -----------------*
条件 ( #変数( "WIDGETmLive" ) ) 手続き実行 WIDGETprc電卓カレンダStartup( )
*---------- end Widget_電卓・カレンダ -----------------*
:
:
手続き定義終了
―APPENDIX **********
********** **********
■文字列型のフィールドでカレンダーのポップアップを設定する
[Widget_電卓・カレンダ]は、次のようにスタートアップします。
手続き定義開始 cmdStartupClick( )
変数宣言 自動,文字列{ &icon, &title = "cmdStartupClick( )", &msg }
*---------- begin Widget_電卓・カレンダ -----------------*
条件 ( #変数( "WIDGETmLive" ) ) 手続き実行 WIDGETprc電卓カレンダStartup( )
*---------- end Widget_電卓・カレンダ -----------------*
*----- begin 幅を狭くしてフォームスクロールバーが現れ難くする -----*
:
:
*----- end 幅を狭くしてフォームスクロールバーが現れ難くする -----*
手続き定義終了
WIDGETprc電卓カレンダStartup によって、電卓とカレンダーがポップアップする対象のオブジェクトが自動的に探索されて、
(例)&WIDGETm電卓項目FieldList … "txtField_4,txtField_5" ※ソースが基本項目の数値系テキストオブジェクト
(例)&WIDGETmカレンダFieldList … "txtField_1" ※ソースが基本項目の日時型テキストオブジェクト
↑の例のように、半角コンマで区切ったフィールドのリストが生成されます。
◇ ◇ ◇ ◇ ◇ ◇
しかし、文字列型のデータで日付を管理している場合もあります。
その場合には、次のようにして &WIDGETmカレンダFieldList にオブジェクト名を追加して、WIDGETprcFieldPopupEval
を実行します。
―オブジェクト名:txtField_8 を追加する例
&WIDGETmカレンダFieldList = &WIDGETmカレンダFieldList + ",txtField_8" /* 半角コンマ +
オブジェクト名 */
手続き実行 WIDGETprcFieldPopupEval( &EZWmFocusField, &WIDGETmControlEventType )
※WIDGETprcFieldPopupEval を実行するのは、キーダウンイベントを再セットするためです。
―設定例
手続き定義開始 cmdStartupClick( )
変数宣言 自動,文字列{ &icon, &title = "cmdStartupClick( )", &msg }
*---------- begin Widget_電卓・カレンダ -----------------*
条件 ( #変数( "WIDGETmLive" ) ) 手続き実行 WIDGETprc電卓カレンダStartup( )
*---------- end Widget_電卓・カレンダ -----------------*
** ↓の例は txtField_8 をカレンダーがポップアップする対象に追加する
*---------- begin &WIDGETmカレンダFieldList にオブジェクト名を追加 -----------------*
&WIDGETmカレンダFieldList = &WIDGETmカレンダFieldList + ",txtField_8" /* 半角コンマ +
オブジェクト名 */
手続き実行 WIDGETprcFieldPopupEval( &EZWmFocusField, &WIDGETmControlEventType ) /*
キーダウンイベントを再セット */
*---------- end &WIDGETmカレンダFieldList にオブジェクト名を追加 -----------------*
*----- begin 幅を狭くしてフォームスクロールバーが現れ難くする -----*
:
:
*----- end 幅を狭くしてフォームスクロールバーが現れ難くする -----*
手続き定義終了
■[キーダウン]イベントの継続
[キーダウン]イベントをオフにしたくない場合には、継続フラグをオンにします。
*---------- begin Widget_電卓・カレンダ 名札 メイン ---------------*
** Widget:ウィジェット パソコンのデスクトップやWebページなどで動作する小さなアプリケーションのこと
変数宣言 局所,整数 { &WIDGETmLive = 1 }
if ( #変数( "WIDGETmLive" ) )
:
:
:
end
*---------- end Widget_電卓・カレンダ 名札 メイン ---------------*
&WIDGETmKeyDownContinue = 1 /* [キーダウン]イベントを継続 */
&WIDGETmSystemKeyDownContinue = 1 /* [システムキーダウン]イベントを継続 */
以上