過去の桐井戸端BBS (桐ver.9)
25476 ひとつの表を一覧するフォームで項目によって重ねて表示したい ステラ 2004/03/17-15:07
泥沼にはまっています。(ちょっと大げさ?)
n表Aを一覧できるようにフォーム表示して、店舗に係るグループ表示させたり、
解除したり、再抽出したりしたいのですが、項目数が多いことと、項目の記載内容が長いために画面・横長に収まりきりません。
そのため、項目の前半と後半を分けて表示することにして、それぞれフォームをつくり、
それらを切り替えるための親フォームにサブフォームとして乗せました。

フォームの切り替えは、表示のオン、オフでイベント操作してます。

親フォームと各サブフォームは、店舗のIDコードでリンクさせてあります。
当然、共有更新、多重化許可で開いています。

しかし、サブフォームだけのときはグループ操作ができますが、親フォームに2つのサブフォームを乗せたものだと、
最初のグループで表示されたきり、グループの解除、別グループでの再抽出ができない状態です。

グループ操作用のコマンドボタンを親フォームに作ってみましたが、
うまく作動しません。(各サブフォームにも同様のコマンドボタンがありますが、白抜きになってしまって作動しません。)

親フォームも2つのサブフォームも、対象表は同じです。(親フォームにも対象表を
設定しないと、リンクができなかったためです。)

こんなふうに2つに分ける方法は、定石ではないのでしょうか?
環境設定などのように、タブごとに関連項目が一覧できて、
切り替えて画面表示できるのをイメージしたのですが・・・。

一覧表示をしたいけれど、項目の加減で横一覧では表示項目が見にくいことを解消するような
よい方法があれば教えていただきたいです。

入力用のフォームは、すべての項目がひとつのフォーム入れてあります。
そこから開くの一覧フォームです。

ちなみに、No25413、25474のフォームの対象表を切り替えるのに使用しているフォームです。

25486 Re:ひとつの表を一覧するフォームで項目によって重ねて表示する時。 今村 誠 2004/03/17-22:30
記事番号25476へのコメント
ステラさんこんにちは、一つの表をボタン切り替えで
メイン(一覧表あ編集表R)と
サブ1(カードフォームい編集表A)
サブ2(カードフォームう編集表B)
のフォームで表示させているのでしょうか?
>リスト元の表から店舗を選択して(R表とする)
>内容によって同じ項目名を持つ表Aと表Bに切り
>替えて入力されていく
とNo25474に書いてありますが、どちらが本当でしょうか?
同じフォームのことでした別スレッドを立てる必要は
ないと思いますが。
ここがはっきりしないと泥沼になるように思います。
25487 「親フォーム」「サブフォーム」とは? 悲しげ 2004/03/17-22:54
記事番号25476へのコメント
どもっ、ステラさん
実は仰ることが殆ど理解できていないのですが、ひとつだけ確認します。
「親フォーム」や「サブフォーム」と呼んでいますが、これはいわゆる
「メイン&サブフォーム」のことでしょうか?
あるいはそうではなく、独立した「親フォーム」と「子フォーム」なのでしょうか?
例えば「親フォーム」から「子フォーム」を「フォーム呼び出し」(モーダルフォーム)
またはボタンの機能「開く」で表示させているとか?



ちなみに、
「メイン&サブフォーム」におけるサブフォームの画面表示オン・オフは別に難しいことはありません
(但しサブフォームの編集対象表の切り替えは簡単ではなさそう)。
あるいは別フォームの随時の開閉だったら「開く」よりも「モーダルフォーム」
(フォーム呼び出し)の方が初心者向きだと思います。

25490 Re:ひとつの表を一覧するフォームで項目によって重ねて表示する時。 佐田 守弘 2004/03/18-00:50
記事番号25476へのコメント
ステラさん
まず最初に作っているフォームのイメージの確認ですが、私はメイン&サブフォーム型で、
サブフォームを2つ重ねてあり、イベントハンドラで表示非表示を切り替えているのだろうと推定します。
しかし、グループ表示がどの様な形で行っているかのイメージが掴めていません。
メインフォームが単票で、サブフォームが一覧表形式なのでしょうか。

それらはさておき、多重化で開くと何かとうまく行かない事も多いですね。
うまく動かそうとすると、イベントを使ってかなりゴリゴリやらないと難しい様です。
隠れている表は非表示であっても、表示と同じ事をしておく必要があるかと思います。
多数のサブフォームを持つと、非表示であっても負荷がかかる様です。

イメージがはっきりとはつかめないので、直接的な解説ではないのですが、
横長の表を表示する別の考え方を述べておきます。

@2段で表示する
一覧表形式のフォームは、2段形式にも作れます。横2分割程度の表であれば、
2段形式にテキストオブジェクトを配置してもよいのではないでしょうか。

Aオブジェクトのソースを切り替える事で、フォームを切り替えている様に見せる
テキストオブジェクトのソース値は、オブジェクト操作コマンドで切り替えられます。
フォームそのものを表示・非表示で切り替えるのではなくて、ラベルとテキストの
ソース値を変更してしまえば、別のフォームになります。
オブジェクトの横幅や、位置も変更できますし、これらのオブジェクトの表示・非表示の切り替えで、
表示する数を変化させる事も可能です。
結構面倒なイベントを記述する必要がありますが、外観的にはフォームを切り替えている様に
見せる事ができるかと思います。

