NPS 印刷制御システム、NPS伝票発行システム
NPSはNSS下で印刷全体を制御します。
1.VB_NPS 印刷フォーム設計

1-1.印刷フォームの設計をビジュアルに行います。
ControlはTextBox(Label含む),Image,Panel,Line,Ovalの指定ができます。
Imageは通常イメージの他にBarcodeのJAN13,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.背景ImageにBitmap等の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.テスト発行
テスト発行で伝票内容を確認します。
