過去の桐井戸端BBS (桐ver.8)
12327 会話形式で開いた表ファイルをイベントで「表示モード」にするには pokopon 2001/07/16-06:36
みなさん こんにちは

イベントで、別に「会話形式」で開いた表を「表示モード」にする方法でつまづいています。
内容:
表A.tbl は会話形式で開いた単独の表ファイルです。
フォームB.wfm は表B.tblを編集表として取り込んだフォームファイルです。
表A.tblの内容を表B.tblに併合したり・・・・とかの作業をさせています。

表B.tblは、フォームBで編集対象表として取り込んでいますので、表B.tblが訂正モードの場合には、
コマンドボタンの機能名で、「表示」、
イベントなら メソッド呼び出し @フォーム.更新モード設定( 0 )
で訂正モード→表示モードへの切り替えは可能です。

では、単独に会話形式で開いた表A.tblが訂正モードであった場合に、これを表示モードに切り替える方法、
それもフォームBのイベントで行う方法ができずにいます。
一括処理で可能だったこれらを可能とするコマンドも、イベントでは「使用不可」のコマンドばかりです。

「直接、ファンクションキーのf・4をクリックすれば」となりますが、
フォームのイベントでこれと同じ操作をさせる方法について、おわかりの方、ご教授ください。

12328 Re:会話形式で開いた表ファイルをイベントで「表示モード」にするには 佐田 守弘 2001/07/16-09:45
記事番号12327へのコメント
pokoponさん
編集表を表Aに切り換えてから「メソッド呼び出し 更新モード設定」コマンドを実行すればできるはずなのですが、
問題は会話処理で単独に開いた表Aの表番号を知る方法でしょうね。
先に開いた表の方が若い番号(始めに開けば多分1)になるはずですが、フォームBから表Bを開くのと、
表Aを単独で開くのとがどちらが先になるかによって表番号は変わります。
ですから、単独で開いた表は、表番号が分からないからその表示制御はできないと思います。
編集表コマンドで表明を直接指定する事もできますが、おそらく質問の題意から表Aは常に一定ではなさそうに思えます。

●イベントハンドラで別表を開くには
そこで、これを解決する方法としては、表Bのイベントの中から表Aを開き、
この時に表ファイル名や表番号を取得しておく必要があると思います。

フォームBの中に「別表を開く」の様なコマンドを作っておき、このボタンに設定した一般手続きなどで表Aを開きます。
この時に「ファイル名入力」コマンドを使えば、会話処理風に開く表を自由に表を指定できます。

しかしながらイベントハンドラの中で別表を開いても、その表の編集ができない様ですね。
別表を開くには、表Aを開くためのフォームAを別に作っておき、
フォーム呼出しなどで開く必要があるかと思います。
但し、この場合にはフォームAはモーダルで開かれますから、フォームAとBとを自由に行き来する事はできません。

●併合などをバックグラウンドで行うだけなら
もし単に併合などを行うのであれば、開いた表は表示モードになっているので、
その状態で必要な絞り込みや併合などを行い、終わったらそのまま閉じるといった事は可能なはずです。

●表Aを開く一括処理を起動する
この方法は試しておりませんので巧くできるかは不明です。

佐田守弘(KS-00119)
12329 Re:会話形式で開いた表ファイルをイベントで「表示モード」にするには 通行人 2001/07/16-10:57
記事番号12327へのコメント
表形式編集に対しては更新モードを変更するすべがない。
つまり、どうにもできないです。
12330 Re:具体的には? pokopon 2001/07/16-10:58
記事番号12328へのコメント
佐田 守弘さん こんにちは
いつも情報を頂きましてありがとうございます。

>編集表を表Aに切り換えてから「メソッド呼び出し 更新モード設定」コマンドを
>実行すればできるはずなのですが、問題は会話処理で単独に開いた表Aの表番号
>を知る方法でしょうね。

実は、この表番号、およびウィンドウハンドルは取得可能です。
No.12275 からのスレッドの内容を応用して、実際に「最後に触った表ファイル」についてはウィンドウハンドルも表番号も取得できています。

具体的に、

メソッド呼び出し ハンドル = &WinNo , @フォーム.更新モード設定(0)

で対応可能ということでしょうか?
@フォーム? が気になります。相手は表ファイルなのですが。 
実際に検証してみると、確かに&WinNoには対象とする表ファイルのハンドルが代入されていますが、
「無効なハンドルです」エラーが出ます。
このコマンドは「会話形式」で開いた表についても適用できるのでしょうか?