佐田守弘(KS-00119)
25494 説明追加(説明が悪くて申し訳ありません。) ステラ 2004/03/18-10:34
記事番号25476へのコメント
みなさん、レスありがとうございます。もう一度説明してみます。

佐田さんの理解してくださった形だと思うのですが、

ここでいう親フォームAとは、サブフォーム一覧あ1(編集表あ 項目a-f)
            サブフォーム一覧あ2(編集表あ 項目g-k)
をのせてフォーム間の切り替えをするために存在するフォームです。

編集表あ の項目a-k は、編集表い で共通に使っています。

メインフォームM(編集表M ID項目)のサブフォームとして
    サブフォームカードあ(編集表あ 項目a-k)(コマンドボタンあ 有)
    サブフォームカードい(編集表い 項目a-k)(コマンドボタンい 有)
が入力用フォームとして、フォーム切り替えで、編集表Mの絞込みにより、絞り込まれたID項目にリンクして、
その値が各編集表(あ、い)に入力されます。

入力したレコードはカード形式であるので、以前に入力したIDを一覧するために
    サブフォームカードあ コマンドボタンあ → 親フォームA (編集表あ の一覧)
    サブフォームカードい コマンドボタンい → 親フォームA (編集表い の一覧)

というように親フォームA(サブフォーム一覧あ1+サブフォーム一覧あ2)を項目の同じ編集表あ・い の間で
切り替えて使用したいのです。

サブフォームカードあ コマンドボタンあ で &対象ファイル名=編集表あ
サブフォームカードい コマンドボタンい で &対象ファイル名=編集表い

となるように代入しています。

ここで、親フォームAという形をとらず、編集表あ(項目a-k)の一覧表フォーム(一括一覧)を作成し、
対象表(編集表あ)を空欄にして、
  オブジェクト操作 @フォーム{編集対処表=&対象ファイル名}
とし、動作確認をしたところ、&対象ファイル名はフォーム(一括一覧)に引き継がれ、
その表操作(編集表MのIDグループ抽出状態 ←→グループ解除状態 ←→別IDグループ抽出状態)も可能でした。

しかし、親フォームAという形で、項目を分けたフォーム(一覧あ1、あ2)を使用しようとすると、
&対象ファイル名も引き継がれないし、表操作もできない状態になってしまうのです。

親フォームAという形をとりたいのは、横長の一覧を画面上で見やすくしたいためでした。

25495 Re:説明追加(説明が悪くて申し訳ありません。) 悲しげ 2004/03/18-11:41
記事番号25494へのコメント
ステラさん wrotr

う〜ん、

>入力したレコードはカード形式であるので、以前に入力したIDを一覧するために
>サブフォームカードあ コマンドボタンあ → 親フォームA (編集表あ の一覧)
>サブフォームカードい コマンドボタンい → 親フォームA (編集表い の一覧)

混乱を避けるために、「親フォーム」ではなく「メインフォーム」と云う桐用語を使われた方がいいとは思いますが、(^^;)
ところで、ふたつのサブフォームは「カード」なのですか、それとも「一覧表」?
あるいは、サブフォームが「カード」でメインフォームが「一覧表」と云うことでしょうか?
 メインフォームは「カード」とか?



誤読の可能性大なままコメントを続けますが、サブフォームの編集対象表の変更は
難しいので、私ならあっさりと諦めて、ふたつのサブフォームは(たとえ構成が全く同じだとしても)別なものを使います。
そのフォームを別名でコピーすればよいので、作業としては超簡単です
(ファイル数もたかだかwfmがひとつ増えるだけでしょうし)。
で、再定義で編集対象表のみ変更する。
もちろん、メインフォームからは、それぞれについてサブフォームの設定(サブフォーム名とグループ値リスト)を設定します。
併せて、必要なら両方または片方のサブフォームについて、表示タブで「画面表示する」のチェックを外しておく。
あとは、ボタンの手続き実行等で画面表示のオン・オフを「オブジェクト操作」コマンドで記述すればいいだけだから、
特に難しいこともないような・・・?

あるいは、メイン&サブにしないで、別フォームをフォーム呼び出しする方法もあり得て
(この場合に呼び出すフォームの編集対象表の変更は簡単)、その辺りはお好みによりけりですが、
いずれにせよさほど泥沼ってほどでもないように思います。
泥沼化の一番の原因は、サブフォームの編集対象表を変更しようとしているからではないでしょうか?

以上、完全誤読だったりするかもしれませんが。(^^;)

25496 Re:質問が複数になっているためわかりにくいようです。 ステラ 2004/03/18-13:06
記事番号25495へのコメント
悲しげさん、すみません。
今回の泥沼は、思うに、質問が2つ重なっているためだと思うのです

・T 編集対象表の切り替えのための変数の引継ぎ
・U 横長一覧表フォームを見やすくするために、項目を分けて2つのフォームで全項目を表示するようにしたときに起こる不具合

