INF_Framework は ONnoji さん作成のフリーのライブラリです。
フォームに便利な機能を追加してくれます。

ここでは INF_Framework が適用されたフォームの便利機能を、
できるだけ簡単に利用できるように解説していきたいと思っています(?、頑張ります)。

ここで使用する ライブラリ は所定のサイト からダウンロードしてください。
※ INF_Framework 第3.3版 Rev.249 for 桐10 / 桐10s を使用しています。


DoubleClick(ダブルクリック)


すべてのINF_Framework 共通 (注)

  (注)モダンINF_Framework、クラシックINF_Framework、NULL INF_Framework
   ※ オブジェクトの種類や設定によっては機能しません。

マウスクリックイベントハンドラ(プロシージャ )を作成します。
プロシージャ には INFprcDoubleClickEval ( 処理対象のオブジェクト名:通常は &this でOK ,” 実行する内容 ” ) と記述します。
ある意味、これだけです (^^♪

※ テクニカルマニュアルとして 桐の釣魚大全 → フォームアプリケーション教書 第1部 の マウス左クリック、ダブルクリック を参照してください。

-----------------------------

1. 基本設定

名札メイン で 行挿入 と 行訂正 を禁止しておきます。

(0)
名札    メイン
 
 変数宣言 局所, 文字列 { &objectName }
 &objectName = "フォーム"
 オブジェクト操作 &objectName{ 行挿入 = 0, 行訂正 = 0 }

 

---------------------

2. まずは どのようになるか簡単な動作確認をしてみましょう。

” ふりがな が ” 入力されている部分をクリックすると 、”確認” が表示されるようにしてみます。

(1)
手続き定義開始 txtField_2::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
 手続き実行 INFprcDoubleClickEval( &this, "確認" )
手続き定義終了

 

といった具合ですね (^^♪

 

※※※-----------------------------※※※

3. それでは、もう一歩踏み込んでみましょう。

3-1. [名前] をダブルクリックして お名前で絞り込んでみます。

(2)
”コマンド” を使った 例
 
手続き定義開始 txtField_1::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
 変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) }   /* &WQ の値は半角二重引用符 ( " ) となります。 */
 変数宣言 自動,文字列{ &STRbak }
 
 &STRbak = &STR
 &STR = &WQ + [名前] + &WQ
 手続き実行 INFprcDoubleClickEval( &this, "絞り込み [名前]_&STR" )  /* "実行する内容"に 自動変数は使用できません  */
 &STR = &STRbak
手続き定義終了

 

(3)
”一般手続き” を使った 例
 
手続き定義開始 txtField_1::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
 変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) }   /* &WQ の値は半角二重引用符 ( " ) となります。 */
 変数宣言 自動,文字列{ &STRbak }
 変数宣言 自動,文字列{ &項目名 = "名前" }
 &STRbak = &STR
 &STR = &項目名 + "," + #項目属性( #項目番号( &項目名 ), 0 )
 手続き実行 INFprcDoubleClickEval( &this, "手続き実行 prc絞り込み( &STR )" )  /* "実行する内容"に 自動変数は使用できません */
 &STR = &STRbak
手続き定義終了
 
手続き定義開始 prc絞り込み( 文字列 &項目名と項目値 )
 変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) }   /* &WQ の値は半角二重引用符 ( " ) となります。 */
 変数宣言 自動,文字列{ &項目名 , &項目値 }
 
 &項目名 = #対応文字列 ( &項目名と項目値 , 1 ) 
 &項目値 = #対応文字列 ( &項目名と項目値 , 2 ) 
 
 &項目値 = &WQ + &項目値 + &WQ
 絞り込み &項目名 _ &項目値
手続き定義終了

 

3-2. 年齢で絞り込んでみました(ここでは 58歳)。

 

(4)
”コマンド” を使った 例
手続き定義開始 txtField_5::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
 変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) }   /* &WQ の値は半角二重引用符 ( " ) となります。 */
 変数宣言 自動,文字列{ &STRbak }
 
 &STRbak = &STR
 &STR = #文字列([年齢])
 手続き実行 INFprcDoubleClickEval( &this, "絞り込み [年齢]_&STR" )  /* "実行する内容"に 自動変数は使用できません */
 &STR = &STRbak
手続き定義終了

---------------

3-3. 次は ”一般手続き” を使って ”項目値” が ”数値と文字列の両方” で利用できるようにしてみます。

    まず 名札 メイン に 変数  &m項目名 , &m項目値 , &mControl を追加しておきます。

