過去の桐井戸端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の方でメソッド呼び出しを使ったことがな いし、使う気も今のところ無いので、この点では全くお役に立て ません。 |