NPS 印刷制御システム、NPS伝票発行システム

 

  NPSNSS下で印刷全体を制御します。

  1.VB_NPS 印刷フォーム設計

    1-1.印刷フォームの設計をビジュアルに行います。

     ControlTextBox(Label含む),Image,Panel,Line,Ovalの指定ができます。

     Imageは通常イメージの他にBarcodeJAN13,JAN8,Code39,Code128,NW7,QRCode

     印刷が可能です。

        (Property)

         Name        ID

         TabIndex     論理順

         X           X位置(相対指定可能)

         Y           Y位置(相対指定可能)

         Width        幅

         Height        高さ

         偏差          前フィールドとの差

         BorderStyle    境界線スタイル

         BorderColor    境界線色

         BorderWidth    境界線太さ

         BorderSides    境界線描画サイド left,right,top,bottom

         LeftMargin     境界線との左マージン

         TopMargin     境界線との上マージン

         BottomMargin  境界線との下マージン

         角丸円弧半径    方形の場合の角半径

         BackColor      背景色

         TextColor      文字色

         見出し         見出し付Controlの時

         付記          付記付Controlの時

         見出し付記上下  見出し、付記の上下配置

         データタイプ      NSSデータタイプ(システム全体制御) 

         行数

         桁数

         編集コード

         フォント

         縦書

         半角縦書      半角文字の縦書,横書

         回転角度      90,180,270

         均等割付サイズ

         行間         複数行の単位行間

         TextAlign     Text位置

         初期値s

 

    1-2.背景ImageBitmap等のImageを表示し、指定帳票の設計がビジュアルにできます。

   

 

    1-3.通常帳票

    

 

  2.印刷設定の事前確認画面

   

     Textファイル(X)の指定でタブ区切りテキストデータ(TSV)へ出力が可能です。(Excelモード)

     出力は印刷データを縦2.5mmの範囲で分割して、左より右へ各印刷項目を出力します。

 

  3.印刷PreView画面

   PreViewデータはDiskへ各ページのEMF形式で保存されますので、頁数はDisk容量が許す限り可能です。

   Diskへの出力速度は1,000,000頁 約45(CPU3.0MH DualCore)

   

    3-1.印刷PreView内容のDiskへの保存、復元ができます。(EMF方式)

        Diskへ保存データより再度表示、印刷が可能です。

   

    3-2.上記処理は VB_保存イメージより印刷(弊社ユーティリティ) でも可能です

    3-3.印刷データの形式変換ができます。

    

 

  4.VB.NETによる印刷プロセス

    印刷プロセスはWindows VB.NET PrintDocument方式に準拠します。

    (main)

         Dim nps As New nps金銭出納帳(Me, utb印刷装置._Val)

         nps.g_frm金銭出納帳 = Me

         nps.nfPrint(, False)

 

    (nps金銭出納帳) VB_NPSで生成されたコードに補完します。

Imports NSSVB2008

Imports System.Windows.Forms

Imports System.Drawing

Imports System.Collections.Generic

 

