◎ 例題−8 表引きデータを、サブフォームで表示

この作品は、bonito さんのご紹介です

[例題−8」 作成のポイント


◎ 今回の機能を実現させる為に
  フォーム作成時に、サブフォームを表示させるスペースを確保しておく
  表引き対象項目に使用される表を、フォーム形式・同サイズで事前に作成。(例では2個作成)

◎ マウスイベントは、
   対象項目はそれぞれに設定。それ以外は家族(ファッミリー)で設定してあります。
   (好みもあると思いますので、いろいろお試し下さい。)

◎ イベント処理で、サブフォームを切り替え表示しています。

  例:オブジェクト操作 @科目フォーム.画面表示=0,@摘要フォーム.画面表示=1
    また  他にもサブフォームの値を変数で処理する方法もあります。

◎ もちろん表形式編集中でも表引きはできます。

このページは【多遊】が勝手に作成致しました。ご本人の意とそぐわないところがあるかも知れませんがご容赦下さい

 

[例題−8」 フォームの紹介


メインフォーム

・例題では、サブフォームは右側においてありますが、画面いっぱいのフォームでは、入力する項目のそばでも結構です
(多少イベント変更が必要です。フォーカス喪失・入力後等で対応下さい)

・現在、マウス左クリックでのデータ取得になってますが、カーソル移動とエンターキーでの入力を改造希望中!

 

サブフォーム

表引きされる方のフォーム属性は、今回はメニューや拡大・縮小等は全部非表示にしてあります

サブフォームを複数作成される場合は、罫線・背景・フォント等を統一した方がきれいでしょう

このサブフォームにもイベントを設定してあります。(イベントで紹介します)

 

[例題−8」 イベントの紹介


今回のイベントファイルは、メインとサブフォームから両方から使用してます


手続き定義の説明

>手続き定義開始 t科目::フォーカス取得(文字列 &喪失オブジェクト名)
>手続き定義開始 t摘要::フォーカス取得(文字列 &喪失オブジェクト名)
サブホーム表示対象項目(オブジェクト)になったとき、そのサブフォームを表示します

>手続き定義開始 直接入力家族::フォーカス取得(文字列 &喪失オブジェクト名)
逆にそれ以外のオブジェクトをファミリー登録しておき、表示されているサブフォームを
非表示にします。もし、通常表示したい内容(案内)がありましたら、ここで再表示するとかの
使用もいいですね


以下、対象項目の処理です(各行にコメントがありますので参照下さい)


手続き定義開始 科目サブ::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
*  ジャンプ 行番号=&明細番号           /*---この場合は必要ないのでコメントアウト---*/
  &STR=[科目名],&処理中止=1             /*---変数に値を代入 以後の処理を中止-------*/
  編集表 "emi01"                   /*---編集表を戻す---------------------------*/
  条件 (#終端行=0) 行訂正 [科目]=&STR             /*---表示モードなので項目値代入は×---------*/
  &STR=""                       /*---変数を初期化---------------------------*/
  条件 ([科目]="") メソッド呼び出し ハンドル=&hwindow,@t科目.フォーカス設定()
  条件 ([科目]<>"") メソッド呼び出し ハンドル=&hwindow,@t摘要.フォーカス設定()
  条件 (#終端行=0) メソッド呼び出し ハンドル=&hwindow,@フォーム.更新モード設定(2)
手続き定義終了

手続き定義開始 t科目::入力後(参照 文字列 &編集文字列,長整数 &モード,参照 長整数 &入力継続)
  if (#IS数字(&編集文字列,0)=1)                /*---番号でも入力できるようにしてみた(^^;----*/
    編集表 "kamoku"                /*---でも先頭が数字でないと駄目とした--------*/
    検索 [科目番号]=#数値(&編集文字列)
    &STR=[科目名]
    条件 (&STR<>"") &編集文字列=&STR
    &STR=""
  end    
手続き定義終了


この中で、「手続き定義開始 科目サブ」が、サブフォームから利用されてるイベントです。

    説明に使用いたしましたファイル、ダウンロードコーナにUPしてあります

 bonito さんありがとうございました