過去の桐井戸端BBS (桐ver.9)
24899 イベントで絞り込み後にフォームを表示したい 手塚 修 2004/02/17-16:12
一つの表を基に二つのフォームを作りました。
一覧表形式のフォーム(A)とカード形式のフォーム(B)です。
メインフォーム(テーブルなし)より(A)を開き一行のみを選択すると
(B)が表示されデータの訂正ができる。
訂正後又(A)に戻る。
上記のようイベントを作りたいのですが、一行のみの選択までしかできません。
過去ログの18540以下を参考に下記の様にためしてみましたが上手くいきませんでした。

名札 メイン
変数宣言 共通,文字列{&レ}

手続き定義開始 行セレクタ::マウス左クリック(長整数 中間略 &処理中止)
 ケース開始
  ケース ([レ]=#未定義)
    行訂正 [レ]="1"
  ケース その他
    行訂正 [レ]=#未定義
 ケース終了
手続き定義終了
   ***上記は過去ログ18560をまねしました 上手くできました
手続き定義開始 t日付::マウス左クリック(長整数 中間略 &処理中止)
 代入 &レ="1"
    行訂正 [レ]=&レ
 絞り込み [レ]="1"
*フォーム呼び出し 経費入力
*使用フォーム=経費入力
*多重化 使用フォーム=経費入力
*多重化 フォーム編集=経費入力
*手続き実行 経費入力画面
手続き定義終了

*印をためしてみましたがどれも不可。
どのようにしたらBフォームを表示できるのか?教えてください。

よろしくおねがいいたします。


24900 Re:イベントで絞り込み後にフォームを表示したい 宮城 2004/02/17-16:28
記事番号24899へのコメント
手塚 修さん、こんにちは。

>*フォーム呼び出し 経費入力
>*使用フォーム=経費入力
>*多重化 使用フォーム=経費入力
>*多重化 フォーム編集=経費入力
>*手続き実行 経費入力画面

「*」はコメントアウト記号ですけど、そこはいいですよね?
同じフォルダにあるとして、"経費入力.frm"としてもだめですか。

24904 Re:イベントで絞り込み後にフォームを表示したい 手塚 修 2004/02/17-17:31
記事番号24900へのコメント
宮城さん 連絡ありがとうございます。

>
>「*」はコメントアウト記号ですけど、そこはいいですよね?
>同じフォルダにあるとして、"経費入力.frm"としてもだめですか。
>
 だめみたいです。

一回でカード型のフォーム(B)を表示しようとする考え方に問題があるのでしょうか?
(A)にコマンドボタン(フォーム表示)を配置して、一行選択した後にコマンドボタンをクリック、
(B)を表示するという方法を考えるべきなのでしょうか?

考え方、方法、イベントの書き方についても教えていただければ幸いです。

よろしくお願いいたします。

24907 Re:イベントで絞り込み後にフォームを表示したい 宮城 2004/02/17-18:52
記事番号24904へのコメント
> 手続き定義開始 t日付::マウス左クリック(長整数 中間略 &処理中止)
>  代入 &レ="1"
>     行訂正 [レ]=&レ
>  絞り込み [レ]="1"
> *フォーム呼び出し 経費入力
> *使用フォーム=経費入力
> *多重化 使用フォーム=経費入力
> *多重化 フォーム編集=経費入力
> *手続き実行 経費入力画面
> 手続き定義終了

表はひとつ、フォームふたつなんですね。私はこんな感じに書いてますが。

編集表 (編集対照表の名前を拡張子まで書きダブルコーテーションで囲む)
多重化
フォーム呼び出し (フォームの名前 同様),編集表=する

24912 Re:イベントで絞り込み後にフォームを表示したい 佐田 守弘 2004/02/17-22:36
記事番号24899へのコメント
手塚 修さん
一覧表形式(A)でレコードを指定したら、そのレコードについてカード形式(B)で詳細項目を表示して
編集したいというのが主旨ですね。
いろいろな方法があるかと思いますが、私でしたら次の様にします。

@フォーム(A)で、(B)に切り替える操作が行われたら、その時のレコードの固有値を変数に代入する。
・切り替える操作
例えばコマンドボタンをクリックで選ぶとか、単にEnterキーの押下をキーダウン
イベントで拾うなど、いろいろな方法があります。今使っている方法で構いません。
・レコードの固有値
ID番号の様なレコードを特定できる項目値を変数に代入します。
そして、この段階では絞り込みは行わなくても構いません。

Aフォーム切り替えを使ってフォーム(B)に切り替える。
フォームの切り替えは、コマンドボタンの機能名[表示:フォームの選択]を使います。
ボタンを作っておいてメソッド呼び出しで実行します。

B切り替えたフォーム(b)
フォーム開始イベントを使って、変数に代入しておいたレコードの固有値で絞り込みを行います。
絞り込みでなく、検索コマンドで対象行を編集対象行にしても良いかも知れません。

C元のフォーム(A)に戻る
同じくフォームの切り替え(機能名のフォームの選択)で元のフォームに戻ります。

佐田守弘(KS-00119)
24919 オーバラップフォーム? 尾形 2004/02/18-09:58
記事番号24899へのコメント
どうも、こんにちは
オーバラップフォームは使われてますか?
これを使っていると少し厄介です

24925 Re:イベントで絞り込み後にフォームを表示したい 手塚 修 2004/02/18-15:37
記事番号24912へのコメント
>一覧表形式(A)でレコードを指定したら、そのレコードについてカード形式(B)で詳細
>項目を表示して編集したいというのが主旨ですね。
   まさにこのとうりです。

>フォームの切り替えは、コマンドボタンの機能名[表示:フォームの選択]を使い
>ます。ボタンを作っておいてメソッド呼び出しで実行します。

一覧表形式(A)にコマンドボタン(フォーム切替1) 機能名(フォーム選択)
   パラメータ("経費入力.wfm")でてすと。
一覧表形式(A)にコマンドボタン(フォーム切替2) 機能名(手続き実行)
   パラメータ(フォーム切替)
  イベントに手続き定義開始 フォーム切替()
       メソッド呼び出し @フォーム.フォーム選択("経費入力.tbl")
       手続き定義終了  でてすと。
一覧表形式(A)にコマンドボタン(フォーム切替3) 機能名1(絞り込み比較式)
   パラメータ1([レ]≠#u) 機能名2(多重化フォーム編集)
   パラメータ2("経費入力.wfm") でてすと。
一覧表形式(A)からスタートすると3例ともにカード形式(B)が表示されましたが、
メインフォームよりスタートすると全てがエラーになってしまいました。
フォーム切替1はボタンが表示されない、フォーム切替2はメソッドが実行できません、
フォーム切替3は表はすでに使用されています。との表示。

どのようにしたら良いのか教えてください。

尾形さん オーバーラップフォーム?ウインドウの形式のことでしょうか?
チャイルドになっていました。

よろしくお願いいたします。


24933 Re:イベントで絞り込み後にフォームを表示したい 佐田 守弘 2004/02/18-23:56
記事番号24925へのコメント
手塚 修さん
>一覧表形式(A)からスタートすると3例ともにカード形式(B)が表示されましたが、メインフ
>ォームよりスタートすると全てがエラーになってしまいました。

メインフォームからというのは、初めて出て来た話ですが。
(フォームAがメインフォームだと理解していた)
このメインフォームに編集対象表を設定しているという事はありませんか?

佐田守弘(KS-00119)
24938 Re:イベントで絞り込み後にフォームを表示したい 手塚 修 2004/02/19-07:40
記事番号24933へのコメント
佐田 守弘さん お世話になります。

>このメインフォームに編集対象表を設定しているという事はありませんか?

設定しておりません。
メインフォーム(テーブルなし)より(A)を開き一行のみを選択すると
(B)が表示されデータの訂正ができる。訂正後又(A)に戻る、です。
上記は、一括処理の中で、一つの部分としてイベントを使ってみようとしたものです。

基本は一括処理をベースにしております。
/* メニュー・ウィンドウの作成 */
ウィンドウ作成 "メイン.wfm",位置 = ( 50,50 ),ハンドル = &メインメニュー
です。

てすとをしました3例 機能名(フォーム選択)は、 [ウィンドウ会話]コマンドと[フォーム呼び出し]コマンドを実行したときは、
「開く」と「フォームの選択」の機能を割り当てているコマンドボタンが、
つねに使用禁止になります。とヘルプにありましたが、このためでしょうか?
機能名(多重化 フォーム編集)も上記と同じ為でしょうか?
メソッド呼び出しはメインフォームに対してのみ有効のためでしょうか?

考え方・方法に問題がありそうですが、どのようにすればよいのか教えていただけませんでしょうか。

よろしくお願いいたします。
24944 Re:イベントで絞り込み後にフォームを表示したい 今村 誠 2004/02/19-10:05
記事番号24899へのコメント
横レス失礼します。
手塚 修さんこんにちは、メニューフォームを一括から呼び出して
閉じるのボタンを押したときの一括の名札の処理で"a.tbl"の編集表で"a.wfm"を呼び出す記述があると思いますが、
どのようにお書きでしょうか。

表 "a.tbl"
ウィンドウ作成  "a.wfm",オプション = 最大化,編集表 =する
フォーム形式編集………………1
*ウィンド会話 ………………2

表 "a.tbl"
フォーム呼び出し "a.wfm",許可作業=*,編集表 = する………2

1の場合は、一括処理から一覧表形式フォーム「a.wfm」を開いて、
「一括起動時有効」にチェックの入ったコマンドボタンで「b.wfm」
へのフォーム選択は可能です。
この場合絞り込まれた状態で切り替わります。

2の場合は、コマンドボタンに
機能名 モーダルフォーム  パラメータ "b.wfm"
にするか、イベントの場合 フォーム呼び出し "b.wfm"で
カード型のフォームを呼び出すといいと思います。
呼び出すフォームのオブジェクトの属性の「編集対象表」タブの
「許可作業」の多重化にチェックが必要だと思います。
この場合、多重化された編集表は、絞り込みされていないので。
一覧表で、特定できるコードや名前などを変数に保存して、
開始時実行ボタンやタイマーイベントで絞り込んだり検索必要がある
と思います。

3新しいフォームを作成して編集する場合。
 http://mokuchan.hp.infoseek.co.jp/download/dl-list1.htm
の92n
「左右連動フォーム3態」のサンプルの1番などをよく使用します。
24949 Re:イベントで絞り込み後にフォームを表示したい 手塚 修 2004/02/19-11:37
記事番号24944へのコメント
今村 誠さん お世話になります。

>閉じるのボタンを押したときの一括の名札の処理で"a.tbl"の編集表
>で"a.wfm"を呼び出す記述があると思いますが、どのようにお書き
>でしょうか。

ウィンドウ作成 "メイン.wfm",ハンドル = &メインメニュー
繰り返し
ウィンドウ会話 &メインメニュー,ボタン = &ボタン
条件 ( &ボタン = "終了" ) 繰り返し中止
ケース開始
ケース ( &ボタン = "経費訂正" )
    表 "経費入力.tbl",モード = 専有,使用フォーム = "経費入力.wfm"
手続き実行 訂正処理
ケース終了
繰り返し終了
ウィンドウ終了 &メインメニュー
終了
   上記です。
>1の場合は、一括処理から一覧表形式フォーム「a.wfm」を開いて、
  試行してみます。

>2の場合は、>この場合、多重化された編集表は、絞り込みされていないので。
>一覧表で、特定できるコードや名前などを変数に保存して、
>開始時実行ボタンやタイマーイベントで絞り込んだり検索必要があると思います。
   むずかしそうですが挑戦してみます。

>「左右連動フォーム3態」のサンプルの1番などをよく使用します。
   まねをしました。上手く利用できています。

よろしくお願いいたします。

24971 前提が違ってましたので、コメントはご破算に願います 佐田 守弘 2004/02/19-21:49
記事番号24938へのコメント
手塚 修さん
前回(#24925)の書き込みで、メインフォームからと書いてあったのを見たときから、
何か予感がしていたのですが、根本的なところで、前提が全く違ってましたね。
従いまして、私が#24912に書いた方法などはご破算として頂く事にします。

今回、#24938の書き込みで一括処理からウィンドウ作成コマンドでフォームを開いて
いる事が初めて明らかになりました。

●一括処理でウィンドウ作成で開いたフォームの場合
ウィンドウ作成で開いたフォームから、フォーム呼び出しで新しいフォームを開いたり、
あるいはフォームの選択でフォームを切り替えられるものかどうかは、私は行った事がないので、知りません。

フォームを切り替えたり、新しいフォームを呼び出したりするのではなく、
一括処理に戻って新しいフォームを開くのが普通の方法です。
つまり「一括処理に戻る」機能を設定したボタンを作っておき、このボタンを押す事によって、
ウィンドウ会話の状態を終了して一括処理に戻ります。
どうしても行セレクタのクリックで行いたいのであれば、メソッド呼び出しで一括処理に戻るボタンを実行します。
なお、ウィンドウ会話を終える時に、どこの行をクリックしたのかを記憶しておく必要があります。
従って、現在行を特定できる情報(これは#24912で書いた通り)を変数に記録しておきます。
そしてウィンドウ会話を終了すれば、その時に自動的にAのフォームウィンドウが閉じられます。

続いてBフォームを開く訳ですが、改めて一括処理からウィンドウ作成コマンドで
Bフォームのウィンドウを作成して、ウィンドウ会話で編集モードに入ります。
ウィンドウ会話には入る前に、Aフォームで選んだ行にジャンプしたり、
絞り込んだりします。

なお、もしAフォームを開く前にコマンドで表を開いてあると、Aフォームを閉じても、
編集対象行が保持されていて、そのままBフォームを開くだけで目的行が表示されるかも知れません。
これは試してみて下さい。

●イベントを使うならフォームを直接開いてはだめですか
一括処理から起動して、ウィンドウ作成、ウィンドウ会話でフォーム編集に入る方法は
いわば、古典一括処理の方法です。
メニューフォームを直接起動し、ここからAフォームなどを開く方法が現在では一般的な方法です。
前回のコメントは、その前提で書きました。

佐田守弘(KS-00119)
25009 一括からイベントでカードを呼び出し 今村 誠 2004/02/21-19:52
記事番号24949へのコメント
手塚 修さんこんにちは、サンプルをアップしてみました。
一括処理の「a.cmd」から起動して下さい。
アックンさんに勝手に73番のファイルを改造しました。(^O^)
ご都合悪いときは削除しますのでお知らせ下さい。

戻る