過去の桐井戸端BBS (桐ver.8)
2315 フォーム表示切替 ふぇる 1999/8/2-00:28
桐8についてご質問したいのですが、ちょっとできるかなぁ?とは思ってますが。

実は、今仕事の関係で桐8でシステムを構築しています。

A.TBL=A’WFM(メインフォーム)
B.TBL=B’WFM(サブフォーム)
C.TBL=C’WFM(サブフォーム)
という構成になっています。

今、A’+B’のメイン&サブフォーム表示しているときに、ボタンオブジェクト
を押すとA’+C’に切り替わるイベントか一括処理を動かしたいのです。
そして画面切り替えを行う時には、A’,B’,C’に共通的にもっている項目
Xに現在表示されている値をキーにして表示を完了したいのです。
なにか、いい方法があれば、お教えください。
2317 Re: 悲しげ 1999/8/2-15:44
記事番号2315へのコメント
どもっ、ふぇるさん、
2種類のメイン/サブフォーム(A+B組とA+C組)の表示切り換え
ということですね。これはv7.1で試したことがありますが、大体
次のような感じでやっていました。この場合は表を「多重化」さ
せて使っています。そして、押されたボタンによってウィンドウ
会話で使うwfmを変えています。
※ 下の例では表とwfmの対応関係は次のようになっています。
  A.TBL+B.TBL用のメインwfm名はa.wfm
  A.TBL+C.TBL用のメインwfm名はb.wfm
 (投稿用に書き換えた際にファイル名がずれたかも?)

TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
*-----------------
名札 なんとか
*-----------------
表 "A",表番号=6,索引名="なんとか"
表 "B",表番号=7,索引名="かんとか"
表 "C",表番号=18,索引名="ふんにゃら",使用フォーム="b"
ウィンドウ作成 フォーム,位置=(0,0),ハンドル=&whb,オプション=非表示
 /*非表示にするとオーバーラップが使えないけど*/
多重化 使用フォーム="a",表番号=8
並べ替え 索引名="ふんにゃら"
ウィンドウ作成 フォーム,位置=(0,0),ハンドル=&wha,カーソル位置=&カーソル位置
ウィンドウ位置 表示,&whb
&WFM="a",&カーソル位置="ほにゅ"
繰り返し
 条件(&WFM="a")\
  ウィンドウ会話 &wha,初期項目=&カーソル位置,終了状態=&終了,ボタン=&YM
 条件(&WFM="b")\
  ウィンドウ会話 &whb,初期項目=&カーソル位置,終了状態=&終了,ボタン=&YM
 ケース開始
 ケース(&YM="B終了")
  確認 "××を終了します。",&確認
  条件(&確認=1) 繰り返し中止
 ケース(&WFM="b" .and &YM="Ba")
  行番号 &行番号
  &WFM="a",&カーソル位置="ほにゃ"
  条件(#IS表<>8) 編集表 8
  ジャンプ 行番号=&行番号
  行表示 &カーソル位置
 ケース(&WFM="a" .and &YM="Bb")
  行番号 &行番号
  &WFM="b",&カーソル位置="へにょ"
  条件(#IS表<>18) 編集表 18
  ジャンプ 行番号=&行番号
  行表示 &カーソル位置
 ケース(&YM="Dn")
  条件(.not #EOF) ジャンプ 行番号=+1
 ケース(&YM="Up")
  行番号 &行番号
  条件(&行番号>1) ジャンプ 行番号=-1
 ケース(・・・・・)
  ・・・・・・・・・
 ケース終了
繰り返し終了
ウィンドウ終了 &wha
ウィンドウ終了 &whb
終了 表 8,18
手続き終了
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL

以上はイベントを使っていない「古典一括」方式です。
v8でのイベントを使ったやり方は、遠からず試してみようと思
ってはおりますが、現時点では暫くは未着手です。ただ、イベ
ントハンドラは「フォームから呼び出してフォームに戻る」仕
様であるため、戻るべきフォームの切り換えについては、よく
よく検討する必要がありそうな予感はしています。
2319 Re: アックン 1999/8/2-18:32
記事番号2315へのコメント
ふぇるさん、こんばんは。
複数のサブフォームをコマンドボタンで切り替えたいときは、
メインフォームAのコマンドボタンに、マウス左クリックイベントを
次のように記述します。

名札 メイン
 var 整数 {&hwin[3],&画面表示},文字列{&obj[3]}
 &hwin[1]=&hwindow,&obj[1]="item",&obj[2]="plu",&obj[3]="入荷"

proc フォーム切替ボタン::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番
号,長整数 &フラグ,参照 長整数 &処理中止)
  object ハンドル = &hwin[1] ,&obj[2]{&画面表示 = 画面表示}
  if (&画面表示)
    object &obj[2]{画面表示 = 0}
    object &obj[3]{画面表示 = 1}
  else
    object &obj[3]{画面表示 = 0}
    object &obj[2]{画面表示 = 1}
  end
end

なんか変数がごちゃごちゃしてわかりにくいですが。(苦笑)
サブフォームB・Cどちらか1個の、オブジェクトの属性→表示(タブ)→
「画面表示する」のチェックをはずしておきます。
B・Cは、重ねていてもいなくてもかまいません。
なお、ABC共に項目Xをグループ項目に設定しておきます。

  幅田さん、悲しげさん、久しぶりにぶらり寄ってみました。
                            (=^・^=)アックン
2320 Re: アックン 1999/8/2-18:39
記事番号2319へのコメント
すいません、ここはこうですね。(笑;)

誤) &hwin[1]=&hwindow,&obj[1]="item",&obj[2]="plu",&obj[3]="入荷"

正) &hwin[1]=&hwindow,&obj[1]="A",&obj[2]="B",&obj[3]="C"
2322 Re: 悲しげ 1999/8/2-20:49
記事番号2319へのコメント
どもっ、アックン、

