過去の桐井戸端BBS (桐ver.8)
6479 モーダルwfmから印刷プレビュー(再び) 悲しげ 2000/06/16-17:36
イベント、特にモーダルフォームから印刷プレビューができないことは承知しています。
が、そこを敢えて何とか、力技の類を駆使して実現できないものかどうか。
お智慧を拝借いたしたく。<(_ _)>

悪あがき(その1)---- HTML経由
釦の1行目で印刷のパラメータを"HTML"とし、適当なhtmファイルとして出力。
2行目で「シェル実行」で当該htmを画面表示させる。
こうすると、作成した印刷データをそれなりに見ることはできます。
が、用紙サイズや縦・横幅を反映させることができないので、
やはりイマイチ。(;_;)

悪あがき(その2)---- 未着手
印刷出力はプリンタにではなく「ファイルに出力」させる(どうやって?)。
次に出力したファイルから何とか印刷イメージを画面に表示させる(どうやって?)。
そもそもこのようなことは可能なのでしょうか?

その他、何か名案があればよろしくお願いします。
他アプリ経由でも可。

話の順が逆になりますが、意図は次のとおりです。
DOS桐においては、ある印刷データをレイアウト表示させ、その結果を見て
元データを一部書き換えていた(繰り返しループで)。
これは例えば禁則処理(DOSでは手動でやるしかなかった)とか、
あるいは総行数を調整する(頁内にうまく収める)ために表現を大胆に加除したりしていた、
と云うようなことです。
ま、Winでは禁則処理の方はお任せできるとしても、後の方もやはりやりたいのです。
6480 Re:モーダルwfmから印刷プレビュー(再び) hidetake 2000/06/16-18:36
記事番号6479へのコメント
まともにやったことは無いですけど...

無理矢理やるなら、シェル実行で "C:\Program Files\KIRI\System\KIRI8.EXE","/AO ""レポート.RPT"""
するとかして別の桐を呼び出す方法もあると思いますが、そのままでは終了時、
桐が自動的に閉じてくれないので、CMD なり組んで、そちらを呼び出し終了したら
自動的に閉じるようにする方法もあるのでは無いでしょうか?
お互いの連携は考えないといけませんが...

6481 Re:モーダルwfmから印刷プレビュー(再び) hidetake 2000/06/16-19:05
記事番号6480へのコメント
CMD を使わなくても、細かい事さえ気にしなければ WFM でも可能だろうと思い試そうと...

別個に呼び出す桐用に WFM をこさえ、それにボタンを1つ付け、
レポート印刷でプレビューして終了したら桐を終了するようにし、フォーム開始時のボタンに
設定したのですが、モーダルフォームからシェル実行でその WFM を別桐を起動して呼び出すと、
元の方の桐が不正な処理で落っこちてしまいます。

それに、レポートをプレビューするだけのフォームも、桐を起動してからフォームを開くと
普通に処理してくれるのだけど、Widnows から直接ダブルクリック等でフォームを開いてしまうと、
プレビューはしてくれるものの、それと同時にテーブルが既に開かれていると
エラーを出してくれるでは無いか...

やっぱ、桐の起動と同時に WFM を扱うのは、イベントを使わなくてもやめておいた方が良いみたい...
(取りあえず SP5 で試した結果です)

素直に CMD 経由で処理した方が良いみたいです>悲しげさん

6482 Re:モーダルwfmから印刷プレビュー(再び) 初心者 2000/06/16-19:26
記事番号6480へのコメント
どうも、悲しげさん。
大先生に意見するのも気が引けますが、
やっぱし、モーダルだけではきついっす。
メニューだけは非モーダルにした方がいいのではないかと、自分ではおもっています。
自分はそうしてます。非モーダルからなら表形式やプレビュー 可能でっせ。

以前、悲しげさんの言ってた不具合?は出くわしていません・・・。
6483 Re:モーダルwfmから印刷プレビュー(再び) hidetake 2000/06/16-19:43
記事番号6481へのコメント
済みません _o_
こちらの方は、モーダルフォームでレポートを呼び出すボタンに、
シェル実行で別桐経由の WFM を呼び出した次に、
桐を終了する命令を間違って残したままにしていたからでした。

