[リストへもどる]
一括表示

投稿時間:2003/01/23(Thu) 16:13
投稿者名:しろ
Eメール:
URL :
タイトル:
印刷中のダイアログ
初めて投稿させていただきます。

プリンタの印刷中ダイアログを作ろうと思っています。
仮にメイン画面をA、印刷条件指定画面をB、印刷中ダイアログをC
フォームとします。

AフォームからBフォームをモーダルで表示してBフォームから
Cをモードレスで開くとエラーが発生します。
エラーの内容を見たところBフォームをunload又はhideしないとダメ
なようですが、私としてはBフォームはそのまま画面表示として残し
たいのです。
何かいい方法は無いのでしょうか?

簡単ですがやりたいことをまとめてみました。

@AフォームからBフォームをモーダルで開きます。
ABフォームで印刷条件を指定して、印刷のロジックはこのフォームで定義します。
BCフォームを印刷前にモードレスで開きキャンセルボタンをクリックしたら
 印刷を中止する。中止はDoeventsをBフォームに定義してそれで判定する。

私が考えたのはこの方法ですが、他に印刷を中止するダイアログを表示して
印刷情報をアボートできる方法があるようでしたら教えてください。

投稿時間:2003/01/23(Thu) 17:04
投稿者名:takk
Eメール:
URL :
タイトル:
Re: 印刷中のダイアログ
モーダルフォームを表示している間はモードレスでフォームを開くことは出来ません。

Cフォームをモーダルで表示すれば良いと思います。
というか、なぜCフォームをモードレスで表示したいのでしょうか?

投稿時間:2003/01/23(Thu) 17:48
投稿者名:しろ
Eメール:
URL :
タイトル:
Re^2: 印刷中のダイアログ
私の組み方が問題あるのかもしれないのですが・・・
Bフォームで印刷のロジックが記述してあるのでCフォームをモーダルで開くと
それ以下のロジックはCフォームを閉じない限り止ってしまいます。
Cフォームは印刷キャンセル用のボタンしか表示しません。


以下はBフォームの印刷イベントを簡単にまとめてみました。

Private sub 印刷開始_Click()
  C.show →ここをモーダルで開くと以下の処理が止まってしまう。  
  While レコードセットがEOFになるまで
    印刷のロジック
   DoEvents
    If Cフォームでキャンセルをクリックしたか then
       印刷処理アボート
      Exit sub
    End if
  Wend

End Sub

投稿時間:2003/01/23(Thu) 18:15
投稿者名:takk
Eメール:
URL :
タイトル:
Re^3: 印刷中のダイアログ
じゃあ、Bフォームを開く前にAフォームのEnabledをFalseにして、
Bフォームをモードレスで開けばいいんじゃないでしょうか。
そうすればCフォームをモードレスで開くことが出来ます。

投稿時間:2003/01/23(Thu) 21:55
投稿者名:しろ
Eメール:
URL :
タイトル:
Re^4: 印刷中のダイアログ
おお〜そうですね。
そうすれば問題なさそうですね。
う〜ん・・・ちょっと考えればわかりそうなのに全然気がつきませんでした。
どうもありがとうございました。