1st_INF_Framework_3_3_改訂版(MkII)_説明書.txt  --------------------------------------------------------------------------------  INF_Framework 第3.3版 改訂版(MkII) for 桐9-2012 / 桐9s / 桐10 / 桐10s / 桐sSL  INF Framework Rev.265:オリジナル  By ONnoji Copyright (C) 2020-2022 【URL】http://silicon7565.html.xdomain.jp/  --------------------------------------------------------------------------------  INF_Framework 第3.3版 改訂版(MkII) for 桐9-2012 / 桐9s / 桐10 / 桐10s / 桐sSL 説明書  2022.04.09                                               2022.07.06 改訂  ― 目次   0 はじめに   1 INF_Framework 第3.3版 改訂版(MkII) とは   2 INF_Framework の特長   3 利用者   4 オートINF_Framework から モダンINF_Framework を複製する   5 INF_Framework が使用するオブジェクト   6 INF_Framework が使用するファミリ   7 [名札 メイン]で使用するユニット(プログラム)   8 手続き:INFprcStartup で使用するユニット(プログラム) ※クラシックINF_Framework と NULL INF_Framework の場合のみ   9 INF_Framework のファイル情報  10 *_info.txt  11 ライブラリファイル  12 一覧表形式フォームを伝票形式のフォームに変更する  13 フォームの属性:ウィンドウのサイズ・垂直位置の調整・水平位置の調整  14 フォームの属性:フォームスクロールバーのオン/オフ・編集時の表示倍率  15 オブジェクト名:フォームの全角/半角を判定する  16 制限事項  ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇  0 はじめに  INF_Framework の "INF"の部分は[アイ・エヌ・エフ]と読んでも、[インフ]と読んでもOKです。  ちなみに作者( ONnoji )は、[インフ・フレームワーク]と読んできます。  元々は、Information の意でしたが、後知恵ですが Infrastructure の意も含みます。  従って、INF拡張子( Setup Information Format )とはまったくの無関係です。  1 INF_Framework 第3.3版 改訂版(MkII) とは  実に長期的なプロジェクトになりました。  ・2001.12 イベント処理の清書ユーティリティ utx_list 1.0  ・2002.01 項目の表示幅を自由に変更する   ez_width   初版(第1.0版)は、上の2つの拙作を源泉として[項目のスクロール・列固定]等の機能を加えたものです。  ・2002.09 INF_Tools      第1.0版 Rev.010  ・2003.12 INF_Tools      第1.1版 Rev.016  ・2008.06 INF_Tools_Framework 第2.1版 Rev.072  ・2018.02 INF_Framework    第3.1版 Rev.211 桐10に対応  ・2019.06 INF_Framework    第3.2版 Rev.227 フォームの背景色を変更可  ・2020.11 INF_Framework    第3.3版 Rev.249 桐10s のフラットUI(モダンUI)に対応  そして、この度INF_Framework 第3.3版 改訂版(MkII)を公開することになりました。  第2.1版 から第3.1版までの約10年の長い間、第2.1版 のままであったのは、  当方の開発環境が Windows XP + 桐ver.8sp6 → Windows 7 + 桐9-2012 と大きく変化しなかったからですが、  第2.1版 では、約10年に渡り改訂作業(Rev.)を続けていました。  第3.1版 では桐10に対応しました。  第3.2版 ではフォームの背景色を自由に変更出来るようにしました。  第3.3版 では、桐10s のフラットUI(モダンUI)に対応しました。  今回の 第3.3版 改訂版(MkII)では、   ・フラットUI(モダンUI)の改良(MNU_Frameworkを含む)   ・[表示条件の登録]   ダイアログの追加   ・[編集対象表の許可作業]ダイアログの追加   ・オートINF_Framework のカード形式バージョンである[INF_カード]の追加   ・ランチャー補助( INF_LNC.wfx/.wfm )の廃止   ・レコードのチェックボックスの改良   ・第3.3版 リリース後に気が付いた虫の fix  を行いました。  2 INF_Framework の特長  INF_Framework はフレームワークなので、フォームが開いた時点でセットアップが完了しています。  設定上の問題点がなければ、サイレントにフォームが開きます。  INF_Framework は以下に示すように、オート モダン クラシック NULL の4タイプに分類されています。  オートはモダンと同じ内容ですが、フォームの編集対象表の指定が空欄になっている点だけが異なります。       フォームの属性   イベント処理ファイル       参照表 編集対象表 INFprcStartup( )  オート   〇   空欄    ×    モダン   〇   〇     ×  クラシック 〇   〇     〇  NULL    空欄  空欄   任意(〇×どちらでも良い)  ― モダンINF_Framework と オートINF_Framework と INF_カードは、プログラミング不要で次の機能を提供します。  ・表編集の並び順で項目を表示します (最大100項目まで)  ・列固定できます (最大9項目まで)        ※記憶します INF_カードを除く  ・項目名をクリックすると並べ替えできます           INF_カードを除く  ・項目名をドラッグすると項目の幅を変更できます ※記憶します  ・行の高さを変更できます             ※記憶します INF_カードを除く  ・フォームの倍率を50%〜400%の範囲で変更 ※記憶します  ・訂正時等に自動的に項目値を範囲選択できます  ・表の表示条件を読み込めます                 INF_カードを除く  ・表示する項目を選択できます                 INF_カードを除く  ・表の[項目の表示条件]をフォームで再現できます  ― クラシックINF_Frameworkは、簡単なプログラミングで次の機能を提供します。  ・任意に表示項目を指定できます(ob)(pr)  ・列固定できます  ・項目名をクリックすると並べ替えできます  ・項目名をドラッグすると項目の幅を変更できます ※記憶します  ・行の高さを変更できます             ※記憶します  ・フォームの倍率を50%〜400%の範囲で変更できます(5%単位)※記憶します  ・訂正時等に自動的に項目値を範囲選択できます  ・表の[項目の表示条件]をフォームで再現できます(pr)   ※INFprcStartup( )または[開始時実行]コマンドボタンで、手続き:INFprcTblFieldRestore( )を実行します。  ※(pr)はイベント処理に手続きの作成が必要  ※(ob)はフォーム上にオブジェクトの作成が必要  ― NULL INF_Framework は、次の機能を提供します。  ・フォームの倍率を50%〜400%の範囲で変更できます(5%単位)※記憶します  ― 共通機能 プログラミング不要で次の機能を提供します。※無効化できます  ・フォームの表示位置を記憶します   ・フォームのサイズを記憶します    ・フォームの倍表示率を記憶します   ・フォームの背景色を指定できます   ― 共通機能 簡単なプログラミングで次の機能を提供します。  イベント処理に手続きの作成することで  ・フォームで使用する任意の局所変数の名前とその値の保存と読み込みができます  ・ダブルクリック機能が利用できます  ・キーダウンイベントを簡単に利用できます  ・アイテム表示(ポップアップメニュー)が利用できます  ・ウィンドウ一覧(ポップアップメニュー)が利用できます  ・INF_Framework が導入されている他のフォームと局所変数の受け渡しができます  ・ランチャー(ローンチャー)機能が利用できます  フォーム上にオブジェクトを作成することで  ・コマンドボタンのリピート機能が利用できます  ・スピンボタンが自作できます  ― 拡張 簡単なプログラミングで次の機能を提供します。  ・メニューバーが作成できます        ※MNU Framework を導入する必要があります  ・シームレスな電卓・カレンダが利用できます ※フォーム上に[開始時実行]コマンドボタンの作成を推奨  3 利用者  ― モダンINF_Framework と オートINF_Framework と INF_カード  モダンINF_Framework と オートINF_Framework と INF_カードは、プログラミング不要で利用可能です。  プログラミング不要ですので、アプリケーション開発時のプロトタイピングツールとしても利用できます。  特にオートINF_Framework を利用する場合には、編集対象表が登録できるランチャー:toy_laouncher3.wfx/.wfm との併用を推奨します。  次の利用者に最適です。  ・桐の初級者  ・桐の上級者  ・アプリケーション開発者  ― クラシックINF_Framework と NULL INF_Framework  クラシックINF_Framework と NULL INF_Framework では、簡単なプログラミングが必要です。  次の利用者に最適です。  ・桐の上級者  ・アプリケーション開発者  4 オートINF_Framework から モダンINF_Framework を複製する    4.1 フォームの複写   複写元:FW_オートINF_Framework_MkII.wfx → 複写先:任意のフォーム名.wfx   ※ファイルの複写方法はご自身が慣れた方法で行ってください。  4.2 編集対象表の変更   フォームを(再)定義で開き、フォームの属性の[編集対象表]の表ファイル名を変更して、[閉じる]でフォームを保存します。  4.3 イベントファイルの変更   まず、複写元:FW_オートINF_Framework_MkII.kex → 複写先:任意のフォーム名.kex で複写します。   ※ファイルの複写方法はご自身が慣れた方法で行ってください。   次に、フォームを(再)定義で開き、フォームの属性の[イベントファイル名]のイベントファイル名を変更して、[閉じる]でフォームを保存します。  5 INF_Framework が使用するオブジェクト  5.1 フォームヘッダ部のオブジェクトの一覧  ― 1段めのオブジェクト 次のオブジェクトはワークスペースへ移動、または削除できます。  EZWcmdズームイン, EZWcmdズームアウト, EZWtxtMagnification, INFcmdWhoAreYou, HDLVARcmdWhoAreYou  EZWcmd行高, EZWcmd行低, ONEcmd説明, UTLLOCKtxtFieldLockNum, UTLJMPtxtFieldName  UTLJMPcmdFieldTopShift, UTLJMPtxtFieldLeftShift_cmdFieldLeftShift, UTLJMPtxtFieldRightShift_cmdFieldRightShift, UTLJMPcmdFieldBottomShift  UTLSKIPtxtRecordUpFor_cmdRecordUp, UTLSKIPtxtRecordDownFor_cmdRecordDown  UTLSORTcmd解除, txt絞り込み状態, FSClblPaletteColorName, FSCtxtPaletteColorName  ― 2段めのオブジェクト 次のオブジェクトはワークスペースへ移動、または削除できます。  UTLcmd一覧表印刷, UTLcmdレポート印刷, UTLcmd検索比較式, UTLcmd次を検索, UTLcmd前を検索  UTLcmd切り取り, UTLcmdコピー, UTLcmd貼り付け, UTLcmd元に戻す  UTLcmd絞り込み比較式, UTLcmd絞り込み条件名, UTLcmd絞り込み同一値, UTLcmd絞り込み補集合, UTLcmd絞り込み単一化, UTLcmd絞り込み行数  UTLcmd並べ替え条件名, UTLcmd項目置換, UTLcmd置換条件名, UTLcmd上書き保存, UTLcmd表編集へ  UTLSORTcmd処理対象行保持, UTLSORTcmdピクチャ表示するしない, UTLFLDcmd項目の文字列選択, ONEcmd重ねて表示, ONEcmdUI変換  ― 3段めのオブジェクト 次のオブジェクトはワークスペースへ移動、または削除できます。  EZWcmdスタック, ONEcmd表示条件アイテム表示, IPSAPIcmd表示する項目を選択, ONEcmd表示条件アイテム登録, ONEcmd表示条件アイテム削除, EDPRMScmd編集対象表の許可作業  ・第3.3版 と新版(MkII)は、ヘッダ部のボタンが次のように異なります。              改訂によって、このボタンは新版(MkII)では存在しません(ONEcmd項目表示幅の調整アイテム表示)                     ↓  第3.3版   [表示条件の読み込み][項目表示幅の調整][表示する項目を選択]            ↑                    ↑           同 じ       ┌────同 じ────┘            ↓        ↓         New!       New!       New!  新版(MkII) [表示条件の読み込み][表示する項目を選択][表示条件の登録][表示条件の削除][許可作業]     ― 4段めのオブジェクト 項目名のオブジェクト:cmdCaption_1 〜 cmdCaption_100 は絶対に削除しないでください(クラシックINF_Framework と NULL INF_Framework を除く)。  UTLCMDcmd改行キー方向, cmdCaption_1 〜 cmdCaption_100, S_1, M_1  ※cmdCaption_1 〜 cmdCaption_100 は、cmdCaption_25 以降は重なって配置されていますので見かけ上25個に見えます。  ※ドラッグ時のハンドル:S_1 は オブジェクトのリストの cmdCaption_100 の次の位置にします。  ※ドラッグ時のマーカー:M_1 は オブジェクトのリストの S_1 の次の位置にします。  ※S_1 と M_1 のオブジェクトのリストの位置が正しく設定されていないとマウスドラッグで項目の幅を変更できません。  5.2 フォーム明細部のオブジェクトの一覧  ― 明細行 項目名のオブジェクト:txtField_1 〜 txtField_100 は絶対に削除しないでください(クラシックINF_Framework と NULL INF_Framework を除く)。  行セレクタ, txtField_1 〜 txtField_100, M_2  ※txtField_1 〜 txtField_100 は、txtField_25 以降は重なって配置されていますので見かけ上25個に見えます。  ※ドラッグ時のマーカー:M_2 は オブジェクトのリストの txtField_100 の次の位置にします。  ※M_2 のオブジェクトのリストの位置が正しく設定されていないとマウスドラッグで項目の幅を変更するときに目印(縦線)が正しく表示されません。  5.3 フォームフッタ部のオブジェクトの一覧  ― アクセスキーのためにオブジェクト 次のオブジェクトはワークスペースへ移動、または削除できます。※注意 Alt + I 等のアクセスキーが使えなくなります。  cmdAlt_I_ズームイン, cmdAlt_O_ズームアウト, EZWcmdLinesPerBodyDown, EZWcmdLinesPerBodyUp  5.4 ワークスペースのオブジェクトの一覧  ― 予約済みのオブジェクトリスト 次のオブジェクトはフレームワークが使用するので絶対に削除しないでください。  S_2, S_3, M_3, INFtxtCommon, INFcmdCommon, cmdRecordDown, cmdRecordUp, cmdFieldLeftShift, cmdFieldRightShift  ― 未使用のオブジェクトリスト 次のオブジェクトは未使用なので削除できます。  以下のオブジェクトは、第3.3版 のFW_オートINF_Framework_MkII.wfx に存在しましたが、改訂版(MkII)のFW_オートINF_Framework_MkII.wfxでは存在しません  cmdStartup, ONEcmd項目の編集属性式, lbl最大値, txt最大値, txtSpinUpFor_txt最大値, txtSpinDownFor_txt最大値  ※cmdStartup は[電卓とカレンダのスタートアップ]で利用している場合があります。(例) V9_モダン_現金出納帳.wfm/.wfx  6 INF_Framework が使用するファミリ  ― ファミリオブジェクトの一覧 次のオブジェクトは INF_Framework が使用するので削除しないでください。  famFLD, famCAP, famEZW, famRecordUpDown, famSpinButton, famModernUI  ※famModernUI は、INF_Framework 第3.3版 で追加されたファミリで、桐10s のモダンUI(フラットUI)の場合に利用します。  ※famModernUI が存在しなくても、エラーメッセージや警告メッセージは表示されません。  ※famModernUI は、モダンUI(フラットUI)の時に、コマンドボタンと疑似コマンドボタンのマウスホバー時のイベントで使用しています。    ― ファミリが存在しない場合には、ファミリパレットで作成してください。  ※ファミリ は作成するだけでOKです。  7 [名札 メイン]で使用するユニット(プログラム)  ― 次の範囲は[名札 メイン]で使用するユニット(プログラム)です。  **---------- ---------------**     :     :     :  **---------- ---------------**  第3.2版・第3.3版等の旧版を、第3.3版 改訂版(MkII)に更新する場合にはユニット(プログラム)を差し替えてください。  [名札 メイン]で使用するユニット(プログラム)は、ユニットINF_3-3MkII_名札メイン.txt として提供しています。  ※[名札 メイン]で使用するプログラムの誤りを防ぐためにユニット交換式を採用しています。  8 手続き:INFprcStartup で使用するユニット(プログラム) ※クラシックINF_Framework と NULL INF_Framework の場合のみ  ― クラシックINF_Framework では、イベント処理(.kex/.kev)に手続き:INFprcStartup が必要になります。  第3.2版等の旧版(第3.3版を除く)を、第3.3版 改訂版(MkII)に更新する場合にはユニット(プログラム)を差し替えた後に適宜修正してください。  ※第3.3版と第3.3版 改訂版(MkII) の手続き:INFprcStartup は同一です  手続き:INFprcStartup で使用するユニット(プログラム)は、ユニットINF_3-3MkII_INFprcStartup.txt として提供しています。  ※手続き名の重複を防ぐために NewINFprcStartup( ) としています。使用時には New を削除して INFprcStartup( )としてください。  ※手続き:INFprcStartup で使用するプログラムの誤りを防ぐためにユニット交換式を採用しています。  ― NULL INF_Framework では、イベント処理(.kex/.kev)に手続き:INFprcStartup が無くても構いません。  9 INF_Framework のファイル情報  ― 文字の色が黒の[?]情報ボタンを実行すると、次の内容の INF_Framework のファイル情報が表示されます。  INF Framework のファイル情報     スタイル名 :  ハンドル : nn   NULL INF_Framework / モダンINF_Framework / クラシックINF_Framework (※編集対象表の多重化が許可されています)  フォーム :ファイル名  更新日時 :yyyy-mm-dd hh:mm:ss  イベント :ファイル名  更新日時 :yyyy-mm-dd hh:mm:ss  ライブラリ:ファイル名  更新日時 :yyyy-mm-dd hh:mm:ss  ライブラリ:ファイル名  更新日時 :yyyy-mm-dd hh:mm:ss  編集対象表:ファイル名 / NULL フォームです  バックアップ:あり / なし  *_info  :ファイル名  *_infoのパスの文字数: nn 文字 ※(注)参照  ※(注) Windows では、単一パスは最大 260 文字までに制限されています  アイテム選択 : found ( INF_MNU.wfx/.wfm ) / not found  パスは d:\path  #バージョン番号: 桐のバージョン  #OSVER:     Windowsのバージョン  開始時実行コマンドボタン オブジェクト名( found / not found )  ESCキー実行コマンドボタン  オブジェクト名( found / not found )  終了時実行コマンドボタン オブジェクト名( found / not found )  (注)INF Framework Rev.265 では ランチャー補助( INF_LNC.wfx/.wfm )を使用しませんのでその情報は表示されません  10 *_info.txt  ― INF_Framework では、さまざまな情報(局所変数)をフォーム終了時にテキストファイルに保存して、フォーム開始時に読み込みます。  ・オートINF_Framework / モダンINF_Framework / クラシックINF_Framework / INF_カード では、*_info.txt はフォームの編集対象表と同じフォルダに作成されます。  ・NULL INF_Framework では、*_info.txt はフォームと同じフォルダに作成されます。  ※単純なテキストファイルなので、メモ帳などで開いて見ることが出来ます。  ― *_info.txt の内容をクリアしたい場合には、フォームを閉じている時に、該当する *_info.txt を削除してください。  11 ライブラリファイル  ― INF_Framework では、2つのライブラリファイルでフレームワークを構築しています。  ・ INF_Framework.cmx/.cmd  ・ IPS_Framework.cmx/.cmd  ※拙作は改造自由なフリーソフトとして公開していますが、第三者による改造は非常に困難ですのでブラックボックスでお使いください。  ※拙作は実用性と保守性を主眼に開発しているので、初級者のプログラミング学習の参考には適していません。  12 一覧表形式フォームを伝票形式のフォームに変更する  ― フォーム明細部の属性も変更します。  フォームの形式を、一覧表形式 → 伝票形式 に変更した場合には、フォーム明細部の属性を次のように変更します。  属性\形式: 一覧表形式  伝票形式  高さ   :    15pt    180pt ← これは 15pt × 12 = 180pt です  繰り返し数:     12     12  ※フォーム明細部の高さを大きくすると、ワークスペースに配置されているオブジェクトがフォームヘッダ部に重なることがあります。  ※その場合には重なったオブジェクトをワークスペースへ移動させてください。  ― グループ項目のソースの項目を明細部から除外するには、局所変数:整数 / &ONEmGroupObjectSeek を宣言します。  次のように、[名札 メイン]で使用するユニット(プログラム)の外側で変数を宣言します。  **---------- ---------------**     :     :     :  **---------- ---------------**  変数宣言 局所,整数 { &ONEmGroupObjectSeek = 1 } /* グループ項目のソースの項目を明細部から除外する */  ※[名札 メイン]で使用するユニット(プログラム)内にコメント行がありますのでコピー&ペーストできます。  ※これは将来、[名札 メイン]で使用するユニット(プログラム)を交換する可能性があるのでその対策です。  ※モダンINF_Framework と オートINF_Framework で有効です。  ※クラシックINF_Framework では、フォーム明細部で表示する表示項目は任意に指定できます。  13 フォームの属性:ウィンドウのサイズ・垂直位置の調整・水平位置の調整  ― ウィンドウのサイズ を復元する場合には、ウィンドウのサイズを自動にします。  ― ウィンドウの位置を復元するには、垂直位置の調整と水平位置の調整を自動にします。  属性    \形式: 一覧表形式      伝票形式     カード形式  ウィンドウのサイズ:    自動  フォームのサイズ  フォームのサイズ  垂直位置の調整  :    自動        自動        自動  水平位置の調整  :    自動        自動        自動  <ご注意>  桐sfor SmartLicense の[リボン]モードでは、[ウィンドウの形式]が "チャイルド" のフォームは[タブ付きウィンドウ]で表示されます。  フォームの属性:ウィンドウのサイズ・垂直位置の調整・水平位置の調整を有効にする場合には、[メニュー]モードに変更してください。  または、[ウィンドウの形式]を "チャイルド" から "ポップアップ" へ変更してください。  14 フォームの属性:フォームスクロールバーのオン/オフ・編集時の表示倍率  ― カード形式のフォームではフォームスクロールバーをオフにします。  ※フォームスクロールバーをオフにすると、フォームの倍率を変更した時に倍率に応じてフォームの大きさが変わります。  ※虫眼鏡アイコンの[(+)]または Alt + I 、[(-)]ボタン または Alt + O で倍率を変更できます。  ※アクセスキーを使うには、コマンドボタン:cmdAlt_I_ズームイン, cmdAlt_O_ズームアウト が必要です。  属性      \形式: 一覧表形式  伝票形式  カード形式  フォームスクロールバー:     ON     ON      OFF  編集時の表示倍率   :    標準    標準     標準  <ご注意>  桐sfor SmartLicense の[リボン]モードでは、[ウィンドウの形式]が "チャイルド" のフォームは[タブ付きウィンドウ]で表示されます。  フォームの倍率を変更した時に倍率に応じてフォームの大きさが変わるようするには、[メニュー]モードに変更してください。  または、[ウィンドウの形式]を "チャイルド" から "ポップアップ" へ変更してください。  15 オブジェクト名:フォームの全角/半角を判定する   次のように簡単に判定できます。   変数宣言 自動,文字列{ &formObjectName = #半角( "フォーム" ) }   条件 ( #変数( "INFmKnjForm" ) ) &formObjectName = #全角( &formObjectName )   メソッド呼び出し &formObjectName.変数変更()   <解説>   ・INF_Frameworkの局所変数:&INFmKnjForm は、桐9-2012/桐9s では、変数自体が宣言されていません。   ・桐10 / 桐10s / 桐sfor SmartLicense では、局所変数:&INFmKnjFormが宣言されます。   ・桐コンバータで変換したフォームでは、変数の値は未定義値です。   ⇒ フォーム   半角   ・最初から桐10s等 で作成したフォームでは、変数の値はイチ(1) です。⇒ フォーム 全角  16 制限事項  ― すべての INF_Framework( オート モダン クラシック NULL の4タイプ)と INF_カード は「サブフォーム」として利用できません。  ※サブフォームとして開くと、INF_Framework は実行が中断されて導入されません。  ― オートINF_Framework と モダンINF_Framewor では[書き出し:表の枠組み]に条件名「作業用forIPS_form」を登録します。  ※条件名「作業用forIPS_form」は削除しても再び作成されます。  ※表( .tbx)がダーティになるのは作成された時だけで、一度作成されると以降はダーティになりません。  ― 辞書順でソートすると、表( .tbx)がダーティになります。  以上