過去の桐井戸端BBS (桐ver.9)
26275 モーダルフォームで開いたフォーム上のコマンドボタンでレポート印刷をしたい 手塚 修 2004/05/12-08:48
Aフォーム上にコマンドボタン(機能名 モーダルフォーム、パラメーター B.WFM)を作り、Bフォームを開きました。
Bフォーム上にコマンドボタン(印刷実行)を作り、一覧表の印刷を行いたいのですがうまく行きません。
Bフォーム上のコマンドボタンに記す命令はどのように書いたらよいのでしょうか?
 
1 機能名  開く       パラメーター "車両台帳一覧.rpt" 
         ではだめなのはわかりました
2 機能名  レポート印刷   パラメーター "車両台帳一覧.rpt" 
         コマンドボタンが表示されない
         できればコマンドボタンの機能名4行の中で印刷させたいので
         すが?どのようにすれば良いのでしょうか?

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

26277 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて うにん 2004/05/12-10:29
記事番号26275へのコメント

>Bフォーム上にコマンドボタン(印刷実行)を作り、一覧表の印刷を行いたいので
>すがうまく行きません。Bフォーム上のコマンドボタンに記す命令はどのように書
>いたらよいのでしょうか?

別の桐を起動する必要があるので、
1.一括処理を作る。中身は
レポート印刷 〜〜(必要に応じたパラメータ)
終了 桐
2.コマンドボタンは
シェル実行 "その一括処理"
とします。

26282 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて 悲しげ 2004/05/13-00:40
記事番号26275へのコメント
う〜ん、
記述がシンプルなだけあって、なかなか深読みを要求する質問ですが(^^;)、
少し整理します。

その前に、「一覧表の印刷」と書かれているので、いわゆる(表の)一覧表印刷かと思ったら、
そうではなくて、「一覧表レポート」のことなんですね。(^^;)

さて、牡丹機能「開く」でrptファイルを指定すると、現在のフォームの対象表とは無関係に、
rpt定義で設定した対象表について印刷されます。
牡丹機能「レポート印刷」でrptファイルを指定した場合は、rpt定義で設定した
対象表に関わらず、フォームの対象表についてそのrptで印刷されます。

ところで、モーダルフォームで呼び出したフォームからだと、牡丹の機能「開く」は一般的に使えない。
そこで苦肉の対応として例示されたのが、桐をもう1本起動する#26277のやり方です。
このやり方は実は私もしばしば使っています。
が、ここではそれ以外の対策めいたものを挙げてみます。

1.どうせB.wfm(モーダルフォーム)を呼び出して印刷させるのだから、B.wfmの編集対象表を、例の印刷させたい表としてみる。

2・あるいは、kevを設定してB.wfmの牡丹からは機能「手続き実行」を呼び出し、kevの記述でもってレポート印刷させる。
(例)
手続き定義開始 某rpt印刷()
 表 "某.tbl"  /*某rptの編集対象表*/
 ・・・・ここで必要なら、並べ替えとか絞り込みとか
 レポート印刷 ・・・,"某.rpt",編集表=する,・・・・
 終了 表 編集対象表
手続き定義終了
このやり方だとどのようなことでも可能です。(プレビュー以外は)

3.B.wfmを「モーダルフォーム」としたから牡丹機能「開く」が使えないのであるからして、
「モーダルフォーム」ならぬ「開く」で呼び出せば、B.wfmから牡丹機能「開く→rptファイル」が使えるようになる。

26285 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて 手塚 修 2004/05/13-10:51
記事番号26282へのコメント
うにんさん 悲しげさん お世話になります。

>そこで苦肉の対応として例示されたのが、桐をもう1本起動する#26277のやり方
>です。このやり方は実は私もしばしば使っています。
 作ってみましたところプレビューも可能でした。ちょっと動きが遅いような気がしまし
たが、今後参考にして行きたいと思っています。cmdを作り、シェル実行で動かす。
知りませんでした。

>2・あるいは、kevを設定してB.wfmの牡丹からは機能「手続き実行」を呼び出し、
>kevの記述でもってレポート印刷させる。
>このやり方だとどのようなことでも可能です。(プレビュー以外は)
 これもできました。プレビューができないところが残念でした。

>3.B.wfmを「モーダルフォーム」としたから牡丹機能「開く」が使えないので
>あるからして、「モーダルフォーム」ならぬ「開く」で呼び出せば、B.wfmから
>牡丹機能「開く→rptファイル」が使えるようになる。
 これもやってみましたが、動きに難点があるようで取りやめました。