と言うことで、レポートを呼び出しプレビューする方法も WFM + KEV で
タイマーを組み合わせれば可能ではありそうです。

あとは、元の桐がプレビューもしくは印刷が終わるのをどうやって待つかの処理ですね!

CMD からだとシステムコマンドで簡単だけど、KEV からではシェル実行だと
オプションが渡しにくいけど、待つ方法はある方法が使えることは使える。
コマンドボタンではオプションは簡単に渡せるけど待つ方法が簡単には無い...

やっぱ、不特定多数に使わせること等を考えると、
呼び出した桐側でフラグを立ててそれを見て処理するしか無いのかな?

ps.
ちなみに私は CMD + KEV でメイン(最初)は未だに CMD です。
ウィンドウ作成もフォーム呼び出しも何でもありで、
その場に応じて使っています。
だから、システムもプレビューも特に困ったことは無いのです。


6484 Re:モーダルwfmから印刷プレビュー(再び) 悲しげ 2000/06/16-21:02
記事番号6483へのコメント
どもっ、hidetakeさん、
色々ありがとうございます。
これから出掛けるので、日曜夜に戻って来てから試してみます。
なお、不在中も名案があればどんどん挙げておいて下さい。(^^;)
6485 Re:モーダルwfmから印刷プレビュー(再び) 悲しげ 2000/06/16-21:04
記事番号6482へのコメント
どもっ、初心者さん、

>やっぱし、モーダルだけではきついっす。
>メニューだけは非モーダルにした方がいいのではないかと、自分ではおもっています。
>自分はそうしてます。非モーダルからなら表形式やプレビュー 可能でっせ。

のようですけど、頑固にもう暫く「モーダル命」であがいてみます。(^^;)

>以前、悲しげさんの言ってた不具合?は出くわしていません・・・。

これって何のことでしたっけ?
6486 Re:モーダルwfmから印刷プレビュー(再び) hidetake 2000/06/16-22:50
記事番号6484へのコメント
はい!
細かく Window を管理するのなら...

プレビューしている時は、モーダルフォームを放棄していると言うわけだから、
プレビュー用の WFM をファイルを開くで開き、開くと同時にモーダルフォームは閉じる。

プレビュー用のフォームでフォーム開始コマンド等を用い、即座にプレビューでレポートを開いても、
モーダルフォームの関係で印刷メニューが出てしまいプレビューにはならない。
しかし、タイマーを用い、すこし間を空けるとプレビューが可能です。

従って、ボタンもしくは記述で、プレビューさせ、プレビューもしくは印刷が終わった段階で、
モーダルもしくはフォーム呼び出しで元のモーダルフォームを開く。
本当であれば、ここで自分自身を閉じたいところであるが、
モーダルフォームを開いた後では自分を閉じることは不可能なようです。

しようが無いのでプレビュー用のフォームでモーダルに戻る際、
&hwindow とプレビューからの戻りだというフラグを立てる。
そして、帰ったモーダルから、フォーム開始イベントでプレビュー用のフォームから帰った状態かをチェックし、
プレビューからの戻りであればプレビュー用のフォームを閉じる。

一応この方法でも可能でした。

ただ、SP5 のタイマー関係か1度目は OK ですが、もう一度プレビューを開くと
不正な処理で桐が落ちてしまいます。 (;_;)

