Spec_Memo_ModernUI.txt  ModernUI 仕様書メモ by ONnoji                  Rev.0 2020.09.18 Spec_Memo_ModernUI.txt                  Rev.1 2023.01.08 Spec_Memo_ModernUI.txt  この文書はINF_Framework(以降 INF_FW と表記する)の機能:ModernUI に関する仕様メモです。  ■ModernUI とは(概要)  機能名:ModernUI( モダンユーアイ )は、フラットなUIであるモダンUIの意味です。  機能:ModernUI は、桐10s で新しくサポートされたフラットなUIと従来からの立体のUIを相互に変更するユーティリティです。     ※桐10s 以前の桐では利用できません。  ■INF_FW 3.4 セットアップ ※INF_FW 3.4 は INF_FW 3.3 MkII と同じです。  ― すべて( モダン(オート)INF_FW と クラシックINF_FW と NULL INF_FW )で自動的にセットアップされます。  ※桐10s 以前の桐ではセットアップされません。  ― ファミリ:famModernUI が必要です。  ※ファミリは作るだけでOKです。  ※ファミリ:famModernUI がない場合には、マウスポインタがコマンドボタンの上をホバーした時に色が変わりません。  ※注意:入力支援ボタンには[マウスインアウト]イベントが無いので、マウスポインタがホバーしても色は変わりません。  ■UI(フラット⇔立体)変換対象のオブジェクト  ― 対象から除外されるオブジェクト  ※透明なオブジェクトは対象外です。  ※オブジェクト名に "_nop_all" を含んでいるオブジェクトは対象外です。  ― テキストボックスとグループ項目  ※境界線モードが"囲み罫線"で、なおかつ[ソース]属性の値が編集可能なもののみ対象です。  ※表形式および伝票形式のフォーム明細部を除きます。  ※共通   背景モード:指定色 背景色:白  ※フラット 上罫線の色:チャコールグレイ, 下罫線の色:チャコールグレイ, 左罫線の色:チャコールグレイ, 右罫線の色:チャコールグレイ  ※立体   上罫線の色:黒,   下罫線の色:白, 左罫線の色:黒, 右罫線の色:白  ― 入力支援ボタン  ※オブジェクト名が 親オブジェクト名+"入力支援ボタン" または 親オブジェクト名+"入力支援ボタン" のオブジェクトのみが対象です。  ※立体色モード:フラット ⇔ Windowsの立体色  ― INF_FW が提供しているテキストボックスを利用した疑似コマンドボタン  ※テキストボックスを利用したスピンボタン( famSpinButton )  の疑似コマンドボタン  ※テキストボックスを利用したリピートボタン( famRecordUpDown )の疑似コマンドボタン  ※テキストボックスを利用した &objectName = "UTLLOCKtxtFieldLockNum" 列固定項目数を設定する疑似コマンドボタン  ※テキストボックスを利用した &objectName = "UTLJMPtxtFieldName" 指定項目へジャンプする疑似コマンドボタン  ― コマンドボタン  ※オブジェクト名に "_nop_color" を含んでいるコマンドボタンの背景色は変更しません。  ※ファミリ:famCap に所属しているコマンドボタンは除外します。  ※オブジェクト名:"UTLCMDcmd改行キー方向" のコマンドボタンは除外します。  ※ファミリが割り当てられていないコマンドボタンには、自動的にファミリ:famModernUI が割り当てられます。  ※立体色モード:フラット ⇔ Windowsの立体色  ― チェックボックス・オプションボタン・プッシュボタン  ※立体色モード:フラット ⇔ Windowsの立体色  ― リストボックス  ※罫線モード:実線 ⇔ 罫線モード:くぼみ  ■[マウスインアウト]イベントハンドラを拡張する  ― 自動的にファミリ:famModernUI が割り当てられないコマンドボタンの場合には次のように famModernUI::マウスインアウト を呼び出してください。  ― すでに[マウスインアウト]イベントハンドラを使用しているコマンドボタンの場合には次のように famModernUI::マウスインアウト を呼び出してください。  ※ファミリが割り当てられていないコマンドボタンには、自動的にファミリ:famModernUI が割り当てられますが、  ※すでに、ファミリが割り当てられているオブジェクトには割り当てられません。  手続き定義開始 オブジェクト名::マウスインアウト(長整数 &フラグ,長整数 &明細番号)   if ( #変数( "UImConvertLive" ) .and ( #変数( "UImModernUse" ) .or ( 1 + #配列要素数( "TMPVARmModernUse" ) ) ) .and #変数( "UImIsfamModernUI" ) )    &UImThis = &this    手続き実行 famModernUI::マウスインアウト( &フラグ,1 )   end  手続き定義終了  ― [マウスインアウト]イベントのチェック印がオンにもかかわらず、対応するイベントハンドラが作られていない場合には、[マウスインアウト]イベントのチェック印がオフにしてください。  ※対応するイベントハンドラが作られていない場合には何も実行されませんが、ファミリ:famModernUI の[マウスインアウト]イベントも実行されません。  ■マウスポインタがイン(ホバー)した時のコマンドボタンの縁取りに関して  フォームヘッダ部 … lblFlatButtonBorder_1  フォーム明細部  … lblFlatButtonBorder_2  フォームフッタ部 … lblFlatButtonBorder_3  これらのラベルオブジェクトの罫線の色は"青色"で、[画面表示]属性が"しない"になっています。  なお、罫線の太さは"細線"のままにしてください。  "細線"以外を選択すると見苦しくなります。  また、あまり意味がありませんが、罫線は"実線"を"破線"などに変更可能です。  lblFlatButtonBorder_1〜3 のオブジェクトは、不要ならば削除してもOKです。  また、ワークスペースに移動させてもOKです。  これらのオブジェクトはマウスポインタがコマンドボタンの上に居る時(イン・ホバー)だけ重なって表示されます。  従って、コマンドボタンを覆い隠さないように[オブジェクトのリスト]でコマンドボタンの後面(背面)になるように配置してください。  **---------- ---------------**   :   :   ***---------- begin クラシックUIモード ⇔ モダンUIモード 名札 メイン ---------------*   if ( #バージョン番号 => 10.1 ) /* 桐10s 以降 */    変数宣言 局所,整数 { &UImConvertLive = 1 } /* クラシックUIモード ⇔ モダンUIモードを有効にする Yes:1 No:0 */    条件 ( #変数( "UImConvertLive" ) ) 変数宣言 局所,整数 { &UImModernUse = 0 } /* モダンUIモードで変換:1 クラシックUIモードで変換:0 */    **条件 ( #変数( "UImConvertLive" ) ) 変数宣言 局所,文字列{ &UImHoverColorName = "RGB(229,243,255)" } /* 薄い色"RGB(229,243,255)" 濃い色"RGB(204,232,255)" */    **条件 ( #変数( "UImConvertLive" ) ) 変数宣言 局所,文字列{ &UImHoverColorName = "RGB(180,216,238)" } /* 2022.01.20 */    条件 ( #変数( "UImConvertLive" ) ) 変数宣言 局所,文字列{ &UImBackgroundColorMode, &UImBackgroundColorName, &UImThis }    条件 ( #変数( "UImConvertLive" ) ) 変数宣言 局所,整数 { &UImColorButtonUse = 1 }             /* コマンドボタンの色を指定する Yes:1 No:0 */    条件 ( #変数( "UImConvertLive" ) ) 変数宣言 局所,文字列{ &UImModernColorNameButton = "RGB(225,225,225)" } /* モダンUIの時のボタンの色 "RGB(225,225,225)" */    条件 ( #変数( "UImConvertLive" ) ) 変数宣言 局所,整数 { &UImClassicColorButtonNum = 2 }          /* クラシックUIの時のボタンの色 ボタンの表面色:1 継承:2 */    条件 ( #変数( "UImConvertLive" ) ) 変数宣言 局所,整数 { &UImIsfamModernUI }          /* ファミリ:famModernUI が存在するか否か */    条件 ( #変数( "UImConvertLive" ) ) 変数宣言 局所,文字列{ &UImFlatButtonBorderObjectName } /* lblFlatButtonBorder_1, _2, _3 */    条件 ( #変数( "UImConvertLive" ) ) 変数宣言 局所,文字列{ &UImHoverColorName = "RGB(229,243,255)" } /* 2022.12.21 薄い色"RGB(229,243,255)" */   end   ***---------- end クラシックUIモード ⇔ モダンUIモード 名札 メイン ---------------*   :   :  **---------- ---------------** (ご注意)  マウスポインタがイン(ホバー)した時のコマンドボタンの縁取りは、正確には背面(後面)に重ねて配置したラベルオブジェクト(lblFlatButtonBorder_1〜3)の囲み罫線です。  つまり、見せかけ、フェイクです。  フェイクなので「馬脚をあらわす」こともあります。  それはフォームの表示倍率を変更することによって顕著になりますが、  背面(後面)に重ねて配置したラベルオブジェクトの囲み罫線が見えなくなることがあります。  また、ラベルオブジェクトの囲み罫線とコマンドボタンの隙間が目立つこともあります。  なお、ラベルオブジェクトの[罫線の太さ]は"細線"が一番目立ちにくい設定です。  以上