プレビューが必要か否かで使い分けようかと思っています。

とりあえず解決しましたが、コマンドボタンの中の4行の機能名・パラメーターではできないのか?
 機能名 レポート印刷 はどのような時に使うのか? 依然としてわかりません.できるならば、この点も教えてください。

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

ありがとうごぞいました。

26286 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて 尾形 2004/05/13-11:35
記事番号26285へのコメント
>Aフォーム上にコマンドボタン
>(機能名 モーダルフォーム、パラメーター B.WFM)
>を作り、Bフォームを開きました。

(機能名 開く、パラメーター B.WFM)
機能名を「モーダルフォーム」を「開く」では
ダメなのでしょうか?

26287 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて 悲しげ 2004/05/13-12:02
記事番号26285へのコメント

>>3.B.wfmを「モーダルフォーム」としたから牡丹機能「開く」が使えないので
>>あるからして、「モーダルフォーム」ならぬ「開く」で呼び出せば、B.wfmから
>>牡丹機能「開く→rptファイル」が使えるようになる。
> これもやってみましたが、動きに難点があるようで取りやめました。

どのよう点を「難点」と思いましたか? 参考までに教えて下さい。



>機能名 レポート印刷 はどのような時に使うのか?
>依然としてわかりません.できるならば、この点も教えてください。

この点については#26282で次のように書きましたが、これのどこが「依然としてわかりません」なのか、もう少し具体的に尋ねて下さい。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
牡丹機能「レポート印刷」でrptファイルを指定した場合は、rpt定義で設定した
対象表に関わらず、フォームの対象表についてそのrptで印刷されます。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜



>コマンドボタンの中の4行の機能名・パラメーターではできないのか?

これがもし「プレビュー」がらみだとするならば、モーダルフォーム上ではともかくできない仕様のようです。
プレビュー画面自体がモーダルなんだから、モーダルフォーム上でのプレビューだってできたらいいのにね。
この点は、私もかねてから非常に切望しています。
あるいは上記の問いがプレビューがらみでないとするならば、4行で「何が」できないかを手塚さんは明記する必要があります。


26288 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて ONnoji 2004/05/13-12:04
記事番号26285へのコメント

>とりあえず解決しましたが、コマンドボタンの中の4行の機能名・パラメーターではでき
>ないのか? 機能名 レポート印刷 はどのような時に使うのか? 依然としてわかりま
>せん.

手塚 修さん、こんにちは。

すでに解決済みとのことですが…

機能名:レポート印刷 は自身のフォームの編集対象表に対して有効なので、
NULLフォーム(編集対象表が無いフォームのこと)では、
編集対象表がないので実行できないのだと思います。

外していたらすいません。

■A.wfm

<"書き出し_表"条件>

表( .tbl )であらかじめ、"書き出し_表"条件を登録します。
上書きを許可します。

<A.wfmのコマンドボタン>

機能名          機能パラメータリスト
[1]書き出し_表    "条件名"
[2]モーダルフォーム  "B.wfm"
[3]なし
[4]なし

■B.wfm

<編集対象表>

あらかじめ B.wfmの編集対象表を設定します。
これは、A.wfmが書き出した表( .tbl )です。

<B.wfmのコマンドボタン>

機能名        機能パラメータリスト
[1]レポート印刷  "レポートファイル名"
[2]なし
[3]なし
[4]なし

なお、モーダルフォームではプレビューは出来ないようですね。


26290 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて 手塚 修 2004/05/13-16:18
記事番号26288へのコメント
尾形さん 悲しげさん いろいろお世話になります。

 機能名を「開く」では? 動きに難点が?に関してです。
メインフォーム、帳票選択フォーム、印刷条件フォームがあり、それぞれのフォーム上に「実行」「終了」のコマンドボタンを配置しております。帳票選択フォーム上の「実行」をクリックすると印刷条件フォームが表示されますが、
もう一度「実行」をクリックすると又印刷条件フォームが重なって表示されてしまいます。
クリックすればするだけ重なっていました。それにもう一つ困ったことは、3種のフォームが開かれている時に
2番目のフォーム(帳票選択フォーム)の「終了」をクリックすると帳票選択フォームが消え、
印刷条件フォームがそのまま表示されている。何の帳票を選択したのかわからなくなってしまう。
帳票選択フォームで「実行」を何度もクリックしていたときには、印刷条件フォームの
「終了」を何度もクリックしてようやく印刷条件フォームが消える。そんな現象でした。
機能名を「モーダルフォーム」とするとそれぞれ1つのフォームが順序良く表示され、
且つ終了時も最後のフォームから順に閉じ、明確な動きになりました。