そうか、ひとつのメインフォームの上で、サブフォームオブジェクト
だけを「オブジェクト操作」で変更すればよかったんですね。
と云う訳で、ふぇるさん、こちらの方法の方が遥かに簡単です。(^^)v
2323 Re: アックン 1999/8/3-10:46
記事番号2320へのコメント
>正) &hwin[1]=&hwindow,&obj[1]="A",&obj[2]="B",&obj[3]="C"

 説明不足なのでもう一度出てきました。(^^;
 &objはファイル名でなくて、オブジェクト名を代入します。
2330 Re: いかすぱげてぃ 1999/8/3-20:35
記事番号2319へのコメント
アックンに一票!(^^)V
ようするに、メインフォーム上に必要とする枚数のサブフォームを重ねて
設定しておいて、必要なサブフォームのみ「画面表示」をオン、その他は
「オフ」にしておいてやれば、良い訳です。切り替えも早いし…

切り替えのトリガーとなるボタンを押した時に、その他不要なボタンを
「使用不可」にするとか、サブフォームと同様に非表示にするとかして…

頑張ってください。

ps.つい、書いてしまった。(^^;>アックン、悲しげ大明神
2354 Re: 前田 1999/8/5-21:24
記事番号2330へのコメント
>ようするに、メインフォーム上に必要とする枚数のサブフォームを重ねて
>設定しておいて、必要なサブフォームのみ「画面表示」をオン、その他は
>「オフ」にしておいてやれば、良い訳です。切り替えも早いし…
>
>切り替えのトリガーとなるボタンを押した時に、その他不要なボタンを
>「使用不可」にするとか、サブフォームと同様に非表示にするとかして…
大賛成です。
その場合、ボタンと一緒に矩形を配置しサブフォームの背景、メインフォームの背景とを同調
させるとあたかもインデックスを操作したような使い勝手ができます「一部参照あり」、
この方法だと社員名簿の住所欄、雇用条件、給与データと別々に設定・参照でき非常に便利です。
追加まで
2388 フォーム切替、ご回答感謝! ふぇる 1999/8/11-16:05

フォーム切り替えの質問したところ、大勢の皆様に回答していただき感謝感激
です。
アックン、すごいですね。私には想像もつきませんでした。
これからも、どうかよろしくお願いいたします。

戻る