VB6.0で印刷プレビューを行うには?

解決


別加夢  2005-02-24 00:16:43  No: 88568

VB6.0で印刷プレビューを作成するコントロールもしくは方法ありましたら
教えてください。.NETだとPrintPreviewControlとかいうのがあると聞きま
した。6.0の場合は印刷プレビューを作成するコントロールありませんか?
現在の印刷方法は
  Printer.Print  ・・・・
というように印刷してて、特にActiveReportのような特殊なコントロール
は使用していません。どなたか方法が分かる方教えてください。


魔界の仮面弁士  2005-02-24 02:01:34  No: 88569

印刷に、「Printer.Print」などを使っているなら、プレビューには
「Form2.Print」や「Picture1.Print」などを使ってみては如何でしょう。

たとえば、印刷ロジック部分を

  Public Sub Draw(ByVal Campus As Object)
     If Not TypeOf Campas Is Printer Then
         Campas.Cls
     End If

     '印刷処理
     Campas.Print "データ"
     Campas.Line (0, 0)-(1000, 1000)

     If TypeOf Campas Is Printer Then
         Campas.EndDoc
     End If
  End Sub          

のようにしておけば、印刷時には
   Draw Printer
プレビュー時には
   Draw Picture1
のように記述する事ができます。


魔界の仮面弁士  2005-02-24 02:03:01  No: 88570

あう。スペルミス。m(_ _)m

>  Public Sub Draw(ByVal Campus As Object)
>     If Not TypeOf Campas Is Printer Then

Campas ではなく、Campus に統一しておいてください。


別加夢  2005-03-03 23:26:49  No: 88571

返答遅くなりました。
確かにこの方法ならプレビューのようなものができると思います。
ですが、改ページなどで複数ページにわたる場合対応できないのでは?
という疑問が浮かびます。やはり、VB6.0だと印刷プレビューを作成する
コントロールがないのでしょうか?


030  2005-03-03 23:33:44  No: 88572

>改ページなどで複数ページにわたる場合対応できないのでは?
そこはあなたの腕の見せ所なんじゃないですか?

というより質問は印刷プレビューを作りたいじゃなくて
印刷プレビューのでるコントロールが欲しいですか?
買い物ならあると思いますよ。


魔界の仮面弁士  2005-03-04 19:28:23  No: 88573

> VB6.0だと印刷プレビューを作成するコントロールがないのでしょうか?

あります。印刷プレビュー機能を持つコントロールとしては、
VB6にDataReportコントロールやCrystalReportコントロールが
付属しています。エディションにもよりますけれども。

ただ、これらは Printerオブジェクトとは印刷手順がまったく異なるので、
現在の「Printer.Print  ・・・・」なコードを流用する事はできません。

現在の印刷ロジックを捨て去っても良いのであれば、こうした
外部コンポーネントに頼ってみるのも手かも知れません。

> 改ページなどで複数ページにわたる場合対応できないのでは?
たとえば、プレビューフォーム側に、独自のNewPageメソッドを
実装しておき、その中で
  Public Sub NewPage()
    Set Picture配列変数(n) = Me.Image
    Me.Cls
  End Sub
のような実装を行うことで対応できないでしょうか?

で、別途実装したページ切り替えボタンで、
  Set .Picture = Picture配列変数(ページ番号)  
のようにして切り替えて表示させるとか……。

# ちなみに、秀丸エディタのプレビュー機能(秀丸パブリッシャー)は、
# VB6にて開発されているようですね。(プレビュー部分はPictureBox)


別加夢  2005-03-05 20:53:23  No: 88574

魔界の仮面弁士さん、親切丁寧にありがとうございます。
アドバイスを参考に色々試してみようと思います。
一応、これでこの質問は解決という扱いにしたいと思います。
今後ともよろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加