ONnojiさん
>機能名:レポート印刷 は自身のフォームの編集対象表に対して有効なので、
>NULLフォーム(編集対象表が無いフォームのこと)では、
>編集対象表がないので実行できないのだと思います。 
    何となくわかるような気がします。

>■A.wfm >■B.wfm の件はこれから勉強してみます。

悲しげさん  「もうすこし具体的に尋ねて」「明記する必要が」 これから良く理解するようにしますので、すみませんご容赦を。
今回の質問は、以前「印刷条件を選択し印刷させたいが?」の続きの質問です。
その時教えていただきました「階層を追っては」の具体化です。多分、もうすこしで完成かと思っています。

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

26294 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて 悲しげ 2004/05/13-20:44
記事番号26290へのコメント
どもっ、手塚さん

どうやら質問の核心は「モーダルフォームからの印刷でプレビュー表示もさせたい」にあったようですね。
タイトルで云う「印刷」自体についてというよりも、むしろ「プレビュー」の方にね。(^^;)
であるならば、現時点での結論は、桐をもう1本起動する#26277のやり方(byうにんさん)しかないように思えます。

#26285でwrote「ちょっと動きが遅いような気がしました」と云うのは、
これは桐をもう1本起動するに要する時間なので、「ような気がする」どころか、明らかに遅いです。
特に環境設定で「桐の起動画面を表示する」設定にしてあったりすると。(T_T)

モーダルフォームからもプレビュー表示できるようにK3に強く要望しましょう。

26296 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて うにん 2004/05/13-23:41
記事番号26294へのコメント

>#26285でwrote「ちょっと動きが遅いような気がしました」と云うのは、これは桐を
>もう1本起動するに要する時間なので、「ような気がする」どころか、明らかに遅い
>です。特に環境設定で「桐の起動画面を表示する」設定にしてあったりすると。(T_T)

メモリーが少なかったりするとスワップが発生して悲惨かも。

>モーダルフォームからもプレビュー表示できるようにK3に強く要望しましょう。

しかし、モーダルフォームというのは「そのフォームでの処理が終了するまでユーザに
他の操作をさせない」ためにあるので、プレビュー表示して会話操作するというのは矛盾しています。
むしろ、ボタンを押したら用済みになったそのモーダルフォームを閉じてしまうのがいいのでは?(できるとおもうのですが)

26300 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて ONnoji 2004/05/14-11:23
記事番号26296へのコメント
うにんさん

>しかし、モーダルフォームというのは「そのフォームでの処理が終了するまでユーザに
>他の操作をさせない」ためにあるので、プレビュー表示して会話操作するというのは
>矛盾しています。

私も、うにんさんのご意見に賛成です。
プレビューの仕掛けからすると、いろいろ矛盾が発生するだろうと思いますので
モーダルフォームでは無理だろうと思います。

>むしろ、ボタンを押したら用済みになったそのモーダルフォームを閉じてしまうのが
>いいのでは?(できるとおもうのですが)

