Imports System.Drawing
Imports System.Math
Imports System.IO
Imports System.Drawing.Printing
Imports CEpole.C_Epole
Public Class Defalut_PrintForm
Dim 행정도시 As String = ""
Dim 지역명 As String = ""
Dim 번지 As String = ""
Dim 관리번호1 As String = ""
Dim 관리번호2 As String = ""
Dim 문의전화1 As String = ""
Dim 문의전화2 As String = ""
Dim 비고1 As String = ""
Dim 비고2 As String = ""
Dim 비고3 As String = ""
'Cls_Tongshin
Dim 간선명 As String = "" 'GetSpread(Dv1, "간선명")
Dim 전주번호 As String = "" 'GetSpread(Dv1, "전주번호")
Dim 전주번호2 As String = "" 'GetSpread(Dv1, "전주번호2")
Dim 중계기명 As String = "" 'GetSpread(I, "중계기명")
Dim 시공일 As String = "" 'GetSpread(I, "시공일")
Dim 시공자 As String = "" 'GetSpread(I, "시공자")
Dim 연락처1 As String = "" 'GetSpread(I, "연락처1")
Dim 연락처2 As String = "" 'GetSpread(I, "연락처2")
'Cls_LCable
Dim OLT번호 As String = ""
Dim 구축선번 As String = ""
Dim 구간명 As String = ""
Dim 시설구분 As String = ""
Dim 케이블종별 As String = ""
Dim 케이블명 As String = ""
Dim 접속점명 As String = ""
Dim 제조회사 As String = ""
Dim 설치년월 As String = ""
Dim 시공회사 As String = ""
Dim 관리기관 As String = ""
Dim 감리원 As String = ""
Protected QRCODE1 As String = ""
Protected QRCODE2 As String = ""
Protected QRCODE3 As String = ""
Protected QRCODE4 As String = ""
Protected 일련번호 As String = ""
Dim Dv1 As DataView
'//Events
Public WithEvents pDoc As New PrintDocument
Public Event StatusMessage(ByVal Message As String, ByVal type As e_EventMessage)
Public Event SelectedControl(ByVal obj As CEpole.C_label)
Public Event DesignMode_Change(ByVal Mode As E_DesignMode)
'//Shadows
Public SrcTable As DataTable '//이건 각 폼에서 반드시 정의해서 써야한다.
Public StyleDir As DirectoryInfo
Public LogFile As String
Public StyleFileC As String
Public StyleTag As String
Public SetForm As Frm_Prnset
Public DT As DataTable
Private vDesignMode As E_DesignMode
Public DisableWaterMark As Boolean = False
'//Shape 추가 090515
Public Draw_Line As Shape_line
Public Draw_Box As Shape_Box
Public Draw_Image As Shape_Image
Public Draw_Circle As Shape_Circle
'//qr추가 20120722
Public Draw_QRcode As Shape_QRcode
'//이것들 공개해놓고 디자인모드에서 선택저장해놔도 오류난다
'//숨김으로 설정하고 프로퍼티 만들어서 놓자
Private Shadows WithEvents v_picturebox1 As Windows.Forms.PictureBox
Private Shadows WithEvents v_scrolbar As Windows.Forms.ScrollBar
Private Shadows WithEvents v_Bn As Windows.Forms.BindingNavigator
'//캔바스조절용 버튼 정의
Private Shadows WithEvents bt_canvasD As Windows.Forms.ToolStripButton
Private Shadows WithEvents bt_canvasU As Windows.Forms.ToolStripButton
Private Shadows WithEvents bt_canvasL As Windows.Forms.ToolStripButton
Private Shadows WithEvents bt_canvasR As Windows.Forms.ToolStripButton
'//스타일저장.패턴저장용 버튼정의
Private Shadows WithEvents bt_SL As Windows.Forms.ToolStripButton
Private Shadows WithEvents bt_SL2 As Windows.Forms.ToolStripButton
'Private Shadows WithEvents bt_SC As Windows.Forms.ToolStripButton
Private Shadows WithEvents bt_SS As Windows.Forms.ToolStripButton
'//Normal
Public AllLabels() As CEpole.C_label '//전체갯수는 추가할대 셋팅한다.
Public AllFullLabels() As S_FullLable '//쪼개지지않은 1개의 아이템이 들어있다.
Public NoView As Boolean = False '//LOAD_STYLE 을 잠시 실행하지 않기위햇(중복실행방지)서 둔다.(..이벤트가.. -_-;;너무 중복으로 발생함)
Public SrcIdx As Integer = -1 '//원본 리뷰에서 클릭된 인덱스
Public Srcnum As Integer = -1 '//원본 리뷴에서 클릭된 번호값
Public Srcrow As DataRowView
Public FirstIdx As Integer = -1 '//새로 생성된 리뷰에서 적용될 인덱스
Public SelCon As New ArrayList '//선택된 레이블들이 저장된 배열이다.
Public SelConDraw As New ArrayList '//선택된 쉐이프 개체
Public OnlyOne As CEpole.C_label '//포커스를 가진 레이블이다.
Public Dv As DataView '//데이터뷰(실제로 이 뷰의 데이터를 가지고 출력을 행한다.)
Public printindex As Integer = 0 '//프린트되는 페이지 번호 이값이 -1 이면 현재페이지이므로 갱신하지 않고 출력한다.
Public PrintArray() As Integer '//프린트할 페이지의 배열번호
'Public Auto_Log As Boolean '//로그를 사용할지 안할지
Public Admin As Boolean
Public DefStyleIndex As Short '//기본으로 사용할 스타일 인덱스
Public Arin As New ACC.ARINCLASS
Private Mylog As New Frm_Log
Public OldType As Boolean
Public Fixed() As String '//고정문자가 들어있는데이터이다.
'''
''' 디자인모드를 번환/설정 합니다.
'''
'''
'''
'''
Public Property DMode() As E_DesignMode
Get
Return Me.vDesignMode
End Get
Set(ByVal value As E_DesignMode)
Me.vDesignMode = value
RaiseEvent StatusMessage("Design Mode = Default TextMode From From_Load Event", e_EventMessage.Normal)
RaiseEvent DesignMode_Change(value)
End Set
End Property
'''
''' 현재지정된스타일파일명을 가져옵니다.
'''
'''
'''
'''
Public ReadOnly Property DesignFile() As FileInfo
Get
Return New FileInfo(ReplaceExt(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File, "Design"))
End Get
End Property
#Region "컨트롤연결을 위한 속성선언"
Public Property Ctl_Button_D() As Windows.Forms.ToolStripButton
Get
Return Me.bt_canvasD
End Get
Set(ByVal value As System.Windows.Forms.ToolStripButton)
Me.bt_canvasD = value
End Set
End Property
Public Property Ctl_Button_u() As Windows.Forms.ToolStripButton
Get
Return Me.bt_canvasU
End Get
Set(ByVal value As System.Windows.Forms.ToolStripButton)
Me.bt_canvasU = value
End Set
End Property
Public Property Ctl_Button_l() As Windows.Forms.ToolStripButton
Get
Return Me.bt_canvasL
End Get
Set(ByVal value As System.Windows.Forms.ToolStripButton)
Me.bt_canvasL = value
End Set
End Property
Public Property Ctl_Button_r() As Windows.Forms.ToolStripButton
Get
Return Me.bt_canvasR
End Get
Set(ByVal value As System.Windows.Forms.ToolStripButton)
Me.bt_canvasR = value
End Set
End Property
''//스타일저장.패턴저장용 버튼정의
Public Property Ctl_Button_SaveL() As Windows.Forms.ToolStripButton
Get
Return Me.bt_SL
End Get
Set(ByVal value As System.Windows.Forms.ToolStripButton)
Me.bt_SL = value
End Set
End Property
Public Property Ctl_Button_SaveL2() As Windows.Forms.ToolStripButton
Get
Return Me.bt_SL2
End Get
Set(ByVal value As System.Windows.Forms.ToolStripButton)
Me.bt_SL2 = value
End Set
End Property
'Public Property Ctl_Button_SaveC() As Windows.Forms.ToolStripButton
' Get
' Return Me.bt_SC
' End Get
' Set(ByVal value As System.Windows.Forms.ToolStripButton)
' Me.bt_SC = value
' End Set
'End Property
Public Property Ctl_Button_SaveS() As Windows.Forms.ToolStripButton
Get
Return Me.bt_SS
End Get
Set(ByVal value As System.Windows.Forms.ToolStripButton)
Me.bt_SS = value
End Set
End Property
'//기타 컨트롤
Public Property Ctl_PictureBox() As Windows.Forms.PictureBox
Get
Return Me.v_picturebox1
End Get
Set(ByVal value As System.Windows.Forms.PictureBox)
Me.v_picturebox1 = value
End Set
End Property
Public Property Ctl_BindingNavi() As Windows.Forms.BindingNavigator
Get
Return Me.v_Bn
End Get
Set(ByVal value As System.Windows.Forms.BindingNavigator)
Me.v_Bn = value
End Set
End Property
Public Property Ctl_ScrollBar() As Windows.Forms.ScrollBar
Get
Return Me.v_scrolbar
End Get
Set(ByVal value As System.Windows.Forms.ScrollBar)
Me.v_scrolbar = value
End Set
End Property
#End Region
'''
''' 초기화합니다.
'''
'''
Public Sub Initialize(ByVal V_Srctable As DataTable, ByVal styleTag As String, _
ByVal v_SettingFile As String, ByVal v_DefStyleIndex As Short, Optional ByVal ADT As DataTable = Nothing, Optional ByVal OT As Boolean = False)
RaiseEvent StatusMessage("폼을 초기화합니다", e_EventMessage.Normal)
Me.SrcTable = V_Srctable
Me.StyleDir = New DirectoryInfo(My.Application.Info.DirectoryPath & "\" & styleTag)
Me.StyleTag = styleTag
Me.LogFile = "\LOG_" & Me.StyleTag & ".txt"
Me.StyleFileC = My.Application.Info.DirectoryPath & "\" & styleTag & "C.ini"
Me.DefStyleIndex = v_DefStyleIndex
Me.DT = ADT
Me.OldType = OT
Eini = New ACC.MyINI(v_SettingFile)
If SrcTable Is Nothing Then '//개발자 기본셋팅으로 설정
RaiseEvent StatusMessage("개발자 기본셋팅이 설정됩니다.", e_EventMessage.Normal)
'Auto_Log = True
Admin = True
Me.NoView = True
End If
'///////////////세부설정 폼을 띄웁니다.
RaiseEvent StatusMessage("[Default_PrintForm] 세부설정 폼을 초기화합니다.", e_EventMessage.Normal)
SetForm = New Frm_Prnset(Me)
SetForm.Top = Me.Top
SetForm.Left = Me.Left + Me.Width + 10
SetForm.Show()
'RaiseEvent StatusMessage("폼 기본설정을 불러옵니다", e_EventMessage.Normal)
'Me.Load_Setting() '//현재는 지정된 프린터명만 가져온다.
RaiseEvent StatusMessage("[Default_PrintForm] 컨트롤을 초기화합니다.", e_EventMessage.Normal)
Me.SetControls() '//컨트롤을 초기화합니다.
'//컨텍스트메뉴활성화
'For Each A As CEpole.C_Epole.S_FullLable In Me.AllFullLabels
' '//현재그룹을 넣는다
' Dim Itema As Windows.Forms.ToolStripItem = Me.v_cm.Items.Add(A.Desc)
' Itema.Tag = "nice" & A.Desc
' AddHandler Itema.Click, AddressOf ToolStripMenuItem_Click
'Next
RaiseEvent StatusMessage("[Default_PrintForm] 컨트롤의 인덱스값을 초기화합니다.", e_EventMessage.Normal)
Me.SetControlIndex() '//컨트롤을 초기화합니다.
RaiseEvent StatusMessage("[Default_PrintForm] 컨트롤의 도움말을 초기화합니다.", e_EventMessage.Normal)
Me.SetToolTip() '//컨트롤의 툴팁을 표시합니다.
RaiseEvent StatusMessage("[Default_PrintForm] 이벤트핸들러를 등록합니다.", e_EventMessage.Normal)
SetEventHandler()
RaiseEvent StatusMessage("모든 스타일을 검색합니다.", e_EventMessage.Normal)
If Me.DT Is Nothing Then
If Not Me.GetStyleList() Then '//컨트롤의 툴팁을 표시합니다.
MsgBox("스타일을 구성하지 못했습니다" & vbCrLf & "출력을 할 수 없습니다", MsgBoxStyle.Critical, "오류")
Me.Close()
End If
Else
If Not Me.GetStyleList(DT) Then '//컨트롤의 툴팁을 표시합니다.
MsgBox("스타일을 구성하지 못했습니다" & vbCrLf & "출력을 할 수 없습니다", MsgBoxStyle.Critical, "오류")
Me.Close()
End If
End If
RaiseEvent StatusMessage("기본스타일을 설정합니다.", e_EventMessage.Normal)
If Srcrow Is Nothing Then '//가져온 행값이인덱스가 없으므로 1번째 스타일을 지정한다.
FirstIdx = 0 '//또한 맨 처음 데이터를 표시하게된다.
Else
Srcnum = Srcrow("번호") 'srcTable.Rows(SrcIdx).Item("번호")
RaiseEvent StatusMessage("선택된 번호값잉 있습니다 = " & Srcnum, e_EventMessage.Normal)
End If
Try
SetForm.cmb_style.SelectedIndex = Me.DefStyleIndex '//여기서 데이터가 걸러지게된다.
Catch ex As Exception
SetForm.cmb_style.SelectedIndex = 0
End Try
If SetForm.cmb_style.SelectedIndex = -1 Then
If SetForm.cmb_style.Items.Count > 0 Then
SetForm.cmb_style.SelectedIndex = 0
Else
MsgBox("선택가능한 스타일이 존재하지않습니다", MsgBoxStyle.Critical, "확인")
End If
End If
If Me.Admin Then Mylog.Show()
End Sub
'''
''' 지정된 폴더에서 스타일파일을 읽어옵니다.
'''
'''
Public Function GetStyleList() As Boolean
'//스타일명을 가져와서 콤보박스에 표시합니다.
'//style 폴더아래의 ini 파일전체를 스타일 이라한다.
'//파일을 읽어서 메모리에 저장한다.
Dim FileFilter As String = IIf(OldType, "*.ini", "*.cfg")
If Not StyleDir.Exists Then StyleDir.Create()
Dim CurIdx As Integer = 0
Dim StyleCnt As Short
StyleCnt = StyleDir.GetFiles(FileFilter).GetUpperBound(0)
Dim Section, Value As New ArrayList
Dim SectionIdx As Integer = 0
If StyleCnt = -1 Then
If MsgBox("선택가능한 스타일이 존재하지 않습니다." & vbCrLf & "새로운 스타일을 생성하시겠습니까?", MsgBoxStyle.OkCancel Or MsgBoxStyle.Critical, "확인") = MsgBoxResult.Ok Then
If SetForm.Make_NewStyle() = False Then
Return False
Else '//스타일을 만들었으니 배열을 다시해준다.
StyleCnt = StyleDir.GetFiles(FileFilter).GetUpperBound(0)
If StyleCnt = -1 Then
MsgBox("선택가능한 스타일이 없습니다", MsgBoxStyle.Critical, "확인")
Return False
End If
ReDim StyleList(StyleCnt)
End If
Else
Return False
End If
End If
ReDim StyleList(StyleCnt)
'Arin.WLog2(Auto_Log, "GetStyleList(파일에서 스타일목을 가져온다)", LogFile)
SetForm.cmb_style.Items.Clear()
'//파일명을 가져와서 모두 배열에 저장한다.
Dim Stylenames As New ArrayList
Dim InTest As ACC.MyINI
For Each Fi As IO.FileInfo In StyleDir.GetFiles(FileFilter)
InTest = New ACC.MyINI(Fi.FullName)
Stylenames.Add(InTest.Read("style", "desc", "스타일설명") & "/" & Fi.FullName)
Next
Stylenames.Sort()
For Each FIFullName As String In Stylenames
RaiseEvent StatusMessage("Load StyleFile fileName = " & FIFullName.Split("/")(1), e_EventMessage.Normal)
GetAllsection(StyleList, FIFullName.Split("/")(1), CurIdx, Me.OldType)
If (StyleList(CurIdx).visible = False) Then '//1090223 - 미표시 내용
If DisableWaterMark Then
SetForm.cmb_style.Items.Add("[" + CurIdx.ToString() + "] " + StyleList(CurIdx).Desc + "-숨김")
Else
'//일반사용자는 목록을 생성 안함 190223
End If
Else
SetForm.cmb_style.Items.Add("[" + CurIdx.ToString() + "] " + StyleList(CurIdx).Desc)
End If
CurIdx += 1
Next
Return True
End Function
'''
''' 데이터테이블로부터 스타일목록을 가져옵니다. 필드명은0번째로 합니다.
'''
'''
'''
'''
Public Function GetStyleList(ByVal Dt As DataTable) As Boolean
'//스타일명을 가져와서 콤보박스에 표시합니다.
'//style 폴더아래의 ini 파일전체를 스타일 이라한다.
'//파일을 읽어서 메모리에 저장한다.
' Dim Arinini As MyINI
If Dt Is Nothing Then Return False
If Dt.Rows.Count = 0 Then Return False
Dim FileFilter As String = IIf(OldType, "*.ini", "*.cfg")
Dim CurIdx As Integer = 0
Dim StyleCnt As Short = StyleDir.GetFiles("*.cfg").GetUpperBound(0)
ReDim StyleList(StyleCnt)
Dim Section, Value As New ArrayList
Dim SectionIdx As Integer = 0
SetForm.cmb_style.Items.Clear()
For Each FI As IO.FileInfo In StyleDir.GetFiles(FileFilter)
'Arin.WLog2(Auto_Log, "파일명=(" & FI.FullName & ") 의 스타일을 가져옵니다 메모리로", LogFile)
RaiseEvent StatusMessage("Load StyleFile fileName = " & FI.FullName, e_EventMessage.Normal)
GetAllsection(StyleList, FI.FullName, CurIdx, Me.OldType)
If (StyleList(CurIdx).visible = False) Then
If DisableWaterMark Then
SetForm.cmb_style.Items.Add("[" + CurIdx.ToString() + "] " + StyleList(CurIdx).Desc + "-숨김")
Else
'//일반사용자 추가 안함 190223
End If
Else
SetForm.cmb_style.Items.Add("[" + CurIdx.ToString() + "] " + StyleList(CurIdx).Desc)
End If
CurIdx += 1
Next
Return True
End Function
'''
''' Alllabels 의 아이템을 반환합니다.(index 번호)
'''
'''
'''
'''
Public Function Get_Control(ByVal index As Integer) As CEpole.C_label
'MsgBox(AllLabels(index).ToString())
Return Me.AllLabels(index)
End Function
'''
''' Label컨트롤의 기본이름등의 초기화 셋팅을 한다.
'''
'''
Public Overridable Sub SetControls()
MsgBox("SetControls 함수를 재정의하세요 " & vbCrLf & "InitControl을 이용하시오")
End Sub
'''
''' 이벤트핸들할게잇으면 이곳에 정의해서사용한다.
'''
'''
Public Overridable Sub SetEventHandler()
MsgBox("SetEvnetHandler 함수를 재정의하세요" & vbCrLf & "사용자하지않더라도 정의해야 이메세지가 나오지 않습니다")
End Sub
Public Sub InitControl(ByRef IDXnumber As Short, ByRef A_Firstindex As Short, ByRef FirstIndex As Short, ByVal ArrayCount As Short, ByVal LineMaxCharNum As Short, ByVal Chb As Windows.Forms.ToolStripMenuItem, ByVal Desc As String, ByVal Tag As String, Optional ByVal Pattern As String = "", Optional ByVal p_Fixed As Boolean = False, Optional ByVal LineT As E_LineType = E_LineType.sum) '//각컨트롤을 초기화 한다.
Dim LoopIndex As Short = 1
IDXnumber = A_Firstindex
ReDim Preserve Me.AllFullLabels(A_Firstindex) '//이건그룹이다.
Me.AllFullLabels(A_Firstindex).Desc = Desc
Me.AllFullLabels(A_Firstindex).Tag = Tag
If Pattern = "" Then
Me.AllFullLabels(A_Firstindex).Pattern = Tag & "PTRN"
Else
Me.AllFullLabels(A_Firstindex).Pattern = Pattern
End If
Me.AllFullLabels(A_Firstindex).Moved = False
Me.AllFullLabels(A_Firstindex).LineType = LineT '//기본값 혼합
Me.AllFullLabels(A_Firstindex).NumType = "20,0,0" '//왠만해서 모두 표시하게한다.
Me.AllFullLabels(A_Firstindex).ApplyPattern = E_PatternType.None
Me.AllFullLabels(A_Firstindex).LineMaxChar = LineMaxCharNum '//한줄에 최대 4자가오도록 기본값을 설정한다.
Me.AllFullLabels(A_Firstindex).CheckBox = Chb
Me.AllFullLabels(A_Firstindex).Fixed = p_Fixed
'Me.AllFullLabels(A_Firstindex).SeparatePattern = False
Chb.Text = Desc
Chb.Visible = True
For i As Short = FirstIndex To (FirstIndex - 1) + ArrayCount '//여기+1을 변경해서 컨트롤의 세부갯수를 조절한다.
If LoopIndex = 1 Then Me.AllFullLabels(A_Firstindex).Si = FirstIndex '//1번쨰 줄이라면
If Me.AllLabels.GetUpperBound(0) < i Then ReDim Preserve Me.AllLabels(i)
Me.AllLabels(i) = New CEpole.C_label
Me.AllLabels(i).Tag = Me.AllFullLabels(A_Firstindex).Tag
Me.AllLabels(i).Desc = Me.AllFullLabels(A_Firstindex).Desc & "[" & LoopIndex & "]"
Me.AllLabels(i).Name = Me.AllFullLabels(A_Firstindex).Tag & LoopIndex
Me.AllLabels(i).Idx = i '//라벨배열의 인덱스
Me.AllLabels(i).Gidx = A_Firstindex '//라벨그룹배열의 인덱스
Me.AllLabels(i).Text = ""
' Me.AllLabels(i).UseHPattern = False
Me.AllLabels(i).Fixed = p_Fixed
If Pattern <> "" Then Me.AllLabels(i).HasPattern = True '//패턴들어가잇다
Me.Add_ControlsList(Me.AllLabels(i).Desc)
LoopIndex += 1
FirstIndex += 1
Next
Me.AllFullLabels(A_Firstindex).Ei = Me.AllLabels.GetUpperBound(0)
A_Firstindex += 1
End Sub
Public Sub InitControl1(ByRef IDXnumber As Short, ByRef A_Firstindex As Short, ByRef FirstIndex As Short, ByVal ArrayCount As Short, ByVal LineMaxCharNum As Short, ByVal Chb As Windows.Forms.ToolStripMenuItem, ByVal Desc As String, ByVal Tag As String, Optional ByVal Pattern As String = "", Optional ByVal p_Fixed As Boolean = False, Optional ByVal LineT As E_LineType = E_LineType.sum) '//각컨트롤을 초기화 한다.
Dim LoopIndex As Short = 1
IDXnumber = A_Firstindex
ReDim Preserve Me.AllFullLabels(A_Firstindex) '//이건그룹이다.
Me.AllFullLabels(A_Firstindex).Desc = Desc
Me.AllFullLabels(A_Firstindex).Tag = Tag
If Pattern = "" Then
Me.AllFullLabels(A_Firstindex).Pattern = Tag & "PTRN"
Else
Me.AllFullLabels(A_Firstindex).Pattern = Pattern
End If
Me.AllFullLabels(A_Firstindex).Moved = False
Me.AllFullLabels(A_Firstindex).LineType = LineT '//기본값 혼합
Me.AllFullLabels(A_Firstindex).NumType = "20,0,0" '//왠만해서 모두 표시하게한다.
Me.AllFullLabels(A_Firstindex).ApplyPattern = E_PatternType.None
Me.AllFullLabels(A_Firstindex).LineMaxChar = LineMaxCharNum '//한줄에 최대 4자가오도록 기본값을 설정한다.
Me.AllFullLabels(A_Firstindex).CheckBox = Chb
Me.AllFullLabels(A_Firstindex).Fixed = p_Fixed
' Me.AllFullLabels(A_Firstindex).SeparatePattern = False
Chb.Text = Desc
Chb.Visible = True
For i As Short = FirstIndex To (FirstIndex - 1) + ArrayCount '//여기+1을 변경해서 컨트롤의 세부갯수를 조절한다.
If LoopIndex = 1 Then Me.AllFullLabels(A_Firstindex).Si = FirstIndex '//1번쨰 줄이라면
If Me.AllLabels.GetUpperBound(0) < i Then ReDim Preserve Me.AllLabels(i)
Me.AllLabels(i) = New CEpole.C_label
Me.AllLabels(i).Tag = Me.AllFullLabels(A_Firstindex).Tag
Me.AllLabels(i).Desc = Me.AllFullLabels(A_Firstindex).Desc & "[" & LoopIndex & "]"
Me.AllLabels(i).Name = Me.AllFullLabels(A_Firstindex).Tag & LoopIndex
Me.AllLabels(i).Idx = i '//라벨배열의 인덱스
Me.AllLabels(i).Gidx = A_Firstindex '//라벨그룹배열의 인덱스
Me.AllLabels(i).Text = ""
'Me.AllLabels(i).UseHPattern = False
Me.AllLabels(i).Fixed = p_Fixed
If Pattern <> "" Then Me.AllLabels(i).HasPattern = True '//패턴들어가잇다
Me.Add_ControlsList(Me.AllLabels(i).Desc)
LoopIndex += 1
FirstIndex += 1
Next
Me.AllFullLabels(A_Firstindex).Ei = Me.AllLabels.GetUpperBound(0)
A_Firstindex += 1
End Sub
Public Overridable Sub SetControlIndex()
MsgBox("SetcontrolIndex 함수를 재정의하세요")
End Sub
'''
''' 데이터를 화면에 표시한다.
'''
'''
'''
'''
'''
Public Overridable Sub GeTviewData(ByVal index As Integer, ByVal previewWindow As Boolean, Optional ByRef 번호패턴검사 As Integer = -1)
MsgBox("GeTviewData 함수를 재정의하세요")
End Sub
'''
''' 컨트롤의 툴팁을 표시합니다.(강제아님 ㅋㅋ)
'''
'''
Public Overridable Sub SetToolTip()
Dim TMSG As System.Text.StringBuilder
TMSG = New System.Text.StringBuilder()
TMSG.AppendLine()
TMSG.AppendLine("<개체선택도움말>")
TMSG.AppendLine()
TMSG.AppendLine("[왼쪽클릭] 현재 마우스 아래의 개체를 선택합니다(단일선택)")
TMSG.AppendLine("[Ctrl+왼쪽클릭] 현재 마우스 아래 개체의 그룹전체가 선택됩니다")
TMSG.AppendLine("[오른쪽클릭] 현재선택된것외에 추가로 선택합니다(다중선택)")
TMSG.AppendLine()
TMSG.AppendLine()
Me.ToolTip1.SetToolTip(Me.v_picturebox1, TMSG.ToString)
End Sub
'''
''' 입력된 값의 일치하는 태그의 라벨을 초기화합니다.
'''
'''
'''
Public Sub CLEAR_ITEM(ByVal lbl As S_FullLable, Optional ByVal RaiseMsg As Boolean = True)
If RaiseMsg Then RaiseEvent StatusMessage("<< [P] Celar_Item Tag=" & lbl.Tag, e_EventMessage.Normal)
For i As Short = lbl.Si To lbl.Ei
Me.AllLabels(i).Text = ""
Me.AllLabels(i).visible = False
Next
End Sub
'''
''' 문자패턴을 저장합니다.
'''
'''
'''
Public Sub SAVE_PATTERNII(ByVal flbl As S_FullLable, Optional ByVal LOGFILENAME As String = "\패턴.TXT", Optional ByVal prompt As Boolean = True) '패턴을 저장합니다. 패턴역시 위치/크기/wordwidth등이 저장됩니다.
'//이곳은 문자패턴을 저장한다.
'Dim Arinini As New CommonClassv2.MyINI(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File)
Dim Arinini As New ACC.MyINI(ReplaceExt(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File, flbl.Tag.Substring(0, 1)))
Dim BUF() As Char = flbl.text.ToCharArray
Dim mb As String = PATTERN_ENC(flbl.text)
Dim Pname As String = flbl.Pattern & "II" & mb.ToString
' MsgBox("saveii" & Arinini.FileName)
'If flbl.srccablerow = -1 Then '//패턴불가능한 싱글라인일경우
' If MsgBox("선택한 개체는 패턴이 적용되지않는 개체입니다" & vbCrLf & vbCrLf & "위치정보를 저장하시려면 스타일저장을 하세요" & vbCrLf _
' & vbCrLf & "지금 스타일을 저장하시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") = MsgBoxResult.Ok Then
' Me.SAVE_STYLE()
' End If
' Return
'End If
If flbl.Fixed Then
MsgBox("고정문자는 스타일저장을 사용하세요", MsgBoxStyle.Critical, "패턴저장불가")
Return
End If
'If prompt Then
' If MsgBox(flbl.Desc & "의 문자패턴을 저장하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return
'End If
Arinini.Write(Pname, "DESC", flbl.Desc & "문자패턴저장")
Arinini.Write(Pname, "LineType", flbl.LineType)
Arinini.Write(Pname, "NumType", flbl.NumType)
' Arinini.Write(Pname, "SepPattern", flbl.SeparatePattern) '//개별패턴적용여부
For i As Short = flbl.Si To flbl.Ei
Dim Lbl As CEpole.C_label = Me.AllLabels(i)
Arinini.Write(Pname, Lbl.Name & "pos", Lbl.Left & "," & Lbl.Top & "," & Lbl.Width & "," & Lbl.Height)
Arinini.Write(Pname, Lbl.Name & "font", Lbl.Font.Name & "," & Lbl.Font.Size & "," & Lbl.Font.Underline & "," & Lbl.Font.Bold & "," & Lbl.Font.Italic & "," & Lbl.WordWidth & "," & Lbl.WordHeight)
Arinini.Write(Pname, Lbl.Name & "visible", Lbl.visible)
Arinini.Write(Pname, Lbl.Name & "space", Lbl.WordSpace)
Arinini.Write(Pname, Lbl.Name & "fc", Lbl.ForeColor2.ToArgb.ToString()) '//160515
' Arinini.Write(Pname, Lbl.Name & "usepatternh", IIf(Lbl.UseHPattern, "1", "0"))
Next
RaiseEvent StatusMessage(">>Save PatternII", e_EventMessage.Normal)
Me.데이터테이블갱신()
End Sub
Public Sub SAVE_PATTERNIIH(ByVal flbl As S_FullLable, Optional ByVal LOGFILENAME As String = "\패턴H.TXT", Optional ByVal prompt As Boolean = True) '패턴을 저장합니다. 패턴역시 위치/크기/wordwidth등이 저장됩니다.
'//이곳은 문자패턴을 저장한다.
'Dim Arinini As New CommonClassv2.MyINI(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File)
Dim Arinini As New ACC.MyINI(ReplaceExt(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File, flbl.Tag.Substring(0, 1)))
Dim BUF() As Char = flbl.text.ToCharArray
Dim mb As String = PATTERN_ENC(flbl.text, True)
Dim Pname As String = flbl.Pattern & "II" & mb.ToString
' MsgBox("saveii" & Arinini.FileName)
'If flbl.srccablerow = -1 Then '//패턴불가능한 싱글라인일경우
' If MsgBox("선택한 개체는 패턴이 적용되지않는 개체입니다" & vbCrLf & vbCrLf & "위치정보를 저장하시려면 스타일저장을 하세요" & vbCrLf _
' & vbCrLf & "지금 스타일을 저장하시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") = MsgBoxResult.Ok Then
' Me.SAVE_STYLE()
' End If
' Return
'End If
If flbl.Fixed Then
MsgBox("고정문자는 스타일저장을 사용하세요", MsgBoxStyle.Critical, "패턴저장불가")
Return
End If
'If prompt Then
' If MsgBox(flbl.Desc & "의 문자패턴을 저장하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return
'End If
Arinini.Write(Pname, "DESC", flbl.Desc & "문자패턴(H)저장")
Arinini.Write(Pname, "LineType", flbl.LineType)
Arinini.Write(Pname, "NumType", flbl.NumType)
' Arinini.Write(Pname, "SepPattern", flbl.SeparatePattern) '//개별패턴적용여부
For i As Short = flbl.Si To flbl.Ei
Dim Lbl As CEpole.C_label = Me.AllLabels(i)
Arinini.Write(Pname, Lbl.Name & "pos", Lbl.Left & "," & Lbl.Top & "," & Lbl.Width & "," & Lbl.Height)
Arinini.Write(Pname, Lbl.Name & "font", Lbl.Font.Name & "," & Lbl.Font.Size & "," & Lbl.Font.Underline & "," & Lbl.Font.Bold & "," & Lbl.Font.Italic & "," & Lbl.WordWidth & "," & Lbl.WordHeight)
Arinini.Write(Pname, Lbl.Name & "visible", Lbl.visible)
Arinini.Write(Pname, Lbl.Name & "space", Lbl.WordSpace)
Arinini.Write(Pname, Lbl.Name & "fc", Lbl.ForeColor2.ToArgb.ToString())
' Arinini.Write(Pname, Lbl.Name & "usepatternh", IIf(Lbl.UseHPattern, "1", "0"))
Next
RaiseEvent StatusMessage(">>Save PatternIIH", e_EventMessage.Normal)
Me.데이터테이블갱신()
End Sub
'Public Sub SAVE_PATTERNIII(ByVal flbl As S_FullLable, ByVal Lbla As C_label, Optional ByVal LOGFILENAME As String = "\패턴.TXT") '패턴을 저장합니다. 패턴역시 위치/크기/wordwidth등이 저장됩니다.
' '//이곳은 문자패턴을 저장한다.
' Dim Arinini As New ACC.MyINI(ReplaceExt(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File, flbl.Tag.Substring(0, 1)))
' 'Dim Arinini As New CommonClassv2.MyINI(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File)
' Dim BUF() As Char = flbl.text.ToCharArray
' Dim mb As String = PATTERN_ENC(flbl.text)
' Dim Pname As String = flbl.Pattern & "III" & mb.ToString & Lbla.Text & "*" & Lbla.Idx '//원래 문자패턴뒤에 개별패턴을 붙인다. 즉 이것은 패턴이먼저 검출되고나서 추가검출을 한다.
' RaiseEvent StatusMessage(">>Uniq Pattern Save PatternIII=" & Pname & " Object IDX=" & Lbla.Idx & " object Gidx=" & Lbla.Gidx, e_EventMessage.Normal)
' '//이 유니크는 반드시 패턴이 있어야한다.
' If flbl.ApplyPattern = E_PatternType.None Then
' MsgBox("개별문자패턴은 패턴이 저장된문자만 저장이 가능합니다", MsgBoxStyle.Information, "확인")
' Return
' 'Else
' ' MsgBox("이기능은 준비중입니다")
' ' Return
' End If
' If flbl.Fixed Then
' MsgBox("고정문자는 스타일저장을 사용하세요", MsgBoxStyle.Information, "패턴저장불가")
' Return
' End If
' ' flbl.SeparatePattern = True '//이그룹의 개별패턴 여부를 True로 저장한다.
' Arinini.Write(flbl.Pattern & "III" & mb.ToString, "SepPattern", flbl.SeparatePattern) '//개별패턴적용여부
' Dim Msga As New System.Text.StringBuilder("현재문자(" & Lbla.Text & ") 의 개별문자패턴을 저장하시겠습니까?")
' If MsgBox(Msga.ToString, MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return
' Arinini.Write(Pname, Lbla.Name & "pos", Lbla.Left & "," & Lbla.Top & "," & Lbla.Width & "," & Lbla.Height)
' Arinini.Write(Pname, Lbla.Name & "font", Lbla.Font.Name & "," & Lbla.Font.Size & "," & Lbla.Font.Underline & "," & Lbla.Font.Bold & "," & Lbla.Font.Italic & "," & Lbla.WordWidth & "," & Lbla.WordHeight)
' Arinini.Write(Pname, Lbla.Name & "visible", Lbla.visible)
' Arinini.Write(Pname, Lbla.Name & "space", Lbla.WordSpace)
' 'Arinini.Write(Pname, Lbla.Name & "usepatternh", IIf(Lbla.UseHPattern, "1", "0"))
' RaiseEvent StatusMessage(">>Save PatternIII", e_EventMessage.Normal)
' Me.데이터테이블갱신()
' MsgBox("개별문자 저자완료")
'End Sub
'''
''' 입력된 라벨명에해당하는 풀라벨을 반환합니다.
'''
'''
'''
'''
Public Function lbl(ByVal labe As String) As Short
For i As Short = 0 To Me.AllFullLabels.GetUpperBound(0)
If Me.AllFullLabels(i).Desc = labe Then
Return i
End If
Next
Return Nothing
End Function
Private Sub 데이터테이블갱신()
'Arin.WLog2(Auto_Log, "데이터테이블 갱신()", LogFile)
RaiseEvent StatusMessage("데이터테이블을 갱신합니다(파일에서모든 스타일정보를 다시 불러옵니다)", e_EventMessage.Normal)
GetAllsection(StyleList, StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File, SetForm.cmb_style.SelectedIndex, Me.OldType)
End Sub
'''
''' 한줄짜리 레이블을 표시합니다.(컨트롤인덱스,표시문자,표시체크박스,설명)
''' 예) Parse_Oneline(1,"062-011-1111",me.chkbox1,"전화번호")
'''
'''
'''
Public Sub Parse_Line(ByRef lbl As S_FullLable)
If lbl.text = "" OrElse Not lbl.CheckBox.Checked Then '//없거나 표시불가상태일때는 클리어시키고 빠져나간다.
RaiseEvent StatusMessage("[" & lbl.Desc & "] 데이터가없거나 체크해제 문자=" & lbl.text, e_EventMessage.Parse)
Me.CLEAR_ITEM(lbl, False)
Return
Else
RaiseEvent StatusMessage("[" & lbl.Desc & "] 문자=" & lbl.text & vbCrLf & " 체크상태:" & lbl.CheckBox.Checked, e_EventMessage.Parse)
End If
Parse_Pattern(lbl)
End Sub
Public Sub Parse_LineBatch(ByVal Idx_Array() As Short)
For Each Idx As Short In Idx_Array
Me.Parse_Line(Me.AllFullLabels(Idx))
Next
End Sub
'''
''' 패턴을 확인합니다.
'''
'''
'''
Public Sub Parse_Pattern(ByRef lbl As S_FullLable)
Dim Wlen As Short = lbl.text.Length
Dim SepPos As Short = lbl.text.IndexOf(";")
Dim SrC() As Char = lbl.text.ToCharArray
Dim pname, pname2 As String
Dim Cname, Cname2, Lname As String
Dim Arinini As New ACC.MyINI(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File)
Dim CTLPOS() As String '//위치정보
Dim CTLFONT() As String
Dim CTLVISIBLE As Boolean
Dim PATTERN As String = PATTERN_ENC(lbl.text)
Dim PATTERN2 As String = PATTERN_ENC(lbl.text, True)
Dim TOBJ As CEpole.C_label
Dim 분리인덱스 As E_LineType = E_LineType.sum
Dim 번호형식 As String = "20,0,0"
Dim Dr() As DataRow
'Dim UniqPattern As String = "" '//개별문자자체에대한 패턴이 저장되어있는 개체의 번호다
'Dim UniqHeader As String = ""
Cname = ""
Lname = ""
RaiseEvent StatusMessage("<< 패턴검사를 시작합니다[" & lbl.Desc & "] 문자=" & lbl.text & " 길이=" & Wlen, e_EventMessage.Normal)
lbl.ApplyPattern = E_PatternType.None
'//문자를먼저확인한다.
pname = lbl.Pattern & "II" & PATTERN
pname2 = lbl.Pattern & "II" & PATTERN2
Cname = pname
Cname2 = pname2
'//패턴(H)코드를 검색
Dim findPatternH As Boolean = False
If pname2.IndexOf("Z") <> -1 Then '//패턴(H)는 기존호환으로인해 실제 저장은 Z로 변경되서 저장됨 140703
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname2 & "DESC'")
If Dr.GetUpperBound(0) = 0 Then '//데이터가 존재하므로 모두 적용을 한다.
findPatternH = True
RaiseEvent StatusMessage("[" & lbl.Desc & "] 문자패턴(H)확인 문자열=" & lbl.text & " 패턴=" & pname2, e_EventMessage.Normal)
lbl.ApplyPattern = E_PatternType.Character
lbl.Moved = True
'//데이터는 최종적으로 번호형식에서 보낸다.
'분리인덱스 = Arinini.Read(pname, "nseparate", 0)
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname2 & "LINETYPE'")
If Dr.GetUpperBound(0) = 0 Then
분리인덱스 = Dr(0)(1)
Else
분리인덱스 = E_LineType.sum
End If
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname2 & "NUMTYPE'")
If Dr.GetUpperBound(0) = 0 Then
번호형식 = Dr(0)(1)
Else
번호형식 = "20,20,20"
End If
For i As Integer = lbl.Si To lbl.Ei
TOBJ = Me.AllLabels(i)
Try
'//상태를 읽어서 바로 적용한다.
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname2 & TOBJ.Name & "POS'")
If Dr.GetUpperBound(0) = 0 Then
CTLPOS = Dr(0)(1).ToString.Split(",")
TOBJ.Location = New Point(CTLPOS(0), CTLPOS(1))
TOBJ.Size = New Size(CTLPOS(2), CTLPOS(3))
End If
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname2 & TOBJ.Name & "FONT'")
If Dr.GetUpperBound(0) = 0 Then
CTLFONT = Dr(0)(1).ToString.Split(",")
TOBJ.Font = New Font(CTLFONT(0), CTLFONT(1), IIf(CTLFONT(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
TOBJ.WordWidth = CTLFONT(5) '//장평
TOBJ.WordHeight = CTLFONT(6) '//장높이
End If
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname2 & TOBJ.Name & "VISIBLE'")
If Dr.GetUpperBound(0) = 0 Then
CTLVISIBLE = Dr(0)(1).ToString
TOBJ.visible = CType(CTLVISIBLE, Boolean)
End If
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname2 & TOBJ.Name & "SPACE'")
If Dr.GetUpperBound(0) = 0 Then
TOBJ.WordSpace = Dr(0)(1).ToString
End If
Catch ex As Exception
RaiseEvent StatusMessage("[P] Parse_Pattern : 문자패턴(H)오류 = " & ex.Message.ToString, e_EventMessage.Normal)
End Try
TOBJ.ForeColor = TOBJ.ForeColor2
Next
End If
End If
If Not findPatternH Then
'//기존패턴코드를 찾는다.
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & "DESC'")
If Dr.GetUpperBound(0) = 0 Then '//데이터가 존재하므로 모두 적용을 한다.
RaiseEvent StatusMessage("[" & lbl.Desc & "] 문자패턴확인 문자열=" & lbl.text & " 패턴=" & pname, e_EventMessage.Normal)
lbl.ApplyPattern = E_PatternType.Character
lbl.Moved = True
'//데이터는 최종적으로 번호형식에서 보낸다.
'분리인덱스 = Arinini.Read(pname, "nseparate", 0)
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & "LINETYPE'")
If Dr.GetUpperBound(0) = 0 Then
분리인덱스 = Dr(0)(1)
Else
분리인덱스 = E_LineType.sum
End If
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & "NUMTYPE'")
If Dr.GetUpperBound(0) = 0 Then
번호형식 = Dr(0)(1)
Else
번호형식 = "20,20,20"
End If
'Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & "SEPPATTERN'") '//분리패턴여부
'If Dr.GetUpperBound(0) = 0 Then
' lbl.SeparatePattern = Dr(0)(1)
'Else
' lbl.SeparatePattern = False
'End If
''//개별문자패턴이있는 정보를 불러온다. UNIQPATTERN
'Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & "UNIQPATTERN'")
'If Dr.GetUpperBound(0) = 0 Then '//데이터가한개 있다면 해당 꺼를 적용하고
' UniqPattern = Dr(0)(1)
' UniqHeader = pname
'Else '//그렇지않으면 그냥 초기화로 넘어간다.
' UniqPattern = ""
'End If
Dim UQPattern As Boolean
For i As Integer = lbl.Si To lbl.Ei
TOBJ = Me.AllLabels(i)
UQPattern = False
'//유니크패턴가용 그룹이면 유니크를 찾는다.
'If lbl.SeparatePattern Then '//개별패턴이 적용되는 그룹이라면 먼저 개별패턴을 찾아본다.
' RaiseEvent StatusMessage("Uniq 패턴 그룹입니다. Uniq 를 먼저 찾아봅니다.", e_EventMessage.Normal)
' Dim SPname As String = lbl.Pattern & "III" & PATTERN & TOBJ.Text & "*" & TOBJ.Idx
' RaiseEvent StatusMessage("Uniq 패턴 Name = " & SPname, e_EventMessage.Normal)
' Try
' '//상태를 읽어서 바로 적용한다.
' Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & SPname & TOBJ.Name & "POS'")
' If Dr.GetUpperBound(0) = 0 Then
' RaiseEvent StatusMessage("Uniq 패턴 발견 이후 일괄 적용됨", e_EventMessage.Normal)
' UQPattern = True
' CTLPOS = Dr(0)(1).ToString.Split(",")
' TOBJ.Location = New Point(CTLPOS(0), CTLPOS(1))
' TOBJ.Size = New Size(CTLPOS(2), CTLPOS(3))
' End If
' Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & SPname & TOBJ.Name & "FONT'")
' If Dr.GetUpperBound(0) = 0 Then
' UQPattern = True
' CTLFONT = Dr(0)(1).ToString.Split(",")
' TOBJ.Font = New Font(CTLFONT(0), CTLFONT(1), IIf(CTLFONT(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
' TOBJ.WordWidth = CTLFONT(5) '//장평
' TOBJ.WordHeight = CTLFONT(6) '//장높이
' 'MsgBox(CTLFONT(0))
' End If
' Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & SPname & TOBJ.Name & "VISIBLE'")
' If Dr.GetUpperBound(0) = 0 Then
' UQPattern = True
' CTLVISIBLE = Dr(0)(1).ToString
' TOBJ.visible = CType(CTLVISIBLE, Boolean)
' End If
' Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & SPname & TOBJ.Name & "SPACE'")
' If Dr.GetUpperBound(0) = 0 Then
' UQPattern = True
' TOBJ.WordSpace = Dr(0)(1).ToString
' End If
' Catch ex As Exception
' RaiseEvent StatusMessage("[P] Parse_Pattern : 길이패턴오류 = " & ex.Message.ToString, e_EventMessage.Normal)
' End Try
'End If
If UQPattern = False Then '//유니크패턴이 있었다면 이부분은 건너뛴다
' RaiseEvent StatusMessage("Uniq 패턴 을 발견못했으므로 문자패턴 계속 검색한다.", e_EventMessage.Normal)
Try
'//상태를 읽어서 바로 적용한다.
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & TOBJ.Name & "POS'")
If Dr.GetUpperBound(0) = 0 Then
UQPattern = True
CTLPOS = Dr(0)(1).ToString.Split(",")
TOBJ.Location = New Point(CTLPOS(0), CTLPOS(1))
TOBJ.Size = New Size(CTLPOS(2), CTLPOS(3))
End If
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & TOBJ.Name & "FONT'")
If Dr.GetUpperBound(0) = 0 Then
CTLFONT = Dr(0)(1).ToString.Split(",")
TOBJ.Font = New Font(CTLFONT(0), CTLFONT(1), IIf(CTLFONT(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
TOBJ.WordWidth = CTLFONT(5) '//장평
TOBJ.WordHeight = CTLFONT(6) '//장높이
End If
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & TOBJ.Name & "VISIBLE'")
If Dr.GetUpperBound(0) = 0 Then
CTLVISIBLE = Dr(0)(1).ToString
TOBJ.visible = CType(CTLVISIBLE, Boolean)
End If
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & TOBJ.Name & "SPACE'")
If Dr.GetUpperBound(0) = 0 Then
TOBJ.WordSpace = Dr(0)(1).ToString
End If
Catch ex As Exception
RaiseEvent StatusMessage("[P] Parse_Pattern : 문자패턴오류 = " & ex.Message.ToString, e_EventMessage.Normal)
End Try
End If
TOBJ.ForeColor = TOBJ.ForeColor2 '//160515
Next
Else
RaiseEvent StatusMessage("[P] Parse_Pattern : 문자패턴을 찾ㅇ르수 없습니다." & pname, e_EventMessage.Normal)
End If
Else
RaiseEvent StatusMessage("[P] Parse_Pattern : 문자패턴(H)로인해 넘어갑니다." & pname, e_EventMessage.Normal)
End If
If lbl.ApplyPattern = E_PatternType.None Then '//문자패턴 실패상태
'//길이패턴을 확인한다.
pname = lbl.Pattern & "I" & Wlen
Lname = pname
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & "DESC'")
If Dr.GetUpperBound(0) >= 0 Then
RaiseEvent StatusMessage("[" & lbl.Desc & "] 길이패턴존재 문자열=" & lbl.text & " 패턴명:" & pname, e_EventMessage.Normal)
lbl.ApplyPattern = E_PatternType.Length
lbl.Moved = True
'분리인덱스 = Arinini.Read(pname, "nseparate", 0)
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & "LINETYPE'")
If Dr.GetUpperBound(0) = 0 Then
분리인덱스 = Dr(0)(1)
Else
분리인덱스 = 0
End If
'번호형식 = Arinini.Read(pname, "srccablerow", "9,0,0")
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & "NUMTYPE'")
If Dr.GetUpperBound(0) = 0 Then
번호형식 = Dr(0)(1)
Else
번호형식 = "20,20,9" '"20,20,9"
End If
''//개별문자패턴이있는 정보를 불러온다. UNIQPATTERN
'Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & "UNIQPATTERN'")
'If Dr.GetUpperBound(0) = 0 Then '//데이터가한개 있다면 해당 꺼를 적용하고
' UniqPattern = Dr(0)(1)
' UniqHeader = pname
'Else '//그렇지않으면 그냥 초기화로 넘어간다.
' UniqPattern = ""
'End If
For i As Integer = lbl.Si To lbl.Ei
TOBJ = Me.AllLabels(i)
Try
'//상태를 읽어서 바로 적용한다.
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & TOBJ.Name & "POS'")
If Dr.GetUpperBound(0) = 0 Then
CTLPOS = Dr(0)(1).ToString.Split(",")
TOBJ.Location = New Point(CTLPOS(0), CTLPOS(1))
TOBJ.Size = New Size(CTLPOS(2), CTLPOS(3))
End If
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & TOBJ.Name & "FONT'")
If Dr.GetUpperBound(0) = 0 Then
CTLFONT = Dr(0)(1).ToString.Split(",")
TOBJ.Font = New Font(CTLFONT(0), CTLFONT(1), IIf(CTLFONT(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
TOBJ.WordWidth = CTLFONT(5)
TOBJ.WordHeight = CTLFONT(6)
'MsgBox(CTLFONT(0))
End If
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & TOBJ.Name & "VISIBLE'")
If Dr.GetUpperBound(0) = 0 Then
CTLVISIBLE = Dr(0)(1).ToString
TOBJ.visible = CType(CTLVISIBLE, Boolean)
End If
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & TOBJ.Name & "SPACE'")
If Dr.GetUpperBound(0) = 0 Then
TOBJ.WordSpace = Dr(0)(1).ToString
End If
Catch ex As Exception
RaiseEvent StatusMessage("[P] Parse_Pattern : 문자패턴오류 = " & ex.Message.ToString, e_EventMessage.Normal)
End Try
TOBJ.ForeColor = TOBJ.ForeColor2
Next
End If
End If
If lbl.ApplyPattern = E_PatternType.None Then
If lbl.Fixed Then
RaiseEvent StatusMessage("[" & lbl.Desc & "] 고정문자 :: 기본스타일 사용=" & lbl.text, e_EventMessage.Normal)
Else
RaiseEvent StatusMessage("[" & lbl.Desc & "] 문자/길이(" & Cname & "/" & Lname & ") 패턴없음 기본스타일 사용=" & lbl.text, e_EventMessage.Normal)
End If
Me.CLEAR_ITEM(lbl, False)
If lbl.Moved Then
RaiseEvent StatusMessage("[P] 바로전에 변형이감지되어서 초기화합니다.[ " & lbl.Desc & "] 문자=" & lbl.text, e_EventMessage.Normal)
Me.LOAD_STYLE(lbl.Tag) '//기본스타일로 복원한다.
lbl.Moved = False
End If
Me.AllLabels(lbl.Si).Text = lbl.text
Me.AllLabels(lbl.Si).visible = True
Else
If lbl.Ei > lbl.Si Then '//멀티 개체일경우에만
lbl.LineType = 분리인덱스
lbl.NumType = 번호형식
SetForm.cmb_sep.SelectedIndex = 분리인덱스
분리인덱스별출력(lbl) '//번호형식을 갱신해준다.
Else '//싱글개체이다.. 시작 종료오프셋이 동일한다.
Me.AllLabels(lbl.Si).Text = lbl.text
Me.AllLabels(lbl.Si).visible = True
RaiseEvent StatusMessage("[" & lbl.Desc & "] 싱글패턴개체 분리인덱스 사용안함" & pname, e_EventMessage.Normal)
End If
End If
'Dim U1() As String
'If UniqPattern <> "" Then '//유니크패턴이 있다면 적용한다. 여러개가 잇을지모른다 예를들어 0,2 0번과 2번이 있다는것이다. 물론 예상은 1개다
' RaiseEvent StatusMessage("[" & lbl.Desc & "] 유니크문자를 확인합니다" & UniqPattern, e_EventMessage.Normal)
' U1 = UniqPattern.Split(",")
' For Each C As String In U1
' TOBJ = Me.AllLabels(Val(C)) '//해당 개체를 가져온다. 현재 지정된 문자와
' '//uniqheader 와 실제들어잇는 문자를 통해서 실제로 패턴이 존재하는지 확인하고 있으면 적용한다.
' Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & UniqHeader & TOBJ.Name & TOBJ.Text & "_POS'")
' If Dr.GetUpperBound(0) = 0 Then
' RaiseEvent StatusMessage("[" & lbl.Desc & "] 유니크문자패턴 발견" & UniqHeader & TOBJ.Name & TOBJ.Text & "_POS'", e_EventMessage.Normal)
' CTLPOS = Dr(0)(1).ToString.Split(",")
' TOBJ.Location = New Point(CTLPOS(0), CTLPOS(1))
' TOBJ.Size = New Size(CTLPOS(2), CTLPOS(3))
' End If
' Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & UniqHeader & TOBJ.Name & TOBJ.Text & "_FONT'")
' If Dr.GetUpperBound(0) = 0 Then
' CTLFONT = Dr(0)(1).ToString.Split(",")
' TOBJ.Font = New Font(CTLFONT(0), CTLFONT(1), IIf(CTLFONT(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
' TOBJ.WordWidth = CTLFONT(5)
' TOBJ.WordHeight = CTLFONT(6)
' End If
' Next
'Else
' RaiseEvent StatusMessage("[" & lbl.Desc & "] 유니크문자가 엾습니다" & UniqPattern, e_EventMessage.Normal)
'End If
End Sub
Public Sub AddMessage(ByVal Message As String)
RaiseEvent StatusMessage(Message, e_EventMessage.Normal)
End Sub
'''
''' 현재지정된 개체의 문자패턴을 저장합니다.
'''
'''
Public Sub QSave_PatternII()
Dim A As New System.Text.StringBuilder
A.AppendLine("문자패턴을 저장할 개체를 선택하세요")
A.AppendLine("마우스왼쪽 클릭시 해당 개체가 선택됩니다")
If Me.OnlyOne Is Nothing Then Return
If Me.OnlyOne.Fixed Then
MsgBox("고정길이는 패턴저장을 할 수 없습니다" & vbCrLf & vbCrLf & "스타일 저장을 하세요", MsgBoxStyle.Critical, "확인")
Return
End If
If SetForm.cmb_controls.SelectedIndex = -1 Then
MsgBox(A.ToString, MsgBoxStyle.Critical, "확인")
Return
End If
Me.SAVE_PATTERNII(Me.AllFullLabels(Me.AllLabels(SetForm.cmb_controls.SelectedIndex).Gidx))
End Sub
Public Sub QSave_PatternIIH()
Dim A As New System.Text.StringBuilder
A.AppendLine("문자패턴(H)을 저장할 개체를 선택하세요")
A.AppendLine("마우스왼쪽 클릭시 해당 개체가 선택됩니다")
If Me.OnlyOne Is Nothing Then Return
If Me.OnlyOne.Fixed Then
MsgBox("고정길이는 패턴저장을 할 수 없습니다" & vbCrLf & vbCrLf & "스타일 저장을 하세요", MsgBoxStyle.Critical, "확인")
Return
End If
If SetForm.cmb_controls.SelectedIndex = -1 Then
MsgBox(A.ToString, MsgBoxStyle.Critical, "확인")
Return
End If
Me.SAVE_PATTERNIIH(Me.AllFullLabels(Me.AllLabels(SetForm.cmb_controls.SelectedIndex).Gidx))
End Sub
'''
''' 현재지정된 개체의 개별문자패턴을 저장합니다.
'''
'''
Public Sub QSave_PatternIII()
'Dim A As New System.Text.StringBuilder
'A.AppendLine("개별문자패턴을 저장할 개체를 선택하세요")
'A.AppendLine("마우스왼쪽 클릭시 해당 개체가 선택됩니다")
'If Me.OnlyOne Is Nothing Then Return
'If Me.OnlyOne.Fixed Then
' MsgBox("고정길이는 패턴저장을 할 수 없습니다" & vbCrLf & vbCrLf & "스타일 저장을 하세요", MsgBoxStyle.Critical, "확인")
' Return
'End If
'If SetForm.cmb_controls.SelectedIndex = -1 Then
' MsgBox(A.ToString, MsgBoxStyle.Critical, "확인")
' Return
'End If
'Me.SAVE_PATTERNIII(Me.AllFullLabels(Me.AllLabels(SetForm.cmb_controls.SelectedIndex).Gidx), Me.OnlyOne)
End Sub
Private Sub 분리인덱스별출력(ByRef lbl As S_FullLable)
Me.CLEAR_ITEM(lbl, False) '//멀티라인은 이곳에서 클리어한다.
Dim A() As Char = lbl.text.ToCharArray
Dim P() As Short
Dim Msg As String = lbl.NumType
Dim MaxChar As Short = lbl.LineMaxChar
If Msg.IndexOf(",") >= 0 Then '//콤마구분자일경우에는 콤마별로 각 배열에 집어넣고
ReDim P(Msg.Split(",").GetUpperBound(0))
Dim Offset As Short = 0
For Each C As String In Msg.Split(",")
P(Offset) = CShort(C)
Offset += 1
Next
Else '//콤마없을때는 한문자가 줄을 의미하게된다.
ReDim P(Msg.ToCharArray.GetUpperBound(0))
Dim Offset As Short = 0
For Each C As Char In Msg.ToCharArray
P(Offset) = CShort(C.ToString)
Offset += 1
Next
End If
'//최종생성된 분리인덱스값을 표시
For Each sh As Short In P
RaiseEvent StatusMessage("->분리인덱스:" & sh, e_EventMessage.Normal)
Next
'//번호형식이 3,3,3 이라고하고 줄번호타입을 3혼합
RaiseEvent StatusMessage("->분리인덱스별출력(먼저그룹을 클리어한다.) : " & Msg & "최종문자=" & P(0) & "," & P(1) & "," & P(2), e_EventMessage.Normal)
'//개별표시값에 문제가 있을경우
If lbl.LineType < E_LineType.Union OrElse lbl.LineType > E_LineType.sum Then
lbl.LineType = 0
RaiseEvent StatusMessage("->분리인덱스오류로인해 0번 혼합으로 변경합니다. : " & Msg, e_EventMessage.Normal)
End If
Dim CurPos As Short = 0 '//전체문자중 몇번째까지 했다는표시
Dim CPos As Short = 0 '//몇번째 컨트롤까지 썻다는 표시
Dim NextCtl As CEpole.C_label = Me.AllLabels(lbl.Si) '//첫아이템을 선택
Dim Limit(P.GetUpperBound(0)) As Short '//각배열별 한계숫자
For i As Short = 0 To P.GetUpperBound(0)
If i = 0 Then
Limit(i) = P(i)
Else
Limit(i) = Limit(i - 1) + P(i)
End If
'MsgBox("한게값 : " & i & " 값=" & Limit(i))
Next
Select Case SetForm.cmb_sep.SelectedIndex
Case 0 '//혼합
'//형식수가 4를 넘지않으면 개별 넘을경우 통합출력으로한다.
'//연습데이터 3442 : 345 R23L1 R932
'MsgBox("번호형식=" & Msg & "/" & 번호 & "/p0=" & P(0))
Dim OK As Short = -1 '//완료 번호형식 배열값
Dim 사용한컨트롤위치 As Short = -1
Dim RES As Boolean = False
For i As Integer = 0 To A.GetUpperBound(0)
If CInt(P(OK + 1).ToString) <= MaxChar Then '//개별로넣는다
If i + 1 < Limit(OK + 1) Then
사용한컨트롤위치 += 1
Me.AllLabels(lbl.Si + 사용한컨트롤위치).Text &= IIf(A(i) <> ";", A(i), "")
ElseIf i + 1 = Limit(OK + 1) Then
OK += 1 : If OK > Limit.GetUpperBound(0) Then Exit For
사용한컨트롤위치 += 1
Me.AllLabels(lbl.Si + 사용한컨트롤위치).Text &= IIf(A(i) <> ";", A(i), "")
End If
Else '//4보다크다면 해당 ok가 끈날때까지 한개의 컨트롤에 넣는다.
If RES = False Then
사용한컨트롤위치 += 1
RES = True
End If
If i + 1 < Limit(OK + 1) Then
Me.AllLabels(lbl.Si + 사용한컨트롤위치).Text &= IIf(A(i) <> ";", A(i), "")
ElseIf i + 1 = Limit(OK + 1) Then
Me.AllLabels(lbl.Si + 사용한컨트롤위치).Text &= IIf(A(i) <> ";", A(i), "")
OK += 1 : If OK > Limit.GetUpperBound(0) Then Exit For
RES = False
End If
End If
Next
Case 1 '//분리(개별출력이므로 번호형식이 필요없다)
'Me.v_tb_ntype.Enabled = False
For i As Int16 = 0 To A.GetUpperBound(0) '//개별 12개의 열에 데이터를 출력한다.
Me.AllLabels(lbl.Si + i).Text = IIf(A(i) <> ";", A(i), "")
Next
Case 2 '//통합
Dim OK As Short = -1 '//완료 번호형식 배열값
For i As Integer = 0 To A.GetUpperBound(0)
If i < Limit(OK + 1) Then
Me.AllLabels(lbl.Si + OK + 1).Text &= IIf(A(i) <> ";", A(i), "")
ElseIf i = Limit(OK + 1) Then
OK += 1 : If OK + 1 > Limit.GetUpperBound(0) Then Exit For
Me.AllLabels(lbl.Si + OK + 1).Text &= IIf(A(i) <> ";", A(i), "")
End If
Next
End Select
For i As Integer = lbl.Si To lbl.Ei
Me.AllLabels(i).visible = IIf(Me.AllLabels(i).Text = "", False, True) '//문자있는것들의 Visible 표시
Next
End Sub
'''
''' 프린트를 준비합니다. 주로 페이지 범위설정입니다.
'''
'''
'''
Public Function Prepare_Print() As Boolean '//범위내의 페이지번호와 일치하는 번호를 찾아서 배열에 할당한다.
Me.printindex = 0 '//배열의 첫번으로 출력을 준비한다.
Me.pDoc.DefaultPageSettings.Margins.Left = 0 'SetForm.tb_marginX.Text '//좌,우 여백 설정
Me.pDoc.DefaultPageSettings.Margins.Top = 0 'SetForm.tb_marginY.Text
Me.pDoc.DefaultPageSettings.Landscape = SetForm.MyProperty_Paper.용지방향 ' SetForm.rad_land.Checked ' IIf(Me.cmb_landscape.SelectedIndex = 0, False, True) '//가로,세로 출력결정
'//프린터명이 지정되어있다면 해당 프린터로설정,없으면 기본프린터
If SetForm.cmb_prnlist.Text <> "" Then Me.pDoc.PrinterSettings.PrinterName = SetForm.cmb_prnlist.Text
Dim Prn_Type As C_Epole.E_PrintRange
If Me.SetForm.rad_rangeall.Checked Then Prn_Type = C_Epole.E_PrintRange.All
If Me.SetForm.rad_Rangecurr.Checked Then Prn_Type = C_Epole.E_PrintRange.Current
If Me.SetForm.rad_rangecustom.Checked Then Prn_Type = C_Epole.E_PrintRange.Custom
If Me.SetForm.rad_repeat.Checked Then Prn_Type = E_PrintRange.FixedStyle
Return C_Epole.Set_PrnRange(Me.Dv, BS.Position, Me.PrintArray, Prn_Type, Me.SetForm.tb_printrange.Text.Trim)
End Function
'''
''' 프린트 미리보기(화면)를 띄웁니다.
'''
'''
Public Sub Print_Preview()
'Arin.WLog2(Auto_Log, "print_preview 미리보기 버튼을 눌렀을때다.()", LogFile)
If Not Prepare_Print() Then
MsgBox("인쇄가능한 목록이 없거나 인쇄범위(=페이지수)에 문제가 있습니다", MsgBoxStyle.Critical, "확인")
Return
End If
Dim Preview As New Windows.Forms.PrintPreviewDialog()
Try
Preview.Document = pDoc
Preview.ShowDialog()
Catch EX As Exception
MsgBox("Prrint_Preview Error : " & EX.Message)
End Try
End Sub
'''
''' 프린트를 합니다.
'''
'''
Public Sub Print()
If MsgBox("인쇄를 하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "확인") = MsgBoxResult.Ok Then
RaiseEvent StatusMessage("<< [P] Print", e_EventMessage.Normal)
If Me.Prepare_Print() Then
pDoc.Print()
Else
MsgBox("인쇄가능한 목록이 없거나 인쇄범위(=페이지수)에 문제가 있습니다", MsgBoxStyle.Critical, "확인")
End If
Else
MsgBox("인쇄가 취소되었습니다", MsgBoxStyle.Critical, "확인")
End If
End Sub
' Private Sub Build_PrintPage(ByRef Ga As Graphics, ByVal dummycnt As Short, ByVal Print As Boolean, ByVal CNT As Short, ByVal Row As Short)
Private Sub Build_PrintPage(ByRef Ga As Graphics, ByVal dummycnt As Short, ByVal Print As Boolean)
Dim Brush As SolidBrush
Dim obj As CEpole.C_label
Dim NewX, NewY, NewLeft, NewTop As Integer
Dim SrcG As Graphics = Me.v_picturebox1.CreateGraphics
'//dummycnt = 0은 처음출력하는 페이지이다.
If dummycnt = 0 AndAlso SetForm.cmb_imgtype.SelectedIndex = 5 Then '//화면지접 출력일때의 배경처리
' MsgBox(SetForm.Chk_BgImage.Checked.ToString)
If SetForm.Chk_BgImage.Checked AndAlso Not SetForm.bakimg.BackgroundImage Is Nothing Then
If Not Print Then '//미리보기일때 인쇄마진을 넣지않는다.
Ga.DrawImage(SetForm.bakimg.BackgroundImage, CInt(SetForm.tb_bakx.Text), CInt(SetForm.tb_baky.Text), CInt(SetForm.tb_bakw.Text), CInt(SetForm.tb_bakh.Text)) '//배경그림
ElseIf SetForm.chk_prnimg.Checked Then '//인쇄시출력시(인쇄마진적용)
Ga.DrawImage(SetForm.bakimg.BackgroundImage, CInt(SetForm.tb_bakx.Text) + CInt(SetForm.MyProperty_Paper.출력여백X), CInt(SetForm.tb_baky.Text) + CInt(SetForm.MyProperty_Paper.출력여백Y), CInt(SetForm.tb_bakw.Text), CInt(SetForm.tb_bakh.Text)) '//배경그림
End If
End If
End If
Dim RowIndex As Short = 0
Dim RowOffsetX As Short = 0
Dim RowOffsetY As Short = 0
If SetForm.MyProperty_Paper.분리갯수 > 0 AndAlso dummycnt > 0 Then '//연속출력일때에는 줄구분 값을 사용한다.
RowIndex = Math.Floor(dummycnt / SetForm.MyProperty_Paper.분리갯수)
RowOffsetX = RowIndex * SetForm.MyProperty_Paper.분리여백x
RowOffsetY = RowIndex * SetForm.MyProperty_Paper.분리여백y
End If
For i As Integer = 0 To Me.AllLabels.GetUpperBound(0) '//모든 개체들에 대해서 인쇄를 설정한다.
obj = Me.AllLabels(i)
If obj.visible AndAlso obj.Text <> "" Then '//화면에 보이는것만 한다.
For rcnt As Short = 0 To obj.Repeat '//반복기능추가한다
If RowIndex > 0 Then '//연속출력일때에는 줄구분 값을 사용한다.
'//줄이바뀌는
NewLeft = obj.Left + SetForm.MyProperty_Paper.연속여백x * (dummycnt - RowIndex * SetForm.MyProperty_Paper.분리갯수)
NewTop = obj.Top + SetForm.MyProperty_Paper.연속여백y * (dummycnt - RowIndex * SetForm.MyProperty_Paper.분리갯수)
Else
NewLeft = obj.Left + SetForm.MyProperty_Paper.연속여백x * dummycnt
NewTop = obj.Top + SetForm.MyProperty_Paper.연속여백y * dummycnt
End If
NewLeft += RowOffsetX
NewTop += RowOffsetY
If Print Then '//실제인쇄라면 인쇄여백을 추가로 설정한다.
NewLeft += +SetForm.MyProperty_Paper.출력여백X
NewTop += SetForm.MyProperty_Paper.출력여백Y
Brush = New SolidBrush(obj.ForeColor2) '//160515
Else
If Me.DMode Then
Brush = New SolidBrush(Drawing.Color.Gainsboro) '//전경색으로 브러쉬를 만든다.
Else
Brush = New SolidBrush(obj.ForeColor) '//전경색으로 브러쉬를 만든다.
End If
End If
'//여러줄에걸쳐 출력하는경우라면 170715 그 에 맞게 변경해야한다.
'If dummy Then '//2장출력일 때이다.
' If Print Then
' NewLeft = obj.Left + SetForm.MyProperty_Paper.여백x + SetForm.MyProperty_Paper.출력여백X
' NewTop = obj.Top + SetForm.MyProperty_Paper.여백y + SetForm.MyProperty_Paper.출력여백Y
' Brush = New SolidBrush(Color.Black) '//전경색으로 브러쉬를 만든다.
' Else
' NewLeft = obj.Left + SetForm.MyProperty_Paper.여백x
' NewTop = obj.Top + SetForm.MyProperty_Paper.여백y
' If Me.DMode Then
' Brush = New SolidBrush(Color.Gainsboro) '//전경색으로 브러쉬를 만든다.
' Else
' Brush = New SolidBrush(Color.Black) '//전경색으로 브러쉬를 만든다.
' End If
' End If
'Else
' If Print Then
' NewLeft = obj.Left + SetForm.MyProperty_Paper.출력여백X
' NewTop = obj.Top + SetForm.MyProperty_Paper.출력여백Y
' Brush = New SolidBrush(Color.Black) '//전경색으로 브러쉬를 만든다.
' Else
' NewLeft = obj.Left
' NewTop = obj.Top
' If Me.DMode Then
' Brush = New SolidBrush(Color.Gainsboro) '//전경색으로 브러쉬를 만든다.
' Else
' Brush = New SolidBrush(obj.ForeColor) '//전경색으로 브러쉬를 만든다.
' End If
' End If
'End If
If rcnt > 0 Then '//반복횟수가 1이상일때는 offset을 더해준다.
NewLeft = NewLeft + rcnt * obj.RepeatX
NewTop = NewTop + rcnt * obj.RepeatY
If Me.DMode Then
Brush = New SolidBrush(obj.ForeColor) '//전경색으로 브러쉬를 만든다.
Else
Brush = New SolidBrush(Drawing.Color.LightGreen) '//전경색으로 브러쉬를 만든다.
End If
If Print Then Brush = New SolidBrush(obj.ForeColor)
End If
If obj.WordWidth = 100 AndAlso obj.WordHeight = 100 Then '//이미지확대축소 디지않았을경우
Ga.DrawString(obj.text2, obj.Font, Brush, NewLeft, NewTop)
Else '//이미지확대축소 됬을경우
'Dim aNewX = obj.GetSize().Width * (obj.WordWidth / 100.0) '* (Ga.DpiX / SrcG.DpiX)
'Dim aNewY = obj.GetSize().Height * (obj.WordHeight / 100.0) ' * (Ga.DpiY / SrcG.DpiY)
If Not Print Then
NewX = obj.GetSize(Ga).Width * (obj.WordWidth / 100.0) '* (Ga.DpiX / SrcG.DpiX)
NewY = obj.GetSize(Ga).Height * (obj.WordHeight / 100.0) ' * (Ga.DpiY / SrcG.DpiY)
Else
NewX = obj.GetSize(Ga).Width * (obj.WordWidth / 100.0) * (Ga.DpiX / SrcG.DpiX)
NewY = obj.GetSize(Ga).Height * (obj.WordHeight / 100.0) * (Ga.DpiY / SrcG.DpiY)
End If
'If Not Print Then
' NewX = obj.GetSize().Width * (obj.WordWidth / 100.0) '* (Ga.DpiX / SrcG.DpiX)
' NewY = obj.GetSize().Height * (obj.WordHeight / 100.0) ' * (Ga.DpiY / SrcG.DpiY)
'Else
' NewX = obj.GetSize().Width * (obj.WordWidth / 100.0) * (Ga.DpiX / SrcG.DpiX)
' NewY = obj.GetSize().Height * (obj.WordHeight / 100.0) * (Ga.DpiY / SrcG.DpiY)
'End If
Dim BMP As New Bitmap(NewX, NewY, Ga)
Dim G As Graphics = Graphics.FromImage(BMP)
G.ScaleTransform((obj.WordWidth / 100.0), (obj.WordHeight / 100.0))
Dim sf As New StringFormat()
G.DrawString(obj.text2, obj.Font, Brush, 0.0F, 0.0F)
G.Dispose()
Try
Ga.DrawImage(BMP, NewLeft, NewTop) ', CInt(GetSize.Width * (vwordwidth / 100)), GetSize.Height)
Catch ex As Exception
' MsgBox("Graphic DrawError", MsgBoxStyle.Information, obj.Desc)
End Try
End If
Next
End If
Next
'//마지막에 테두리를 그린다.(연속출력시에는 넣지않는다)
If SetForm.chk_usedraw.Checked AndAlso (SetForm.MyProperty_Paper.그리기개체반복 OrElse dummycnt = 0) Then '//쉐이프개체를 사용할지 확인여부
'//라인을 그린다.
Dim I As Short = 0
Try
For Each Rect As S_Line In Me.Draw_Line.Items
Dim Pen As New Drawing.Pen(Rect.PenColor, Rect.PenWidth)
Dim NewSX As Single = Rect.X
Dim NewSY As Single = Rect.Y
Dim NewSX2 As Single = Rect.X2
Dim NewSY2 As Single = Rect.Y2
If RowIndex > 0 Then '//연속출력일때에는 줄구분 값을 사용한다.
NewSX += SetForm.MyProperty_Paper.연속여백x * (dummycnt - RowIndex * SetForm.MyProperty_Paper.분리갯수)
NewSY += SetForm.MyProperty_Paper.연속여백y * (dummycnt - RowIndex * SetForm.MyProperty_Paper.분리갯수)
NewSX2 += SetForm.MyProperty_Paper.연속여백x * (dummycnt - RowIndex * SetForm.MyProperty_Paper.분리갯수)
NewSY2 += SetForm.MyProperty_Paper.연속여백y * (dummycnt - RowIndex * SetForm.MyProperty_Paper.분리갯수)
Else
NewSX += SetForm.MyProperty_Paper.연속여백x * dummycnt
NewSY += SetForm.MyProperty_Paper.연속여백y * dummycnt
NewSX2 += SetForm.MyProperty_Paper.연속여백x * dummycnt
NewSY2 += SetForm.MyProperty_Paper.연속여백y * dummycnt
End If
NewSX += RowOffsetX
NewSY += RowOffsetY
NewSX2 += RowOffsetX
NewSY2 += RowOffsetY
If Print Then
NewSX += SetForm.MyProperty_Paper.출력여백X
NewSY += SetForm.MyProperty_Paper.출력여백Y
NewSX2 += SetForm.MyProperty_Paper.출력여백X
NewSY2 += SetForm.MyProperty_Paper.출력여백Y
End If
Ga.DrawLine(Pen, NewSX, NewSY, NewSX2, NewSY2)
Next
Catch ex As Exception
End Try
'//박스를 그린다.
I = 0
Try
For Each Rect As S_Box In Me.Draw_Box.Items
Dim Pen As New Drawing.Pen(Rect.PenColor, Rect.PenWidth)
Dim NewSX As Single = Rect.X
Dim NewSY As Single = Rect.Y
If RowIndex > 0 Then '//연속출력일때에는 줄구분 값을 사용한다.
NewSX += SetForm.MyProperty_Paper.연속여백x * (dummycnt - RowIndex * SetForm.MyProperty_Paper.분리갯수)
NewSY += SetForm.MyProperty_Paper.연속여백y * (dummycnt - RowIndex * SetForm.MyProperty_Paper.분리갯수)
Else
NewSX += SetForm.MyProperty_Paper.연속여백x * dummycnt
NewSY += SetForm.MyProperty_Paper.연속여백y * dummycnt
End If
NewSX += RowOffsetX
NewSY += RowOffsetY
If Print Then
NewSX += +SetForm.MyProperty_Paper.출력여백X
NewSY += +SetForm.MyProperty_Paper.출력여백Y
End If
If Rect.Radius = 0 Then
Ga.DrawRectangle(Pen, NewSX, NewSY, Rect.Width, Rect.Height)
Else
Dim rRect As Rectangle = New Rectangle(NewSX, NewSY, Rect.Width, Rect.Height)
Dim rpath As System.Drawing.Drawing2D.GraphicsPath = ACC.MYGDI.GetRoundedRectPath(rRect, Rect.Radius)
Ga.DrawPath(Pen, rpath)
End If
Next
Catch ex As Exception
End Try
'//원 그린다.
I = 0
Try
For Each Rect As S_Circle In Me.Draw_Circle.Items
Dim Pen As New Drawing.Pen(Rect.PenColor, Rect.PenWidth)
Dim NewSX As Single = Rect.X
Dim NewSY As Single = Rect.Y
If RowIndex > 0 Then '//연속출력일때에는 줄구분 값을 사용한다.
NewSX += SetForm.MyProperty_Paper.연속여백x * (dummycnt - RowIndex * SetForm.MyProperty_Paper.분리갯수)
NewSY += SetForm.MyProperty_Paper.연속여백y * (dummycnt - RowIndex * SetForm.MyProperty_Paper.분리갯수)
Else
NewSX += SetForm.MyProperty_Paper.연속여백x * dummycnt
NewSY += SetForm.MyProperty_Paper.연속여백y * dummycnt
End If
NewSX += RowOffsetX
NewSY += RowOffsetY
If Print Then
NewSX += +SetForm.MyProperty_Paper.출력여백X
NewSY += +SetForm.MyProperty_Paper.출력여백Y
End If
Ga.DrawEllipse(Pen, NewSX, NewSY, Rect.Width, Rect.Height)
Next
Catch ex As Exception
End Try
'//이미지개체를 그린다.
I = 0
Try
For Each Rect As S_Image In Me.Draw_Image.Items
Dim F As String = Rect.FileName
If F.Trim <> "" Then
F = F.Replace(".\", My.Application.Info.DirectoryPath & "\")
' MsgBox(F)
If System.IO.File.Exists(F) Then
Dim Image As Image = Image.FromFile(F) '//파일로부터 이미지를 가져옴
Dim NewSX As Single = Rect.X
Dim NewSY As Single = Rect.Y
If RowIndex > 0 Then '//연속출력일때에는 줄구분 값을 사용한다.
NewSX += SetForm.MyProperty_Paper.연속여백x * (dummycnt - RowIndex * SetForm.MyProperty_Paper.분리갯수)
NewSY += SetForm.MyProperty_Paper.연속여백y * (dummycnt - RowIndex * SetForm.MyProperty_Paper.분리갯수)
Else
NewSX += SetForm.MyProperty_Paper.연속여백x * dummycnt
NewSY += SetForm.MyProperty_Paper.연속여백y * dummycnt
End If
NewSX += RowOffsetX
NewSY += RowOffsetY
If Print Then
NewSX += +SetForm.MyProperty_Paper.출력여백X
NewSY += +SetForm.MyProperty_Paper.출력여백Y
End If
If Rect.Width = 0 OrElse Rect.Height = 0 Then
Ga.DrawImage(Image, NewSX, NewSY)
Else
Ga.DrawImage(Image, NewSX, NewSY, Rect.Width, Rect.Height)
End If
End If
End If
Next
Catch ex As Exception
End Try
I = 0
'//QR코드를 그린다.
Try
'//QR코드를 그린다.
For Each Rect As S_QRCode In Me.Draw_QRcode.Items
'Dim scale As Int16
' Dim version As Int16
Dim image As Image
Dim data As String = ""
' Dim errorCorrect As String
Dim qrCodeEncoder1 As New ThoughtWorks.QRCode.Codec.QRCodeEncoder()
' Dim encoding As String
qrCodeEncoder1.QRCodeEncodeMode = CInt(Rect.Encoding)
qrCodeEncoder1.QRCodeErrorCorrect = CInt(Rect.CLeve)
qrCodeEncoder1.QRCodeVersion = Rect.Version
qrCodeEncoder1.QRCodeScale = Rect.Size
'encoding = "3"
'If encoding = "3" Then
' qrCodeEncoder.QRCodeEncodeMode = ThoughtWorks.QRCode.Codec.QRCodeEncoder.ENCODE_MODE.BYTE
'ElseIf encoding = "1" Then
' qrCodeEncoder.QRCodeEncodeMode = ThoughtWorks.QRCode.Codec.QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC
'ElseIf encoding = "2" Then
' qrCodeEncoder.QRCodeEncodeMode = ThoughtWorks.QRCode.Codec.QRCodeEncoder.ENCODE_MODE.NUMERIC
' Try
' version = Convert.ToInt16("1")
' qrCodeEncoder.QRCodeVersion = version
' Catch ex As Exception
' End Try
'End If
'errorCorrect = "1"
'If errorCorrect = "1" Then
' qrCodeEncoder.QRCodeErrorCorrect = ThoughtWorks.QRCode.Codec.QRCodeEncoder.ERROR_CORRECTION.L
'ElseIf errorCorrect = "2" Then
' qrCodeEncoder.QRCodeErrorCorrect = ThoughtWorks.QRCode.Codec.QRCodeEncoder.ERROR_CORRECTION.M
'ElseIf errorCorrect = "3" Then
' qrCodeEncoder.QRCodeErrorCorrect = ThoughtWorks.QRCode.Codec.QRCodeEncoder.ERROR_CORRECTION.Q
'ElseIf errorCorrect = "4" Then
' qrCodeEncoder.QRCodeErrorCorrect = ThoughtWorks.QRCode.Codec.QRCodeEncoder.ERROR_CORRECTION.H
'End If
If Rect.Format = "" Then Rect.Format = "{DATA}"
Rect.Format = Rect.Format.Replace("{DATA}", "{QR1}")
Rect.Format = Rect.Format.Replace("{QR}", "{QR1}") '//151029
'//151029 qr코드버그처리
Dim PrintQRCODE As String = Rect.Format.Replace("{QR1}", QRCODE1)
PrintQRCODE = PrintQRCODE.Replace("{QR2}", QRCODE2)
PrintQRCODE = PrintQRCODE.Replace("{QR3}", QRCODE3)
PrintQRCODE = PrintQRCODE.Replace("{QR4}", QRCODE4)
PrintQRCODE = PrintQRCODE.Replace("{번호}", 일련번호)
If PrintQRCODE <> "" Then '//사용자가 입력한 데이터가 있다.
'Ga.DrawString(QRCODE, New Font("arial", 30), Brushes.Black, 100, 100)
qrCodeEncoder1.QRCodeBackgroundColor = Rect.bColor
qrCodeEncoder1.QRCodeForegroundColor = Rect.fColor
image = qrCodeEncoder1.Encode(PrintQRCODE, Ga.DpiX, Ga.DpiY)
Dim NewSX As Single = Rect.X
Dim NewSY As Single = Rect.Y
If RowIndex > 0 Then '//연속출력일때에는 줄구분 값을 사용한다.
NewSX += SetForm.MyProperty_Paper.연속여백x * (dummycnt - RowIndex * SetForm.MyProperty_Paper.분리갯수)
NewSY += SetForm.MyProperty_Paper.연속여백y * (dummycnt - RowIndex * SetForm.MyProperty_Paper.분리갯수)
Else
NewSX += SetForm.MyProperty_Paper.연속여백x * dummycnt
NewSY += SetForm.MyProperty_Paper.연속여백y * dummycnt
End If
NewSX += RowOffsetX
NewSY += RowOffsetY
If Print Then
NewSX += +SetForm.MyProperty_Paper.출력여백X
NewSY += +SetForm.MyProperty_Paper.출력여백Y
End If
If Rect.Width = 0 OrElse Rect.Height = 0 Then
Ga.DrawImage(image, NewSX, NewSY)
Else
Ga.DrawImage(image, NewSX, NewSY, Rect.Width, Rect.Height)
End If
End If
Next
Catch ex As Exception
End Try
End If
End Sub
'''
''' 프린트할 페이지를 작성합니다.
'''
'''
'''
'''
Private Sub pDoc_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles pDoc.PrintPage
RaiseEvent StatusMessage("<< [P] pDoc_PrintPage : Build Print Pages", e_EventMessage.Normal)
Dim fmt As New StringFormat(StringFormatFlags.LineLimit)
Dim NewFontSize As Int16 = 10
Dim dummy As Boolean = False '//이값이 true 이면 출력시 변위를 지정해서 출력한다.
If Me.printindex <> -1 And SetForm.rad_repeat.Checked = False Then Me.GeTviewData(Me.PrintArray(Me.printindex), False) '//페이지를 갱신하고 출력을 시작한다.
e.Graphics.ScaleTransform(SetForm.MyProperty_Paper.가로확대비율, SetForm.MyProperty_Paper.세로확대비율) '//확대,축소비율적용
If SetForm.MyProperty_Paper.출력장수 < 1 Then SetForm.MyProperty_Paper.출력장수 = 1 '//출력장수 오류보정
If SetForm.MyProperty_Paper.출력장수 < 2 Then SetForm.MyProperty_Paper.분리갯수 = 0 '//분리갯수 오류보정
'//190209 water mark
Dim PrinterName As String = SetForm.cmb_prnlist.Text.ToLower.Trim()
Dim WaterMark As Boolean = False
If DisableWaterMark = False AndAlso (PrinterName.IndexOf("xps") <> -1 OrElse PrinterName.IndexOf("pdf") <> -1 OrElse PrinterName.IndexOf("jpg") <> -1 OrElse PrinterName.IndexOf("file") <> -1) Then
WaterMark = True
End If
Dim IncNum As Boolean = False
For pi As Short = 0 To SetForm.MyProperty_Paper.출력장수 - 1 '//페이지당 연속출력할 횟수
'Dummyflag: '//--2장출력일경우 이부분에서 다시 시작한다.
' Me.Build_PrintPage(e.Graphics, pi, True, SetForm.cmb_style.SelectedIndex, Me.PrintArray(Me.printindex)) '//여기서연속으로 출력을 하기는하는데
Me.Build_PrintPage(e.Graphics, pi, True)
If (WaterMark) Then '//190209
Using sb As New SolidBrush(System.Drawing.Color.FromArgb(50, Drawing.Color.Black))
Using fnt As New Font("Cambria", 40, FontStyle.Bold Or FontStyle.Italic)
Dim fs As SizeF = e.Graphics.MeasureString("HAEGWANG.CO.KR", fnt)
For i As Integer = 50 To 800 Step 150
e.Graphics.DrawString("HAEGWANG.CO.KR", fnt, sb, 50, i)
Next
End Using
End Using
End If
IncNum = False
'//한데이터출력하고나서 반복페에지횟수가 있는지확인한다.
If SetForm.MyProperty_Paper.출력장수 > 1 Then
' If Me.cmb_dummy.SelectedIndex <> 0 Then '//다음데이터의 출력이면 여기서 데이터를 갱신해준다.
If SetForm.MyProperty_Paper.출력방법 <> E_Dummytype.현재복사 Then '//다음장이있다.
If Me.printindex >= 0 AndAlso Me.printindex < Me.PrintArray.GetUpperBound(0) Then
Me.printindex += 1 '/1장넘기고
If SetForm.MyProperty_Paper.출력방법 <> E_Dummytype.현재복사 AndAlso SetForm.rad_repeat.Checked = False Then Me.GeTviewData(Me.PrintArray(Me.printindex), False) '//데이터 바꾸는데..화면은 갱신하지 않는다.
IncNum = True
Else '//다음장의 출력인데 데이터가없다면 루프를 더이상 돌면안된다.
Exit For
End If
End If
End If
''//페이지가 있던없던 2장복사를 먼저 확인한다.
''//다음페이지가 잇으면 다음기능을 확인하고 그렇지 않을경우에는 한장복사만 확인한다.
'If dummy = False AndAlso SetForm.MyProperty_Paper.사용여부 Then '//2장복사일경우에는 현재복사인지 다음복사인지 체크
' dummy = True
' If SetForm.MyProperty_Paper.출력방법 = E_Dummytype.현재복사 Then '//현재복사는 궂이 다음장없어도 가능하다.
' GoTo Dummyflag
' Else '//다음복사이므로 다음장이잇는지 확인하고해야한다.
' If Me.printindex >= 0 AndAlso Me.printindex < Me.PrintArray.GetUpperBound(0) Then '//다음장이있다.
' Me.printindex += 1 '/1장넘기고
' '//데이터를 새로 갱신하는데 고정문자는 어차피 같은데이터이므로 갱신을 하지않는다.
' If SetForm.rad_repeat.Checked = False Then Me.GeTviewData(Me.PrintArray(Me.printindex), False)
' GoTo Dummyflag '//바로 출력다시한다.
' End If
' e.HasMorePages = False '다음장이없으므로 그냥 넘어간다.
' End If
'Else '//다음장으로넘깁니다.
' If Me.printindex >= 0 AndAlso Me.printindex < Me.PrintArray.GetUpperBound(0) Then '//다음장이있다.
' dummy = False '//장수를 넘어가면 더미를 해제한다.
' Me.printindex += 1
' e.HasMorePages = True
' Else
' e.HasMorePages = False
' End If
'End If
Next
If Me.printindex >= 0 AndAlso Me.printindex < Me.PrintArray.GetUpperBound(0) Then '//다음장이있다.
If Not IncNum Then Me.printindex += 1 '//페이지번호를 증가
e.HasMorePages = True
Else
e.HasMorePages = False
End If
e.Graphics.Dispose()
End Sub
#Region "설정폼에대한 명령어"
'''
''' 설정폼 : 개체목록 콤보박스에 목록추가
'''
'''
'''
Public Sub Add_ControlsList(ByVal 설명 As String)
Me.SetForm.cmb_controls.Items.Add(설명)
End Sub
'''
''' 개체목록 콤보박스 목록을 초기화합니다.
'''
'''
Public Sub Clear_Contollist()
Me.SetForm.cmb_controls.Items.Clear()
End Sub
'''
''' 설정폼을 화면에 표시/감추기 합니다.
'''
'''
'''
Public WriteOnly Property SetFormShow() As Boolean
Set(ByVal value As Boolean)
If value Then
Me.SetForm.Show()
Else
Me.SetForm.Hide()
End If
End Set
End Property
#End Region
#Region "자주사용하지 않는 함수 (Form함수포함)"
Public Overridable Sub AdminSetting()
MsgBox("관리자용 셋팅이 오버라이드되지 않았습니다")
End Sub
Public Sub Change_All_FontData(ByVal v_font As Font)
'//패턴을 포함한 모든데이터의 폰트를 일괄변경합니다.
'//해당파일전체를 찾아서 루프로 ??font라는 글자를 찾아서 변경
Dim Usesize As Boolean = False
If MsgBox("글꼴의 크기및 속성을 적용하시겠습니까?" & vbCrLf & "글꼴만 변경하려면 아니오를 누르세요", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") = MsgBoxResult.Ok Then
Usesize = True
End If
Dim styleFile As String = StyleList(SetForm.cmb_style.SelectedIndex).File
Dim Pattern As String = styleFile.Substring(0, styleFile.LastIndexOf("."))
Dim FileCnt As Integer = 0
For Each File As System.IO.FileInfo In StyleDir.GetFiles(Pattern & ".*")
FileCnt += 1
Dim Bufa As String = ""
'//MsgBox(File.FullName & "선택파일")
'//파일을 읽어서 font= 부분을찾은다음에 해당 라인을 바꿔준다.
Dim buf As String = My.Computer.FileSystem.ReadAllText(File.FullName, System.Text.Encoding.Default)
'buf = buf.Replace(vbLf, vbCrLf).Replace(vbCr, vbCrLf)
'Dim Newbuf As New System.Text.StringBuilder("")
buf = buf.Trim(vbCr).Trim(vbLf)
For Each Str As String In buf.Split(vbCrLf) '//줄바꿈으로
'If MsgBox(Str, MsgBoxStyle.OkCancel) = MsgBoxResult.Ok Then
' Exit For
'End If
' If Str.Trim <> "" Then Bufa &= vbCrLf & Str
' Str = Str.Replace(vbCr, "").Replace(vbCrLf, "").Replace(vbLf, "")
Str = Str.Trim.Trim(vbCrLf).Trim(vbCr).Trim(vbLf)
If Str.Trim <> "" Then
If Str.Trim.ToLower.IndexOf("font=") <> -1 Then '//폰트가잇는 줄을 찾는다.
Dim Head As String = Str.Substring(0, Str.IndexOf("=")) '//머리부분
Dim Tail As String = Str.Substring(Str.IndexOf("=") + 1)
Dim T() As String = Tail.Split(",")
T(0) = v_font.Name
If Usesize Then
T(1) = v_font.Size
T(2) = v_font.Underline
T(3) = v_font.Bold
T(4) = v_font.Italic
End If
Bufa &= vbCrLf & Head & "=" & T(0) & "," & T(1) & "," & T(2) & "," & T(3) & "," & T(4)
For i As Integer = 5 To T.GetUpperBound(0)
Bufa = Bufa & "," & T(i)
Next
Else
Bufa &= vbCrLf & Str
End If
End If
Next
'Dim LastBuf As New System.Text.StringBuilder
'For Each S As String In Newbuf.ToString.Split(vbCrLf)
' If S.Trim <> "" Then LastBuf.AppendLine(S.Trim(vbCr).Trim(vbLf))
'Next
My.Computer.FileSystem.WriteAllText(File.FullName, Bufa, False, System.Text.Encoding.Default)
'My.Computer.FileSystem.WriteAllText("c:\log.txt", Bufa, False, System.Text.Encoding.Default)
'Shell("notepad c:\log.txt", AppWinStyle.NormalFocus)
Next
Me.데이터테이블갱신()
Me.preview_window()
MsgBox("변경완료(" & FileCnt & ")" & vbCrLf & "출력창을 닫은후 다시 여세요", MsgBoxStyle.Information, "확인")
'For i As Integer = 0 To Me.AllLabels.GetUpperBound(0)
' Tobj = Me.AllLabels(i)
' ' If Not Tobj.HasPattern Then '//패턴이 없는 것일경우 패턴잇는것은 따로 저장되잇으므로 저장할 필요없다
' '################################ 스타일개별 저장부분추가됨
' TagINI = New ACC.MyINI(ReplaceExt(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File, Tobj.Tag.ToString))
' 'TagINI = New CommonClassv2.MyINI(CStr(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File).ToLower.Replace("ini", Tobj.Name.Substring(0, 1)))
' If TagINI.Exist = False Then TagINI.Create()
' TagINI.Write("STYLE", Tobj.Name & "pos", Tobj.Left & "," & Tobj.Top & "," & Tobj.Width & "," & Tobj.Height)
' TagINI.Write("STYLE", Tobj.Name & "font", Tobj.Font.Name & "," & Tobj.Font.Size & "," & Tobj.Font.Underline & "," & Tobj.Font.Bold & "," & Tobj.Font.Italic & "," & Tobj.WordWidth & "," & Tobj.WordHeight)
' TagINI.Write("STYLE", Tobj.Name & "visible", "true") '기본값으로 표시로 정해놓고 체크박스 체크한다.
' TagINI.Write("STYLE", Tobj.Name & "space", Tobj.WordSpace)
' TagINI.Write("STYLE", Tobj.Name & "repeat", Tobj.Repeat & "," & Tobj.RepeatX & "," & Tobj.RepeatY) '//반복출력정보저장
' If Tobj.Fixed Then TagINI.Write("STYLE", Tobj.Name & "mytext", Tobj.Text)
' '################################ 스타일개별 저장부분추가됨
' ' End If
'Next
End Sub
Public Sub SAVE_STYLE_NEW()
'//이건 각개별스타일이 개별파일로 들어가도록 변형환 파일입니다
'//3월20일버젼부터 적용됩니다.
RaiseEvent StatusMessage("[P] Save_Style : Save Sytle to SeparateFile Default=" & StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File, e_EventMessage.Normal)
If SetForm.cmb_style.SelectedIndex < 0 Then
MsgBox("저장할 스타일이 선택되어 있지않습니다", MsgBoxStyle.Critical, "확인")
Return
End If
Dim TagINI As ACC.MyINI
Dim Tobj As CEpole.C_label
'//현재 선택된 스타일을 저장합니다.
For i As Integer = 0 To Me.AllLabels.GetUpperBound(0)
Tobj = Me.AllLabels(i)
' If Not Tobj.HasPattern Then '//패턴이 없는 것일경우 패턴잇는것은 따로 저장되잇으므로 저장할 필요없다
'################################ 스타일개별 저장부분추가됨
TagINI = New ACC.MyINI(ReplaceExt(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File, Tobj.Tag.ToString))
'TagINI = New CommonClassv2.MyINI(CStr(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File).ToLower.Replace("ini", Tobj.Name.Substring(0, 1)))
If TagINI.Exist = False Then TagINI.Create()
TagINI.Write("STYLE", Tobj.Name & "pos", Tobj.Left & "," & Tobj.Top & "," & Tobj.Width & "," & Tobj.Height)
TagINI.Write("STYLE", Tobj.Name & "font", Tobj.Font.Name & "," & Tobj.Font.Size & "," & Tobj.Font.Underline & "," & Tobj.Font.Bold & "," & Tobj.Font.Italic & "," & Tobj.WordWidth & "," & Tobj.WordHeight)
TagINI.Write("STYLE", Tobj.Name & "visible", "true") '기본값으로 표시로 정해놓고 체크박스 체크한다.
TagINI.Write("STYLE", Tobj.Name & "space", Tobj.WordSpace)
TagINI.Write("STYLE", Tobj.Name & "repeat", Tobj.Repeat & "," & Tobj.RepeatX & "," & Tobj.RepeatY) '//반복출력정보저장
TagINI.Write("STYLE", Tobj.Name & "fc", Tobj.ForeColor2.ToArgb.ToString())
If Tobj.Fixed Then TagINI.Write("STYLE", Tobj.Name & "mytext", Tobj.Text)
'################################ 스타일개별 저장부분추가됨
' End If
Next
'//데이터표시 체크박스 상태를 저장한다.
TagINI = New ACC.MyINI(ReplaceExt(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File, "ck"))
For Each B As C_Epole.S_FullLable In Me.AllFullLabels
RaiseEvent StatusMessage("[p] SaveStyle_Checkbox name=" & B.CheckBox.Name, e_EventMessage.Normal)
TagINI.Write("STYLE", "CheckBox_" & B.CheckBox.Name, B.CheckBox.Checked) 'A.Visible)
Next
'///////////////////////////////////////////////////////////////////////////////////////////////////
TagINI = New ACC.MyINI(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File)
TagINI.Write("STYLE", "MarginX", SetForm.MyProperty_Paper.출력여백X)
TagINI.Write("STYLE", "MarginY", SetForm.MyProperty_Paper.출력여백Y)
TagINI.Write("STYLE", "ScaleX", SetForm.MyProperty_Paper.가로확대비율)
TagINI.Write("STYLE", "ScaleY", SetForm.MyProperty_Paper.세로확대비율)
TagINI.Write("STYLE", "LandScape", Me.pDoc.DefaultPageSettings.Landscape)
'TagINI.Write("STYLE", "dummy", SetForm.MyProperty_Paper.사용여부)
TagINI.Write("STYLE", "dummycnt", SetForm.MyProperty_Paper.출력장수)
'MsgBox("저장장수" & SetForm.MyProperty_Paper.출력장수)
TagINI.Write("STYLE", "dummytype", SetForm.MyProperty_Paper.출력방법)
TagINI.Write("STYLE", "dummmyx", SetForm.MyProperty_Paper.연속여백x)
TagINI.Write("STYLE", "dummmyy", SetForm.MyProperty_Paper.연속여백y)
TagINI.Write("STYLE", "RowDivCnt", SetForm.MyProperty_Paper.분리갯수)
TagINI.Write("STYLE", "rowdivx", SetForm.MyProperty_Paper.분리여백x)
TagINI.Write("STYLE", "rowdivy", SetForm.MyProperty_Paper.분리여백y)
TagINI.Write("STYLE", "DRAWITEMREPEAT", SetForm.MyProperty_Paper.그리기개체반복)
TagINI.Write("STYLE", "ViewImage", SetForm.Chk_BgImage.Checked)
TagINI.Write("STYLE", "fixedstyle", SetForm.rad_repeat.Checked)
TagINI.Write("STYLE", "printrange", SetForm.tb_printrange.Text)
TagINI.Write("STYLE", "backimg", SetForm.tb_picfile.Text)
'///////////////////////////////////////////////////////////////////////////////////////////////////
'//스타일저장시에 현재 레이아웃상태또한 저장하게한다. 이부분은 스타일불러올때 쓰지는 않고
'//가로/세로 선택할때 불러오게한다(파일에서 직접 불러오게한다 어차피 한번뿐이므로 궃이 메모리에 올리필요없다
Me.SaveReadLayOut_NEW(False) '//레이아웃저장한다.
Me.SaveReadDesignData(False)
' NOTICE("기본스타일을 저장했습니다", Me.lb_msg)
' Arin.WLog2(Auto_Log, "save style 완료후 데이터테이블 갱신을 호춣 ", LogFile)
Me.데이터테이블갱신()
Me.preview_window()
End Sub
Public Sub LOAD_STYLEC(ByVal StyleName As String, ByVal Div As String)
'//기타스타일은 빈도가 적으니 파일에서 불러오기로한다.;;메모리는 싫타.
Dim Arinini As New ACC.MyINI(Me.StyleFileC)
If Not Arinini.Exist Then
MsgBox("기타스타일설정 파일이 존재하지 않습니다\n\n관리자에 문의하세요", MsgBoxStyle.Critical, "오류")
Return
End If
Dim pos(), font(), visible As String '//구전산번호를 구현해본다.
Dim Tobj As CEpole.C_label
Dim fcString As String = System.Drawing.Color.Black.ToArgb.ToString()
For i As Integer = 0 To Me.AllLabels.GetUpperBound(0)
Tobj = Me.AllLabels(i)
Try
If Div.ToUpper = "Z" Then '//모든아이템을 가져오고
pos = Arinini.Read(StyleName, Tobj.Name & "pos").Split(",")
font = Arinini.Read(StyleName, Tobj.Name & "font").Trim(Chr(0)).Split(",")
visible = Arinini.Read(StyleName, Tobj.Name & "visible")
fcString = Arinini.Read(StyleName, Tobj.Name & "fc")
If String.IsNullOrWhiteSpace(fcString) Then fcString = System.Drawing.Color.Black.ToArgb.ToString()
'//상태를 읽어서 바로 적용한다.
Tobj.Location = New Point(pos(0), pos(1))
Tobj.Size = New Size(pos(2), pos(3))
Tobj.Font = New Font(font(0), font(1), IIf(font(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
Tobj.WordWidth = font(5)
Tobj.WordHeight = font(6)
Tobj.WordSpace = Arinini.Read(StyleName, Tobj.Name & "space", 0)
Tobj.visible = CType(visible, Boolean)
Tobj.ForeColor2 = System.Drawing.Color.FromArgb(CInt(fcString)) '//160515
'MsgBox(Tobj) '
Else '이곳에 O가올것이다.
If Tobj.Name.ToUpper.Substring(0, 1) = Div Then
pos = Arinini.Read(StyleName, Tobj.Name & "pos").Split(",")
font = Arinini.Read(StyleName, Tobj.Name & "font").Trim(Chr(0)).Split(",")
visible = Arinini.Read(StyleName, Tobj.Name & "visible")
fcString = Arinini.Read(StyleName, Tobj.Name & "fc")
If String.IsNullOrWhiteSpace(fcString) Then fcString = System.Drawing.Color.Black.ToArgb.ToString()
'//상태를 읽어서 바로 적용한다.
Tobj.Location = New Point(pos(0), pos(1))
Tobj.Size = New Size(pos(2), pos(3))
Tobj.Font = New Font(font(0), font(1), IIf(font(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
Tobj.WordWidth = font(5)
Tobj.WordHeight = font(6)
Tobj.WordSpace = Arinini.Read(StyleName, Tobj.Name & "space", 0)
Tobj.visible = CType(visible, Boolean)
Tobj.ForeColor2 = System.Drawing.Color.FromArgb(CInt(fcString)) '//160515
'MsgBox(Tobj)
End If
End If
Catch ex As Exception
RaiseEvent StatusMessage("[P] Error Load_StyleC : 오류 = " & ex.Message.ToString, e_EventMessage.Normal)
End Try
Tobj.ForeColor = Tobj.ForeColor2 '//160515
Next
'NOTICE(StyleName & "기타스타일을 불러왔습니다.", Me.lb_msg)
Me.preview_window()
End Sub
Public Sub SAVE_STYLEC(ByVal stylename As String, ByVal div As String) '//기타스타일 저장한다.
Dim Arinini As New ACC.MyINI(StyleFileC)
'//현재 선택된 스타일을 저장합니다.
Arinini.Write(stylename, "DESC", stylename)
Dim Tobj As CEpole.C_label
For i As Integer = 0 To Me.AllLabels.GetUpperBound(0)
Tobj = Me.AllLabels(i)
Arinini.Write(stylename, Tobj.Name & "pos", Tobj.Left & "," & Tobj.Top & "," & Tobj.Width & "," & Tobj.Height)
Arinini.Write(stylename, Tobj.Name & "font", Tobj.Font.Name & "," & Tobj.Font.Size & "," & Tobj.Font.Underline & "," & Tobj.Font.Bold & "," & Tobj.Font.Italic & "," & Tobj.WordWidth & "," & Tobj.WordHeight)
Arinini.Write(stylename, Tobj.Name & "visible", Tobj.visible)
Arinini.Write(stylename, Tobj.Name & "space", Tobj.WordSpace)
Arinini.Write(stylename, Tobj.Name & "fc", Tobj.ForeColor2.ToArgb.ToString())
Next
'NOTICE("기타스타일을 저장했습니다", Me.lb_msg)
End Sub
'''
''' 디자인개체들을 저장
'''
'''
Public Sub SaveReadDesignData(ByVal read As Boolean)
Dim bname As String = "DrawBox"
Dim lname As String = "DrawLine"
Dim Iname As String = "DrawImage"
Dim Cname As String = "Drawcircle"
Dim qname As String = "DrawQRcode"
Dim bcnt, Ccnt, lcnt, Icnt, qcnt As Short
Dim INi As New ACC.MyINI(DesignFile.FullName)
If read Then
'MsgBox("디자인데이터 불러오기" & DesignFile.FullName)
Me.Draw_Box = New Shape_Box
Me.Draw_Line = New Shape_line
Me.Draw_Image = New Shape_Image
Me.Draw_Circle = New Shape_Circle
Me.Draw_QRcode = New Shape_QRcode
bcnt = INi.Read(bname, "Count", 0)
For i As Short = 1 To bcnt '//모두돌아서 저장한다.
Dim L As New S_Box
L.PenColor = Drawing.Color.FromArgb(INi.Read(bname, "box" & i & "pencolor", 0))
L.PenWidth = INi.Read(bname, "box" & i & "pensize", 3)
L.X = INi.Read(bname, "box" & i & "x", 0)
L.Y = INi.Read(bname, "box" & i & "y", 0)
L.Width = INi.Read(bname, "box" & i & "x2", 10)
L.Height = INi.Read(bname, "box" & i & "y2", 10)
L.Radius = INi.Read(bname, "box" & i & "rad", 10)
Me.Draw_Box.Add(L)
Next
Ccnt = INi.Read(Cname, "Count", 0)
For i As Short = 1 To Ccnt '//모두돌아서 저장한다.
Dim L As New S_Circle
L.PenColor = Drawing.Color.FromArgb(INi.Read(Cname, "circle" & i & "pencolor", 0))
L.PenWidth = INi.Read(Cname, "circle" & i & "pensize", 3)
L.X = INi.Read(Cname, "circle" & i & "x", 0)
L.Y = INi.Read(Cname, "circle" & i & "y", 0)
L.Width = INi.Read(Cname, "circle" & i & "x2", 10)
L.Height = INi.Read(Cname, "circle" & i & "y2", 10)
'L.Radius = INi.Read(Cname, "box" & i & "rad", 10)
Me.Draw_Circle.Add(L)
Next
lcnt = INi.Read(lname, "Count", 0)
For i As Short = 1 To lcnt '//모두돌아서 저장한다.
Dim L As New S_Line
L.PenColor = Drawing.Color.FromArgb(INi.Read(lname, "line" & i & "pencolor", 0))
L.PenWidth = INi.Read(lname, "line" & i & "pensize", 3)
L.X = INi.Read(lname, "line" & i & "x", 0)
L.Y = INi.Read(lname, "line" & i & "y", 0)
L.X2 = INi.Read(lname, "line" & i & "x2", 10)
L.Y2 = INi.Read(lname, "line" & i & "y2", 10)
Me.Draw_Line.Add(L)
Next
Icnt = INi.Read(Iname, "Count", 0)
For i As Short = 1 To Icnt '//모두돌아서 저장한다.
Dim L As New S_Image
L.FileName = INi.Read(Iname, "img" & i & "file", "")
L.X = INi.Read(Iname, "img" & i & "x", 0)
L.Y = INi.Read(Iname, "img" & i & "y", 0)
L.Width = INi.Read(Iname, "img" & i & "x2", 10)
L.Height = INi.Read(Iname, "img" & i & "y2", 10)
Me.Draw_Image.Add(L)
Next
qcnt = INi.Read(qname, "Count", 0)
For i As Short = 1 To qcnt
Dim L As New S_QRCode
L.X = INi.Read(qname, "qrcode" & i & "X", 0)
L.Y = INi.Read(qname, "qrcode" & i & "Y", 0)
L.Width = INi.Read(qname, "qrcode" & i & "x2", 10)
L.Height = INi.Read(qname, "qrcode" & i & "y2", 10)
L.Size = INi.Read(qname, "qrcode" & i & "qsize", 10)
L.Encoding = INi.Read(qname, "qrcode" & i & "qe", 10)
L.Version = INi.Read(qname, "qrcode" & i & "qv", 10)
L.CLeve = INi.Read(qname, "qrcode" & i & "qclevel", 10)
L.Format = INi.Read(qname, "qrcode" & i & "format", "{DATA}")
L.fColor = System.Drawing.Color.FromArgb(Integer.Parse(INi.Read(qname, "qrcode" & i & "fcolor", Drawing.Color.Black.ToArgb().ToString())))
L.bColor = System.Drawing.Color.FromArgb(Integer.Parse(INi.Read(qname, "qrcode" & i & "bColor", Drawing.Color.White.ToArgb().ToString())))
Me.Draw_QRcode.Add(L)
Next
SetForm.Refresh_Drawlist()
Else
' MsgBox("디자인데이터 저장" & DesignFile.FullName)
INi.Write(bname, "Count", Me.Draw_Box.Count)
For i As Short = 1 To Me.Draw_Box.Count '//모두돌아서 저장한다.
Dim L As S_Box = Me.Draw_Box.item(i - 1)
INi.Write(bname, "box" & i & "pencolor", L.PenColor.ToArgb)
INi.Write(bname, "box" & i & "pensize", L.PenWidth)
INi.Write(bname, "box" & i & "x", L.X)
INi.Write(bname, "box" & i & "y", L.Y)
INi.Write(bname, "box" & i & "x2", L.Width)
INi.Write(bname, "box" & i & "y2", L.Height)
INi.Write(bname, "box" & i & "rad", L.Radius)
Next
INi.Write(Cname, "Count", Me.Draw_Circle.Count)
For i As Short = 1 To Me.Draw_Circle.Count '//모두돌아서 저장한다.
Dim L As S_Circle = Me.Draw_Circle.item(i - 1)
INi.Write(Cname, "circle" & i & "pencolor", L.PenColor.ToArgb)
INi.Write(Cname, "circle" & i & "pensize", L.PenWidth)
INi.Write(Cname, "circle" & i & "x", L.X)
INi.Write(Cname, "circle" & i & "y", L.Y)
INi.Write(Cname, "circle" & i & "x2", L.Width)
INi.Write(Cname, "circle" & i & "y2", L.Height)
'INi.Write(bname, "circle" & i & "rad", L.Radius)
Next
INi.Write(lname, "Count", Me.Draw_Line.Count)
For i As Short = 1 To Me.Draw_Line.Count '//모두돌아서 저장한다.
Dim L As S_Line = Me.Draw_Line.Item(i - 1)
INi.Write(lname, "line" & i & "pencolor", L.PenColor.ToArgb)
INi.Write(lname, "line" & i & "pensize", L.PenWidth)
INi.Write(lname, "line" & i & "x", L.X)
INi.Write(lname, "line" & i & "y", L.Y)
INi.Write(lname, "line" & i & "x2", L.X2)
INi.Write(lname, "line" & i & "y2", L.Y2)
Next
INi.Write(Iname, "Count", Me.Draw_Image.Count)
For i As Short = 1 To Me.Draw_Image.Count '//모두돌아서 저장한다.
Dim L As S_Image = Me.Draw_Image.item(i - 1)
INi.Write(Iname, "img" & i & "file", L.FileName.Replace(My.Application.Info.DirectoryPath, "."))
INi.Write(Iname, "img" & i & "x", L.X)
INi.Write(Iname, "img" & i & "y", L.Y)
INi.Write(Iname, "img" & i & "x2", L.Width)
INi.Write(Iname, "img" & i & "y2", L.Height)
Next
INi.Write(qname, "Count", Me.Draw_QRcode.Count)
For i As Short = 1 To Me.Draw_QRcode.Count
Dim L As S_QRCode = Me.Draw_QRcode.item(i - 1)
INi.Write(qname, "qrcode" & i & "x", L.X)
INi.Write(qname, "qrcode" & i & "y", L.Y)
INi.Write(qname, "qrcode" & i & "x2", L.Width)
INi.Write(qname, "qrcode" & i & "y2", L.Height)
INi.Write(qname, "qrcode" & i & "qsize", L.Size.ToString)
INi.Write(qname, "qrcode" & i & "qe", CInt(L.Encoding).ToString())
INi.Write(qname, "qrcode" & i & "qv", CInt(L.Version).ToString())
INi.Write(qname, "qrcode" & i & "qclevel", CInt(L.CLeve).ToString())
INi.Write(qname, "qrcode" & i & "format", L.Format)
INi.Write(qname, "qrcode" & i & "fColor", L.fColor.ToArgb().ToString())
INi.Write(qname, "qrcode" & i & "bColor", L.bColor.ToArgb().ToString())
Next
End If
End Sub
Public Sub SaveReadLayOut_NEW(ByVal read As Boolean) '//현재 화면구성을 가로/세로 결정합니다.
'//ini파일에저장한다. 섹션명은 pagetype0 ,pagetyp1 0은 세로 1은 가로다
Dim ini As New ACC.MyINI(ReplaceExt(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File, "layout"))
Dim Secname As String = "pagetype" & SetForm.MyProperty_Paper.용지방향 ' IIf(SetForm.rad_land.Checked, 1, 0) 'Me.cmb_landscape.SelectedIndex
If read = False Then
ini.Write(Secname, "PictureBox1loc", Me.v_picturebox1.Left & "," & Me.v_picturebox1.Top)
ini.Write(Secname, "PictureBox1size", Me.v_picturebox1.Width & "," & Me.v_picturebox1.Height)
ini.Write(Secname, "cmb_styleloc", SetForm.cmb_style.Left & "," & SetForm.cmb_style.Top)
ini.Write(Secname, "cmb_stylesize", SetForm.cmb_style.Width & "," & SetForm.cmb_style.Height)
ini.Write(Secname, "mesize", Me.Width & "," & Me.Height)
ini.Write(Secname, "backimgtype", SetForm.cmb_imgtype.SelectedIndex)
ini.Write(Secname, "bakimgpos", CInt(SetForm.tb_bakx.Text) & "," & CInt(SetForm.tb_baky.Text)) '//배경이미지 위치
ini.Write(Secname, "bakimgsize", CInt(SetForm.tb_bakw.Text) & "," & CInt(SetForm.tb_bakh.Text)) '//배경이미지 크기
ini.Write(Secname, "printimg", SetForm.chk_prnimg.Checked)
Else '//여기는 읽는 부분
SetForm.cmb_imgtype.SelectedIndex = ini.Read(Secname, "backimgtype", 3) '//기본값 stretch
SetForm.tb_bakx.Text = ini.Read(Secname, "bakimgpos", "0,0").Split(",")(0)
SetForm.tb_baky.Text = ini.Read(Secname, "bakimgpos", "0,0").Split(",")(1)
SetForm.tb_bakw.Text = ini.Read(Secname, "bakimgsize", "300,550").Split(",")(0)
SetForm.tb_bakh.Text = ini.Read(Secname, "bakimgsize", "300,550").Split(",")(1)
SetForm.chk_prnimg.Checked = ini.Read(Secname, "printimg", False)
If SetForm.MyProperty_Paper.용지방향 = E_PaperOrient.세로 Then
Me.pDoc.DefaultPageSettings.Landscape = False
v_picturebox1.Location = New Point(ini.Read(Secname, "PictureBox1loc", "3,3").Split(",")(0), ini.Read(Secname, "PictureBox1loc", "3,3").Split(",")(1))
v_picturebox1.Size = New Size(ini.Read(Secname, "PictureBox1size", "270,479").Split(",")(0), ini.Read(Secname, "PictureBox1size", "270,479").Split(",")(1))
Me.Size = New Size(ini.Read(Secname, "mesize", "588,632").Split(",")(0), ini.Read(Secname, "mesize", "588,632").Split(",")(1))
Else
Me.pDoc.DefaultPageSettings.Landscape = True
v_picturebox1.Location = New Point(ini.Read(Secname, "PictureBox1loc", "325,3").Split(",")(0), ini.Read(Secname, "PictureBox1loc", "325,3").Split(",")(1))
v_picturebox1.Size = New Size(ini.Read(Secname, "PictureBox1size", "355,200").Split(",")(0), ini.Read(Secname, "PictureBox1size", "355,200").Split(",")(1))
Me.Size = New Size(ini.Read(Secname, "mesize", "730,643").Split(",")(0), ini.Read(Secname, "mesize", "730,643").Split(",")(1))
End If
End If
End Sub
Public Sub LOAD_STYLE(Optional ByVal Div As String = "Z") '//저장된 스타일을 불러옵니다.
RaiseEvent StatusMessage("Entering >> Load_Style", e_EventMessage.Normal)
Dim pos(), font(), visible, mytext, repeat() As String
Dim Tobj As CEpole.C_label
Dim DR() As DataRow
Dim idx As Integer = 0
'//모든아이템을 돈다
For i As Integer = 0 To Me.AllLabels.GetUpperBound(0) '//모든아이템을 돈다.
Tobj = Me.AllLabels(i)
If Div.ToUpper = "Z" Then '//모든아이템을 가져오고
'//메모리에서 찾는다.
Tobj.Tag = ""
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "POS'")
If DR.GetUpperBound(0) = 0 Then
pos = DR(0)(1).ToString.Split(",")
Tobj.Location = New Point(pos(0), pos(1))
Tobj.Size = New Size(pos(2), pos(3))
End If
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "FONT'")
If DR.GetUpperBound(0) = 0 Then
font = DR(0)(1).ToString.Split(",")
Tobj.WordWidth = font(5)
Tobj.WordHeight = font(6)
Tobj.Font = New Font(font(0), font(1), IIf(font(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
' MsgBox(font(0))
End If
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "REPEAT'")
If DR.GetUpperBound(0) = 0 Then
repeat = DR(0)(1).ToString.Split(",")
Tobj.Repeat = repeat(0)
Tobj.RepeatX = repeat(1)
Tobj.RepeatY = repeat(2)
End If
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "VISIBLE'")
If DR.GetUpperBound(0) = 0 Then
visible = DR(0)(1).ToString
Tobj.visible = CType(visible, Boolean)
End If
'//160515
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "FC'")
If DR.GetUpperBound(0) = 0 Then
Dim fcstr As String = DR(0)(1).ToString
If String.IsNullOrWhiteSpace(fcstr) Then fcstr = System.Drawing.Color.Black.ToArgb.ToString
Tobj.ForeColor2 = System.Drawing.Color.FromArgb(CInt(fcstr)) ' CType(visible, Boolean)
End If
If Tobj.Fixed Then '//고정길이 문자열은 문자를 가져온다.
RaiseEvent StatusMessage("Static Text Found !! || Name :" & Tobj.Name.ToUpper, e_EventMessage.Normal)
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "MYTEXT'")
If DR.GetUpperBound(0) = 0 Then
mytext = DR(0)(1).ToString
If mytext <> "" Then
RaiseEvent StatusMessage("_0_Static Text : STYLE" & Tobj.Name.ToUpper & " value=" & mytext, e_EventMessage.Normal)
Tobj.Text = mytext 'Arin.TextDec(mytext) '//ini구조상 바로저장하면안되기때문에 변환해서 저장한다.
RaiseEvent StatusMessage(">>> " & Tobj.Text, e_EventMessage.Normal)
End If
End If
End If
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "SPACE'")
If DR.GetUpperBound(0) = 0 Then Tobj.WordSpace = DR(0)(1).ToString
Else '//특정아이템구분일때
If Tobj.Name.ToUpper = Div Then
'//메모리에서 찾는다.
Tobj.Tag = ""
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "POS'")
If DR.GetUpperBound(0) = 0 Then
pos = DR(0)(1).ToString.Split(",")
Tobj.Location = New Point(pos(0), pos(1))
Tobj.Size = New Size(pos(2), pos(3))
End If
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "FONT'")
If DR.GetUpperBound(0) = 0 Then
font = DR(0)(1).ToString.Split(",")
Tobj.WordWidth = font(5)
Tobj.WordHeight = font(6)
Tobj.Font = New Font(font(0), font(1), IIf(font(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
' MsgBox(font(0))
End If
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "REPEAT'")
If DR.GetUpperBound(0) = 0 Then
repeat = DR(0)(1).ToString.Split(",")
Tobj.Repeat = repeat(0)
Tobj.RepeatX = repeat(1)
Tobj.RepeatY = repeat(2)
End If
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "VISIBLE'")
If DR.GetUpperBound(0) = 0 Then
visible = DR(0)(1).ToString
Tobj.visible = CType(visible, Boolean)
End If
'//160515
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "FC'")
If DR.GetUpperBound(0) = 0 Then
Dim fcstr As String = DR(0)(1).ToString
If String.IsNullOrWhiteSpace(fcstr) Then fcstr = System.Drawing.Color.Black.ToArgb.ToString
Tobj.ForeColor2 = System.Drawing.Color.FromArgb(CInt(fcstr)) ' CType(visible, Boolean)
End If
If Tobj.Fixed Then '//고정길이 문자열은 문자를 가져온다.
RaiseEvent StatusMessage("Static Text Found !! || Name :" & Tobj.Name.ToUpper, e_EventMessage.Normal)
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "MYTEXT'")
If DR.GetUpperBound(0) = 0 Then
mytext = DR(0)(1).ToString
If mytext <> "" Then
RaiseEvent StatusMessage("_1_Static Text : STYLE" & Tobj.Name.ToUpper & " value=" & mytext, e_EventMessage.Normal)
Tobj.Text = mytext 'Arin.TextDec(mytext) '//ini구조상 바로저장하면안되기때문에 변환해서 저장한다.
RaiseEvent StatusMessage(">>> " & Tobj.Text, e_EventMessage.Normal)
End If
End If
End If
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "SPACE'")
If DR.GetUpperBound(0) = 0 Then Tobj.WordSpace = DR(0)(1).ToString
End If
End If
Tobj.ForeColor = Tobj.ForeColor2 '//160515
Next
If Div.ToUpper <> "Z" Then
RaiseEvent StatusMessage("DIV=" & Div & " Exit :: Load_Style", e_EventMessage.Normal)
Return '//모든템이아니다
End If
RaiseEvent StatusMessage("load_style dIV가 Z로 스탈기본값도 불러온다 || 기본값 체크박스등의 값을 불러온다. 이것은 스타일선택시 한번만 불러온다. ", e_EventMessage.Normal)
''''''''''''''''''' 개체조정''우측 스타일 체크박스를 가져온다.
'//데이터표시 체크박스 상태를 저장한다.
Dim Arinini As New ACC.MyINI(ReplaceExt(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File, "ck"))
'Dim Arinini As New CommonClassv2.MyINI(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File)
For Each B As C_Epole.S_FullLable In Me.AllFullLabels
B.CheckBox.Checked = Arinini.Read("STYLE", "CheckBox_" & B.CheckBox.Name, True) 'A.Visible)
Next
'//관리자는 체크박스를 모두 활성화한다. If Admin Then Me.AdminSetting()
''''''''''''''''''''''''''''외'''''''''''''''''''''''''''''''''
SetForm.MyProperty_Paper.출력여백X = StyleList(SetForm.cmb_style.SelectedIndex).MarginX
SetForm.MyProperty_Paper.출력여백Y = StyleList(SetForm.cmb_style.SelectedIndex).MarginY
SetForm.MyProperty_Paper.가로확대비율 = StyleList(SetForm.cmb_style.SelectedIndex).ScaleX
SetForm.MyProperty_Paper.세로확대비율 = StyleList(SetForm.cmb_style.SelectedIndex).ScaleY
'New PropertyGrid_Paper.S_Size(StyleList(SetForm.cmb_style.SelectedIndex).ScaleX, StyleList(SetForm.cmb_style.SelectedIndex).ScaleY) ' Arinini.Read("STYLE", "ScaleX", "1.5")
'= StyleList(SetForm.cmb_style.SelectedIndex).MarginX 'Arinini.Read("STYLE", "MarginX", 10)
'SetForm.tb_marginY.Text = StyleList(SetForm.cmb_style.SelectedIndex).MarginY ' Arinini.Read("STYLE", "MarginY", 10)
'SetForm.tb_scaley.Text = StyleList(SetForm.cmb_style.SelectedIndex).ScaleY ' Arinini.Read("STYLE", "ScaleY", "1.3")
''''''''''''''''''''''2중'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'//더미는 이제 사용하지않는다.20090729 변경
Dim UseDummy As Boolean = StyleList(SetForm.cmb_style.SelectedIndex).Dummy 'Arinini.Read("STYLE", "dummy", False)
Try
SetForm.MyProperty_Paper.출력장수 = StyleList(SetForm.cmb_style.SelectedIndex).DummyCnt
If UseDummy AndAlso SetForm.MyProperty_Paper.출력장수 < 2 Then SetForm.MyProperty_Paper.출력장수 = 2
If SetForm.MyProperty_Paper.출력장수 < 2 Then SetForm.MyProperty_Paper.출력장수 = 1
Catch ex As Exception
If UseDummy Then
SetForm.MyProperty_Paper.출력장수 = 2
Else
SetForm.MyProperty_Paper.출력장수 = 1
End If
End Try
SetForm.MyProperty_Paper.출력방법 = StyleList(SetForm.cmb_style.SelectedIndex).Dummytype ' Arinini.Read("STYLE", "dummytype", 0)
SetForm.MyProperty_Paper.연속여백x = StyleList(SetForm.cmb_style.SelectedIndex).dummmyx
SetForm.MyProperty_Paper.연속여백y = StyleList(SetForm.cmb_style.SelectedIndex).dummmyy
SetForm.MyProperty_Paper.분리갯수 = StyleList(SetForm.cmb_style.SelectedIndex).RowDivCnt
SetForm.MyProperty_Paper.분리여백x = StyleList(SetForm.cmb_style.SelectedIndex).rowdivx
SetForm.MyProperty_Paper.분리여백y = StyleList(SetForm.cmb_style.SelectedIndex).rowdivy
SetForm.MyProperty_Paper.그리기개체반복 = StyleList(SetForm.cmb_style.SelectedIndex).DrawItemRepeat
'SetForm.tb_secx.Text = StyleList(SetForm.cmb_style.SelectedIndex).dummmyx ' Arinini.Read("STYLE", "dummmyx", "0")
'SetForm.tb_secy.Text = StyleList(SetForm.cmb_style.SelectedIndex).dummmyy ' Arinini.Read("STYLE", "dummmyy", "300")
SetForm.tb_picfile.Text = StyleList(SetForm.cmb_style.SelectedIndex).Backimg ' Arinini.Read("STYLE", "backimg", My.Application.Info.DirectoryPath & "\image\wall.bmp").ToString.Trim(Chr(0))
'//고정문자스타일인지 확인한다
SetForm.rad_repeat.Checked = StyleList(SetForm.cmb_style.SelectedIndex).FixedStyle ' Arinini.Read("STYLE", "backimg", My.Application.Info.DirectoryPath & "\image\wall.bmp").ToString.Trim(Chr(0))
'//인쇄범위를 불러온다(고정문자때문에 이것이 저장되엇지만 있어도 나쁠건 없기때문에 넣는다)
SetForm.tb_printrange.Text = StyleList(SetForm.cmb_style.SelectedIndex).PrintRange
'//그림표시
Me.pDoc.DefaultPageSettings.Landscape = StyleList(SetForm.cmb_style.SelectedIndex).LandScape ' Arinini.Read("STYLE", "LandScape", False)
SetForm.MyProperty_Paper.용지방향 = StyleList(SetForm.cmb_style.SelectedIndex).LandScape
SetForm.Chk_BgImage.Checked = StyleList(SetForm.cmb_style.SelectedIndex).Viewimage ' Arinini.Read("STYLE", "ViewImage", True)
RaiseEvent StatusMessage(">> Display Background Image : " & SetForm.Chk_BgImage.Checked, e_EventMessage.Normal)
If SetForm.Chk_BgImage.Checked Then
Dim Fn As String = SetForm.GetBgImgFile
If Fn = "" Then '//파일명이없으므로 체크박스해제
RaiseEvent StatusMessage("[그림파일이 지정되지않았습니다", e_EventMessage.Normal)
SetForm.Chk_BgImage.Checked = False
SetForm.bakimg = Nothing
Me.v_picturebox1.BackgroundImage = Nothing
SetForm.bakimg.BackgroundImage = Nothing
ElseIf File.Exists(Fn) Then
If SetForm.cmb_imgtype.SelectedIndex = 5 Then '//화면에 직접출력일경우
RaiseEvent StatusMessage("[배경그림 : 화면에 직접출력", e_EventMessage.Normal)
SetForm.bakimg.BackgroundImage = Image.FromFile(Fn)
Else
SetForm.bakimg.BackgroundImage = Image.FromFile(Fn)
Me.v_picturebox1.BackgroundImage = SetForm.bakimg.BackgroundImage
End If
Else
RaiseEvent StatusMessage(">> 배경그림파일이 존재하지 않습니다", e_EventMessage.Normal)
MsgBox("배경그림파일이 존재하지 않습니다" & vbCrLf & "파일명 : " & vbCrLf & Fn, MsgBoxStyle.Critical, "확인")
SetForm.Chk_BgImage.Checked = False
Me.v_picturebox1.BackgroundImage = Nothing
SetForm.bakimg.BackgroundImage = Nothing
End If
End If
RaiseEvent StatusMessage(SetForm.cmb_style.Text & "스타일을 불러왔습니다.", e_EventMessage.Normal)
End Sub
Public Function GetSpread(ByVal row As Integer, ByVal col As Integer) As String
Try
Return Dv(row)(col)
Catch ex As Exception
Return ""
End Try
End Function
Public Function GetSpread(ByVal row As Integer, ByVal colname As String) As String
Try
Return Dv(row)(colname)
'Return Me.CustFP1_Sheet1.Cells(row, col).Value.ToString
Catch ex As Exception
Return ""
End Try
End Function
Private Sub Defalut_PrintForm_DesignMode_Change(ByVal Mode As C_Epole.E_DesignMode) Handles Me.DesignMode_Change
'//변경되면 모든 컨트롤의 색상을 회색으로 변경한다
If Me.SetForm Is Nothing Then Return
If Mode Then
MsgBox("편집가능한 디자인모드는 완성되지않았습니다", MsgBoxStyle.Information, "확인")
End If
Me.preview_window()
End Sub
Private Sub Defalut_PrintForm_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseWheel
If e.Delta < 0 Then
'If Me.BindingNavigatorPositionItem.Text < Me.BindingNavigatorCountItem.Text Then
Me.v_Bn.MoveNextItem.PerformClick()
'Me.BindingNavigatorMoveNextItem.PerformClick()
'Me.BindingNavigatorPositionItem.Focus()
'End If
Else
If Me.v_Bn.PositionItem.Text > 0 Then
Me.v_Bn.MovePreviousItem.PerformClick()
'Me.BindingNavigatorPositionItem.Focus()
End If
End If
End Sub
Private Sub Print_Form_Move(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Move
If Not SetForm Is Nothing Then
SetForm.Top = Me.Top
SetForm.Left = Me.Left + Me.Width + 10
End If
End Sub
Private Sub Print_Form_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
If Not SetForm Is Nothing Then
SetForm.Top = Me.Top
SetForm.Left = Me.Left + Me.Width + 10
End If
End Sub
Private Sub Print_Form_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
If Not SetForm Is Nothing Then SetForm.Close()
'//현재 폼의 설정을 저장한다.
'0728 마지막 레코드번호르 저장한다.
'Dim INi As New CommonClassv2.MyINI(Me.StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File)
'INi.Write("style", "lastpos", Me.BS.Position)
'INi = Nothing
End Sub
Private Sub Print_Form_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
RaiseEvent StatusMessage("Form_Load", e_EventMessage.Normal)
Me.SetStyle(Windows.Forms.ControlStyles.AllPaintingInWmPaint Or Windows.Forms.ControlStyles.UserPaint Or Windows.Forms.ControlStyles.DoubleBuffer, True) '//더블버퍼링
'//기본적으로 디자인모드를 텍스트로한다.
Me.DMode = E_DesignMode.Text
End Sub
Private Sub Print_Form_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
Select Case e.KeyCode
Case Windows.Forms.Keys.Up
If e.Shift Then '//글씨높이
Me.CtrSize(True, -1)
Else
Me.CtrPos(True, -1)
End If
'Me.ViewProperty(SelCon(0))
e.Handled = True
Case Windows.Forms.Keys.Down
If e.Shift Then
Me.CtrSize(True, 1)
Else
Me.CtrPos(True, 1)
End If
'ViewProperty(Tobj)
e.Handled = True
Case Windows.Forms.Keys.Left
If e.Shift Then
Me.CtrSize(False, -1)
Else
Me.CtrPos(False, -1)
End If
'ViewProperty(Tobj)
e.Handled = True
Case Windows.Forms.Keys.Right
If e.Shift Then
Me.CtrSize(False, 1)
Else
Me.CtrPos(False, 1)
End If
'ViewProperty(Tobj)
e.Handled = True
Case Windows.Forms.Keys.F5
Me.bt_SL.PerformClick()
'Me.QSave_PatternI()
Case Windows.Forms.Keys.F9
Me.Print()
Case Windows.Forms.Keys.P
If e.Control Then
Me.Print()
End If
Case Windows.Forms.Keys.F8
Me.Print_Preview()
Case Windows.Forms.Keys.V
If e.Control Then
Me.Print_Preview()
End If
Case Windows.Forms.Keys.F1
Show_ShortKey()
Case Windows.Forms.Keys.H
If e.Control Then
Show_ShortKey()
End If
Case Windows.Forms.Keys.F4
If MsgBox("현재 스타일(기본)을 저장하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.YesNo, "스타일저장") = MsgBoxResult.Yes Then
SAVE_STYLE_NEW()
End If
Case Windows.Forms.Keys.S
If e.Control Then
Me.QSave_PatternII()
End If
Case Windows.Forms.Keys.T
If e.Control Then
If MsgBox("현재 스타일(기본)을 저장하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.YesNo, "스타일저장") = MsgBoxResult.Yes Then
SAVE_STYLE_NEW()
End If
End If
Case Windows.Forms.Keys.Escape
Me.Close()
Case Windows.Forms.Keys.PageDown
Me.v_Bn.MoveNextItem.PerformClick()
Case Windows.Forms.Keys.PageUp
Me.v_Bn.MovePreviousItem.PerformClick()
End Select
'RaiseEvent SelectedControl(Me.onlyOne) '//선택개체는 OnlyOne 에도 들어있다.
SetForm.ViewProperty(Me.OnlyOne, "부모 : 방향키들이 눌렸을떄") '//키보드로 개체이동시에 개체위치정보를 바로보여준다.
End Sub
Public Sub Show_ShortKey()
Dim A As New Frm_Shortkey
A.Show()
End Sub
Public Sub CtrSizeDraw(ByVal vertical As Boolean, ByVal offset As Short)
'//쉐이프개체의 크기를 조정한다.
If Me.SelConDraw Is Nothing OrElse SelConDraw.Count < 1 Then Exit Sub
For Each sender As CEpole.C_label In SelCon
Me.AllFullLabels(sender.Gidx).Moved = True
If vertical Then '//상하
If My.Computer.Keyboard.AltKeyDown Then
If offset < 0 Then
sender.WordHeight -= 1
Else
sender.WordHeight += 1
End If
ElseIf My.Computer.Keyboard.CtrlKeyDown Then
If offset < 0 Then
sender.WordHeight -= 10
Else
sender.WordHeight += 10
End If
Else
sender.WordHeight += offset
End If
Else '//좌우
If My.Computer.Keyboard.AltKeyDown Then
If offset < 0 Then
sender.WordWidth -= 1
Else
sender.WordWidth += 1
End If
ElseIf My.Computer.Keyboard.CtrlKeyDown Then
If offset < 0 Then
sender.WordWidth -= 10
Else
sender.WordWidth += 10
End If
Else
sender.WordWidth += offset
End If
End If
Next
Me.preview_window()
End Sub
Public Sub CtrSize(ByVal vertical As Boolean, ByVal offset As Short)
If SelCon Is Nothing OrElse SelCon.Count < 1 Then Exit Sub
For Each sender As CEpole.C_label In SelCon
Me.AllFullLabels(sender.Gidx).Moved = True
If vertical Then '//상하
If My.Computer.Keyboard.AltKeyDown Then
If offset < 0 Then
sender.WordHeight -= 1
Else
sender.WordHeight += 1
End If
ElseIf My.Computer.Keyboard.CtrlKeyDown Then
If offset < 0 Then
sender.WordHeight -= 10
Else
sender.WordHeight += 10
End If
Else
sender.WordHeight += offset
End If
Else '//좌우
If My.Computer.Keyboard.AltKeyDown Then
If offset < 0 Then
sender.WordWidth -= 1
Else
sender.WordWidth += 1
End If
ElseIf My.Computer.Keyboard.CtrlKeyDown Then
If offset < 0 Then
sender.WordWidth -= 10
Else
sender.WordWidth += 10
End If
Else
sender.WordWidth += offset
End If
End If
Next
Me.preview_window()
End Sub
Public Sub CtrPos(ByVal vertical As Boolean, ByVal offset As Short)
' Arin.WLog2(Auto_Log, "ctrpos (선택된 개체들의 위치값을 변경합니다)", LogFile)
If SelCon Is Nothing OrElse SelCon.Count < 1 Then Exit Sub
For Each sender As CEpole.C_label In SelCon
Me.AllFullLabels(sender.Gidx).Moved = True
If vertical Then '//좌우측
If My.Computer.Keyboard.AltKeyDown Then
If offset < 0 Then
sender.Top -= 1
Else
sender.Top += 1
End If
ElseIf My.Computer.Keyboard.CtrlKeyDown Then
If offset < 0 Then
sender.Top -= 10
Else
sender.Top += 10
End If
Else
sender.Top += offset
End If
Else '//상하측
If My.Computer.Keyboard.AltKeyDown Then
If offset < 0 Then
sender.Left -= 1
Else
sender.Left += 1
End If
ElseIf My.Computer.Keyboard.CtrlKeyDown Then
If offset < 0 Then
sender.Left -= 10
Else
sender.Left += 10
End If
Else
sender.Left += offset
End If
End If
Next
' Arin.WLog2(Auto_Log, "ctrpos =[ preview 호출합니다]", LogFile)
Me.preview_window()
'Me.ViewProperty(sender)
End Sub
'''
''' 드로우 개체의 위치를 조정합니다.
'''
'''
'''
'''
Public Sub CtrPosDraw(ByVal vertical As Boolean, ByVal offset As Short)
' Arin.WLog2(Auto_Log, "ctrpos (선택된 개체들의 위치값을 변경합니다)", LogFile)
If SelConDraw Is Nothing OrElse SelConDraw.Count < 1 Then Exit Sub
For Each sender As CEpole.C_label In SelCon
Me.AllFullLabels(sender.Gidx).Moved = True
If vertical Then '//좌우측
If My.Computer.Keyboard.AltKeyDown Then
If offset < 0 Then
sender.Top -= 1
Else
sender.Top += 1
End If
ElseIf My.Computer.Keyboard.CtrlKeyDown Then
If offset < 0 Then
sender.Top -= 10
Else
sender.Top += 10
End If
Else
sender.Top += offset
End If
Else '//상하측
If My.Computer.Keyboard.AltKeyDown Then
If offset < 0 Then
sender.Left -= 1
Else
sender.Left += 1
End If
ElseIf My.Computer.Keyboard.CtrlKeyDown Then
If offset < 0 Then
sender.Left -= 10
Else
sender.Left += 10
End If
Else
sender.Left += offset
End If
End If
Next
' Arin.WLog2(Auto_Log, "ctrpos =[ preview 호출합니다]", LogFile)
Me.preview_window()
'Me.ViewProperty(sender)
End Sub
'''
''' 글꼴크기변경
'''
'''
'''
'''
Public Sub CtrFontSize(ByVal vertical As Boolean, ByVal offset As Short)
If SelCon Is Nothing OrElse SelCon.Count < 1 Then Exit Sub
For Each sender As CEpole.C_label In SelCon
Me.AllFullLabels(sender.Gidx).Moved = True
If vertical Then '//상하
If My.Computer.Keyboard.AltKeyDown Then
If offset < 0 Then
sender.WordHeight -= 1
Else
sender.WordHeight += 1
End If
ElseIf My.Computer.Keyboard.CtrlKeyDown Then
If offset < 0 Then
sender.WordHeight -= 10
Else
sender.WordHeight += 10
End If
Else
sender.WordHeight += offset
End If
Else '//좌우
If My.Computer.Keyboard.AltKeyDown Then
If offset < 0 Then
sender.WordWidth -= 1
Else
sender.WordWidth += 1
End If
ElseIf My.Computer.Keyboard.CtrlKeyDown Then
If offset < 0 Then
sender.WordWidth -= 10
Else
sender.WordWidth += 10
End If
Else
sender.WordWidth += offset
End If
End If
Next
Me.preview_window()
End Sub
Public Sub CtrFontChange()
If SelCon Is Nothing OrElse SelCon.Count < 1 Then Exit Sub
For Each sender As CEpole.C_label In SelCon
Me.AllFullLabels(sender.Gidx).Moved = True
sender.Font = New Font("HY견고딕", sender.Font.Size, FontStyle.Regular)
Next
Me.preview_window()
End Sub
'''
''' 현재화면을 모두 갱신합니다. 실제데이터만 표시해주는 Preview_window 와는 다르면 이것은 데이터를 갱신하고 preview_window를 재호출합니다
'''
'''
'''
Public Sub Refresh_Window(Optional ByVal Previewwin As Boolean = True)
Me.GeTviewData(Me.BS.Position, Previewwin)
End Sub
'''
''' 160515
'''
'''
'''
Public Sub SaveImage(fn As String)
Dim dummy As Boolean = False '//이값이 true 이면 출력시 변위를 지정해서 출력한다.
Dim BackScr As New Bitmap(2100, 2970, Imaging.PixelFormat.Format32bppArgb) 'Me.v_picturebox1.CreateGraphics)
BackScr.SetResolution(300, 300)
Dim Ga As Graphics = Graphics.FromImage(BackScr)
Ga.Clear(Drawing.Color.White)
For pi As Short = 0 To SetForm.MyProperty_Paper.출력장수 - 1 '//페이지당 연속출력할 횟수
Build_PrintPage(Ga, pi, True)
Next
Ga.Dispose()
BackScr.Save(fn, System.Drawing.Imaging.ImageFormat.Jpeg)
BackScr.Dispose()
End Sub
Public Sub preview_window() '//미리보기화면을 생성합니다.
Dim dummy As Boolean = False '//이값이 true 이면 출력시 변위를 지정해서 출력한다.
Dim BackScr As New Bitmap(Me.v_picturebox1.Width, Me.v_picturebox1.Height, Imaging.PixelFormat.Format32bppArgb) 'Me.v_picturebox1.CreateGraphics)
Dim Ga As Graphics = Graphics.FromImage(BackScr)
'MsgBox("prewview window")
If SetForm.MyProperty_Paper.출력장수 < 1 Then SetForm.MyProperty_Paper.출력장수 = 1
RaiseEvent StatusMessage(">> Preview : 모든개체를 실제 화면에 표시합니다", e_EventMessage.Normal)
For pi As Short = 0 To SetForm.MyProperty_Paper.출력장수 - 1 '//페이지당 연속출력할 횟수
'MsgBox("연속횟수" & pi)
'Build_PrintPage(Ga, pi, False, SetForm.cmb_style.SelectedIndex, Me.PrintArray(Me.printindex))
'MsgBox(SetForm.NewFp1_Sheet1.ActiveRowIndex) 'QRQR
Build_PrintPage(Ga, pi, False)
Next
Ga.Dispose()
Me.v_picturebox1.Image = BackScr
End Sub
#End Region
Private Sub v_picturebox1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles v_picturebox1.MouseClick
If Me.DMode = E_DesignMode.Text Then
Dim Tobj As CEpole.C_label
Dim selitem As New ArrayList '//마우스클릭했을때 여러개가 겹친경우 해당 아이템들을 넣는곳
Dim g As Graphics = CreateGraphics()
Tobj = Nothing
For i As Integer = 0 To Me.AllLabels.GetUpperBound(0)
If Me.AllLabels(i).visible AndAlso Me.AllLabels(i).Text <> "" AndAlso _
((e.X >= Me.AllLabels(i).Left) And e.X <= (Me.AllLabels(i).Left + Me.AllLabels(i).GetSize(g).Width)) _
AndAlso ((e.Y >= Me.AllLabels(i).Top) AndAlso (e.Y <= (Me.AllLabels(i).Top + Me.AllLabels(i).GetSize(g).Height))) Then
Tobj = Me.AllLabels(i)
selitem.Add(Me.AllLabels(i))
'Exit For
End If
Next
If Tobj Is Nothing Then Return '//선택된게 없으면 날린다
Me.OnlyOne = Tobj '//마지막으로 선택된것을 지정해준다(혹 나중에 일괄적용일경우에 마지막꺼기준으로 적용)
If selitem.Count > 1 Then '//여러개가 겹쳐있을경우에
Dim A As New selitem
For si As Short = 1 To selitem.Count '//선택목록창에 데이터를 넣는다.
A.ListBox1.Items.Add(CType(selitem.Item(si - 1), CEpole.C_label).Desc)
Next
If A.ShowDialog() = Windows.Forms.DialogResult.OK Then
Tobj = selitem.Item(A.ListBox1.SelectedIndex)
Else '//캔슬시에는 첫번째 아템으로 한다.
Tobj = selitem.Item(0)
End If
Me.OnlyOne = Tobj '//다중선택에의한 선택시에는 마지막꺼를 넣는다.
'SetForm.Focus()
'Me.Focus()
End If
Dim Exist As Boolean = False '//선택개체에 존재여부
If SelCon Is Nothing Then '//현재 선택개체데이터가 아에없다면 신규로 추가해준다.
SelCon = New ArrayList : SelCon.Add(Tobj)
Else
If e.Button = Windows.Forms.MouseButtons.Right Then '//Right Click
'//팝업메뉴 보여준다.(현재 이기능은 거의 안쓰고있다)
Me.cm.Show()
Me.cm.Left = e.X
Me.cm.Top = e.Y + 10
Me.cm.Left = Windows.Forms.Control.MousePosition.X + 10
Me.cm.Top = Windows.Forms.Control.MousePosition.Y + 5
ElseIf e.Button = Windows.Forms.MouseButtons.Left Then '//Left Click
If My.Computer.Keyboard.ShiftKeyDown Then '//Add
For Each obj As CEpole.C_label In SelCon
If obj.Name = Tobj.Name Then '//이미선택되어있었는데 또 선택되었다면 선택하제
obj.ForeColor = obj.ForeColor2 ' Drawing.Color.Black '//160515
SelCon.Remove(obj)
Exist = True
Exit For
End If
Next
If Exist = False Then '//존재하지 않았으므로 선택개체목록에 추가한다.
SelCon.Add(Tobj)
Tobj.ForeColor = Drawing.Color.Yellow '//추가개체는 노랑색
End If
Else '//Normal LEft click
For Each SC As CEpole.C_label In SelCon
SC.ForeColor = SC.ForeColor2 'Drawing.Color.Black '//현재선택된 개체를 모두 검정으로 반전시킨다
Next
SelCon = New ArrayList : SelCon.Add(Tobj)
Tobj.ForeColor = Drawing.Color.DodgerBlue '//처음선택개체는 퍼런색DodgerBlue
If My.Computer.Keyboard.CtrlKeyDown Then
SelCon = New ArrayList '//컨트롤이 눌러졋으면 해당 그룹을 전부 찾는다.
For z As Short = 0 To Me.AllLabels.GetUpperBound(0)
If Me.AllLabels(z).Name.Substring(0, 1) = Tobj.Name.Substring(0, 1) Then
Me.AllLabels(z).ForeColor = Drawing.Color.Blue
SelCon.Add(Me.AllLabels(z))
End If
Next
End If
End If
Else '//가운데버튼이다. 가운데는 폰트변경으로한다.
SetForm.bt_fontchange.PerformClick()
End If
End If
If Me.SelCon.Count = 0 Then
SetForm.cmb_controls.Text = ""
ElseIf Me.SelCon.Count = 1 Then
SetForm.cmb_controls.Text = Tobj.Desc
Else '//여러개의 데이터가 선택되었다면
SetForm.cmb_controls.Text = "*****" '//다중선택을 지정해준다.
End If
RaiseEvent SelectedControl(Tobj) '//선택개체는 OnlyOne 에도 들어있다.
Else
MsgBox("디자인모드상태에서 클릭 현재 미지원")
End If
Me.preview_window()
End Sub
Private Sub v_picturebox1_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles v_picturebox1.MouseDoubleClick
'//더블클릭하면 번호표시형태를 변경할수 있게한다.
If Me.DMode = E_DesignMode.Text Then
Dim Tobj As CEpole.C_label = Nothing
Dim g As Graphics = CreateGraphics()
For i As Integer = 0 To Me.AllLabels.GetUpperBound(0)
If Me.AllLabels(i).visible AndAlso Me.AllLabels(i).Text <> "" AndAlso _
((e.X >= Me.AllLabels(i).Left) And e.X <= (Me.AllLabels(i).Left + Me.AllLabels(i).GetSize(g).Width)) _
AndAlso ((e.Y >= Me.AllLabels(i).Top) AndAlso (e.Y <= (Me.AllLabels(i).Top + Me.AllLabels(i).GetSize(g).Height))) Then
Tobj = Me.AllLabels(i)
Exit For
End If
Next
If Tobj Is Nothing Then Return '//선택된게 없으면 날린다
Dim Msg As New System.Text.StringBuilder("새로운 번호형식을 입력하세요")
Msg.AppendLine()
Msg.AppendLine("예) 9,9,0 각콤마(,)는 한줄의 의미합니다")
'Dim Val As String = InputBox(Msg.ToString, "변경", Tobj.NumType)
'If Val = "" Then Return
'Tobj.NumType = Val
Else '//쉐이프모드일때는 다른형태로 작동할예정 현재 작동안함
MsgBox("쉐이프모드는 미지원입니다")
End If
Me.preview_window()
End Sub
Public Sub Selected_Style(ByVal SelIndex As Short)
'//여기서 데이터를 추려내고(필터를 가져온다.)
'Try
RaiseEvent StatusMessage(">> Entering : Selected_Style / Index=" & SelIndex, e_EventMessage.Normal)
If SelIndex < 0 Then SelIndex = 0
If StyleList.GetUpperBound(0) = -1 Then
RaiseEvent StatusMessage(">> Exit : No StyleList ", e_EventMessage.Normal)
Return
End If
Dim DataFilter As String = StyleList(SelIndex).Filter
If DataFilter.Trim = "" Then
DataFilter = "출력 = true"
Else
DataFilter &= " AND 출력 = true"
End If
RaiseEvent StatusMessage(">>Sytle Filter = " & DataFilter, e_EventMessage.Normal)
'///////////////바인딩소스를 초기화한다. 이건 나중에 뷰로 연결하기 위함이다.
Me.BS.Sort = ""
Me.BS.DataSource = Nothing
'Try
Dv = New DataView(SrcTable, DataFilter, "정렬번호,번호", DataViewRowState.CurrentRows)
RaiseEvent StatusMessage(">> Create DataView" & DataFilter, e_EventMessage.Normal)
If Dv.Count <= 0 Then '//데이터가없다면
MsgBox(StyleList(SelIndex).Desc & "에 해당하는 데이터가존재하지 않습니다" & vbCrLf & _
vbCrLf & "다른 스타일을 선택하세요", MsgBoxStyle.Information, "확인")
Me.v_picturebox1.Image = Nothing
Else
RaiseEvent StatusMessage(">> " & Dv.Count & "개의 데이터가 존재합니다", e_EventMessage.Normal)
Me.v_scrolbar.Minimum = 0 '//스크롤바 초기화
Me.v_scrolbar.Maximum = Dv.Count - 1
Me.LOAD_STYLE() '//스타일불러오기(여기서 모든컨트롤의 기본 위치와 글꼴이 결정된다)
Me.SaveReadLayOut_NEW(True) '//배경그림파일의 위치또한 변경해준다. 이건 스타일이 변경됬을때만
Me.SaveReadDesignData(True)
If Me.FirstIdx = -1 And Srcnum >= 0 Then
For i As Integer = 0 To Dv.Count - 1 '//맨첨보여줄놈을 찾는다. DV와 원래 인덱스값이 다르기때문에 찾아야한다.
If Dv(i)("번호") = Srcnum Then
FirstIdx = i
Exit For
End If
Next
End If
'//임시로 첨에보여줄 데이터를 이전에 저장된레코드번호로한다.
Dim ini As New ACC.MyINI(Me.StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File)
RaiseEvent StatusMessage("스타일 선택된 선택ini 파일명 = " & ini.FileName, e_EventMessage.Normal)
'FirstIdx = ini.Read("style", "lastpos", 0)
If FirstIdx = -1 OrElse FirstIdx > Dv.Count - 1 Then FirstIdx = 0 '//찾지못하고 나왓을경우에는 1번쨰 레코드를 보여주도록 한다.
NoView = True '//For Validate Index =0
RaiseEvent StatusMessage(">> 보여줄 데이터의 인덱스가 " & FirstIdx & " 번 입니다", e_EventMessage.Normal)
Me.BS.DataSource = Dv 'Dv '//여기서셋팅되면서 바로 tview 가 작동된다.
Me.BS.Sort = "정렬번호,번호" ',번호"
Me.v_scrolbar.Value = FirstIdx
Me.BS.Position = FirstIdx
'MsgBox("ASDF" & Me.BindingNavigatorPositionItem.Text)
If FirstIdx = 0 Then
RaiseEvent StatusMessage(">> 보여줄 데이터의 인덱스가 0 번 이라서 GeTviewData 를 호출합니다(왜그런지 기억안남)", e_EventMessage.Normal)
Me.GeTviewData(BS.Position, True)
End If
' If FirstIdx = 0 Then Me.GeTviewData(Me.BindingNavigatorPositionItem.Text - 1, True)
End If
'Catch ex As Exception '//에러난다면 거의 뭐;;폼을 바로 실행하는경우다
' RaiseEvent StatusMessage(" 관리자? SelectedStyle 에오류발생 : " & ex.Message.ToString, e_EventMessage.Normal)
'End Try
'Catch ex As Exception
' MsgBox("selected 스타일에 오류발생 메세지 : " & ex.ToString)
'End Try
End Sub
Private Sub BS_PositionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles BS.PositionChanged
'포지션 체인지
If Me.BS.Position >= 0 Then Me.v_scrolbar.Value = (Me.BS.Position)
If Me.NoView Then
Me.NoView = False
Else
RaiseEvent StatusMessage("BS_Positionchange value=" & BS.Position & " Run GetTviewData", e_EventMessage.Normal)
Me.GeTviewData(BS.Position, True)
End If
SetForm.ViewProperty(Me.OnlyOne, "부모 : 바인딩소스의 위치가 바뀔때")
End Sub
Public Sub AddLog(ByVal msg As String)
Try
If Me.Admin Then
Mylog.RichTextBox1.AppendText(msg & vbCrLf)
End If
Catch ex As Exception
End Try
End Sub
Private Sub Defalut_PrintForm_StatusMessage(ByVal Message As String, ByVal type As C_Epole.e_EventMessage) Handles Me.StatusMessage
AddLog(Message)
End Sub
'''
''' 체크박스클릭했을때 일어나는 이벤트이다 각 출력폼에서 정의한다
'''
'''
'''
'''
Protected Sub ViewCheck_Click(ByVal sender As Object, ByVal e As System.EventArgs)
AddLog(">>View CheckBox[" & CType(sender, Windows.Forms.ToolStripMenuItem).Text & "] Checked Click >> Refresh Window")
Me.Refresh_Window()
End Sub
#Region "Button 관련"
#Region "버튼 할당 속성"
#End Region
#Region "화면 조절 버튼"
Private Sub bt_canvasD_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles bt_canvasD.MouseDown
If e.Button = Windows.Forms.MouseButtons.Right Then
If My.Computer.Keyboard.CtrlKeyDown Then
If SetForm.cmb_imgtype.SelectedIndex <> 5 Then
MsgBox("배경화면 직접출력을 선택해야 가능합니다", MsgBoxStyle.Information, "확인")
Return
End If
SetForm.tb_baky.Text += 2
Me.preview_window()
Else
Me.v_picturebox1.Top += 2
End If
ElseIf e.Button = Windows.Forms.MouseButtons.Left Then
If My.Computer.Keyboard.CtrlKeyDown Then
If SetForm.cmb_imgtype.SelectedIndex <> 5 Then
MsgBox("배경화면 직접출력을 선택해야 가능합니다", MsgBoxStyle.Information, "확인")
Return
End If
SetForm.tb_bakh.Text += 2
Me.preview_window()
Else
Me.v_picturebox1.Height += 2
End If
End If
End Sub
Private Sub bt_canvasL_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles bt_canvasL.MouseDown
If e.Button = Windows.Forms.MouseButtons.Right Then
If My.Computer.Keyboard.CtrlKeyDown Then
If SetForm.cmb_imgtype.SelectedIndex <> 5 Then
MsgBox("배경화면 직접출력을 선택해야 가능합니다", MsgBoxStyle.Information, "확인")
Return
End If
SetForm.tb_bakx.Text -= 2
Me.preview_window()
Else
Me.v_picturebox1.Left -= 2
End If
ElseIf e.Button = Windows.Forms.MouseButtons.Left Then
If My.Computer.Keyboard.CtrlKeyDown Then
If SetForm.cmb_imgtype.SelectedIndex <> 5 Then
MsgBox("배경화면 직접출력을 선택해야 가능합니다", MsgBoxStyle.Information, "확인")
Return
End If
SetForm.tb_bakw.Text -= 2
Me.preview_window()
Else
Me.v_picturebox1.Width -= 2
End If
End If
End Sub
Private Sub bt_canvasR_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles bt_canvasR.MouseDown
If e.Button = Windows.Forms.MouseButtons.Right Then
If My.Computer.Keyboard.CtrlKeyDown Then
If SetForm.cmb_imgtype.SelectedIndex <> 5 Then
MsgBox("배경화면 직접출력을 선택해야 가능합니다", MsgBoxStyle.Information, "확인")
Return
End If
SetForm.tb_bakx.Text += 2
Me.preview_window()
Else
Me.v_picturebox1.Left += 2
End If
ElseIf e.Button = Windows.Forms.MouseButtons.Left Then
If My.Computer.Keyboard.CtrlKeyDown Then
If SetForm.cmb_imgtype.SelectedIndex <> 5 Then
MsgBox("배경화면 직접출력을 선택해야 가능합니다", MsgBoxStyle.Information, "확인")
Return
End If
SetForm.tb_bakw.Text += 2
Me.preview_window()
Else
Me.v_picturebox1.Width += 2
End If
End If
End Sub
Private Sub bt_canvasU_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles bt_canvasU.MouseDown
If e.Button = Windows.Forms.MouseButtons.Right Then
If My.Computer.Keyboard.CtrlKeyDown Then
If SetForm.cmb_imgtype.SelectedIndex <> 5 Then
MsgBox("배경화면 직접출력을 선택해야 가능합니다", MsgBoxStyle.Information, "확인")
Return
End If
SetForm.tb_baky.Text -= 2
Me.preview_window()
Else
Me.v_picturebox1.Top -= 5
End If
ElseIf e.Button = Windows.Forms.MouseButtons.Left Then
If My.Computer.Keyboard.CtrlKeyDown Then
If SetForm.cmb_imgtype.SelectedIndex <> 5 Then
MsgBox("배경화면 직접출력을 선택해야 가능합니다", MsgBoxStyle.Information, "확인")
Return
End If
SetForm.tb_bakh.Text -= 2
Me.preview_window()
Else
Me.v_picturebox1.Height -= 2
End If
End If
End Sub
#End Region
#End Region
#Region "Events"
Private Sub Defalut_PrintForm_SelectedControl(ByVal obj As C_label) Handles Me.SelectedControl
'//특정개체가 선택되었을때 (부모그룹에서 패턴적용여부를 찾아표시한다.)
With Me.AllFullLabels(obj.Gidx)
Select Case .ApplyPattern
Case E_PatternType.None
'Me.bt_SC.ForeColor = Color.Black
Me.bt_SL.ForeColor = Drawing.Color.Black
Case Else
' Me.bt_SC.ForeColor = Color.Black
Me.bt_SL.ForeColor = Drawing.Color.Red
'Case E_PatternType.Character '//문자
' ' Me.bt_SC.ForeColor = Color.Red
' Me.bt_SL.ForeColor = Color.Black
End Select
If Not bt_SL2 Is Nothing Then Me.bt_SL2.ForeColor = bt_SL.ForeColor
End With
'//패턴저장버튼활성화한다
If Me.AllFullLabels(obj.Gidx).Fixed Then
Me.bt_SL.Enabled = False
' Me.bt_SC.Enabled = False
Else
Me.bt_SL.Enabled = True
' Me.bt_SC.Enabled = 1
End If
If Not bt_SL2 Is Nothing Then Me.bt_SL2.Enabled = bt_SL.Enabled
End Sub
#End Region
Private Sub bt_SL_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bt_SL.Click
If MsgBox("선택된 개체의 패턴을 저장하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return
Me.QSave_PatternII()
' MsgBox("패턴이 저장되었습니다", MsgBoxStyle.Information, "확인")
End Sub
Private Sub bt_SL2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bt_SL2.Click
If MsgBox("선택된 개체의 패턴(H)을 저장하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return
Me.QSave_PatternIIH()
' MsgBox("패턴이 저장되었습니다", MsgBoxStyle.Information, "확인")
End Sub
Private Sub bt_SS_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bt_SS.Click
If MsgBox("현재 스타일(기본)을 저장하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.YesNo, "스타일저장") = MsgBoxResult.Yes Then
SAVE_STYLE_NEW()
Else
MsgBox("스타일저장을 취소하였습니다", MsgBoxStyle.Critical, "확인")
End If
End Sub
Private Sub v_scrolbar_Scroll(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles v_scrolbar.Scroll
If e.NewValue > 0 Then
Me.BS.Position = e.NewValue
Else
AddLog("스크롤바value값이 0보다 작습니다. 소스의 위치를 0으로 설정합니다")
Me.BS.Position = 0
End If
End Sub
Private Sub v_picturebox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles v_picturebox1.MouseMove
'Me.Text = e.X & "/" & e.Y
Me.Activate()
If My.Computer.Keyboard.CtrlKeyDown = True AndAlso My.Computer.Keyboard.AltKeyDown = True Then
'//선택된 컨트롤을 마우스위치로 이동한다
If Me.DMode = E_DesignMode.Text Then
If SelCon Is Nothing OrElse SelCon.Count < 1 Then Exit Sub
For Each sender1 As CEpole.C_label In SelCon
sender1.Left = e.X - (sender1.Width / 2)
sender1.Top = e.Y + (sender1.Height / 2)
Next
Else
MsgBox("쉐이프모두 미지원 여긴 개체가 마우스 따라다니는거")
End If
Me.preview_window()
End If
End Sub
Private Sub cm_Opening(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles cm.Opening
If Me.SelCon.Count > 1 Then
Me.cm_label.Text = "다중선택"
Else
Me.cm_label.Text = CType(Me.SelCon(0), C_label).Desc
End If
End Sub
Private Sub BS_CurrentChanged(sender As System.Object, e As System.EventArgs) Handles BS.CurrentChanged
End Sub
End Class