1段階             
 メインフォームM(対象表M:「カード」で店舗を確認するためのフォーム)
  サブフォームカードあ(対象表あ)  「カード」 &対象ファイル名=編集表あ
  サブフォームカードい(対象表い)  「カード」 &対象ファイル名=編集表い

2段階(1段階のサブフォームカードあ・い から コマンドボタンによって新た開かれる)
 メインフォームA(親フォームAと表現していたもの)
         (フォーム切り替えタブを作るためのフォーム)
  サブフォーム一覧あ1(対象表:&対象ファイル名 項目A-F) 「一覧表(部分)」
  サブフォーム一覧あ2(対象表:&対象ファイル名 項目g-k) 「一覧表(部分)」

ということで、「カード」と「一覧表」はメイン&サブフォームの関係にはありません。
対象表(あ・い)のレコードはMにある店舗についてのものでそれぞれ複数です。

ここで、2段階で使用する一覧表をひとつのフォームとすると&対象ファイル名はうまく引き継ぐことができ、
店舗ごとにグループ抽出ができ、T,Uとも問題がないのですが、横長のフォームで見にくいため、
項目を2分割してメイン&サブフォームを使ったものにすると、T,Uともだめになるのです。

1段階の中のサブフォームの画面切り替えも、2段階の中のサブフォームの画面切り替えも、
悲しげさんのおっしゃるとおり、初心者の私でも作ることができました。

一番の問題は、きっと、2段階の ひとつの対象表の項目を分けてフォームを2つにし、
多重化しているところだと思うのですが・・・

25497 Re:質問が複数になっているためわかりにくいようです。 悲しげ 2004/03/18-14:57
記事番号25496へのコメント
ステラさん wrote

>横長のフォームで見にくいため、項目を2分割して
>メイン&サブフォームを使ったものにすると、

問題の所在がここなのであれば、既に別スレッドでONnojiさんからのコメントにあるように、
一覧表wfmの「列固定もどき」の類を利用できないでしょうか?
【多遊】さんのDLコーナーにある
▼ONnojiさんのNo.145
▼宮田さんのNo.141
▼私の(かなりしょぼいけど簡素な)No.136
とか。

25498 Re:質問が複数になっているためわかりにくいようです。 ONnoji 2004/03/18-16:21
記事番号25497へのコメント

>問題の所在がここなのであれば、既に別スレッドでONnojiさんからのコメント
>にあるように、一覧表wfmの「列固定もどき」の類を利用できないでしょうか?

ステラさん、こんにちは。

悲しげさん、横レス失礼します。

項目が多いから、「列固定もどき」というのも一案ですが、
普段は必要な項目だけ見ていて、
いざというときに他の項目を別のフォームで見るという方法も有効かもしれませんよ。

律儀に全項目を表示しないで、必要なときだけ表示するというやり方です。
実はなかなか便利ですよ。

ちょうど良い過去ログがあります。是非ご参照ください。
いやはや、探すのが大変でしたけれど…(^^ゞ

20997 イベントハンドラ内の記述からフォーム編集を行いたい 2003/06/21-01:32

http://www.fuku3.com/~habata/kbbs/kakov9/20997.htm

なお、この過去ログではなんとサンプルがダウンロードできます。(^^ゞ

<メイン&サブフォーム方式>
21010 Re:イベントからフォームを開きたい
沼田さんこんにちは。いま、〔井戸端補完〕にファイルをアップ致しました

<モーダルフォーム方式>
21050 Re:[多重化]コマンドの例
サンプルaddress2 sub2 をアップしましたので、


25499 ありがとうございます。ひとつのフォームでオブジェクト表示を切り替えてやってみます。 ステラ 2004/03/18-17:37
記事番号25497へのコメント
悲しげさん、どーもです。
ONnojiさん、佐田さん、今村さん、ありがとうございます。

>問題の所在がここなのであれば、既に別スレッドでONnojiさんからのコメント
>にあるように、一覧表wfmの「列固定もどき」の類を利用できないでしょう
か?
>【多遊】さんのDLコーナーにある
>▼ONnojiさんのNo.145
>▼宮田さんのNo.141
>▼私の(かなりしょぼいけど簡素な)No.136
>とか。

とにかくまずベースをと思い、悲しげさんのをみました。
コメントで、多重化サブフォームを使って泥沼・・・という言葉にとっても共感しています。

佐田さんが No.25490で Aの方法として教えてくださったのもこの形のものなのですね。

必要なフォームの表示だけであれば、ONnojiさんの示してくださった過去ログのように
フォームを表示切替すればいいのですが(ここまでは何とかがんばった)、
対象ファイル名の変数引継ぎやグループ抽出など、問題が絡んでいます。
自己検証でフォームがひとつのときはこれらの問題が解決していることから、
オブジェクト表示を切り替える方法で行きたいと思います。

ボタンで必要なときだけ必要な項目の表示に切り替えるつもりです。

アルファベット表示のコマンドに親しみがないので、まず、イベントの解析から取り組んでいますが、
何とかできそうなのでがんばってみます。

ありがとうございました。

戻る