過去の桐井戸端BBS (桐ver.8)
3536 method フォーム選択について Rockey 1999/11/28-21:08
環境は、桐V8、win98です。
メソッド呼び出し ハンドル=<ハンドル>\
,戻り値=<変数名>@フォーム.フォーム選択("***.wfm")
についてお尋ねします。

一括処理から実行するときは、"ハンドル="は省略してはいけません。
とありますが、呼び出す先のフォームのハンドルとは何を指定すれば
良いか分かりません。
最初にウインドウ作成でハンドルを指定するのでしょうか?

どうしても一括処理からフォームを切り替える処理をしなければなら
なくなり行き詰まりました。

どうか、よろしくお願いします。

3537 Re:method フォーム選択について 【多遊】 1999/11/28-22:15
記事番号3536へのコメント
Rockey さんこんばんは

フォームのハンドルは、一度に複数のフォームを開いたとき相手がぶつからないように
つけられてます。****wfmを何番で開くと事前に指示をして開いてるわけですから
それを指定していして下さい

通常フォームを開くときは、下記の形式をとります
ウィンドウ作成 【表|フォーム|<WFMファイル名>】,位置=(<x>, <y>),サイズ=(<幅>, <高
さ>)
ハンドル=<整数型変数>,カーソル位置=【<オブジェク
<桐helpより>
もどるときは、この整数形変数を指定すれば可能です


また、フォームの種類がたくさんあっても、一度に使用するフォームが1固の場合は

ウィンドウ終了 &整数形変数
ウィンドウ作成 "ファイル名.wfm",ハンドル=&整数形変数
として開けば、常に1個の変数で、簡単に管理する方法もあります


3542 Re:method フォーム選択について Rockey 1999/11/29-10:04
記事番号3537へのコメント
【多遊】様 コメントありがとうございます。
説明不足だったようですが、詳細は次のとおりです
カード型フォームを編集していて、同じ表を一覧表示のフォームで確認する
v5の処理行指定のような処理をしています。
この場合、カード型フォームを直接開いて、イベントで
メソッド呼び出し @フォーム.フォーム選択("一覧表.wfm")とすると
一覧表フォームが開き、処理行のところにカーソルが移動し、
同じ方法でカード型フォームに切り替えれば処理行が表示されます。
ところが、
一括処理からカード型フォームを開いて一覧表フォームに切替ようとすると
"メソッドが実行できませんでした。"とエラーになるのです。
そこで、マニュアルを参照したところ、一括処理から実行する場合は
ハンドル=** のパラメータを省略してはいけませんとあり、
このハンドルをどう指定したら良いか分からなくなりました。
&hwindowが割り当てられているということなのでハンドルに
&hwindowとしても"パラメータに誤りが..."とエラーになります。

一括処理を使わなければ、話は簡単なのですが、
どうしても一括処理からカード型フォームを開かなければならない
処理を作成しているものですから厄介になってしまいました。
フォームの切替時には元のフォームは閉じて常に1つのフォームを
表示すれば良いのですが、これを解決するか、また別の方法があれば
お教えいただきたいのですが、
よろしくお願いいたします。

3544 Re:method フォーム選択について 悲しげ 1999/11/29-13:10
記事番号3542へのコメント
どもっ、【多遊】さん、Rockeyさん、
このところ、kevの泥沼に浸かっていてcmdは殆ど使っていない
ので、試してしないのですが、

1)cmdから使うのであれば、わざわざメソッド呼び出しを使わ
ないで「使用フォーム」コマンドを使った方がいいような気がし
ます。

2)イベントも盛り込みたいのであれば、cmdからイベントを使
うのは、なかなか難しそうです。それと、イベントの場合には、
そのフォームからイベントを実行させるので、フォーム自体を切
り換えることは、イベント実行後の戻り先たるフォームが無くな
ってしまうことになる可能性など、難しい問題を含んでいそうで
す。したがって、イベントで別フォームを使う場合は(元フォー
ム名をa.wfm、別フォーム名をb.wfmとする)、私なら表を「多重
化」させて、a.wfmからb.wfmを「フォーム呼び出し」して使うと
思います(するとb.wfmを閉じればa.wfmに制御が戻る)。なお、
「多重化」を使うためには、a.wfmのオブジェクト属性/編集対象
表タブ/許可作業牡丹で「多重化」にチェックを入れておく必要
があります。

でも、cmdからフォームを切り換えるのは、やはり1)をお勧め
したいような……、2)でも実験していただきたいような……。(^^;)

3546 Re:method フォーム選択について Rockey 1999/11/29-15:14
記事番号3544へのコメント
悲しげ様、ありがとうございました。
ご指南の(2)の方法で完成させました。

この経緯を参考までにご説明します。
一覧表を開いておいて、フォーム呼び出しで
カードを多重化で開いて編集するようにしました。
ところが、イベントで項目値代入コマンドを使うと
"表が更新状態ではない"とエラーになります。
一方のフォームが編集状態ではないためではないかと
思い、多重化をあきらめました。

そこでメソッドのフォーム選択でフォームを切り替えたら
うまく行きました。
このとき、最初に開くフォームをカード型に
することにしました。
ただ、一括処理で稼動中のシステムに組み入れるため
一括処理でフォーム呼び出し "カード型.WFM"として
メソッドのフォーム選択を実行すると
エラー "メソッドが使用できません"etc...
というように前述のようなドつぼにはまったわけです。

ただ、オンラインヘルプには
メソッド フォーム選択は一括処理実行が 可 となっており
ハンドルは省略できませんとありますが
この場合のハンドルとはどういう指定にするのか
いまだに分かりません。

とりあえず、目的は達成しましたのでご報告いたします。

3548 「項目値代入」コマンドは 悲しげ 1999/11/29-18:38
記事番号3546へのコメント
どもっ、Rockeyさん、
2)の方で完成とのことおめでとうございます。ぽちぱち・・・

ただ、次の部分は誤解があります。

>ところが、イベントで項目値代入コマンドを使うと
>"表が更新状態ではない"とエラーになります。
>一方のフォームが編集状態ではないためではないかと
>思い、多重化をあきらめました。

「項目値代入」と云うのは「行訂正」の仲間でして、次のような
関係にあると云われています。
・行訂正   表示モード(訂正・行追加中ではない時)で使う
・項目値代入 訂正・行追加モードで使う
この点が問題となるのはおそらくイベント中に限りなのでしょう
が、エラーとなったのは表示モードで項目値代入コマンドを使お
うとしたからに相違ありません(「編集状態」云々とは無関係)。
何をやろうとしていたのか判りませんが、表示モードであれば行
訂正を使わないといけません。

>メソッド フォーム選択は一括処理実行が 可 となっており
>ハンドルは省略できませんとありますが
>この場合のハンドルとはどういう指定にするのか
>いまだに分かりません。

そうですね、私はcmdの方でメソッド呼び出しを使ったことがな
いし、使う気も今のところ無いので、この点では全くお役に立て
ません。

戻る