どこか記述に間違いが? 
できれば、具体的な対策についてお知らせいただければと思います。

12331 Re:会話形式で開いた表ファイルをイベントで「表示モード」にするには ONnoji 2001/07/16-11:01
記事番号12327へのコメント
pokoponさん、こんにちは。

表を表示モードにする方法ではありませんが、

編集状態( n ) 関数で表の編集状態を調べたらいかがでしょうか。

表番号 n で指定した表の更新状態を調べて、つぎの数値を返します。

戻り値 説明

0 更新中ではない。
1 行訂正中である。
2 行追加中である。
3 行挿入中である。




12332 Re:会話形式で開いた表ファイルをイベントで「表示モード」にするには 尾形 2001/07/16-11:48
記事番号12331へのコメント
可能かどうか不明ですが、
イベントから一度その表を閉じるのは?

ダメでしょうね
12335 Re:会話形式で開いた表ファイルをイベントで「表示モード」にするには 今村 誠 2001/07/16-13:57
記事番号12327へのコメント
pokoponさんこんにちは、
大変興味を持ってコメントを拝見しています。
HELPの更新モード設定の所に以下の記述がありました。

対象表のレコードが終端行に移動すると、自動的に表示モードに変わります。

更新モードのままジャンプできるかわかりませんが、行マークをつけた後に
終端行にジャンプして、行マークに戻ってみるイベントではいかがでしょうか
pokoponさんのフォームがあればテストできるのですが、
思いつきだけで、外している可能性が高いと思います。

12337 Re:駄目なようです pokopon 2001/07/16-14:31
記事番号12335へのコメント
今村 誠さん こんにちは

>大変興味を持ってコメントを拝見しています。
>HELPの更新モード設定の所に以下の記述がありました。
>対象表のレコードが終端行に移動すると、自動的に表示モードに変わります。
>更新モードのままジャンプできるかわかりませんが、行マークをつけた後に
>終端行にジャンプして、行マークに戻ってみるイベントではいかがでしょうか
>pokoponさんのフォームがあればテストできるのですが、
>思いつきだけで、外している可能性が高いと思います。
>

実はすでにテスト済みです。
たかが「行移動じゃないか」と思っていましたが、この「ジャンプ」コマンドそのものが、
相手先表が「更新中」である場合にはエラーとなります(「このコマンドは更新中には使えません・・・」)。

残念ですが・・・・。

目の前にある水色の「表示」のファンクションキーがうらめしいです。
すぐそこなのに・・・、手も足もでません。

12344 Re:具体的には? 佐田 守弘 2001/07/16-22:47
記事番号12330へのコメント
pokoponさん
>メソッド呼び出し ハンドル = &WinNo , @フォーム.更新モード設定(0)
この方法はフォームから開かれた表以外には通用しないだろうと思います。
やはり、会話処理で開いた表を他のフォームのイベントから制御する事はできないでしょう。
ですから、表形式ではなくフォームで開く必要があります。

●確認ですが
始めの質問に戻って、
>表A.tblの内容を表B.tblに併合したり・・・・とかの作業をさせています。
との事ですが、このあたりをもう少し詳しくお知らせ下さい。
何となく本質的な解決方法のヒントがこのあたりに隠されている様に思われます。
つまり、前回も書きましたが、表AからBへ併合などの処理を行うに際して、
例えば表Aを予め絞り込んでおくとか、行集計をする、あるいはその他の前処理をしておくといった場合でも、
表Aを会話処理で開いておく必要はありません。
元来は一括処理なりイベントの中でその様な前処理を行うべきものと思います。

多分そういった考え方の切替で解決すべきような気がするのですが。

佐田守弘(KS-00119)

12366 Re:駄目なようです 今村 誠 2001/07/18-13:00
記事番号12337へのコメント
pokoponさんはこんにちは、まただめかもしれませんがアイデアだけ
メインアンドサブでフォームを作ります。
メインの対象表はNULLにして編集表を切り替えるボタンを作ります。
例えば

   表1 国語    表2 算数    表3 理科     終了

次にサブフォームはメインフォームのボタンで閉じたり開けたりします。
そうすると、サブフォームで編集対象表を切り替えできるのではないかと思います。
 フォームと表が連動すれば、コマンドボタンの 機能 表示 確定する
あるいは、更新モード設定もできるではないかと思いますが。
結果を教えてください。
12368 Re:試してみますが・・・・ pokopon 2001/07/18-13:37
記事番号12366へのコメント
今村 誠さん こんにちは