(5)
名札    メイン
 
 変数宣言 局所, 文字列 { &objectName }
 &objectName = "フォーム"
 オブジェクト操作 &objectName{ 行挿入 = 0, 行訂正 = 0 }
 
 変数宣言 局所,文字列{ &m項目名 , &m項目値 }
 変数宣言 局所,整数 { &mControl }

 

(6)
項目値が文字列の場合の例
 
手続き定義開始 txtField_1::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
 変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) }   /* &WQ の値は半角二重引用符 ( " ) となります。 */
 変数宣言 自動,文字列{ &macro }
 
 &mControl = 1       /* 数値:0 , 文字列:1 */
 &m項目名 = "名前"
 
 &m項目値 = #項目属性( #項目番号( &m項目名 ), 0 )
 &macro = "手続き実行 prc絞り込み( &m項目名 , &m項目値 , &mControl )"   /* "実行する内容"に 自動変数は使用できません */
 手続き実行 INFprcDoubleClickEval( &this, &macro )
手続き定義終了


(7)
項目値が数値の場合の例
 
手続き定義開始 txtField_5::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
 変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) }   /* &WQ の値は半角二重引用符 ( " ) となります。 */
 変数宣言 自動,文字列{ &macro }
 
 &mControl = 0       /* 数値:0 , 文字列:1 */
 &m項目名 = "年齢"
 
 &m項目値 = #文字列 ( #項目属性( #項目番号( &m項目名 ), 0 ) )
 &macro = "手続き実行 prc絞り込み( &m項目名 , &m項目値 , &mControl )"   /* "実行する内容"に 自動変数は使用できません */
 手続き実行 INFprcDoubleClickEval( &this, &macro )
手続き定義終了

 

(8)
一般手続きの例
 
手続き定義開始 prc絞り込み( 文字列 &項目名 , 文字列 &項目値 , 整数 &control )
 変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) }   /* &WQ の値は半角二重引用符 ( " ) となります。 */
 変数宣言 自動,文字列{ &表現式 }
 
 if ( &control = 1 )                               /* 数値:0 , 文字列:1 */
  &表現式 = &WQ + &項目値 + &WQ
 else
  &表現式  = &項目値
 end  
 
 絞り込み &項目名 _ &表現式
手続き定義終了

 

※※※-----------------------------※※※

 

4. 編集モードにする

ダブルクリックを使う場合、
何も設定していないフォームを開いて項目値をクリックすると 編集モード になってしまい、ダブルクリックできません。

そこで、名札 メインで オブジェクト操作 &objectName{ 行挿入 = 0, 行訂正 = 0 } とすることで
編集モードに遷移しないようにしています。

ということで、ダブルクリックと編集モードを両立する方法がいくつか考えられます。

以下に(例)を記載してみました。

----------------------------

4-1. コマンドボタンを使う方法

 

----------------------------

4-2. VK_Framework を使用した例 (VK_Framework は、INF_Framework 第3.2版 の IPS_Framework に統合されています。)

※フォーム起動時に  VK_Framework を使って、スペースキーを押したら項目訂正モードに遷移するように設定しておく。
 (フォーム起動時に設定しているので フォームの既存値になります)。

 
手続き定義開始 cmdStartupClick( )
 
 手続き実行 VKprcEventKeyDownON( )
 手続き実行 VKprcKeyON( )
 手続き実行 VKprcKeySet( "スペース", 1, "0", "メソッド呼び出し @フォーム.更新モード設定( 8 )" )
 
手続き定義終了

 

----------------------------

4-3. 行セレクタ などのデータリンクがない項目に設定する。

※フォームの1項目しか指定できなくなります。

   設定しない ⇒ 名札 メイン での オブジェクト操作 &objectName{ 行挿入 = 0, 行訂正 = 0 }  は設定しません。

 
手続き定義開始 行セレクタ::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
 変数宣言 自動,文字列{ &WQ = #jis( #hex("22") ) }   /* &WQ の値は半角二重引用符 ( " ) となります。 */
 変数宣言 自動,文字列{ &STRbak }
 
 &STRbak = &STR
 &STR = &WQ + [名前] + &WQ
 手続き実行 INFprcDoubleClickEval( &this, "絞り込み [名前]_&STR" )  /* "実行する内容"には 自動変数は使用できません  */
 &STR = &STRbak
手続き定義終了

 


覚書)