-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・     桐v8 横スクロール見本  悲しげさん作 2000/5/19      以下 「列固定.txt」より -・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・-・ 一覧表wfmでの列固定モドキを試作してみました。 使い方は、"Jusho0.wfm"から開きます。横スクロールすると、[氏名]列 のみが固定されているはずです。ただし、この挙動は正しくは「横スク ロール」と云うよりは、どちらかと云うと「横頁切り換え」ですけどね。 がっかりしたかな?(^^;) え〜、ご承知のとおり、桐ver8の一覧表(伝票)wfmでは列固定ができま せん。この点も辛いところではありますが、実はもう1点、多項目表の 一覧表wfmを作ろうとした方はお気づきかと思います、一覧表wfmで設定 できる項目は確か19までしかない(ですよね?)ことも辛いです。 この2点ともに対応するために、今回は次のような方法を用いました。 要するにメイン&サブフォームとして、複数の一覧表wfmをサブとして重 ねて配置し、その内1枚のサブフォームのみを随時画面表示(他のサブ フォームを画面非表示)すると云うものです。 1.サブフォームの作成 表の項目は[い][ろ][は]〜[え][ひ][も][せ][す]まで有ったとします。 この時列固定する項目を[い]とすると、   sub1用のwfm  [い][ろ][は][に][ほ]   sub2用のwfm  [い][へ][と][ち][り]    ・・・・・・・・・・・・・   sub8用のwfm  [い][ひ][も][せ][す] のようなサブフォーム用の一覧表wfmを作成します。 留意点は、1)サイズや特に各オブジェクトの高さを同一にしなければ ならないため、sub2以降は、sub1をコピーして作るといい。2)各wfmの フォーム属性/編集表タブ/許可作業釦にて「多重化」にチェックを入 れておく必要がある。3)sub2以降のwfmにおいては列固定する項目[い] のテキストにはフォーカスの設定を「禁止」にしておく。4)なお、本 例ではグループ項目は設定していない。 2.メインフォームの作成 メインフォームはカードです。本例では編集対象表を持たないただのカ ードにしてあります。 このメインフォームにおいて、サブフォームオブジェクトを配置します。 オブジェクト名はsub1、sub2〜sub7としておきます。まず初めにsub1を 設定します。このサイズは、上記一覧表wfmがうまいこと入る大きさにし ます。サブたる一覧表wfmとメインのサブオブジェクトともに、まずsub1 だけをそれぞれ試作して、サイズは試行錯誤してみるといいでしょう。 さて、話をメイン上のサブの設定に戻しまして、まずsub1用のサブフォ ームオブジェクトの設定ができたとします。次にsub2以降ですが、これ はsub1のオブジェクトを指定して、マウス右クリックで「複写」を使う といいでしょう。こうするとsub1の位置に丁度重なってsub1_1なる名の オブジェクトができますから、このオブジェクト名を「sub2」と変更し、 サブフォーム名も先に作成したsub2用の一覧表wfmに設定します。この時、 重要なポイントは、sub2以降では、表示タブの「画面表示する」のチェ ックを外しておくことです。なお、その下にあるグループ関係の設定や 「リンク元サブフォーム」の設定は不要です。 sub3以降も同様に設定します。 これでフォーム側の準備完了です。 3.イベントの定義 次に、イベントの設定ですが、これは簡単に書きます(詳細はkevの記述 をご覧下さい)。 今回はメイン・サブともkevを共用してみました。「フォーカスオブジ ェクト名取得」メソッドで判断できるからです。フォーム側の「イベン ト」タブの設定では、まずメインの方では「フォーム開始」のみにチェ ック。サブの各wfmにおいては、「レコード移動」と「キーダウン」にチ ェックを付けています。 なお、kevの記述は説明省略しますが、要するに、各サブwfmにおいて、 右端項目で[→]キーを押すか、左端項目で[←]キーを押した時に、サブ wfmの画面表示を切り換えています。これを「キーダウン」イベント発生 時に行っています。 あと、表はサブwfmの数だけ多重化オープンされていますから、「フォー ム開始」イベント時に、各多重化表の表番号を取得させています。こう しておかないと、編集表の切り換え指定ができないからですね。 ここまでは定石どおりです。一番悩んだのは、縦スクロールした時の各サ ブwfm間の(画面上での)表示位置をどう連動させるかと云う問題でした。 今回の例では、グループ項目がありませんし、また各サブwfmとも一覧表wfm ですから「リンク元サブフォーム」の設定も使えません。で、若干悩んだ あげく、「レコード移動」イベント発生時に、多重化している全ての編集 表において、同じく移動させておいたら、何て事はなく実現できてしまい ました。(^^)v レコード移動時に、終端行が絡む時のみ挙動が変になることがあります。 が、この辺りは放置してます、[↑]や[Up]でスクロールさせたら直るので。 ただ、最後の点については(かつてDOS桐がそうであったように)、バー ジョンによって挙動が変わってしまう可能性なきにしもあらずです。(^^;) 一番面倒だったのは、1)の各サブwfmの定義です。あ、それと2)での位 置合わせも微細な点で試行錯誤が何度も必要で面倒でした。それに比べると kevの記述は楽でした。 ま、いずれは(v9でそうなるかどうかは判らないのが辛いところですが)、 フォームでの列固定も標準で実現できるようになるとは思いますし、併せ て一覧表wfmの項目数も拡大されるでしょうから(実際そうなって貰わない と困る、非常に困る)、本例はそれまでの短期的なツナギに過ぎないもの であって欲しいものです。この点は強く願っています。                         2000/5/17 悲しげ