一覧表wfmの列固定もどき(改訂第2版) 以前、一覧表(伝票)フォームにおける「列固定もどき」を作った ことがあります(No.058)。「列固定」とは云っても、各項目がス クロールする訳ではなく、どちらかと云うと「頁めくり」だった訳 ですが、それはさておいて、その手法たるや、多重サブフォームを 駆使したものでしたから、作るのもやや面倒なことに加えて、多重 化表の管理にホトホト閉口してしまい、その後、作者自ら実務には 使っていませんでした(^^;)。実務では、一覧表(伝票)フォームの 1レコードを複数行で表示させて使っていました(これも使いにく いですけどね)。 過日、宮田さんが全く別な発想(即ちひとつのフォーム上で、スク ロールするオブジェクトの「ソース」自体を変更して行く方法)で もって、列固定式の一覧表フォームを発表されました。で、当初は 全幅固定だったものを、私の要望に応えていただいて、No.131では 表示幅も変更できるものにグレードアップして下さいました。とこ ろが、人間の欲望は果てしないもので(^^;)、今度は横表示位置(左 右寄せ、中央揃え)とかにも対応させてみたいと思いました。で、 この辺り自分で書き換えようとして、処理の中味を解析・改ざんさ せていただこうと思ったのですが、う〜ん、結局はサジを投げてし まいました。(^^;) ただ、その過程で、私も幾つか閃いたものがありまして、よりシン プルにするためには「スクロールを諦めて頁めくり方式でもいいか も」とか、多重化サブフォームを使ったために泥沼に陥ったのだか ら「なぁ〜んだ、ひとつのフォームでもできそうじゃん」とか云う ことで、次のような方法に行き着きました。 と云う訳でですね、まずはフォーム"Jusho.wfm"を「定義」で開い て、チラリとその中味を見てから、そのまま「編集」に入って下さ い。「あれっ?」と思う筈です(^^)v。この仕掛けは、wfmとkevを よ〜く見ていただくと判ると思いますが、一応言葉で説明しておき ます。 1レコードを複数行で表示させるようなオブジェクト配置、これを 殆どそのまま利用します。で、1行目相当の左端を固定する形とす るのですが、一行目(これを「一面目」と仮称)のオブジェクトの 属性はそのままとした上で、2行目相当(二面目)以降の各オブジ ェクトについて画面表示をオフとしておきます。ヘッダ部、明細部 ともにです。 フォーム定義時に各オブジェクトを重ねておかないのは、配置の修 正作業を楽にするためです。見えた方が断然作業しやすいですから。 これらを重ねるのは、kevの「名札 メイン」イベントにおいてです (「フォーム開始」イベントでもよい)。「オブジェクト操作」コ マンドで、2行目以降のヘッダ部・明細部の各オブジェクトの始点Y を1行目のそれと同じにし、且つフォームヘッダ部とフォーム明細 部の「セクションの高さ」を1行の場合並みに縮めます。 あとは「キーダウン」イベント中、左右の矢印キー押下時のフォー カスオブジェクト名によって、各面を切り替えていきます。例えば、 1面目の右端オブジェクトにフォーカスがあって[→]キーが押され た時は、1面目の各オブジェクトの画面表示をオフに、2面目の各 オブジェクトの画面表示をオンにした上で、フォーカスを2面目の 左端オブジェクトにおく……、こんな感じです。 要するに、各面の画面表示のオン・オフなのです。このオン・オフ は手続き実行で呼び出せば、記述はかなり簡素にできます。 と云う訳で、宮田さんの作品に比べると「スクロール」ならぬ「頁 めくり」なのでかなりダサダサですけど(^^;)、kevの記述やメンテ が随分と簡単と云う点で無意味でも無さそうですから、前作No.058 の改訂版として上げさせていただく次第です。                      2002/12/14 悲しげ