>pokoponさんはこんにちは、まただめかもしれませんがアイデアだけ
>メインアンドサブでフォームを作ります。
>メインの対象表はNULLにして編集表を切り替えるボタンを作ります。
>例えば
>   表1 国語    表2 算数    表3 理科     終了
>次にサブフォームはメインフォームのボタンで閉じたり開けたりします。
>そうすると、サブフォームで編集対象表を切り替えできるのではないかと
>思います。
> フォームと表が連動すれば、コマンドボタンの 機能 表示 確定する
>あるいは、更新モード設定もできるではないかと思いますが。
>結果を教えてください。

検討(健闘)してみます、が、本日〜今週いっぱい出張のため試せません。
来週中にスレッドが消えないうちにご報告いたします。
スレッドが消えたら、新規に投稿して報告します。
(すいません、私的連絡に掲示板を利用しました)


12411 Re:駄目なようです pokopon 2001/07/22-21:55
記事番号12366へのコメント
今村 誠さん こんにちは

>メインアンドサブでフォームを作ります。
>メインの対象表はNULLにして編集表を切り替えるボタンを作ります。
>例えば
>   表1 国語    表2 算数    表3 理科     終了
>次にサブフォームはメインフォームのボタンで閉じたり開けたりします。
>そうすると、サブフォームで編集対象表を切り替えできるのではないかと
>思います。
> フォームと表が連動すれば、コマンドボタンの 機能 表示 確定する
>あるいは、更新モード設定もできるではないかと思いますが。
>結果を教えてください。

試してみました。フォームに表が編集表として取り込まれている場合には、可能でした。
ただし、この場合には、サブフォームにそれなりの項目を表示するテキストボックスが必要です。
ご存知のように、「フォームにおける編集表」と「会話形式で開いた表のウィンドウ」は専有モードでは共存できません。
こちらが意図したことは、「任意に開いた会話形式の表」に対して、別のフォームからイベントで操作する事でした。
どうも、上手くいかないようです。

12413 Re:結論編です pokopon 2001/07/22-22:19
記事番号12327へのコメント
皆さん、いろいろとご検討いただきましてありがとうございました。
その後、いろいろと試してみましたが、結論として「不可能?」ということにしました。
「任意に開いた会話形式の表ウィンドウ」に対しては、この表が「訂正モード」である限り、別のフォームからは「手も足もでません」。

1.K3に問い合わせてみましたが・・・
 「イベント機能は、フォームファイルを対象としているため、フォームと対になっていない表ファイルを制御することはできません。
表ファイルを単独で制御されたいのであれば、一括処理で対応下さい。」
との回答を得ました。結論として「できない」ようです。

2.イベント処理において・・・
 会話形式で開いた表において、それが訂正モードであれば、
・行に関わる操作をするコマンド(例えば集計、並べ替え、ジャンプ、などなど)は全て「使用不可」です。
・オブジェクトを操作するコマンドも、ウィンドウハンドルの部分でエラーが返ってきます(あくまでフォームのハンドルのみを受け付けます。
表ファイルのハンドルはだめでした)
・一括処理はフォームのイベントからは呼び出せませんので、別の処理体系に操作をゆだねる事もできませんでした。
・その他、コマンドを色々と洗い出して見ましたが「更新モード」では、殆どのコマンドが利用不可でした。

残念ながら、現時点では今回の件は「実現不可能では?」と結論付けさせていただきます。
お騒がせいたしました。

唯一の解決方法としてはフォーム起動ではなく「一括処理からの起動&一括処理での制御」だけだと思われます。
しかし、これはこちらの意図する内容からは外れますので検討はしていません。
その他、トリッキーな方法もいくつか試しましたが、いずれもスマートな操作ではなく断念いたしました。
それなら、最初から一括処理で組みなおした方がましです。
(表を取り込んでのフォームの再起動など)

という事で、ONnojiさんから提案していただきました、「編集中かどうかを確認するルーチン」を追加し、
編集中なら「アナウンスする」という方法で、とりあえずは回避することにしました。

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


12419 Re:駄目なようです 今村 誠 2001/07/23-12:44
記事番号12411へのコメント
pokoponさんこんにちは
>試してみました。フォームに表が編集表として取り込まれている場合には、可能で
>した。ただし、この場合には、サブフォームにそれなりの項目を表示するテキスト
>ボックスが必要です。
テキストなしでも検索はできたような気がしたので、浮かんだアイデアだったのですがだめでしたか、
表形式のスピードは魅力ですが、コマンドボタンも便利いいですよね。
報告ありがとうございました。

戻る