これは簡単にできますね。(^^v

いろいろ方法があると思いますが、例えば…

1.まず、組み込み変数:&実行リターン に &hwindow を代入してから、
2.次に、モーダルフォームを開いて、
3.それから、ボタンを実行したら、元のフォームのハンドル番号が既知なので、
  [局所変数代入]コマンドで元のフォームの変数へ任意の値を複写します。
4.最後に、モーダルフォームが閉じたら、
  元のフォームで受取った変数の値を参照して処理すればOKですね。


26303 Re:モーダルフォームでプレビュー 悲しげ 2004/05/14-21:48
記事番号26300へのコメント
どもっ、ONnojiさん、
ツリーをデカくしてすいません。<(_ _)>

>>しかし、モーダルフォームというのは「そのフォームでの処理が終了するまでユーザに
>>他の操作をさせない」ためにあるので、プレビュー表示して会話操作するというのは
>>矛盾しています。

これは今回の手塚さんがやろうとしている処理へのコメントかと思ったのですが、

>私も、うにんさんのご意見に賛成です。
>プレビューの仕掛けからすると、いろいろ矛盾が発生するだろうと思いますので
>モーダルフォームでは無理だろうと思います。

と云うことで、むしろ一般論として述べられているように思えました。
そこで、もし差し支えなければ、「プレビューの仕掛け」からしてモーダルフォーム
では「無理」と思う理由をもう少しだけ教えていただけますか?



この点につき少々補足します。
「プレビュー表示」時の「会話操作」と云っても、たかだか印刷、頁移動、画面表示分割数の変更、拡縮、閉じる、くらいだと思います。
これが「矛盾」に繋がるとしたらどのような矛盾が有り得るのか、私としては想像ができません。
モーダルフォームから「会話=する」で印刷ダイアログを呼び出すことは可能ですから、
もしプレビューを呼び出せた場合でも挙動としてはそれとさほど変わらないような気もしたり。
それと、このプレビュー画面は(フォームではないけれども)明らかにモーダルウィンドウでして、
この画面が終了するまでユーザが他の操作をすることはできませんし、
「最小化」すら不能です(桐自体も道連れにする)。モーダルフォームからプレビュー画面を呼び出すと云うことは、
云い換えればひとつのモーダルウィンドウ(当該モーダルフォーム)から別のモーダルウィンドウ(プレビュー画面)を呼び出すだけの
ことであって、「モーダル」としての関係は変わらないのではないか、と思ってしまうのは、いかにもシロート考えでしょうか。(^^;)

ついでに云えば、DOS桐では「レイアウト」コマンドをよく利用していました。
あ、これって「隠し」コマンドでしたっけ? うすらな記憶では、レイアウト表示か
実印刷かの二者択一だったと思いますが、だとしてもかなか便利に使わせてもらって
いました。利用法としては、例えば、あるデータをレイアウト表示させて、
(1)もし改行位置とか諸々、麗しくなければ、表示終了後に元データを整形し、
(2)表示した結果が十分に麗しければ、表示終了後に改めて印刷させる。
と云った具合に。
これをWin版(モーダルフォーム)でもやりたいと切望しています(今は、泣く泣く
別桐起動でやってますが)。
で、何だったらWin桐のプレビューだって(もし会話操作で矛盾があり得るのなら)
単に表示させるだけの機能限定(印刷や会話操作不能)程度で十分に構わないから、
ぜひ実装して欲しいものだと・・・・。無理なんでしょうか?

あぅ、補足の方が長くなってしまった。(^^;)


26305 Re:モーダルフォームでプレビュー ONnoji 2004/05/15-00:08
記事番号26303へのコメント
>そこで、もし差し支えなければ、「プレビューの仕掛け」からしてモーダルフォーム
>では「無理」と思う理由をもう少しだけ教えていただけますか?

悲しげさん、こんばんは。

>それと、このプレビュー画面は(フォームではないけれども)明らかにモーダルウィ
>ンドウでして、この画面が終了するまでユーザが他の操作をすることはできませんし、
>「最小化」すら不能です(桐自体も道連れにする)。

おっしゃるとおりに、プレビューは確かにモーダルですが、
それに加えてオーバーラップでもありますね。

そうすると、モーダルフォームにオーバーラップでプレビューを表示するのか、
それとも桐ウィンドウにオーバーラップでプレビューするのか、
という問題が生じるように思いましてね・・・
どうやら、プレビューは桐ウィンドウの上にしか表示できない仕掛けのようです。

具体的には、たとえば、
ただひとつのフォームがあり、
そのフォームがポップアップ形式だったとします。

桐ウィンドウを最大化しない状態で、
ポップアップしたフォームを桐ウィンドウから離して、
Windowsのデスクトップに、
桐ウィンドウとポップアップフォームが並列しているようにします。

このとき、ポップアップフォームでレポートでプレビューすると、
桐ウィンドウにオーバーラップされてプレビューが表示されると思います。
この時にポップアップウィンドウはどこに表示されているでしょうか。

桐ver.9-2004で試しましたが、
ポップアップウィンドウ見えなくなっていますね。
おそらく、桐ウィンドウの中に押し込まれているのでしょうね。

これからは仮の話ですが、
モーダルフォームもポップアップ形式ですから、
同じように動作するとすれば、
桐ウィンドウにオーバーラップされたプレビューが現れたとき、
プレビュー側の[印刷][閉じる][ズームイン]をクリックして実行できるでしょうか?

この場合にはモーダルフォームですから他のウィンドウを操作することはできないはずですね。
そうすると、プレビューを終わらせる方法がなくなるということになると思います。

また、プレビュー時にはポップアップフォームが、
桐ウィンドウの中に押し込まれるという挙動との関係もありますが、これは???です。

すいませんが、私の素人考えではこれくらいしか考えられません。m(__)m

<追伸>

私も、モーダルフォームでもプレビューできると嬉しいと思いますが、
しかし、たぶんこんな理由で許可してくれないのではと思った次第です。

これは、あくまでも私の感想であり、ぜんぜん的外れであるかもしれません。
失礼しました。
26306 Re:モーダルフォームでプレビュー ONnoji 2004/05/15-00:37
記事番号26305へのコメント
>また、プレビュー時にはポップアップフォームが、
>桐ウィンドウの中に押し込まれるという挙動との関係もありますが、これは???です。

もしも、モーダルフォームがプレビュー時に桐ウィンドウに押し込まれると仮定すると、

モーダルフォームの特徴である、
[ESC]で直ちに閉じるという機能がありますが、
これが一発では出来なくなるだろうと思います。

つまり、[ESC]キーでプレビューを閉じて、
モーダルフォームで[ESC]キーで閉じるという風になるだろうと思います。
しかし、これはあまり問題にはならないでしょうね。
どちらかというと、これなら十分使えますね。

とすると、
モーダルフォームは桐ウィンドウに押し込められないということが、
本質的な問題なのかもしれませんね。
やはり、モーダルはモーダル。
なにがなんでも、桐ウィンドウから独立して、
フォームのモーダル状態を維持するというスタイルですかね???

これも、前回同様のタラレバの話です。

タラレバのお話でお騒がせしてすいません。


26307 Re:モーダルフォームでプレビュー hidetake 2004/05/15-00:50
記事番号26305へのコメント
>>そこで、もし差し支えなければ、「プレビューの仕掛け」からしてモーダルフォーム
>>では「無理」と思う理由をもう少しだけ教えていただけますか?

Access だと、モーダルから「プレビュー」だってできますよね。

桐の場合だとプレビューは桐のシステムウィンドウをすべて使って
表示されてはしまいますけど、Access だとチャイルドなウィンドウ上に表示されますが・・・

Access の場合、印刷用に(モーダル)フォーム作って、
いろいろな設定をさせといて、あと「プレビュー」ボタンと「印刷」ボタンを
作り「プレビュー」や「印刷」の際は、桐のように変数で受け渡ししないで、
レポートや VBA からフォームの値は参照させるでしょう
から、そのフォームは非表示にしてプレビューや印刷を行うと・・・

桐ではできないけど、Access だとレポート(ウィンドウ)をモーダルにしてしまえば、
それを開く(モーダル)フォームは非表示にしなくても特に問題も無いはずです。

別に桐のプレビューが桐のシステムウィンドウを使ったって、
やろうと思えばできると思うのですが?
26308 Re:モーダルフォームでプレビュー hidetake 2004/05/15-00:58
記事番号26306へのコメント
>もしも、モーダルフォームがプレビュー時に桐ウィンドウに押し込まれると仮定すると、

別に何も桐のシステムウィンドウに押し込まれなくても、そのまま
良くあるような「モーダル」(ダイアログから)から「モーダル」
(ダイアログ)を開くようなシステムと同じように、そのままグレー
アウトして、桐のシステムウィンドウのプレビューがモーダルと
なってしまえば良いような気もします。

まぁ〜このときだけ? 桐のシステムウィンドウがモーダル化するのも、
少し変化も知れませんが?

そこまでしない場合は、ユーザ側であえてモーダルフォームを
非表示にしてしまう手もあるような・・・

あとは、Access のようにレポートにもウィンドウの設定をできる
ようにして、1つのウィンドウとして独立化させる方法もあるとは
思うけれど、そこまでしなくても良いような気もします。
26309 Re:モーダルフォームでプレビュー hidetake 2004/05/15-01:09
記事番号26307へのコメント
>桐の場合だとプレビューは桐のシステムウィンドウをすべて使って
>表示されてはしまいますけど、Access だとチャイルドなウィンドウ
>上に表示されますが・・・

Access でチャイルドで表示されるというのはデフォルトの場合での事ですね!

モーダルフォームからレポートのプレビューを開く場合、元のフォームを非表示にしてしまえば、
デフォルト設定のチャイルドでも構いませんが、元のモーダルフォームを残した(表示した)ままプレビューしたい場合は、
レポート(プレビュー)ウィンドウもモーダルで開かないと、
操作対象はフォームに残ったままで、操作ができなくなってしまいますね。 (^^;
26310 Re:モーダルフォームでプレビュー ONnoji 2004/05/15-01:19
記事番号26306へのコメント
>おっしゃるとおりに、プレビューは確かにモーダルですが、
>それに加えてオーバーラップでもありますね。

よく考えてみると、プレビューはモーダルというよりも、
オーバーラップというのが正しいような気がしてきました。

モーダルフォーム:ポップアップでモーダルなフォーム

プレビュー:桐ウィンドウにオーバーラップするウィンドウ

ただし、プレビューはオーバーラップなので、
チャイルドウィンドウもポップアップウィンドウも、
自身のウィンドウの下に押し込んでしまうので、
モーダルのような印象を受けるのではないでしょうかね。

ということで、
オーバーラップはモーダルダイアログとは違うような気がします。

何度もタラレバ話ですいません。
26312 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて アックン(=^・^=) 2004/05/15-10:29
記事番号26275へのコメント
手塚 修さん、こんにちは。
見本をアップしました
これで実用になると思います・・・? >悲しげさん、うにんさん、ONnojiさん、
hidetakeさん、尾形さん

26313 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて 手塚 修 2004/05/15-11:01
記事番号26312へのコメント
アックン(=^・^=)さん   ありがとうございます。

>見本をアップしました。
>これで実用になると思います・・・?
 
 すごいですね。早いです。それと簡略です。kevはこれから理解するとして、
 早速、使わせていただきます。


>悲しげさん、うにんさん、ONnojiさん、
>hidetakeさん、尾形さん        ありがとうございました。

 皆さんの会話、当方には難しすぎて良く理解できませんでしたが、
皆さんのおかげでアックンさんのサンプルを手に入れることができました。

 
  皆さん ありがとうございました。


26314 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて アックン(=^・^=) 2004/05/15-11:08
記事番号26312へのコメント
見本の モーダルフォーム(B.wfm)はダイアログなんですが、
編集対象表がある場合は、表を書き出しすることになりそうですね・・・・・・。(^^;
26315 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて ONnoji 2004/05/15-11:44
記事番号26314へのコメント
>これで実用になると思います・・・?

アックンさん、こんにちは。

拝見しました。グッドですね。v(^^)v

*---------------------------*
名札 メイン

 
proc b1::マウス左クリック(長整数 …省略… )
 フォーム呼び出し "B.wfm", ボタン=&STR, 終了状態=&秒
┌while( &STR="bボタン" )
│ レポート印刷 "C.rpt", プレビュー=する
│ フォーム呼び出し "B.wfm", ボタン=&STR, 終了状態=&秒
└end
end
*---------------------------*


26316 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて アックン(=^・^=) 2004/05/15-12:20
記事番号26315へのコメント
ONnojiさん、こんにちは。なんとかこれでいけそうですか。(^^;
モーダルを閉じればいいじゃないかという元々の発想は、ONnojiと悲しげさんですね。(^^)v
26317 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて ONnoji 2004/05/15-12:33
記事番号26316へのコメント
>ONnojiさん、こんにちは。なんとかこれでいけそうですか。(^^;
>モーダルを閉じればいいじゃないかという元々の発想は、ONnojiと悲しげさんです
>ね。(^^)v

アックンさん、こんにちは。

サンプルの内容とは違う話になりますが…

今回の内容は、b.wfm がシンプルなのでこれでいいのですが、
もしも、b.wfm が単なる応答ダイアログでなくて、
シビアーで重要な処理をしている場合、
繰り返し( while )で再度モーダルフォームを開いたときに、
開かれたモーダルフォームを、
プレビューする以前の状態に復旧させるというのが大変ですね。

すいません、これはあくまでも、今回と違う状況を想定した場合のことです。

アックンさん、誤解なさらないでくださいね。
サンプルはサンプルとしてOKでGoodなんですよ。(^^v

26319 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて 尾形 2004/05/15-15:27
記事番号26317へのコメント
ご存知と思いますが

>プレビューする以前の状態に復旧させるというのが大変ですね。
「フォーム呼び出し」は編集表=する
にすれば表は閉じないので状態を継続できます

26320 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて ONnoji 2004/05/15-16:02
記事番号26319へのコメント
>>プレビューする以前の状態に復旧させるというのが大変ですね。
>「フォーム呼び出し」は編集表=する
>にすれば表は閉じないので状態を継続できます

尾形さん、こんにちは。

なるほど、[編集表 = する]パラメータは名案ですね。

<蛇足>

これはとりとめのない心配ですが…
プレビューする前のフォーカスに復旧したりするのは面倒でしょうね。
あと局所変数をどう復元するかとか…

私は次から次へと心配事を思いつくので、
もう考えるのは止めにします。

失礼しました。(@^^)/~~~

26321 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて アックン(=^・^=) 2004/05/15-18:46
記事番号26320へのコメント
ONnojiさん> 長文なので2分割します。
>もう考えるのは止めにします。
お手すきのときにでもご覧ください。(^^;
ところで、もし今回のようなことを自分がするときは、「モー樽」使わず迷わず「おじゃがのメイクイーン(mkwin)」を選びます。(^^;
つうことはすっかり忘れて、以下全文<蛇足>です。

(1)局所変数を復元する
フォーム終了時に固有変数に代入して、変数書き出しする手が使えるでしょうか。
似た例として、開いたときの固有変数を初期値として設定しておき、変数値を変更しても、
キャンセルボタンで初期値に戻しています。
これを応用できるような気がするものの、複雑なケースではどうなるかわかりません。

フォームに50個のトグルボタン配置
ソース: &拡張子[1]〜&拡張子[50] / ONの値:"" / OFFの値:""
&拡張子[XX]を変数ファイルから読込済み

------------------
proc フォーム::フォーム開始(長整数 ・・
 for &i=1,50
&拡張子2[&i] = &拡張子[&i]
 end
end
*____________________________________\
* コマンドボタン:Canselボタン
* ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
proc b_Cancel::マウス左クリック(長整数 ・・
call 初期値に戻す()
end
*____________________________________\
* 初期値に戻す
* ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
proc 初期値に戻す()
 for &i=1,50
&拡張子[&i] = &拡張子2[&i]
 end
end
------------------
26322 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて アックン(=^・^=) 2004/05/15-18:48
記事番号26320へのコメント
ONnojiさん> 長文につき2分割た続編です。
(2)フォーム終了時のフォーカスを復元する
似た例として、汎用メニューフォームで、フォーム終了時のフォーカスを復元しています。
仕事で同じメニュー操作を煩雑に繰り返すのが面倒くさくなって、しかたなく書いたんですけど、
書いたのがかなり以前ということもあって・・・・・・関係箇所を抜き書きしました。(^^;(すいません)

メニューフォーム:ダイアログ
コマンドボタン配置(3列X10個=30個)
左列(10個):ページボタン(計10個)
        オブジェクト名:b_p1〜b_p10
中央(10個)と右列(10個):メニューボタン(計20個)
        オブジェクト名:b_m1〜b_m20
つまり、10ページX20個=合計200メニューとなり、
フォーカスがページボタンまたはメニューボタンにあるものとします。

------------------
proc フォーム::フォーム開始(長整数 ・・
  :
  call フォーカス設定()
  var 文字列 { &focus }
/* 前回終了時にフォーカスしていたボタンにフォーカスを設定する。
ページボタンにフォーカスしていたときは、ページボタンにフォーカスをあてる。 */
  var 整数 { &戻り値 }
  method 戻り値=&戻り値 , @フォーム明細部 . オブジェクト検査( "b_p"+#str(&newpage ) , &end )
  cond( &end=0 ) &newpage = 1
  method 戻り値=&戻り値 , @フォーム明細部 . オブジェクト検査( #set( "focus" ,"b_m"+#str( &newmenu - ( &newpage-1 ) * 20 ) ) , &end )
  cond( &end=0 ) &focus = "b_p"+#str( &newpage )
/* メニューボタンのオブジェクトが不明のとき(&newpageが2以上で&newmenuが1の場合=ページボタンにフォーカスしていて、メニューボタンにフォーカスがなかったとき)は、ページボタンにフォーカスをあてる。 */
  method &focus .フォーカス設定()
------------------
proc フォーム::フォーム終了()
  call writevar()
------------------
proc writevar()
  writevar "maco.var" , { &newmenu ,\
&newpage ,\
------------------
proc b_pファミリ::マウス左クリック(長整数 ・・
  call PageButton( &this )
------------------
proc b_mファミリ::マウス左クリック(長整数 ・・
  call MenuButton( &this )
------------------
proc MenuButton( 文字列 &thisObject )
  if ( &bs=5 ) /* メニュー登録 */
    &newmenu = #num( #sstr( &thisObject , 4 ) )
    call 登録()
  else if( .not&bs ) /* メニュー実行 */
    call( &m[ #set( newmenu , #num( #sstr( &thisObject , 4 )
)+&newpage*20-20 ) ] ) メニュー実行()
------------------
proc フォーカス設定()
  for &i=1,10
    &str[2] = "b_p"+#str(&i)
    if( &標題[&i+200] )
      object ハンドル=&menuwin, &str[2].フォーカスの設定="自動"
    else
      object ハンドル=&menuwin, &str[2].フォーカスの設定="禁止"
    end
  end
  for &i=1,20
    &str[2] = "b_m"+#str(&i)
    if(&標題[&i+&newpage*20-20])
      object ハンドル=&menuwin, &str[2].フォーカスの設定="自動"
    else
      object ハンドル=&menuwin, &str[2].フォーカスの設定="禁止"
    end
  end
end
------------------
26323 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて アックン 2004/05/15-19:24
記事番号26322へのコメント
と、(2)をごちゃごちゃ書いたものの、通常はオブジェクト名を変数に取得すればいいんじゃないかと。(^^;

26324 Re:モーダルフォームでプレビュー 悲しげ 2004/05/15-19:37
記事番号26310へのコメント
どもっ、ONnojiさん
ツリーをかくもデカクしてしまったので、簡潔にコメントさせて戴きます。(^^;)

>よく考えてみると、プレビューはモーダルというよりも、
>オーバーラップというのが正しいような気がしてきました。

うっ、「オーバーラップ」ですか!? (^^;)

26325 Re:モーダルフォームでプレビュー 悲しげ 2004/05/15-19:40
記事番号26307へのコメント
どもっ、hidetakeさん

>Access だと、モーダルから「プレビュー」だってできますよね。

つーことは、期待できるかも?

26326 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて 悲しげ 2004/05/15-19:49
記事番号26316へのコメント
どもっ、アックン(=^・^=)くん

>モーダルを閉じればいいじゃないかという元々の発想は、ONnojiと悲しげさんです
>ね。(^^)v

ちゃいます。ONnojiさんとうにんさんです。(^^;)

私の場合は、まずa.wfmをモードレスで開いた後は、b.wfmをモーダルで呼び出し、
そのb.wfmからさらにc.wfmをモーダルで呼び出し、さらにc.wfmからd.wfmをモーダルで呼び出して、
このd.wfmあたりから印刷プレビューさせる・・・・ような頭があったものですから、
そのような発想(モーダルをひとつだけ閉じる)は全く出てこなかったとです。(^^;)

26330 Re:モーダルフォームで開いたフォーム上のコマンドボタン(印刷)に付いて ONnoji 2004/05/16-12:39
記事番号26323へのコメント

>と、(2)をごちゃごちゃ書いたものの、通常はオブジェクト名を変数に取得すればいいんじゃないかと。(^^;

アックンさん、こんにちは。

参考にさせていただきます。

いろいろありがとうございます。(*^^)v

26331 Re:モーダルフォームでプレビュー うにん 2004/05/16-13:46
記事番号26324へのコメント

>>よく考えてみると、プレビューはモーダルというよりも、
>>オーバーラップというのが正しいような気がしてきました。
>
>うっ、「オーバーラップ」ですか!? (^^;)

そうみたいですね。私かんちがいしてましたが、モーダルから別の
モーダルを開くことは可能なので、プレビューをちゃんと独立した
モーダルウィンドウにすれば、どうということはないような...
現状ではワープロソフトみたいな「アプリケーション自体が
プレビューモードになる」仕組みなのが、よくないのではないかな。

26332 Re:モーダルフォームでプレビュー ONnoji 2004/05/16-15:58
記事番号26331へのコメント

>そうみたいですね。私かんちがいしてましたが、モーダルから別の
>モーダルを開くことは可能なので、プレビューをちゃんと独立した
>モーダルウィンドウにすれば、どうということはないような...
>現状ではワープロソフトみたいな「アプリケーション自体が
>プレビューモードになる」仕組みなのが、よくないのではないかな。

うにんさん、こんにちは。

現状の桐のシステムウィンドウで表示するプレビューのほかに、
新しくモーダルなプレビューウィンドウが用意されれば、
実現可能になるのではと思います。

新しくモーダルなプレビューウィンドウを作ってもらうように、
K3殿に期待するしかなさそうですね。

戻る