MSFlexGridのカラー印刷 |
MSFlexGridのカラー印刷(Pictureに表示してPictureを印刷)その1 (039) | |
Private Sub Command10_Click() Dim frmLeft As Long Dim frmTop As Long Dim frmWidth As Long Dim frmHeight As Long Dim frmbakcol As Long Dim mfgLeft As Long Dim mfgTop As Long Dim mfgWidth As Long Dim mfgHeight As Long '元の位置とサイズを取得 With Form1 frmbakcol = .BackColor frmLeft = .Left frmTop = .Top frmWidth = .Width frmHeight = .Height 'フォームをグリッドの大きさに合せる .Move 0, 0, MSFlexGrid1.Width + 150, MSFlexGrid1.Height + 850 .BackColor = QBColor(15) End With With MSFlexGrid1 mfgLeft = .Left mfgTop = .Top mfgWidth = .Width mfgHeight = .Height '表示位置を左上に .Move 0, 0 End With DoEvents '画面、フォーム、ウィンドウを取り込んで印刷する方法(MSDN のサンプル使用) With Picture1 .AutoSize = True .AutoRedraw = True Set .Picture = CaptureClient(Me) 'MSDNの「 文書番号: JP161299」を見て下さい。 '[6.新規に追加したモジュールに次のコードを追加します] 以下をコピーし '標準モジュールに貼り付けて下さい。 Call sPrint .AutoRedraw = False End With DoEvents '元の位置とサイズに戻す Form1.Move frmLeft, frmTop, frmWidth, frmHeight MSFlexGrid1.Move mfgLeft, mfgTop, mfgWidth, mfgHeight Form1.BackColor = frmbakcol DoEvents End Sub Private Sub sPrint() On Error Resume Next Dim lngHeight As Long Dim lngWidth As Long Dim sngHZoomRitu As Single Dim sngWZoomRitu As Single Picture1.ScaleMode = vbTwips Printer.ScaleMode = vbTwips '用紙サイズをA4に設定 Printer.PaperSize = vbPRPSA4 '用紙方向を横向きに設定 Printer.Orientation = vbPRORLandscape 'Imageファイルの寸法を取得 lngHeight = Picture1.Height lngWidth = Picture1.Width '印刷サイズより画像サイズが大きい場合のみ縮小 If lngHeight > Printer.Height - 1100 Or lngWidth > Printer.Width - 1800 Then '拡大・縮小率を計算 sngHZoomRitu = (Printer.Height - 1100) / lngHeight sngWZoomRitu = (Printer.Width - 1800) / lngWidth '元のサイズの縦横比で用紙いっぱいに拡大・縮小 If sngHZoomRitu < sngWZoomRitu Then lngHeight = lngHeight * sngHZoomRitu lngWidth = lngWidth * sngHZoomRitu Else lngHeight = lngHeight * sngWZoomRitu lngWidth = lngWidth * sngWZoomRitu End If End If Printer.PaintPicture Picture1.Image, 800, 400, lngWidth, lngHeight Printer.EndDoc ' 印刷開始 End Sub 印刷結果 |
|
MSChart コントロールの印刷同様MSDNの「文書番号: JP161299」に掲載されているサンプル を使用して PictureBox コントロール内に フォームイメージを取り込んでイメージを印刷します MSFlexGridの表示サイズに合せてフォームを表示しております。 印刷したい範囲をMSFlexGridのサイズを変えて印刷して下さい。 |
|
MSFlexGridのカラー印刷(Pictureに表示してPictureを印刷)その2 (039) 私も知らなかったのですが MSFlexGrid1.Picture を使用することでMSFlexGridのスナップショットが取れます。それをクリップボードやPictureコントロールに設定することで簡 単に印刷することができます。(VB5.0 VB6.0 でOKです) Private Sub Command11_Click() With MSFlexGrid1 .TopRow = .FixedRows '用紙に入らない場合はここを変更 .LeftCol = .FixedCols 'して2枚目に印刷して下さい .PictureType = flexPictureColor '高品質のカラー End With With Picture1 .AutoSize = True .AutoRedraw = True 'PictureコントロールへMSFlexGrid1のスナップショットを送ります .Picture = MSFlexGrid1.Picture Printer.PaintPicture .Image, 800, 400, .Width, .Height Printer.EndDoc .AutoRedraw = False End With End Sub |
|
上記どちらの方法も画面イメージを印刷しております。従って文字等は綺麗に印刷されませんし、画像 としての印刷設定しか出来ません。 綺麗に印刷したい場合や細かい設定で印刷したい場合は、データを印刷する(罫線・改ページ処理 含む)(No.3)のように地道にコードを書いて下さい。 |
2002/05/05