アプリ版:「スタンプのみでお礼する」機能のリリースについて

フォームとそのフォーム上にあるMSFlexグリッドの
ハードコピーを、やはりそのフォーム上に設けたコマンド
ボタンのクリック一発で行えるようにしたいのです。

下記の構文で、PrintFormメソッドを使ってやってみましたが、
MSFlexグリッドの部分が真っ黒に印刷されてしまいます。

With Printer
.PaperSize = vbPRPSA4
.Orientation = vbPRORLandscape
End With

Form_Ichiran.PrintForm
 
どなたかご存知の方、よろしくお願いします。

A 回答 (2件)

どもども田吾作7です。



どうやらOCXのコントロール類はPrintFormの対象になってくれないようですね。
実験して初めて知りました。(-ロ-;グハッ
ですので、フォームのデバイスコンテキストを使用したら、うまくいったみたいなので、ご報告いたします。


With Me
'フォームのスケールモードをピクセルにします。
.ScaleMode = vbPixels
'Printerオブジェクトのスケールをピクセルにします。
Printer.ScaleMode = vbPixels


'Printerオブジェクトの出力を促します。
Printer.Print
'Printerオブジェクトへフォームを描画します。
Call StretchBlt(Printer.hdc, 0, 0, Printer.ScaleWidth, Printer.ScaleHeight, .hdc, 0, 0, .ScaleWidth, .ScaleHeight, vbSrcCopy)
'Printer オブジェクトに送っているドキュメントを終了し、印刷デバイスやスプーラに出力処理の制御を渡します。
Printer.EndDoc

End With


ってな感じでしょうか?
あらかじめフォームをピクセルにしておいたら一行省略できると思います。
StretchBltで、Printオブジェクトのサイズに、フォームを描画しているので、あらかじめPrinterオブジェクトのWidth/Heightを設定してあげると、間延びした印刷にはならないと思います。

でわでわ
    • good
    • 0

再度、田吾作7です。



返事が無いところを見ると、解決したのかな?
それともわからなくて困ってるのかな?
もしそうだとしたら、遠慮なく質問してくださいね。
    • good
    • 0
この回答へのお礼

お礼が大変に遅れてしまいました。
本当に助かりました。どうもありがとうございます。
客先に10日以上も詰めて、火を噴いたプロジェクトの
納品作業をやっており、まったく時間がありませんでした。

おかげさまで今日の夜には帰れそうです。
どうもありがとうございました。
また、なにかあった時にはよろしく御教授ください。

お礼日時:2001/07/25 16:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!