Public Class nps金銭出納帳

   '''''''''UserData定義エリア

   ''''''''form

   Public g_frm金銭出納帳 As frm金銭出納帳

   Private g_lst明細 As List(Of String)

   Private g_pLine As Integer

 

   ''' <summary>NPS PrintDocument</summary>

   Private WithEvents g_npd As New nNPSPrintDocument

   Private g_frm As Form = Nothing

 

   ''' <summary>

   ''' NPS Newコンストラクタ

   ''' [使用方法]Dim nXXX As New npsXXX

   ''' </summary>

   ''' <param name="frm">Message表示用Form</param>

   ''' <param name="strPrinter">Printer設定null=既定値</param>

   Public Sub New _

      (ByVal frm As Form _

     , Optional ByVal strPrinter As String = "" _

      )

      Try

         g_frm = frm

         If strPrinter <> "" Then

            g_strPrinter = strPrinter

         End If

         NPS.nfプリンタ定義よりPrinterSettings(g_strPrinter, g_npd)

         If g_npd._帳票名= "document" AndAlso _

            g_str帳票名<> "" Then

            g_npd._帳票名= g_str帳票名

         End If

      Catch ex As Exception

         NError.nfShow(ex, Err.Number)

      End Try

   End Sub

 

   ''' <summary>

   ''' BeginPrint Event

   ''' ドキュメントの最初のページが印刷される前に発生します

   ''' </summary>

   ''' <param name="sender">nNPSPrintDocument</param>

   ''' <param name="e">PrintEventArgs</param>

   Private Sub g_npd_neBeginPrint _

      (ByVal sender As System.Object _

     , ByVal e As Printing.PrintEventArgs _

      ) Handles g_npd.neBeginPrint

      Try

         '''''''ユーザー処理定義エリア

         Dim ugd As ucNSSGrid = g_frm金銭出納帳.ugd明細

         g_lst明細= ugd.nfDataUnloadToList()

         'NMsgBox.nfShow(g_lst明細)

         g_pLine = 0

      Catch ex As Exception

         NError.nfShow(ex, Err.Number)

      End Try

   End Sub

 

   ''' <summary>

   ''' QueryPageSettings Event

   ''' PrintPage イベントの直前に発生します

   ''' ドキュメントの各ページを異なるページ設定を使用して印刷できます

   ''' </summary>

   ''' <param name="sender">nNPSPrintDocument</param>

   ''' <param name="e">QueryPageSettingsEventArgs</param>

   ''' <param name="intPageNO">現在のPageNO</param>

   Private Sub g_npd_neQueryPageSettings _

      (ByVal sender As System.Object _

     , ByVal e As Printing.QueryPageSettingsEventArgs _

     , ByVal intPageNO As Integer _

      ) Handles g_npd.neQueryPageSettings

      Try

         '''''''ユーザー処理定義エリア

 

 

         '''''''NPS Color printer color設定

         If g_npd.g_PrinterSettings.SupportsColor = True Then

            e.PageSettings.Color = True

         End If

      Catch ex As Exception

         NError.nfShow(ex, Err.Number)

      End Try

   End Sub

 

   ''' <summary>

   ''' PrintPage Event

   ''' 現在のページに印刷する出力が必要なときに発生します。

   ''' 印刷が時頁に続く時はe.HasMorePages=True(既定値=False) を指定する事

   ''' </summary>

   ''' <param name="sender">nNPSPrintDocument</param>

   ''' <param name="e">PrintPageEventArgs</param>

   ''' <param name="intPageNO">現在のPageNO</param>

   ''' <param name="blnPrintSkip">true=Print Skip</param>

   Private Sub g_npd_nePrintPage _

      (ByVal sender As System.Object _

     , ByVal e As Printing.PrintPageEventArgs _

     , ByVal intPageNO As Integer _

     , ByRef blnPrintSkip As Boolean _

      ) Handles g_npd.nePrintPage

      Try

         'e.Graphics.DrawRectangle(Pens.Black, e.MarginBounds)  '''''''Margin印刷

         '''''''ユーザー処理定義エリア

         utb処理区分.nfDraw(e, , g_frm金銭出納帳.urb処理._Val)

         utb年月.nfDraw(e, , g_frm金銭出納帳.utb年月._Val)

         utb作成日.nfDraw(e, , Now.ToShortDateString)

         utb作成時.nfDraw(e, , Now.ToLongTimeString)

         utb.nfDraw(e, , intPageNO)

 

         Dim pf As PointF = upnlSubTitle.upnlSubTitle.g_rctfBounds.Location

         upnlSubTitle.nfDraw(e, pf)

         Do

            If g_pLine > g_lst明細.Count - 1 Then

               e.HasMorePages = False

               Exit Do

            End If

 

            Dim strItems() As String = NStr.nfSplit(g_lst明細(g_pLine), , , , 9)

            If strItems(0).Contains(vbBack) Then

               strItems(0) = Mid(strItems(0), 1, strItems(0).IndexOf(vbBack))

            End If

            If strItems(3).Contains(vbBack) Then

               strItems(3) = Mid(strItems(3), 1, strItems(3).IndexOf(vbBack))

            End If

            If strItems(4).Contains(vbBack) Then

               strItems(4) = Mid(strItems(4), 1, strItems(4).IndexOf(vbBack))

            End If

            If strItems(5).Contains(vbBack) Then

               strItems(5) = Mid(strItems(5), 1, strItems(5).IndexOf(vbBack))

            End If

            If strItems(6).Contains(vbBack) Then

               strItems(6) = Mid(strItems(6), 1, strItems(6).IndexOf(vbBack))

            End If

            If strItems(7).Contains(vbBack) Then

               strItems(7) = Mid(strItems(7), 1, strItems(7).IndexOf(vbBack))

            End If

            If strItems(8).Contains(vbBack) Then

               strItems(8) = Mid(strItems(8), 1, strItems(8).IndexOf(vbBack))

            End If

 

            upnl明細.utb月日._Val = strItems(0)

            upnl明細.utb摘要._Val = strItems(3)

            upnl明細.utb支払先._Val = strItems(4)

            upnl明細.utb内訳._Val = strItems(5)

            upnl明細.utb支払金額._Val = strItems(6)

            upnl明細.utb収入金額._Val = strItems(7)

            upnl明細.utb残高._Val = strItems(8)

            pf.X = upnl明細.upnl明細.g_rctfBounds.X

            If g_pLine = g_lst明細.Count - 1 Then

               upnl明細.ul明細.g_typBorderStyle = Drawing2D.DashStyle.Solid

            End If

 

            If upnl明細.nfDraw(e, pf) = False Then

               e.HasMorePages = True

               Exit Sub

            End If

            g_pLine += 1

         Loop

         '''''''''合計

         pf.X = utb合計支払金額.g_rctfBounds.X

         utb合計支払金額._Val = g_frm金銭出納帳.ulbl当月支払金額._Val

         utb合計収入金額._Val = g_frm金銭出納帳.ulbl当月収入金額._Val

         Dim sngY As Single = pf.Y

         If utb合計支払金額.nfDraw(e, pf) = False Then

            e.HasMorePages = True

            Exit Sub

         End If

         pf.X = utb合計収入金額.g_rctfBounds.X

         pf.Y = sngY

         utb合計収入金額.nfDraw(e, pf)

      Catch ex As Exception

         NError.nfShow(ex, Err.Number)

      End Try

   End Sub

 

   ''' <summary>

   ''' EndPrint Event

   ''' ドキュメントの最後のページが印刷されたときに発生します。

   ''' </summary>

   ''' <param name="sender">nNPSPrintDocument</param>

   ''' <param name="e">PrintEventArgs</param>

   Private Sub g_npd_neEndPrint _

      (ByVal sender As System.Object _

     , ByVal e As Printing.PrintEventArgs _

      ) Handles g_npd.neEndPrint

      Try

         '''''''ユーザー処理定義エリア

 

 

      Catch ex As Exception

         NError.nfShow(ex, Err.Number)

      End Try

   End Sub

 

End Class

 

 

 

  11.NPS伝票発行システム

     NPS伝票発行システムはユーザー指定により簡単に各種伝票を作成できるように、

     NPSを利用して開発したシステムです。

     顧客別に伝票形式が異なり多種の伝票が必要な場合に威力を発揮します。

   

 

  11-1.伝票指定

      NPS帳票設計で基本パターンより伝票を設計します。

   

 

  11-2.データ項目指定

       伝票とデータ項目の関連を指定します。

  

 

  11-3.テスト発行

     テスト発行で伝票内容を確認します。