6487 Re:モーダルwfmから印刷プレビュー(再び) hidetake 2000/06/16-23:01
記事番号6486へのコメント
あっ! このプレビューを呼び出すモーダルフォームも、
それ自身が呼び出される前のフォームもモーダルであったり、
これを開くまでに複雑な処理をして簡単に開いたり閉じたり出来ない場合は、
この方法は使えませんね! (^_^ゞ

6489 Re:モーダルwfmから印刷プレビュー(再び) 悲しげ 2000/06/17-00:25
記事番号6487へのコメント
どもっ、hidetakeさん、
出掛けるのは結局明朝にして、早速試してみました。

>あっ! このプレビューを呼び出すモーダルフォームも、それ自身が
>呼び出される前のフォームもモーダルであったり、これを開くまでに
>複雑な処理をして簡単に開いたり閉じたり出来ない場合は、この方法
>は使えませんね! (^_^ゞ

ご拝察のとおりでやんす。
よって、シェル実行で別途cmdを立ち上げました。
cmdの方が簡単そうでしたから。
で、元の桐(フォーム)で訂正した内容でプレビューさせたいと云うことで、
データ(表)は同じものを使うことになります。
もうひとつの桐を立ち上げた際には、その表は「他のユーザーが使用中」と云う
正しいエラーメッセージに出会います。(余談ながら「幽ザー」ではないと云う意味です)
そこで対策を考えました。別な表であればいい訳です。
元桐のwfmの牡丹の記述を次のようにしました。
---------------------------------------
1.書き出し_表の枠組み    "書出枠01"
  (上書きとした、仮称"preview1.tbl"として)
2.書き出し_表        "書出表01"
  (追加とした)
3.シェル実行
  #桐パス名+"kiri8.exe","-R "+#データパス名+"preview1.cmd"
---------------------------------------

次、別桐でのpreview.cmdの記述
---------------------------------------
変数読み込み "設定.var",終了状態=&実行リターン
*↑rptで変数を使っているので再度読み込ませる
表 "preview.TBL"
レポート印刷 "某.rpt",編集表=する,プレビュー=する,終了状態=&実行リターン
終了 表 編集対象表
ファイル削除 "preview.TBL"
終了 桐
---------------------------------------

と云う訳で、(さすがにちょいと遅いものの)バッチグーでした。
と云いたいところですが、う〜ん、なぜか強制改行文字とセクションの
分離禁止が有効にならない(?_?)。
単独で実行するとちゃんと挙動するんだが、別桐を立ち上げると何か変だぞ。
でも、ま、この点は明後日検討してみることにします。
ともかく、お蔭様でメドは立ったと云うご報告まで。
ありがとうございました。<(_ _)>
6490 Re:モーダルwfmから印刷プレビュー(再び) hidetake 2000/06/17-07:16
記事番号6489へのコメント
>の桐を立ち上げた際には、その表は「他のユーザーが使用中」と云う
>正しいエラーメッセージに出会います。(余談ながら「幽ザー」では

これは共有で開いていないから?

>  #桐パス名+"kiri8.exe","-R "+#データパス名+"preview1.cmd"

桐の起動オプションは \HELP\KIRI.TXT をご覧下さい。
/AO をつけなくても大丈夫でした?

6491 Re:モーダルwfmから印刷プレビュー(再び) hidetake 2000/06/17-08:34
記事番号6490へのコメント
知らなかったけど、.CMD (/R) だけは常時、別インスタンスで桐を起動するのですね...

6492 Re:モーダルwfmから印刷プレビュー(再び) hidetake 2000/06/17-08:59
記事番号6491へのコメント
>知らなかったけど、.CMD (/R) だけは常時、別インスタンスで桐を
>起動するのですね...

.CMD だけは、オプション無しで "KIRI.EXE" "COMMAND.CMD" で起動しても、
/O で起動しようと /AO で起動しようと /R で起動しようと別に桐が起動されると言うことです。


6505 Re:モーダルwfmから印刷プレビュー(再び) 悲しげ 2000/06/19-15:51
記事番号6490へのコメント
どもっ、hidetakeさん

>/AO をつけなくても大丈夫でした?

すいません、
前回は時間が無くて、この-AOパラメータの意味が判らず(説明テキストの所在を調べる時間がなく)、
ともかく試しただけでした。
所在を教えていただいてありがとうございました。
※ ただ、所在を知っていたとしても「インスタンス」の意味が
  判らなかった可能性は高いです(^^;)。この度は、話の流れ
  から意味は(大体)判りました。
で、結果的には、次の#6491で書かれたとおり、-Rだけは無指定でも
「別インスタンス」で桐が起動していたようです。
これはたまたまそうだった訳で、場合によってはうまく行かなくて
途方に暮れたかもしれません。(^^;)
以降、正しく-AOパラメータを付して記述することにします。

ついでにもう少しお付き合い下さい。

>>の桐を立ち上げた際には、その表は「他のユーザーが使用中」と云う
>>正しいエラーメッセージに出会います。(余談ながら「幽ザー」では
>
>これは共有で開いていないから?

然り。「専有」で開いています。と云うか、私は「共有」を使ったことがありませんので、よく判らないのです。
この(プレビューの)ために、元桐でも該当表を「共有」で開いておく必要があるのか、
あるいは別桐でcmdを起動した方だけ「共有」で開けばいいのか?
併せて、プレビューだけならデータ更新は有り得ないので「共有参照」とするのか?
ただの「参照」ではどうだろう? ………etc
私もこの後、判る範囲で試してみるつもりですが、予備知識を授けていただけると嬉しいです。(^^;)
6511 Re:モーダルwfmから印刷プレビュー(再び) hidetake 2000/06/19-18:55
記事番号6505へのコメント
/AO については、.CMD は関係無さそうだし、
他にオプションパラメータも必要ない場合は
一々 KIRI.EXE を指定して起動させなくても、Windows の関連付けに任せて、
シェル実行 "command.cmd" 形式でも良いのでは無いですか?
関連付けは /R しか付いておりませんけど...

あと、プレビュー対象のテーブルについては、基本的にスタンドアロンを対象としているのでしたら、
専有で開いて、テーブルの書き出しをされた方が、
いろいろ弄るテーブル操作のスピードとか、バックアップファイルの
作成とかメリットがあるのでは無いでしょうか?

そして、印刷対象として書き出したテーブルをフラグ代わりに、
これが削除されるまで、元の処理は待ち続けるとか...

どうしても、元のテーブルを処理対象としたい場合は、共有もある得るでしょうが、
その場合は、元は共有で開き、プレビュー用は共有参照で開くのでしょうね!

ちなみに .PRT を直接開く場合は「共有参照」でテーブルが開かれるようです。

6516 Re:モーダルwfmから印刷プレビュー(再び) 悲しげ 2000/06/19-21:21
記事番号6511へのコメント
どもっ、hidetakeさん

>あと、プレビュー対象のテーブルについては、基本的にスタンドアロンを
>対象としているのでしたら、専有で開いて、テーブルの書き出しをされた
>方が、いろいろ弄るテーブル操作のスピードとか、バックアップファイル
>の作成とかメリットがあるのでは無いでしょうか?

そうですか、ではそのようにすることにします。(^^)
元表を共有で開くつもりも今はありませんし。

どうもありがとうございました。<(_ _)>
6517 Re:モーダルwfmから印刷プレビュー(再び) 悲しげ 2000/06/19-21:24
記事番号6485へのコメント
ps:初心者さん江

hidetakeさんから教わった方法(桐をもう1本起動)で、表形式編集の方も試してみようかな。(^^;)
6519 Re:モーダルwfmから印刷プレビュー(再び) 悲しげ 2000/06/19-21:41
記事番号6489へのコメント
#6489(自分レス)
>と云いたいところですが、う〜ん、なぜか強制改行文字とセクション
>の分離禁止が有効にならない(?_?)。単独で実行するとちゃんと挙動
>するんだが、別桐を立ち上げると何か変だぞ。

「セクションの分離禁止」が無効と云う点はどうやら私の勘違いだったようです(再現しない)。
ただ強制改行文字はやはり利きません。
この点をもう少し説明させていただくと、強制改行文字は表の設定を活かすようにしてあります。
rpt印刷対象表を別な表として(とは云っても元表を枠組み書き出したものなのだが)
もう1本立ち上げた桐から印刷プレビューさせた時、強制改行文字が無効であった。
ただし1本目の桐からプレビューさせた際には(別表でも)有効。
でも、この点の対策が判りました。(^^)v
対象表は枠組み書き出ししたものですから、「表の強制改行文字が有効」な筈なのですが、
思うところあって、試しにこのチェックを外し、rptの方で設定してみたら、2本目の桐でもうまく行きました。
結論としては、印刷対象表を変更した時、(2本目の桐では)表の強制改行文字が活きない場合があるので、
強制改行文字の設定はrptの方で行った方が無難そうである。

戻る