環境 OS:XP VB:Visual Studio.NET2003 SPREAD:6.0です。
フォームにスプレッドを差し込んでいるのですが、印刷プレビューの設定をするときにPrintdocument1のプログラムをどう書いていいかわかりません。こういった場合はどう書けばいいのでしょうか。お答えを頂ければと思います。よろしくお願いします。
印刷はどのように行っていますか?
PrintSheetメソッド?
うなまなさん、ご質問ありがとうございます。
はい。最初はspread1.printsheet(0)で印刷を行なっていました。
これでspreadの表は印刷できるのですが、表が大きいので縦に長い分はいい
のですが、横ははみ出してしまうのは困っています。その後、VBの本を参考にして、
印刷するときのプログラムはこのようにしています。
PrintDocument1.DefaultPageSettings = pagesetting
strprint = FpSpread1.Sheets(0)
PrintDialog1.Document = PrintDocument1
If PrintDialog1.ShowDialog = DialogResult.OK Then
PrintDocument1.Print()
Else
Exit Sub
End If
このように印刷するプログラムは初めてで、スプレッドの表をどういう風に
プログラムとして書けばいいか、わからない状態です。本当、初心者で申し訳ないのですが、
アドバイスでも何でも教えていただけると、幸いです。
横にはみ出すのが困るのは分かるのですが、それをどのように対処
したいのでしょうか?
>横にはみ出すのが困るのは分かるのですが、それをどのように対処
>したいのでしょうか?
印刷プレビューを見てはみ出している場合は,スプレッドの表を印刷した紙に収まる様にしたいと思っていますが、ページ設定で用紙を横にすれば問題
ないかと思いました。申し訳ありません。大変失礼しました。
問題なのは印刷プレビューを見ることができない、ということです。
私が困っているのはプレビューを見る際、PrintPreviewDialogを開く
のは問題ないと思うのですが、PrintDocument1(Private Sub PrintDocument1_PrintPage)の部分のプログラムをどう書いたらいいのか
分からないということです。
'印刷プレビューを表示する際の処理
Private Sub MenuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem4.Click
Try
PrintDocument1.DefaultPageSettings = pagesetting
strprint = FpSpread1.Sheets(0)
PrintPreviewDialog1.Document = PrintDocument1
PrintPreviewDialog1.ShowDialog()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
このようにしています。あとはPrintDocumentが出来れば動作できるかと思っ
ています。調べてみたのですが、今回のようにスプレッドの場合の
PrintDocumentでは何を定義して、どう処理すればいいのか分かりません。
一応以下のようにしています(まだほとんど書けていませんが)。
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Try
Dim fontsize As New Font("me ui gothic", 11)
Dim intnumberchars As Integer '印刷が可能な1ページあたりの文字数
Dim intnumberlines As Integer '1ページあたりの行数
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
今のところこんな感じです。この部分のプログラムの書き方など教えてもら
えたらと思います。もしかしたら、ここに乗せたプログラムに間違いがあっ
たり、私が勘違いしている部分があるかもしれませんが、ご意見をいただきたいと思いますので、よろしくお願いします。
用紙方向を横にしたいのであれば、
With Me.FpSpread1_Sheet1
.PrintInfo.Preview = True
.PrintInfo.Orientation = FarPoint.Win.Spread.PrintOrientation.Landscape
.PrintInfo.ShowPrintDialog = True
End With
Me.FpSpread1.PrintSheet(Me.FpSpread1.ActiveSheetIndex)
でいいかと思います。
PrintDocumentを利用する方法に関しては、詳しくないので・・・すみません。
まず、Spreadがシートを画像で出力できるか
確認してください。(Spread .NETは可能なようですがSpread 6.0はこちらでは確認できません)
画像がとれれば、PrintDocumentで出力可能です。
うなまなさん あんさん
アドバイスありがとうございます。
スプレッドの印刷プレビューの件ですが、
スプレッドのSPREADデザイナのシートの印刷オプションというところで
印刷プレビューというチェックボックスがあるのですが、それにチェックをつけることで、印刷時、プレビューを表示することが出来るようになりました。
上記にプログラムを書いた文について
>PrintDocument1.DefaultPageSettings = pagesetting
> strprint = FpSpread1.Sheets(0)
> PrintDialog1.Document = PrintDocument1
>
> If PrintDialog1.ShowDialog = DialogResult.OK Then
> PrintDocument1.Print()
> Else
> Exit Sub
> End If
としていましたが、
spread1.Print()
といきなりシンプルですが、デザイナでさっきの設定をしておけば
印刷するとき、一度プレビューを表示してくれるようです。
一応これで、印刷プレビューの表示は可能になりましたので、最後は自己解決となってしまいましたが、解決チェックをいれさせて頂きます。
今回は設定を少し変えるだけで出来たのですが、プログラムをしっかり書いて、自分で仕組みが理解できなかったので、あんさんのアドバイスを参考にまたやってみたいと思います。うなまなさんのプログラムで用紙の方向を変えることもやってみます。ありがとうございました。
また、分からない事もいろいろでて書かせていただくと思いますが、その際は皆様、ご教授よろしくお願いします。
ツイート | ![]() |