Files
Hanjeon/Epole.fp5/출력폼/Prn_Child_karo.vb
2020-05-24 21:15:53 +09:00

2485 lines
126 KiB
VB.net

Imports System.Drawing
Imports System.Drawing.Printing
Imports System.Math
Imports CommonClassv2.ARINCLASS
Imports System.IO
Public Class Prn_Child_karo
Dim AllLabels() As Str_Alllabels '//전체갯수는 추가할대 셋팅한다.
Dim S관리번호1(10) As MyControlOLEDBv2.MyLabel
'Dim S관리번호2(4) As MyControlOLEDBv2.MyLabel
Dim S전화번호1(0) As MyControlOLEDBv2.MyLabel
Dim S전화번호2(0) As MyControlOLEDBv2.MyLabel
Dim S지역명(0) As MyControlOLEDBv2.MyLabel
Dim S일련번호(0) As MyControlOLEDBv2.MyLabel
'Dim S구분자(0) As MyControlOLEDBv2.MyLabel
Dim 지역명 As String = vbNullString
Dim 관리번호1 As String = vbNullString
'Dim 관리번호2 As String = vbNullString
Dim 전화번호1 As String = vbNullString
Dim 전화번호2 As String = vbNullString
'Dim 구분자 As String
Dim 패턴명_지역명 As String = "AREAPATTERN"
Dim 패턴명_관리번호1 As String = "MAN1PATTERN"
'Dim 패턴명_관리번호2 As String = "MAN2PATTERN"
Dim 패턴명_전화번호1 As String = "TEL1ATTERN"
Dim 패턴명_전화번호2 As String = "TEL2PATTERN"
Dim NoView As Boolean = False '//LOAD_STYLE 을 잠시 실행하지 않기위햇(중복실행방지)서 둔다.(..이벤트가.. -_-;;너무 중복으로 발생함)
Dim SrcIdx As Integer = -1 '//원본 리뷰에서 클릭된 인덱스
Dim Srcnum As Integer = -1 '//원본 리뷴에서 클릭된 번호값
Dim Srcrow As DataRowView
Dim FirstIdx As Integer = -1 '//새로 생성된 리뷰에서 적용될 인덱스
'Public File As String = My.Application.Info.DirectoryPath & "\style.ini" '//스타일 파일
Dim StyleDir As New System.IO.DirectoryInfo(My.Application.Info.DirectoryPath & "\stylekr")
Public FileC As String = My.Application.Info.DirectoryPath & "\styleCkr.ini" '//사용자 스타일 파일
Private WithEvents pDoc As New PrintDocument()
Public SelCon As New ArrayList '//선택된 레이블들이 저장된 배열이다.
Public onlyOne As MyControlOLEDBv2.MyLabel '//포커스를 가진 레이블이다.
Dim srcTable As ireaDataSet.Detail_karoDataTable '//데이터가 저장될 테이블
Dim Dv As DataView '//데이터뷰(실제로 이 뷰의 데이터를 가지고 출력을 행한다.)
Dim printindex As Integer = 0 '//프린트되는 페이지 번호 이값이 -1 이면 현재페이지이므로 갱신하지 않고 출력한다.
Dim PrintArray() As Integer '//프린트할 페이지의 배열번호
Dim SettingFile As String = My.Application.Info.DirectoryPath & "\epole.ini" '//환경설정 파일
Dim LogFile As String = "\가로등순차로그.txt"
Dim SetForm As Frm_Prnset
Public Function Get_Control(ByVal index As Integer) As MyControlOLEDBv2.MyLabel
Return Me.AllLabels(index).ctl
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or ControlStyles.DoubleBuffer, True) '//더블버퍼링
Arin.WLog2(Auto_Log, "Form_Load()", LogFile)
Me.Left = 10
'//세부설정폼을 할당
SetForm = New Frm_Prnset(Me)
SetForm.PType = Frm_Prnset.E_Ftyle.가로등
SetForm.Show()
SetForm.Top = Me.Top
Load_Setting()
SetControls() '//컨트롤을 초기화하고 셋팅한다.
If srcTable Is Nothing Then
'MsgBox("소스가없어서 기본셋팅으로 전환함")
Arin.WLog2(Auto_Log, "개발자 기본셋팅으로 전환()", LogFile)
Common.Auto_Log = True
Me.NoView = True
'Me.detTableAdapter1.Connection.ConnectionString = ConString
'Me.detTableAdapter1.Fill(Me.IreaDataSet1.jjungtable, 1)
'Me.srcTable = Me.IreaDataSet1.jjungtable
Admin = True
End If
Arin.WLog2(Auto_Log, "개발자모드=" & Admin.ToString, LogFile)
'**********************************************************
If Admin Then
For Each A As ToolStripDropDownItem In Me.mainmenu.DropDownItems '//여기서 체크박스인것들만
If A.GetType.Name.ToUpper = "TOOLSTRIPMENUITEM" Then
If CType(A, ToolStripMenuItem).CheckOnClick Then
A.Visible = True
End If
End If
Next
End If
Me.SETTOOLTIP()
GetStyleList() '//style.ini 에서 스타일목록명만 가져온다.
If Srcrow Is Nothing Then '//가져온 행값이인덱스가 없으므로 1번째 스타일을 지정한다.
Arin.WLog2(Auto_Log, "가져온 행값이 없습니다. firstidx=0 / 일반용으로 셋팅합니다()", LogFile)
FirstIdx = 0 '//또한 맨 처음 데이터를 표시하게된다.
SetForm.cmb_style.Text = "가로등" '//여기서 데이터가 걸러지게된다.
Else
Srcnum = Srcrow("번호") 'srcTable.Rows(SrcIdx).Item("번호")
SetForm.cmb_style.Text = "가로등" '//여기서 데이터가 걸러지게된다.
End If
'**********************************************************
End Sub
'***********************************
Private Sub SetControls()
Arin.WLog2(Auto_Log, "SetControls()", LogFile)
Dim CtlCnt As Short = 0
For i As Integer = 0 To S지역명.GetUpperBound(0) '//모든문자를 할당한다.
S지역명(i) = New MyControlOLEDBv2.MyLabel
S지역명(i).설명 = "지역명" & i + 1
S지역명(i).Name = "A" & i + 1
ReDim Preserve AllLabels(CtlCnt)
Me.AllLabels(CtlCnt).ctl = S지역명(i)
SetForm.cmb_controls.Items.Add(S지역명(i).설명)
CtlCnt += 1
Next
For i As Integer = 0 To S관리번호1.GetUpperBound(0) '//모든문자를 할당한다.
S관리번호1(i) = New MyControlOLEDBv2.MyLabel
S관리번호1(i).설명 = "관리번호I" & i + 1
S관리번호1(i).Name = "M" & i + 1
ReDim Preserve AllLabels(CtlCnt)
Me.AllLabels(CtlCnt).ctl = S관리번호1(i)
SetForm.cmb_controls.Items.Add(S관리번호1(i).설명)
CtlCnt += 1
Next
'For i As Integer = 0 To S관리번호2.GetUpperBound(0) '//모든문자를 할당한다.
' S관리번호2(i) = New MyControlOLEDBv2.MyLabel
' S관리번호2(i).설명 = "관리번호II" & i + 1
' S관리번호2(i).Name = "I" & i + 1
' ReDim Preserve AllLabels(CtlCnt)
' Me.AllLabels(CtlCnt).ctl = S관리번호2(i)
' setform.cmb_controls.Items.Add(S관리번호2(i).설명)
' CtlCnt += 1
'Next
For i As Integer = 0 To S전화번호1.GetUpperBound(0) '//모든문자를 할당한다.
S전화번호1(i) = New MyControlOLEDBv2.MyLabel
S전화번호1(i).설명 = "전화번호(리)" & i + 1
S전화번호1(i).Name = "T" & i + 1
ReDim Preserve AllLabels(CtlCnt)
Me.AllLabels(CtlCnt).ctl = S전화번호1(i)
SetForm.cmb_controls.Items.Add(S전화번호1(i).설명)
CtlCnt += 1
Next
'For i As Integer = 0 To S구분자.GetUpperBound(0) '//모든문자를 할당한다.
' S구분자(i) = New MyControlOLEDBv2.MyLabel
' S구분자(i).설명 = "구분자" & i + 1
' S구분자(i).Name = "D" & i + 1
' ReDim Preserve AllLabels(CtlCnt)
' Me.AllLabels(CtlCnt).ctl = S구분자(i)
' setform.cmb_controls.Items.Add(S구분자(i).설명)
' CtlCnt += 1
'Next
For i As Integer = 0 To S전화번호2.GetUpperBound(0) '//모든문자를 할당한다.
S전화번호2(i) = New MyControlOLEDBv2.MyLabel
S전화번호2(i).설명 = "전화번호(읍)" & i + 1
S전화번호2(i).Name = "P" & i + 1
ReDim Preserve AllLabels(CtlCnt)
Me.AllLabels(CtlCnt).ctl = S전화번호2(i)
SetForm.cmb_controls.Items.Add(S전화번호2(i).설명)
CtlCnt += 1
Next
For i As Integer = 0 To S일련번호.GetUpperBound(0) '//모든문자를 할당한다.
S일련번호(i) = New MyControlOLEDBv2.MyLabel
S일련번호(i).설명 = "일련번호" & i + 1
S일련번호(i).Name = "N" & i + 1
S일련번호(i).Visible = False
ReDim Preserve AllLabels(CtlCnt)
Me.AllLabels(CtlCnt).ctl = S일련번호(i)
SetForm.cmb_controls.Items.Add(S일련번호(i).설명)
CtlCnt += 1
Next
End Sub
Public Sub GeTviewData(ByVal index As Integer, ByVal previewWindow As Boolean, Optional ByRef 번호패턴검사 As Integer = -1)
' Dim STARTTIME, ENDTIME As Date
Arin.WLog2(Auto_Log, "GetviewData 진입()", LogFile)
If Dv.Count <= 0 OrElse index < 0 OrElse index > Dv.Count Then
Arin.WLog2(Auto_Log, "GetViewData : 인덱스가 없거나 문제가 잇어서 리턴합니다.()", LogFile)
' MsgBox("GETVIEWDATA : 데이터가 없거나 잘못된 인덱스 입니다", MsgBoxStyle.Information, "확인") ' & index & "/" & Me.CustFP1.ActiveSheet.RowCount & ")", MsgBoxStyle.Critical, "확인")
Return '//잘못된 인덱스는 리턴
End If
관리번호1 = GetSpread(index, "관리번호1") & "-" & GetSpread(index, "관리번호2")
'관리번호2 = GetSpread(index, "관리번호2")
'구분자 = "-"
지역명 = GetSpread(index, "지역명")
전화번호1 = GetSpread(index, "전화번호1")
전화번호2 = GetSpread(index, "전화번호2")
Arin.WLog2(Auto_Log, "데이터뷰의 데이터를 변수로 가져오기 완료()", LogFile)
Me.Text = "출력작업(" & 지역명 & " : " & 관리번호1 & ")"
Arin.WLog2(Auto_Log, "PASE구문을 실행합니다.()", LogFile)
'============ 여기는 따로 해석이 없는곳이다 ==========================================================
Me.PARSE_지역명(지역명)
Me.PARSE_전화번호1(전화번호1)
Me.PARSE_전화번호2(전화번호2)
'====================================================================================================
If Me.cb_seq.Checked Then
Me.S일련번호(0).MyText = GetSpread(index, "번호") 'index + 1
Me.S일련번호(0).Visible = True
Else
Me.S일련번호(0).Visible = False
End If
'If Me.cb_seperate.Checked Then
' Me.S구분자(0).MyText = 구분자 'index + 1
' Me.S구분자(0).Visible = True
'Else
' Me.S구분자(0).Visible = False
'End If
Arin.WLog2(Auto_Log, "패턴이있는 PASE 구문을 실행합니다.()", LogFile)
'Me.PARSE_관리번호1(관리번호1)
'Me.PARSE_관리번호2(관리번호2)
'If Me.PARSE_고객번호(고객번호) Then Me.PARSE_고객번호패턴(고객번호)
If Me.PARSE_관리번호1(관리번호1) Then Me.PARSE_관리번호1패턴(관리번호1)
'If Me.PARSE_관리번호2(관리번호2) Then Me.PARSE_관리번호2패턴(관리번호2)
'If Me.PARSE_관리번호3(관리번호3) Then Me.PARSE_관리번호3패턴(관리번호3)
'If Me.PARSE_지점명(지점명) Then Me.PARSE_지점명패턴(지점명)
'======================== 기타 =================================================
'휴 끝났다.......................................................
Arin.WLog2(Auto_Log, "Pewview 윈도우를 실행합니다.()", LogFile)
Me.preview_window()
End Sub
Public Sub CLEAR_ITEM(ByVal DIV As String)
Arin.WLog2(Auto_Log, "Clear_item div=" & DIV, LogFile)
Select Case DIV.ToUpper
Case "A"
For i As Short = 0 To S지역명.GetUpperBound(0)
S지역명(i).MyText = ""
S지역명(i).Visible = False
Next
'Case "D"
' For i As Short = 0 To S구분자.GetUpperBound(0)
' S구분자(i).MyText = ""
' S구분자(i).Visible = False
' Next
Case "M"
For i As Short = 0 To S관리번호1.GetUpperBound(0)
S관리번호1(i).MyText = ""
S관리번호1(i).Visible = False
Next
'Case "I"
' For i As Short = 0 To S관리번호2.GetUpperBound(0)
' S관리번호2(i).MyText = ""
' S관리번호2(i).Visible = False
' Next
Case "T"
For i As Short = 0 To S전화번호1.GetUpperBound(0)
S전화번호1(i).MyText = ""
S전화번호1(i).Visible = False
Next
Case "P"
For i As Short = 0 To S전화번호2.GetUpperBound(0)
S전화번호2(i).MyText = ""
S전화번호2(i).Visible = False
Next
Case Else
MsgBox("Clear_Item 에 알수없는 문자 ( " & DIV & ") 입니다")
End Select
End Sub
Public Sub SAVE_PATTERN(ByVal MIDNAME As String, ByVal DIV As Char, ByVal LEN As Short, Optional ByVal LOGFILENAME As String = "\패턴.TXT") '패턴을 저장합니다. 패턴역시 위치/크기/장평등이 저장됩니다.
'이건 길이패턴 저장하는 함수다.
Dim Arinini As New MyINI(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File)
Dim TOBJ As MyControlOLEDBv2.MyLabel
Dim Pname As String = MIDNAME & "I" & LEN
If MsgBox("길이패턴을 저장하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then
NOTICE("길이패턴 저장이 취소되었습니다", Me.lb_msg)
Return
End If
Arin.WLog2(Auto_Log, "save_pattern 패턴을 저장한다. midname= " & MIDNAME, "\가로등순차로그.txt")
Select Case DIV.ToString.ToUpper
Case "A" '//지역명
For i As Integer = 0 To Me.S지역명.GetUpperBound(0)
TOBJ = Me.S지역명(i)
Arin.WLog2(Auto_Log, MIDNAME & "패턴저장시 아이템=" & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
Arinini.Write(Pname, "DESC", "저장된 길이패턴" & MIDNAME)
Arin.WLog2(Auto_Log, "최종선택완료=" & Pname & " " & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
Arinini.Write(Pname, TOBJ.Name & "pos", TOBJ.Left & "," & TOBJ.Top & "," & TOBJ.Width & "," & TOBJ.Height)
Arinini.Write(Pname, TOBJ.Name & "font", TOBJ.MyFont.Name & "," & TOBJ.MyFont.Size & "," & TOBJ.MyFont.Underline & "," & TOBJ.MyFont.Bold & "," & TOBJ.MyFont.Italic & "," & TOBJ.장평 & "," & TOBJ.장높이)
Arinini.Write(Pname, TOBJ.Name & "visible", TOBJ.Visible)
Arinini.Write(Pname, TOBJ.Name & "space", TOBJ.공백)
Next
Case "M" '//관리번호1
For i As Integer = 0 To Me.S관리번호1.GetUpperBound(0)
TOBJ = Me.S관리번호1(i)
Arin.WLog2(Auto_Log, MIDNAME & "패턴저장시 아이템=" & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
Arinini.Write(Pname, "DESC", "저장된 길이패턴" & MIDNAME)
Arin.WLog2(Auto_Log, "최종선택완료=" & Pname & " " & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
Arinini.Write(Pname, TOBJ.Name & "pos", TOBJ.Left & "," & TOBJ.Top & "," & TOBJ.Width & "," & TOBJ.Height)
Arinini.Write(Pname, TOBJ.Name & "font", TOBJ.MyFont.Name & "," & TOBJ.MyFont.Size & "," & TOBJ.MyFont.Underline & "," & TOBJ.MyFont.Bold & "," & TOBJ.MyFont.Italic & "," & TOBJ.장평 & "," & TOBJ.장높이)
Arinini.Write(Pname, TOBJ.Name & "visible", TOBJ.Visible)
Arinini.Write(Pname, TOBJ.Name & "space", TOBJ.공백)
Next
Arinini.Write(Pname, "LineType", Me.tb_ntype.Text)
Arinini.Write(Pname, "nseparate", SetForm.cmb_sep.SelectedIndex)
'Case "I" '//관리번호2
' For i As Integer = 0 To Me.S관리번호2.GetUpperBound(0)
' TOBJ = Me.S관리번호2(i)
' Arin.WLog2(Auto_Log, MIDNAME & "패턴저장시 아이템=" & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
' Arinini.Write(Pname, "DESC", "저장된 길이패턴" & MIDNAME)
' Arin.WLog2(Auto_Log, "최종선택완료=" & Pname & " " & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
' Arinini.Write(Pname, TOBJ.Name & "pos", TOBJ.Left & "," & TOBJ.Top & "," & TOBJ.Width & "," & TOBJ.Height)
' Arinini.Write(Pname, TOBJ.Name & "font", TOBJ.MyFont.Name & "," & TOBJ.MyFont.Size & "," & TOBJ.MyFont.Underline & "," & TOBJ.MyFont.Bold & "," & TOBJ.MyFont.Italic & "," & TOBJ.장평 & "," & TOBJ.장높이)
' Arinini.Write(Pname, TOBJ.Name & "visible", TOBJ.Visible)
' Arinini.Write(Pname, TOBJ.Name & "space", TOBJ.공백)
' Next
' Arinini.Write(Pname, "LineType", Me.tb_ntype.Text)
' Arinini.Write(Pname, "nseparate", Me.cmb_sep.SelectedIndex)
Case "T" '//관리번호2
For i As Integer = 0 To Me.S전화번호1.GetUpperBound(0)
TOBJ = Me.S전화번호1(i)
Arin.WLog2(Auto_Log, MIDNAME & "패턴저장시 아이템=" & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
Arinini.Write(Pname, "DESC", "저장된 길이패턴" & MIDNAME)
Arin.WLog2(Auto_Log, "최종선택완료=" & Pname & " " & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
Arinini.Write(Pname, TOBJ.Name & "pos", TOBJ.Left & "," & TOBJ.Top & "," & TOBJ.Width & "," & TOBJ.Height)
Arinini.Write(Pname, TOBJ.Name & "font", TOBJ.MyFont.Name & "," & TOBJ.MyFont.Size & "," & TOBJ.MyFont.Underline & "," & TOBJ.MyFont.Bold & "," & TOBJ.MyFont.Italic & "," & TOBJ.장평 & "," & TOBJ.장높이)
Arinini.Write(Pname, TOBJ.Name & "visible", TOBJ.Visible)
Arinini.Write(Pname, TOBJ.Name & "space", TOBJ.공백)
Next
Case "P" '//관리번호3
For i As Integer = 0 To Me.S전화번호2.GetUpperBound(0)
TOBJ = Me.S전화번호2(i)
Arin.WLog2(Auto_Log, MIDNAME & "패턴저장시 아이템=" & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
Arinini.Write(Pname, "DESC", "저장된 길이패턴" & MIDNAME)
Arin.WLog2(Auto_Log, "최종선택완료=" & Pname & " " & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
Arinini.Write(Pname, TOBJ.Name & "pos", TOBJ.Left & "," & TOBJ.Top & "," & TOBJ.Width & "," & TOBJ.Height)
Arinini.Write(Pname, TOBJ.Name & "font", TOBJ.MyFont.Name & "," & TOBJ.MyFont.Size & "," & TOBJ.MyFont.Underline & "," & TOBJ.MyFont.Bold & "," & TOBJ.MyFont.Italic & "," & TOBJ.장평 & "," & TOBJ.장높이)
Arinini.Write(Pname, TOBJ.Name & "visible", TOBJ.Visible)
Arinini.Write(Pname, TOBJ.Name & "space", TOBJ.공백)
Next
Case Else
MsgBox("Save_Pattern 에 정의되지않은 문자(" & DIV & ") 가 발생하였습니다", MsgBoxStyle.Critical, "확인")
End Select
Arin.WLog2(Auto_Log, " save_pattern 데이터테이블갱신을 호출함낟.", "\가로등순차로그.txt")
Me.데이터테이블갱신()
End Sub
Public Sub SAVE_PATTERNII(ByVal SRCSTR As String, ByVal MIDNAME As String, ByVal DIV As Char, Optional ByVal LOGFILENAME As String = "\패턴.TXT") '패턴을 저장합니다. 패턴역시 위치/크기/장평등이 저장됩니다.
'//이곳은 문자패턴을 저장한다.
Dim Arinini As New MyINI(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File)
Dim BUF() As Char = SRCSTR.ToCharArray
Dim mb As String = PATTERN_ENC(SRCSTR)
Dim TOBJ As MyControlOLEDBv2.MyLabel
Dim Pname As String = MIDNAME & "II" & mb.ToString
If MsgBox("문자패턴을 저장하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then
NOTICE("문자패턴 저장이 취소되었습니다", Me.lb_msg)
Return
End If
Arin.WLog2(Auto_Log, "save_pattern2 를 실행한다.", LogFile)
Select Case DIV.ToString.ToUpper
Case "A" '//선로명
For i As Integer = 0 To Me.S지역명.GetUpperBound(0)
TOBJ = Me.S지역명(i)
Arin.WLog2(Auto_Log, MIDNAME & "패턴저장시 아이템=" & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
Arinini.Write(Pname, "DESC", "저장된 문자패턴 " & MIDNAME)
Arin.WLog2(Auto_Log, "최종선택완료=" & Pname & " " & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
Arinini.Write(Pname, TOBJ.Name & "pos", TOBJ.Left & "," & TOBJ.Top & "," & TOBJ.Width & "," & TOBJ.Height)
Arinini.Write(Pname, TOBJ.Name & "font", TOBJ.MyFont.Name & "," & TOBJ.MyFont.Size & "," & TOBJ.MyFont.Underline & "," & TOBJ.MyFont.Bold & "," & TOBJ.MyFont.Italic & "," & TOBJ.장평 & "," & TOBJ.장높이)
Arinini.Write(Pname, TOBJ.Name & "visible", TOBJ.Visible)
Arinini.Write(Pname, TOBJ.Name & "space", TOBJ.공백)
Next
Case "M" '//전주번호
For i As Integer = 0 To Me.S관리번호1.GetUpperBound(0)
TOBJ = Me.S관리번호1(i)
Arin.WLog2(Auto_Log, MIDNAME & "패턴저장시 아이템=" & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
Arinini.Write(Pname, "DESC", "저장된 문자패턴 " & MIDNAME)
Arin.WLog2(Auto_Log, "최종선택완료=" & Pname & " " & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
Arinini.Write(Pname, TOBJ.Name & "pos", TOBJ.Left & "," & TOBJ.Top & "," & TOBJ.Width & "," & TOBJ.Height)
Arinini.Write(Pname, TOBJ.Name & "font", TOBJ.MyFont.Name & "," & TOBJ.MyFont.Size & "," & TOBJ.MyFont.Underline & "," & TOBJ.MyFont.Bold & "," & TOBJ.MyFont.Italic & "," & TOBJ.장평 & "," & TOBJ.장높이)
Arinini.Write(Pname, TOBJ.Name & "visible", TOBJ.Visible)
Arinini.Write(Pname, TOBJ.Name & "space", TOBJ.공백)
Next
Arinini.Write(Pname, "LineType", Me.tb_ntype.Text)
Arinini.Write(Pname, "nseparate", SetForm.cmb_sep.SelectedIndex)
'Case "I" '//관리번호2
' For i As Integer = 0 To Me.S관리번호2.GetUpperBound(0)
' TOBJ = Me.S관리번호2(i)
' Arin.WLog2(Auto_Log, MIDNAME & "패턴저장시 아이템=" & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
' Arinini.Write(Pname, "DESC", "저장된 문자패턴 " & MIDNAME)
' Arin.WLog2(Auto_Log, "최종선택완료=" & Pname & " " & TOBJ.Name & "/" & TOBJ.Name.Substring(0, 1).ToUpper, LOGFILENAME)
' Arinini.Write(Pname, TOBJ.Name & "pos", TOBJ.Left & "," & TOBJ.Top & "," & TOBJ.Width & "," & TOBJ.Height)
' Arinini.Write(Pname, TOBJ.Name & "font", TOBJ.MyFont.Name & "," & TOBJ.MyFont.Size & "," & TOBJ.MyFont.Underline & "," & TOBJ.MyFont.Bold & "," & TOBJ.MyFont.Italic & "," & TOBJ.장평 & "," & TOBJ.장높이)
' Arinini.Write(Pname, TOBJ.Name & "visible", TOBJ.Visible)
' Arinini.Write(Pname, TOBJ.Name & "space", TOBJ.공백)
' Next
' Arinini.Write(Pname, "LineType", Me.tb_ntype.Text)
' Arinini.Write(Pname, "nseparate", Me.cmb_sep.SelectedIndex)
Case Else
MsgBox("Save_PatternII 에 정의되지않은 문자(" & DIV & ") 가 발생하였습니다", MsgBoxStyle.Critical, "확인")
End Select
Arin.WLog2(Auto_Log, "save_patter2 ㅔ서 데이터테이블 갱신을 ㅎ호출한다ㅣㅣ ", "\가로등순차로그.txt")
Me.데이터테이블갱신()
End Sub
'---------------------------------
Public Function PARSE_지역명(ByVal srcsTR As String) As Boolean
Me.CLEAR_ITEM("A")
Dim Log As String = "\Parse_지역명.txt"
If srcsTR = "" OrElse Not Me.cb_area.Checked Then
Arin.WLog2(Auto_Log, "Zero Length - Return", Log)
Return False
End If
Dim Wlen As Short = srcsTR.Length
Dim SepPos As Short = srcsTR.IndexOf(";")
Dim SRC() As Char = srcsTR.ToCharArray
Me.S지역명(0).Visible = True
Me.S지역명(0).MyText = srcsTR
Arin.WLog2(Auto_Log, "Length=" & Wlen & " Sep=" & SepPos, Log)
Return True
End Function
Public Function PARSE_관리번호1(ByVal srcsTR As String) As Boolean
'Me.CLEAR_ITEM("M")
If srcsTR = "" OrElse Not Me.cb_mnum.Checked Then
Arin.WLog2(Auto_Log, "Zero Length or Not Check", LogFile)
Return False
End If
Dim Wlen As Short = srcsTR.Length
Dim SepPos As Short = srcsTR.IndexOf(";")
Dim SRC() As Char = srcsTR.ToCharArray
'For i As Integer = 0 To Wlen - 1 '//모든문자를 할당한다.
' S관리번호1(i).MyText = IIf(SRC(i) <> ";", SRC(i), "---")
' S관리번호1(i).Visible = True
'Next
Arin.WLog2(Auto_Log, "Length=" & Wlen & " Sep=" & SepPos, LogFile)
Return True
End Function
Public Sub PARSE_관리번호1패턴(ByVal srcstr As String)
Dim Wlen As Short = srcstr.Length
Dim SepPos As Short = srcstr.IndexOf(";")
Dim SrC() As Char = srcstr.ToCharArray
Dim retval As Integer = 0 ''0은 정상 1은 길이패턴없음 2는 3은 길이+문자없음
Dim pname As String
Dim Arinini As New 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(srcstr)
Dim TOBJ As MyControlOLEDBv2.MyLabel
Dim 분리인덱스 As Short = 0
Dim 번호형식 As String = "900"
Dim Dr() As DataRow
'//문자를먼저확인한다.
pname = Me.패턴명_관리번호1 & "II" & PATTERN
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & "M1POS'")
'MsgBox(pname & " " & "설명 = '" & pname & "M1POS'")
If Dr.GetUpperBound(0) = 0 Then '//데이터가 존재하므로 모두 적용을 한다.
Arin.WLog2(Auto_Log, "관리번호패턴감지(문자) : 길이=" & Wlen & " 문자열=" & srcstr & " 패턴=" & PATTERN, LogFile)
'//데이터는 최종적으로 번호형식에서 보낸다.
' MsgBox("pname 찾아서 있었다")
분리인덱스 = Arinini.Read(pname, "nseparate", 0)
번호형식 = Arinini.Read(pname, "LineType", "900")
For i As Integer = 0 To Me.S관리번호1.GetUpperBound(0)
TOBJ = Me.S관리번호1(i)
TOBJ.Tag = "" '//기존태그를 삭제한다.
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.MyFont = New Font(CTLFONT(0), CTLFONT(1), IIf(CTLFONT(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
TOBJ.장평 = CTLFONT(5)
TOBJ.장높이 = 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.공백 = Dr(0)(1).ToString
End If
TOBJ.Tag = "C"
Catch ex As Exception
Arin.WLog2(Auto_Log, "문자패턴오류=" & ex.Message.ToString, LogFile)
End Try
Next
Else
Arin.WLog2(Auto_Log, "문자패턴불일치 길이=" & Wlen & " 문자열=" & srcstr & " 패턴=" & PATTERN, LogFile)
retval += 2 '//패턴이 없으므로 바로 넘긴다.
End If
If retval = 2 Then '//문자패턴이 없을경우에만 길이패턴을 확인한다.
pname = Me.패턴명_관리번호1 & "I" & Wlen '//길이패턴 확인
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & "M1POS'")
If Dr.GetUpperBound(0) = 0 Then '//데이터가 존재하므로 모두 적용을 한다.
'MsgBox("pname 찾아서 있었다222222")
Arin.WLog2(Auto_Log, "관리번호패턴감지(길이) : 길이=" & Wlen & " 문자열=" & srcstr, LogFile)
'//데이터는 최종적으로 번호형식에서 보낸다.
분리인덱스 = Arinini.Read(pname, "nseparate", 0)
번호형식 = Arinini.Read(pname, "LineType", "900")
For i As Integer = 0 To Me.S관리번호1.GetUpperBound(0)
TOBJ = Me.S관리번호1(i)
TOBJ.Tag = "" '//기존태그를 삭제한다.
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.MyFont = New Font(CTLFONT(0), CTLFONT(1), IIf(CTLFONT(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
TOBJ.장평 = CTLFONT(5)
TOBJ.장높이 = 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.공백 = Dr(0)(1).ToString
End If
TOBJ.Tag &= "L"
Catch ex As Exception
Arin.WLog2(Auto_Log, "길이 패턴오류=" & ex.Message.ToString, LogFile)
End Try
Next
Else
Arin.WLog2(Auto_Log, "길이패턴불일치 기본스타일 복원 길이=" & Wlen & " 문자열=" & srcstr, LogFile)
retval += 1 '//없다
End If
End If
SetForm.cmb_sep.SelectedIndex = 분리인덱스
'If 번호형식 = "999" Then '//패턴이없었다는 말이다 번호형식을 어느정도 맞춰준다.
' 'MsgBox("번호형식이 없어서 셋팅합니다(" & 번호 & "/" & 번호.Length)
' If 번호.Length <= 12 Then
' If 번호.Length <= 4 Then
' 번호형식 = 번호.Length & "00"
' ElseIf 번호.Length <= 8 Then
' 번호형식 = "4" & CStr(번호.Length - 4) & "0"
' Else
' 번호형식 = "44" & CStr(번호.Length - 8)
' End If
' Else '//12자리이상이므로 어덯게 쪼개야할지 3으로나눠서 ..int 대입을 하자
' 번호형식 = CStr(Int(번호.Length / 3)) & CStr(Int(번호.Length / 3)) & CStr(번호.Length - Int(번호.Length / 3) * 2)
' End If
' 'MsgBox("최종번호=" & 번호형식)
'End If
Me.tb_ntype.Text = 번호형식
분리인덱스별출력("M", Me.관리번호1, 번호형식) '//번호형식을 갱신해준다.
End Sub
Private Sub 분리인덱스별출력(ByVal ClearChar As Char, ByVal SrcStr As String, Optional ByVal msg As String = "999")
Me.CLEAR_ITEM(ClearChar)
Dim A() As Char = SrcStr.ToCharArray
Dim P() As Char = msg.ToCharArray '--번호형식인데 여기선 안쓴다.
'//개별표시가 선택안되있으면 혼합으로 변경
If SetForm.cmb_sep.SelectedIndex = -1 Then SetForm.cmb_sep.SelectedIndex = 0
Dim NextCtl As MyControlOLEDBv2.MyLabel = Me.S관리번호1(0)
Dim CurPos As Short = 0 '//몇번째 컨트롤까지 썻다는 표시
Dim CPos As Short = 0 '//전체문자중 몇번째까지 했다는 표시
Select Case SetForm.cmb_sep.SelectedIndex
Case 0 '//혼합
'//형식수가 4를 넘지않으면 개별 넘을경우 통합출력으로한다.
'//연습데이터 342 : 345 R23L1 R9
' MsgBox("번호형식=" & msg & "/" & 번호 & "/p0=" & P(0))
Me.tb_ntype.Enabled = True '//분리엿을때 이것이 false 로 된다.
If CInt(P(0).ToString) <> 0 AndAlso CInt(P(0).ToString) < 5 Then '//첫줄에해당할 문자를 전부 개별로 넣는다.
' MsgBox("1줄=" & msg & "/" & 번호 & "/p0=" & P(0))
For i As Int16 = 0 To (CInt(P(0).ToString) - 1) '//
If i <= A.GetUpperBound(0) Then '//정상적인 범위의 데이터일경우
Me.S관리번호1(i).MyText = IIf(A(i) <> ";", A(i), "") '//0번째 (0,0)
'Me.S전주번호(i).Visible = True
'NextCtl = SetXdata(i, A)
CPos = i ' + 1
CurPos = i
End If
Next
ElseIf CInt(P(0).ToString) > 4 Then '//첫줄의 문자를 통합으로한다.
For i As Int16 = 0 To (CInt(P(0).ToString) - 1)
If i <= A.GetUpperBound(0) Then '//정상적인 범위의 데이터
Me.S관리번호1(CPos).MyText &= IIf(A(i) <> ";", A(i), "") '//0번째 (0,0)
'Me.S전주번호(i).Visible = True
CurPos = i
'CurPos += 1
'NextCtl.MyText &= A(i)
End If
Next
'NextCtl = GetnextCtl(NextCtl)
'CurPos += 1 '//여기서 1이된다.
End If
'curpos 는 몇번째 번호까지 했다는것이다(그 다음번호를 가르킨다)
'cpos 는 몇번째 컨트롤까지 썻다는 뜻이다.
' MsgBox("1번째출출력후 마지막위치값=" & CurPos)
'//2번째줄을 테스트한다.
If CPos = 0 AndAlso Me.S관리번호1(0).MyText = "" Then '//컨트롤번호가 0일경우다. 만약 값이없으면 1번째줄에서 아무것도없엇따는뜻이다.
CPos = -1
End If
If CInt(P(1).ToString) > 0 AndAlso CInt(P(1).ToString) < 5 Then
' MsgBox("2줄=" & msg & "/" & 번호 & "/p0=" & P(0))
For i As Int16 = CurPos + 1 To CInt(P(0).ToString) + CInt(P(1).ToString) - 1
If i <= A.GetUpperBound(0) Then
Me.S관리번호1(CPos + 1).MyText = IIf(A(i) <> ";", A(i), "") '//0번째 (0,0)
CPos += 1
'Me.S전주번호(i).Visible = True
'NextCtl = SetXdata(i, A)
CurPos = i
End If
Next
ElseIf CInt(P(1).ToString) > 0 Then '//통합출력
CPos += 1
For i As Int16 = CurPos + 1 To CInt(P(0).ToString) + CInt(P(1).ToString) - 1
If i <= A.GetUpperBound(0) Then
Me.S관리번호1(CPos).MyText &= IIf(A(i) <> ";", A(i), "") '//0번째 (0,0)
'Me.S전주번호(CPos).Visible = True
'NextCtl.MyText &= A(i)
CurPos = i
End If
Next
'NextCtl = GetnextCtl(NextCtl)
End If
' MsgBox("2번째출출력후 마지막위치값=" & CurPos)
If CInt(P(2).ToString) > 0 AndAlso CInt(P(2).ToString) < 5 Then
' MsgBox("3줄개별=" & msg & "/" & 번호 & "/p0=" & P(0))
For i As Int16 = CurPos + 1 To CInt(P(0).ToString) + CInt(P(1).ToString) + CInt(P(2).ToString) - 1
If i <= A.GetUpperBound(0) Then
' MsgBox(i & "/" & A(i))
Me.S관리번호1(CPos + 1).MyText = IIf(A(i) <> ";", A(i), "") '//0번째 (0,0)
CPos += 1
'Me.S전주번호(i).Visible = True
'NextCtl = SetXdata(i, A)
CurPos = i
End If
Next
ElseIf CInt(P(2).ToString) > 0 Then '//통합출력
'MsgBox("3줄통합=" & msg & "/" & 번호 & "/p0=" & P(0))
CPos += 1
For i As Int16 = CurPos + 1 To CInt(P(0).ToString) + CInt(P(1).ToString) + CInt(P(2).ToString) - 1
If i <= A.GetUpperBound(0) Then
Me.S관리번호1(CPos).MyText &= IIf(A(i) <> ";", A(i), "") '//0번째 (0,0)
'Me.S전주번호(CPos).Visible = True
'NextCtl.MyText &= A(i)
CurPos = i
End If
Next
'NextCtl = GetnextCtl(NextCtl)
End If
' MsgBox("3번째출출력후 마지막위치값=" & CurPos)
Case 1 '//분리
Me.tb_ntype.Enabled = False
For i As Int16 = 0 To A.GetUpperBound(0) '//개별 12개의 열에 데이터를 출력한다.
Me.S관리번호1(i).MyText = IIf(A(i) <> ";", A(i), "")
Next
Case 2 '//통합
Me.tb_ntype.Enabled = True
For i As Integer = 0 To A.GetUpperBound(0) '//모든 문자열을 집어넣는다 길이가 모자라면 중간에 없어진다.
If i <= CInt(P(0).ToString) - 1 Then
Me.S관리번호1(0).MyText &= IIf(A(i) <> ";", A(i), "")
ElseIf i <= (CInt(P(0).ToString) + CInt(P(1).ToString) - 1) Then
Me.S관리번호1(1).MyText &= IIf(A(i) <> ";", A(i), "")
Else
Me.S관리번호1(2).MyText &= IIf(A(i) <> ";", A(i), "")
End If
Next
End Select
For i As Integer = 0 To Me.S관리번호1.GetUpperBound(0)
Me.S관리번호1(i).Visible = IIf(Me.S관리번호1(i).MyText = "", False, True)
Next
End Sub
'Public Function PARSE_관리번호2(ByVal srcsTR As String) As Boolean
' Me.CLEAR_ITEM("I")
' If srcsTR = "" OrElse Not Me.cb_mnum.Checked Then
' Arin.WLog2(Auto_Log, "Zero Length - Return", LogFile)
' Return False
' End If
' Dim Wlen As Short = srcsTR.Length
' Dim SepPos As Short = srcsTR.IndexOf(";")
' Dim SRC() As Char = srcsTR.ToCharArray
' For i As Integer = 0 To Wlen - 1 '//모든문자를 할당한다.
' S관리번호2(i).MyText = IIf(SRC(i) <> ";", SRC(i), "---")
' S관리번호2(i).Visible = True
' Next
' Arin.WLog2(Auto_Log, "Length=" & Wlen & " Sep=" & SepPos, LogFile)
' Return True
'End Function
'Public Sub PARSE_관리번호2패턴(ByVal srcstr As String)
' Dim Wlen As Short = srcstr.Length
' Dim SepPos As Short = srcstr.IndexOf(";")
' Dim SrC() As Char = srcstr.ToCharArray
' Dim Pname As String = Me.패턴명_관리번호2 & "I" & Wlen
' Me.길이패턴연습(srcstr, Pname, LogFile, "I", Me.S관리번호2)
' Pname = Me.패턴명_관리번호2 & "II" & PATTERN_ENC(srcstr)
' Me.문자패턴연습(srcstr, Pname, LogFile, Me.S관리번호2)
'End Sub
Public Function PARSE_전화번호1(ByVal srcsTR As String) As Boolean
Me.CLEAR_ITEM("T")
Dim Log As String = "\Parse_전화번호1.txt"
If srcsTR = "" OrElse Not Me.cb_tel1.Checked Then
Arin.WLog2(Auto_Log, "Zero Length - Return", Log)
Return False
End If
Dim Wlen As Short = srcsTR.Length
Dim SepPos As Short = srcsTR.IndexOf(";")
Dim SRC() As Char = srcsTR.ToCharArray
Me.S전화번호1(0).Visible = True
Me.S전화번호1(0).MyText = srcsTR
Arin.WLog2(Auto_Log, "Length=" & Wlen & " Sep=" & SepPos, Log)
Return True
End Function
Public Function PARSE_전화번호2(ByVal srcsTR As String) As Boolean
Me.CLEAR_ITEM("P")
Dim Log As String = "\Parse_전화번호2.txt"
If srcsTR = "" OrElse Not Me.cb_tel2.Checked Then
Arin.WLog2(Auto_Log, "Zero Length - Return", Log)
Return False
End If
Dim Wlen As Short = srcsTR.Length
Dim SepPos As Short = srcsTR.IndexOf(";")
Dim SRC() As Char = srcsTR.ToCharArray
Me.S전화번호2(0).Visible = True
Me.S전화번호2(0).MyText = srcsTR
Arin.WLog2(Auto_Log, "Length=" & Wlen & " Sep=" & SepPos, Log)
Return True
End Function
Private Sub 패턴저장(ByVal 저장대상 As String)
Dim PC, PL As Boolean
Dim PLen As Short
Dim PChr As String
Dim PStr As String
Dim CP As String = ""
Select Case 저장대상
Case "지역명"
PC = IIf(Me.S지역명(0).Tag.ToString.IndexOf("C") > -1, True, False)
PL = IIf(Me.S지역명(0).Tag.ToString.IndexOf("L") > -1, True, False)
PLen = Me.지역명.Length
PChr = PATTERN_ENC(지역명)
PStr = Me.지역명
Case "관리번호1"
PC = IIf(Me.S관리번호1(0).Tag.ToString.IndexOf("C") > -1, True, False)
PL = IIf(Me.S관리번호1(0).Tag.ToString.IndexOf("L") > -1, True, False)
PLen = Me.관리번호1.Length
PChr = PATTERN_ENC(관리번호1)
PStr = Me.관리번호1
'Case "관리번호2"
' PC = IIf(Me.S관리번호2(0).Tag.ToString.IndexOf("C") > -1, True, False)
' PL = IIf(Me.S관리번호2(0).Tag.ToString.IndexOf("L") > -1, True, False)
' PLen = Me.관리번호2.Length
' PChr = PATTERN_ENC(관리번호2)
' PStr = Me.관리번호2
Case "전화번호1"
PC = IIf(Me.S전화번호1(0).Tag.ToString.IndexOf("C") > -1, True, False)
PL = IIf(Me.S전화번호1(0).Tag.ToString.IndexOf("L") > -1, True, False)
PLen = Me.전화번호1.Length
PChr = PATTERN_ENC(전화번호1)
PStr = Me.전화번호1
Case "전화번호2"
PC = IIf(Me.S전화번호2(0).Tag.ToString.IndexOf("C") > -1, True, False)
PL = IIf(Me.S전화번호2(0).Tag.ToString.IndexOf("L") > -1, True, False)
PStr = Me.전화번호2
PLen = PStr.Length
PChr = PATTERN_ENC(PStr)
Case Else
MsgBox("알수없는 저장대상(" & 저장대상 & ") 입니다" & vbCrLf & "개발자에 문의하세요", MsgBoxStyle.Critical, "확인")
Exit Sub
End Select
Dim Msg As System.Text.StringBuilder = Prn_Common.Get_SavePatternString(저장대상, PC, CP, PL, PStr, PLen, PChr)
Dim A As MsgBoxResult = MsgBox(Msg.ToString, MsgBoxStyle.Information + MsgBoxStyle.YesNoCancel, "예) 길이저장 , 아니오) 문자저장 , 취소) 취소")
If A = MsgBoxResult.Yes Then '//길이저장
Select Case 저장대상
Case "지역명"
SAVE_PATTERN(Me.패턴명_지역명, "A", Me.지역명.Length, "\지역명패턴.TXT") '//선로명의 패턴을 저장합니다.
Case "관리번호1"
SAVE_PATTERN(Me.패턴명_관리번호1, "M", Me.관리번호1.Length, "\관리번호패턴1.TXT") '//선로명의 패턴을 저장합니다.
'Case "관리번호2"
' SAVE_PATTERN(Me.패턴명_관리번호2, "I", Me.관리번호2.Length, "\관리번호패턴2.TXT") '//선로명의 패턴을 저장합니다.
Case "전화번호1"
SAVE_PATTERN(Me.패턴명_전화번호1, "T", Me.전화번호1.Length, "\전화번호1패턴.TXT") '//선로명의 패턴을 저장합니다.
Case "전화번호2"
SAVE_PATTERN(Me.패턴명_전화번호2, "P", Me.전화번호2.Length, "\전화번호2패턴.TXT") '//선로명의 패턴을 저장합니다.
Case Else
MsgBox("알수없는 저장대상(" & 저장대상 & ") 입니다" & vbCrLf & "개발자에 문의하세요", MsgBoxStyle.Critical, "확인")
Exit Sub
End Select
ElseIf A = MsgBoxResult.No Then '//문자저장
Select Case 저장대상
Case "지역명"
SAVE_PATTERNII(Me.지역명, Me.패턴명_지역명, "A", "\지역명패턴2.TXT") '//선로명의 패턴을 저장합니다.
Case "관리번호1"
SAVE_PATTERNII(Me.관리번호1, Me.패턴명_관리번호1, "M", "\관리번호패턴1.TXT") '//선로명의 패턴을 저장합니다.
'Case "관리번호2"
' SAVE_PATTERNII(Me.관리번호2, Me.패턴명_관리번호2, "I", "\관리번호패턴2.TXT") '//선로명의 패턴을 저장합니다.
Case "전화번호1"
SAVE_PATTERNII(Me.전화번호1, Me.패턴명_전화번호1, "T", "\전화번호1패턴2.TXT") '//선로명의 패턴을 저장합니다.
Case "전화번호2"
SAVE_PATTERNII(Me.전화번호2, Me.패턴명_전화번호2, "P", "\전화번호2패턴2.TXT") '//선로명의 패턴을 저장합니다.
Case Else
MsgBox("알수없는 저장대상(" & 저장대상 & ") 입니다" & vbCrLf & "개발자에 문의하세요", MsgBoxStyle.Critical, "확인")
Exit Sub
End Select
Else
NOTICE("패턴저장이 취소되었습니다", Color.Red, Me.lb_msg)
End If
End Sub
'Private Sub odflStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles odflStripMenuItem.Click
' SAVE_PATTERN(Me.패턴명_관리번호2, "I", Me.관리번호2.Length, "\관리번호2패턴.TXT") '//선로명의 패턴을 저장합니다.
'End Sub
Private Sub ToolStripMenuItem6_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem6.Click
SAVE_PATTERN(Me.패턴명_관리번호1, "M", Me.관리번호1.Length, "\관리번호1패턴.TXT") '//선로명의 패턴을 저장합니다.
End Sub
'Private Sub olStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_mansave2.Click
' SAVE_PATTERNII(Me.관리번호2, Me.패턴명_관리번호2, "I", "\관리번호2패턴2.TXT") '//선로명의 패턴을 저장합니다.
'End Sub
Private Sub ToolStripMenuItem5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_mansave1.Click
SAVE_PATTERNII(Me.관리번호1, Me.패턴명_관리번호1, "M", "\관리번호1패턴2.TXT") '//선로명의 패턴을 저장합니다.
End Sub
Private Sub ToolStripMenuItem7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem7.Click
Me.패턴저장("관리번호2")
End Sub
Private Sub helpolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles helpolStripMenuItem.Click
Me.패턴저장("관리번호1")
End Sub
#Region "자주 바꿀일없는 부분"
Public Function ChkNumPattern(ByVal index As Integer) As Int16
Arin.WLog2(Auto_Log, "번호패턴을 체크합니다. int16을 반환합니다.()", LogFile)
If Dv.Count <= 0 Or index < 0 OrElse index > Dv.Count Then
'MsgBox("데이터가 없거나 잘못된 인덱스 입니다(" & index & "/" & Me.CustFP1.ActiveSheet.RowCount & ")", MsgBoxStyle.Critical, "확인")
Return -1 '//잘못된 인덱스는 리턴
End If
Dim 검사번호패턴검사 As Integer = 0
Dim 검사번호 As String
검사번호 = GetSpread(index, "관리번호1") & GetSpread(index, "관리번호2")
If 검사번호.Trim = "" Then Return -1 '//검사번호자체에 문제가잇을시 에 리턴
Dim Wlen As Short = 검사번호.Length : If Wlen <= 0 Then Return -1 '//없는 글귀가 왓을때 턴해버린다.
Dim SRC() As Char = 검사번호.ToCharArray
Dim Log As String = "\Parse_검사번호패턴.txt"
Dim SepPos As Short = 검사번호.IndexOf(";")
Dim retval As Integer = 0 ''0은 정상 1은 길이패턴없음 2는 3은 길이+문자없음
'//검사번호는 길이패턴을 하지않고 문자패턴만 한다.
Dim pname As String
Dim Arinini As New MyINI(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File)
Dim PATTERN As String = PATTERN_ENC(검사번호)
'//먼저문자가있는지 확인한다.
pname = "JJNUMPATTERNII" & PATTERN
Dim Dr() As DataRow
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & "DESC'")
Arin.WLog2(Auto_Log, "길이패턴의 존재여부 = " & Dr.GetUpperBound(0) & ":" & pname, "\지중순차로그.txt")
If Dr.GetUpperBound(0) <> -1 Then '//있다.
retval += 2
'Arin.WLog2(Auto_Log, "관리구5번 문자를 찾았습니다 (" & pname & "DESC" & ")", Log)
End If
'If Arinini.Read(pname, "DESC") = vbNullString Then retval += 2 '//패턴이 없으므로 바로 넘긴다.
pname = "JJNUMPATTERN" & Wlen
Dr = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & "DESC'")
Arin.WLog2(Auto_Log, "문자패턴의 존재여부 = " & Dr.GetUpperBound(0) & ";" & pname, "\지중순차로그.txt")
If Dr.GetUpperBound(0) <> -1 Then '//있다.
retval += 1
'Arin.WLog2(Auto_Log, "관리구5번 문자를 찾았습니다 (" & pname & "DESC" & ")", Log)
End If
Return retval '// 0이 리턴될것이다. 패턴이 모두 정상이란 뜻이다
End Function
Public Sub New()
InitializeComponent()
Arin.WLog2(Auto_Log, "New()", LogFile)
End Sub
Public Sub New(ByRef Src As ireaDataSet.Detail_karoDataTable, Optional ByVal IRow As DataRowView = Nothing)
InitializeComponent()
Arin.WLog2(Auto_Log, "New(srctable,srcRow)", LogFile)
srcTable = Src '//가져온 테이블을 임시테이블에 저장을 해두고 사용한다.
Srcrow = IRow '//이것은 클릭된 행번호이다. 이 행번호를 가지고 스타일을 판별한다
End Sub
Private Sub printform_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
'If Not BackWork Is Nothing Then BackWork = Nothing
'Me.CustFP1.ColSize_Save()
Me.SetForm.Close()
Arin.WLog2(Auto_Log, "Form_Close", LogFile)
Save_Setting()
End Sub
Private Sub printform_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
'If SelCon Is Nothing Then Return
'Dim Tobj As MyControlOLEDBv2.MyLabel
Select Case e.KeyCode
Case Keys.Up
If e.Shift Then '//글씨높이
Me.CtrSize(True, -5)
Else
Me.CtrPos(True, -5)
End If
'Me.ViewProperty(SelCon(0))
e.Handled = True
Case Keys.Down
If e.Shift Then
Me.CtrSize(True, 5)
Else
Me.CtrPos(True, 5)
End If
'ViewProperty(Tobj)
e.Handled = True
Case Keys.Left
If e.Shift Then
Me.CtrSize(False, -5)
Else
Me.CtrPos(False, -5)
End If
'ViewProperty(Tobj)
e.Handled = True
Case Keys.Right
If e.Shift Then
Me.CtrSize(False, 5)
Else
Me.CtrPos(False, 5)
End If
'ViewProperty(Tobj)
e.Handled = True
Case Keys.S
If e.Control Then
Me.bt_mansave1.PerformClick()
Me.bt_mansave2.PerformClick()
End If
Case Keys.F8 '//프린트 미리보기
Me.bt_print_preview.PerformClick()
Case Keys.F9 '//프린트하기
Me.bt_print.PerformClick()
End Select
End Sub
Private Sub SETTOOLTIP()
Arin.WLog2(Auto_Log, "Settooltip()", LogFile)
Dim TMSG As New System.Text.StringBuilder()
TMSG.AppendLine()
TMSG.AppendLine("선택가능한 개체목록을 볼 수 잇습니다")
TMSG.AppendLine()
TMSG.AppendLine("화면에 보이지 않는 개체도 선택이 가능합니다")
TMSG.AppendLine()
Me.ToolTip1.SetToolTip(SetForm.cmb_controls, TMSG.ToString)
TMSG = New System.Text.StringBuilder()
TMSG.AppendLine()
TMSG.AppendLine("<개체들의 상태를 확인할 수 있습니다>")
TMSG.AppendLine()
TMSG.AppendLine("더블클릭시 임시적으로 해당 문자를 수정할 수 있습니다.")
TMSG.AppendLine("왼쪽클릭시 해당개체만 선택됩니다.")
TMSG.AppendLine("Ctrl + 왼쪽클릭시 해당개체가 속한 그룹이 선택됩니다.")
TMSG.AppendLine("우클릭시 선택된 개체가 추가됩니다(다중선택기능)")
TMSG.AppendLine()
TMSG.AppendLine("[번호출력시 색상구분]")
TMSG.AppendLine("흑색 : 문자패턴 적용")
TMSG.AppendLine("녹색 : 길이패턴 적용")
TMSG.AppendLine("적색 : 길이,문자패턴 미적용")
TMSG.AppendLine()
TMSG.AppendLine(">>환경설정에서 색상구분이 가능하도록 설정되어야 합니다")
TMSG.AppendLine()
Me.ToolTip1.SetToolTip(Me.PictureBox1, TMSG.ToString)
TMSG = New System.Text.StringBuilder()
TMSG.AppendLine("녹색은 길이패턴만 적용된 아이템이며")
TMSG.AppendLine("적색은 길이,문자패턴이 존재하지 않는 아이템입니다")
TMSG.AppendLine("흑색은 문자패턴이나 길이,문자패턴이 존재하는 경우입니다.")
TMSG.AppendLine()
'Me.ToolTip1.SetToolTip(Me.X1, X1.설명 & vbCrLf & TMSG.ToString)
'Me.ToolTip1.SetToolTip(Me.X2, X2.설명 & vbCrLf & TMSG.ToString)
'Me.ToolTip1.SetToolTip(Me.X3, X3.설명 & vbCrLf & TMSG.ToString)
End Sub
Private Sub con_dclick(ByVal sender As Object, ByVal e As System.EventArgs)
Arin.WLog2(Auto_Log, "개체를 더블클릭했습니다.(이것은 사용되지 않음)", LogFile)
Dim Msg As New System.Text.StringBuilder("변경할 값을 입력하세요")
Msg.AppendLine("줄바꿈을하려면 \n 을 입력하세요")
Msg.AppendLine("예) 세로로 12를 출력하려면 1\n2 을 입력하세요")
Msg.AppendLine()
Msg.AppendLine("변경한 값은 현재페이지에만 적용됩니다")
Dim A As MyControlOLEDBv2.MyLabel = sender
Dim Val As String = InputBox(Msg.ToString, "변경", A.MyText)
If Val = "" Then Return
Val = Val.Replace("\n", vbCrLf)
A.MyText = Val
'//preview 는 아마도 픽쳐박스 더블클릭에서 정의한듯 하다.
End Sub
Private Sub Save_Setting()
Arin.WLog2(Auto_Log, "현재 설정(스타일)을 저장합니다.", LogFile)
Dim A As New MyINI(SettingFile)
A.Write("PRINTFORM", "printername", Frm_Prnset.cmb_prnlist.Text) '//패턴검사조건 콤보박스
End Sub
Private Sub Load_Setting()
Arin.WLog2(Auto_Log, "현재설정(스타일)을 가져옵니다.()", LogFile)
Arin.WLog2(Auto_Log, "Load_Setting()", LogFile)
Dim a As New MyINI(SettingFile)
Frm_Prnset.cmb_prnlist.Text = a.Read("PRINTFORM", "printername", "")
End Sub
Private Function GetSpread(ByVal row As Integer, ByVal col As Integer) As String
Try
Return Dv(row)(col)
'Return Me.CustFP1_Sheet1.Cells(row, col).Value.ToString
Catch ex As Exception
Return ""
End Try
End Function
Private 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
Public Sub GetStyleList()
Arin.WLog2(Auto_Log, "GetStyleList진입()", LogFile)
'//스타일명을 가져와서 콤보박스에 표시합니다.
'//style 폴더아래의 ini 파일전체를 스타일 이라한다.
'//파일을 읽어서 메모리에 저장한다.
' Dim Arinini As MyINI
Dim CurIdx As Integer = 0
Dim StyleCnt As Short = StyleDir.GetFiles("*.ini").GetUpperBound(0)
ReDim StyleList(StyleCnt)
Dim Section, Value As New ArrayList
Dim SectionIdx As Integer = 0
Arin.WLog2(Auto_Log, "GetStyleList(파일에서 스타일목을 가져온다)", LogFile)
For Each FI As IO.FileInfo In StyleDir.GetFiles("*.ini")
Arin.WLog2(Auto_Log, "파일명=(" & FI.FullName & ") 의 스타일을 가져옵니다 메모리로", LogFile)
GetAllsection(FI.FullName, CurIdx)
SetForm.cmb_style.Items.Clear()
SetForm.cmb_style.Items.Add(StyleList(CurIdx).Desc)
CurIdx += 1
Next
End Sub
Private Sub 데이터테이블갱신()
Arin.WLog2(Auto_Log, "데이터테이블 갱신()", LogFile)
GetAllsection(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File, SetForm.cmb_style.SelectedIndex)
End Sub
Public Sub GetAllsection(ByVal FILENAME As String, ByVal CurIdx As Short)
Dim FS As New System.IO.FileStream(FILENAME, FileMode.Open)
Dim SR As New StreamReader(FS, System.Text.Encoding.Default)
Dim Findkey As String = ""
Dim Line As String
Dim KeyPos As Integer = -1
Dim Seppos As Integer = -1
Dim dr As DataRow
Arin.WLog2(Auto_Log, "getallSection : 파일의 모든내용을 테이블로 옴긴다.()", LogFile)
StyleList(CurIdx).PATTERNTABLE = New DataTable
StyleList(CurIdx).PATTERNTABLE.Columns.Add("설명")
StyleList(CurIdx).PATTERNTABLE.Columns.Add("")
'//초기값셋팅
StyleList(CurIdx).Backimg = ""
StyleList(CurIdx).CanvasX = 292
StyleList(CurIdx).CanvasY = 520
StyleList(CurIdx).Desc = "기본걸명"
StyleList(CurIdx).dummmyx = 0
StyleList(CurIdx).dummmyy = 50
StyleList(CurIdx).Dummy = False
StyleList(CurIdx).Dummytype = 1
StyleList(CurIdx).File = ""
StyleList(CurIdx).Filter = ""
StyleList(CurIdx).LandScape = False
StyleList(CurIdx).MarginX = 50
StyleList(CurIdx).MarginY = 50
StyleList(CurIdx).picstyle = 1
StyleList(CurIdx).PrintFontOffset = 0
StyleList(CurIdx).ScaleX = 1.5
StyleList(CurIdx).ScaleY = 1.5
StyleList(CurIdx).Viewimage = False
'//모든줄을 읽어서 섹션&키 = 설명 으로 한다.
While SR.Peek > -1
Line = SR.ReadLine.ToUpper
If Line <> "" Then
If Findkey = "" Then '//아직 셋팅된 키가 없다면
If Line.ToUpper.IndexOf("[") > -1 Then Findkey = Line.Trim("[").ToString.Trim("]").ToString
Else '//셋팅된 키가 있다면 테이블에 추가해준다.
If Line.IndexOf("[") = -1 Then '//그다음 키가 오기전까지 모두 추가한다.
Seppos = Line.IndexOf("=")
' MsgBox(Line.Substring(0, Seppos).ToUpper)
Select Case Line.Substring(0, Seppos).ToUpper
Case "DESC"
If Findkey.ToUpper = "STYLE" Then
StyleList(CurIdx).Desc = Line.Substring(Seppos + 1).ToUpper
Else
dr = StyleList(CurIdx).PATTERNTABLE.NewRow
dr(0) = CStr(Findkey & Line.Substring(0, Seppos)).ToUpper
dr(1) = Line.Substring(Seppos + 1).ToUpper
StyleList(CurIdx).PATTERNTABLE.Rows.Add(dr)
End If
Case "FILE" : StyleList(CurIdx).File = Line.Substring(Seppos + 1).ToUpper
Case "BACKIMG" : StyleList(CurIdx).Backimg = Line.Substring(Seppos + 1).ToUpper
Case "CANVASX" : StyleList(CurIdx).CanvasX = Line.Substring(Seppos + 1).ToUpper
Case "CANVASY" : StyleList(CurIdx).CanvasY = Line.Substring(Seppos + 1).ToUpper
Case "DUMMMYX" : StyleList(CurIdx).dummmyx = Line.Substring(Seppos + 1).ToUpper
Case "DUMMMYY" : StyleList(CurIdx).dummmyy = Line.Substring(Seppos + 1).ToUpper
Case "LANDSCAPE" : StyleList(CurIdx).LandScape = Line.Substring(Seppos + 1).ToUpper
Case "MARGINX" : StyleList(CurIdx).MarginX = Line.Substring(Seppos + 1).ToUpper
Case "MARGINY" : StyleList(CurIdx).MarginY = Line.Substring(Seppos + 1).ToUpper
Case "PICSTYLE" : StyleList(CurIdx).picstyle = Line.Substring(Seppos + 1).ToUpper
Case "PRINTFONTOFFSET" : StyleList(CurIdx).PrintFontOffset = Line.Substring(Seppos + 1).ToUpper
Case "SCALEX" : StyleList(CurIdx).ScaleX = Line.Substring(Seppos + 1).ToUpper
Case "SCALEY" : StyleList(CurIdx).ScaleY = Line.Substring(Seppos + 1).ToUpper
Case "VIEWIMAGE" : StyleList(CurIdx).Viewimage = Line.Substring(Seppos + 1).ToUpper
Case "FILTER" : StyleList(CurIdx).Filter = Line.Substring(Seppos + 1).ToUpper
Case Else
dr = StyleList(CurIdx).PATTERNTABLE.NewRow
dr(0) = CStr(Findkey & Line.Substring(0, Seppos)).ToUpper
dr(1) = Line.Substring(Seppos + 1).ToUpper
StyleList(CurIdx).PATTERNTABLE.Rows.Add(dr)
End Select
Else
Findkey = Line.Trim("[").ToString.Trim("]").ToString
End If
End If
End If
End While
' MsgBox(StyleList(CurIdx).Filter)
SR.Close()
FS.Close()
End Sub
Public Function Prepare_Print() As Boolean '//범위내의 페이지번호와 일치하는 번호를 찾아서 배열에 할당한다.
Me.printindex = 0 '//배열의 첫번으로 출력을 준비한다.
Me.pDoc.DefaultPageSettings.Margins.Left = SetForm.tb_marginX.Text '//좌,우 여백 설정
Me.pDoc.DefaultPageSettings.Margins.Top = SetForm.tb_marginY.Text
Me.pDoc.DefaultPageSettings.Landscape = 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
Return C_Epole.Set_PrnRange(Me.Dv, Me.BindingNavigatorPositionItem.Text, Me.PrintArray, Prn_Type, Me.SetForm.tb_printrange.Text.Trim)
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Print_Preview()
End Sub
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 PrintPreviewDialog()
Try
Preview.Document = pDoc
Preview.ShowDialog()
Catch EX As Exception
MsgBox("Prrint_Preview Error : " & EX.Message)
End Try
End Sub
Private Sub pDoc_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles pDoc.PrintPage
Arin.WLog2(Auto_Log, "proc_printpage 프린트패이지를 작성한다 중요하다.()", LogFile)
Dim fmt As New StringFormat(StringFormatFlags.LineLimit)
Dim MyFont As Font
Dim NewFontSize As Int16 = 10
Dim dummy As Boolean = False '//이값이 true 이면 출력시 변위를 지정해서 출력한다.
Dim C As MyControlOLEDBv2.MyLabel
'페이지 구분을 이해하고 몇개를 찍을지 결정한다.
'Debug.Print("프린터인덱스=" & Me.printindex)
'Debug.Print("프린터배열=" & Me.PrintArray.GetUpperBound(0))
If Me.printindex <> -1 Then Me.GeTviewData(Me.PrintArray(Me.printindex), False) '//페이지를 갱신하고 출력을 시작한다.
e.Graphics.ScaleTransform(SetForm.tb_scalex.Text, SetForm.tb_scaley.Text)
' If Not Me.PictureBox1.BackgroundImage Is Nothing Then e.Graphics.DrawImage(Me.PictureBox1.BackgroundImage, 0, 0)
Dummyflag: '//--2장출력일경우 이부분에서 다시 시작한다.
For i As Integer = 0 To Me.AllLabels.GetUpperBound(0)
C = Me.AllLabels(i).ctl
If C.Visible = True AndAlso C.MyText <> "" Then
'//myfont 는 글꼴의 일괄크기변경 옵션의의해서 생성됨
NewFontSize = C.MyFont.Size + SetForm.tb_myfontsize.Text
If NewFontSize < 0 Then NewFontSize = 0
MyFont = New Font(C.MyFont.FontFamily, NewFontSize, C.MyFont.Style)
If C.장평 = 100 AndAlso C.장높이 = 100 Then '//장평미사용 문자열 처리
e.Graphics.DrawString(C.최종문자, MyFont, Brushes.Black, New Point(C.Left + e.PageSettings.Margins.Left + IIf(dummy, SetForm.tb_secx.Text, 0), C.Top + e.PageSettings.Margins.Top + IIf(dummy, SetForm.tb_secy.Text, 0)))
'e.Graphics.RotateTransform(Me.TextBox3.Text)
Else '//장평사용 이미지 처리
Dim NewX, Newy As Integer
Dim SrcDpix, SrcDPiY As Single
'MsgBox(Tobj.장높이)
SrcDpix = C.CreateGraphics.DpiX
SrcDPiY = C.CreateGraphics.DpiY
NewX = C.GetSize(MyFont).Width * (C.장평 / 100) * (e.Graphics.DpiX / SrcDpix)
Newy = C.GetSize(MyFont).Height * (C.장높이 / 100) * (e.Graphics.DpiY / SrcDPiY)
Dim BMP As New Bitmap(NewX, Newy, e.Graphics)
Dim G As Graphics = Graphics.FromImage(BMP)
G.ScaleTransform((C.장평 / 100), (C.장높이 / 100))
G.DrawString(C.최종문자, MyFont, Brushes.Black, 0, 0)
G.Dispose()
e.Graphics.DrawImage(BMP, New Point(C.Left + e.PageSettings.Margins.Left + IIf(dummy, SetForm.tb_secx.Text, 0), C.Top + e.PageSettings.Margins.Top + IIf(dummy, SetForm.tb_secy.Text, 0))) ', CInt(GetSize.Width * (v장평 / 100)), GetSize.Height)
'e.Graphics.RotateTransform(Me.TextBox3.Text)
End If
End If
Next
'//페이지가 있던없던 2장복사를 먼저 확인한다.
'//다음페이지가 잇으면 다음기능을 확인하고 그렇지 않을경우에는 한장복사만 확인한다.
If dummy = False AndAlso SetForm.cb_dummy.Checked Then '//2장복사일경우에는 현재복사인지 다음복사인지 체크
dummy = True
If SetForm.cmb_dummy.SelectedIndex = 0 Then '//현재복사는 궂이 다음장없어도 가능하다.
'dummy = True
' MsgBox("잇던없던 현재복사")
GoTo Dummyflag
Else '//다음복사이므로 다음장이잇는지 확인하고해야한다.
If Me.printindex >= 0 AndAlso Me.printindex < Me.PrintArray.GetUpperBound(0) Then '//다음장이있다.
Me.printindex += 1 '/1장넘기고
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
' e.Graphics.RotateTransform(Me.TextBox3.Text)
e.Graphics.Dispose()
End Sub
Public Sub Print()
If MsgBox("인쇄를 하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "확인") = MsgBoxResult.Ok Then
Arin.WLog2(Auto_Log, "print 바로 출력을 하라는 명령이다()", "\Alllog.txt")
If Me.Prepare_Print() Then
pDoc.Print()
Else
MsgBox("인쇄가능한 목록이 없습니다", MsgBoxStyle.Critical, "확인")
End If
Else
NOTICE("인쇄가 취소되었습니다", Color.Tomato, Me.lb_msg)
End If
End Sub
Private Sub con_Mmove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Arin.WLog2(Auto_Log, "con _move 개체이동할 프로시져인데 현재 안쓴다.()", LogFile)
If My.Computer.Keyboard.CtrlKeyDown AndAlso e.Button = Windows.Forms.MouseButtons.Left Then
' Me.Text = CType(sender, Label).Left & "/" & e.X
CType(sender, MyControlOLEDBv2.MyLabel).Left += e.X
CType(sender, MyControlOLEDBv2.MyLabel).Top += e.Y
End If
End Sub
Private Sub ViewBackImage()
Arin.WLog2(Auto_Log, "viewBackImage 배경이미지를 표시합니다.()", LogFile)
If Not System.IO.File.Exists(SetForm.tb_picfile.Text) Then
SetForm.CheckBox4.Checked = False
Else
Me.PictureBox1.BackgroundImage = Image.FromFile(SetForm.tb_picfile.Text)
End If
End Sub
Private Sub CheckBox4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Private Sub Label11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
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 Control In SelCon
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
Private Sub ShowMsg(ByVal Message As String)
Arin.WLog2(Auto_Log, "showmsg 메세지를 보여줍니다 =" & Message, LogFile)
Me.lb_msg.Text = "" & Message & Space(1) & TimeOfDay.ToString
End Sub
Private Sub cmb_style_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
Arin.WLog2(Auto_Log, "스타일콤보박스에서 keyip 이 감지되었으나 핸들을 true 로 해버린다.", LogFile)
e.Handled = True
End Sub
Public Sub Selected_Style(ByVal SelIndex As Short)
'//여기서 데이터를 추려내고(필터를 가져온다.)
'//해당 스타일을 불러온다
Arin.WLog2(Auto_Log, "스타일 인덱스가 변경되었다.", LogFile)
If SetForm.cmb_style.SelectedIndex < 0 Then SetForm.cmb_style.SelectedIndex = 0
Dim DataFilter As String = StyleList(SetForm.cmb_style.SelectedIndex).Filter
If DataFilter.Trim = "" Then
DataFilter = "출력 = true" '//인쇄필드는 지선주 구분용으로 재사용한다.
Else
DataFilter &= " AND 출력 = true" '//지선주는 인쇄가 True 값이기때문에 해당 값을 제외한다
End If
Me.BindingSource1.Sort = ""
Me.BindingSource1.DataSource = Nothing
Try
Dv = New DataView(srcTable, DataFilter, "정렬번호,번호", DataViewRowState.CurrentRows)
'Dv = New DataView(srcTable, "len(DL명) > 0", "", DataViewRowState.CurrentRows)
If Dv.Count <= 0 Then '//데이터가없다면
MsgBox(SetForm.cmb_style.Text & "에 해당하는 데이터가존재하지 않습니다" & vbCrLf & vbCrLf & "다른 스타일을 선택하세요", MsgBoxStyle.Information, "확인")
Me.PictureBox1.Refresh()
Else
Arin.WLog2(Auto_Log, "선택된 스타일에 데이터가있다=" & Dv.Count, LogFile)
'Me.textbox2.Text = Dv.Count - 1 '//패턴검사시 종료카운터이다...
Me.VScrollBar1.Minimum = 0
Me.VScrollBar1.Maximum = Dv.Count - 1
'MsgBox("스크롤 수=" & Me.VScrollBar1.Maximum)
Me.LOAD_STYLE() '//스타일불러오기(여기서 모든컨트롤의 기본 위치와 글꼴이 결정된다)
If Me.FirstIdx = -1 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
If FirstIdx = -1 OrElse FirstIdx > Dv.Count - 1 Then FirstIdx = 0 '//찾지못하고 나왓을경우에는 1번쨰 레코드를 보여주도록 한다.
NoView = True '//For Validate Index =0
If FirstIdx = 0 Then '//Index is first
Arin.WLog2(Auto_Log, "View : First Record // Set = 0", "\Alllog.txt")
Else '//index is not first
Arin.WLog2(Auto_Log, "View : Index Count = " & FirstIdx, "\Alllog.txt")
End If
Me.BindingSource1.DataSource = Dv 'Dv '//여기서셋팅되면서 바로 tview 가 작동된다.
Me.BindingSource1.Sort = "정렬번호,번호" ',번호"
Me.VScrollBar1.Value = FirstIdx
Me.BindingSource1.Position = FirstIdx
'MsgBox("ASDF" & Me.BindingNavigatorPositionItem.Text)
If FirstIdx = 0 Then Me.GeTviewData(Me.BindingNavigatorPositionItem.Text - 1, True)
End If
Catch ex As Exception
'//에러난다면 거의 뭐;;폼을 바로 실행하는경우다
MsgBox("관리자 모드인가봅니다")
End Try
''Arin.WLog2(Auto_Log, "cmb_style selectindexchanged 에서 preview 를 호출함", "\지중순차로그.txt")
'Me.preview_window()
End Sub
Public Sub LOAD_STYLE(Optional ByVal Div As String = "Z") '//저장된 스타일을 불러옵니다.
' MsgBox("LOADSTYLE" & "/" & Div)
' MsgBox("LOADSTYLE" & "/" & Div)
Arin.WLog2(Auto_Log, "load_style : 스타일을 불러옵니다. div= " & Div, LogFile)
Dim Arinini As New MyINI(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File)
Dim pos(), font(), visible, mytext As String
Dim Tobj As MyControlOLEDBv2.MyLabel
Dim DR() As DataRow
Dim idx As Integer = 0
'//모든아이템을 돈다
For i As Integer = 0 To Me.AllLabels.GetUpperBound(0) '//모든아이템을 돈다.
Tobj = Me.AllLabels(i).ctl
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.장평 = font(5)
Tobj.장높이 = font(6)
Tobj.MyFont = New Font(font(0), font(1), IIf(font(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
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
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "MYTEXT'")
If DR.GetUpperBound(0) = 0 Then
mytext = DR(0)(1).ToString
Select Case Tobj.Name.ToUpper.Substring(0, 1)
Case "X" '//사용자문자일경우에는 문자열도 저장해야한다.
If mytext <> "" Then Tobj.MyText = Arin.TextDec(mytext) '//ini구조상 바로저장하면안되기때문에 변환해서 저장한다.
End Select
End If
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "SPACE'")
If DR.GetUpperBound(0) = 0 Then Tobj.공백 = DR(0)(1).ToString
Else '//특정아이템구분일때
If Tobj.Name.ToUpper.Substring(0, 1) = Div Then
If Div.ToUpper = "H" Then '//H의경우는 따로 찾아본다.
'//메모리에서 찾는다.
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.장평 = font(5)
Tobj.장높이 = font(6)
Tobj.MyFont = New Font(font(0), font(1), IIf(font(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
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
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "MYTEXT'")
If DR.GetUpperBound(0) = 0 Then
mytext = DR(0)(1).ToString
Select Case Tobj.Name.ToUpper.Substring(0, 1)
Case "X" '//사용자문자일경우에는 문자열도 저장해야한다.
If mytext <> "" Then Tobj.MyText = Arin.TextDec(mytext) '//ini구조상 바로저장하면안되기때문에 변환해서 저장한다.
End Select
End If
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "SPACE'")
If DR.GetUpperBound(0) = 0 Then Tobj.공백 = DR(0)(1).ToString
Else
'//메모리에서 찾는다.
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.장평 = font(5)
Tobj.장높이 = font(6)
Tobj.MyFont = New Font(font(0), font(1), IIf(font(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
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
'DR = StyleList(setform.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "MYTEXT'")
'If DR.GetUpperBound(0) = 0 Then
'mytext = DR(0)(1).ToString
'Select Case Tobj.Name.ToUpper.Substring(0, 1)
' Case "U", "A", "B", "D", "E" '//사용자문자일경우에는 문자열도 저장해야한다.
'If mytext <> "" Then Tobj.MyText = Arin.TextDec(mytext) '//ini구조상 바로저장하면안되기때문에 변환해서 저장한다.
'End Select
'End If
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = 'STYLE" & Tobj.Name.ToUpper & "SPACE'")
If DR.GetUpperBound(0) = 0 Then Tobj.공백 = DR(0)(1).ToString
End If
End If
End If
Next
If Div.ToUpper <> "Z" Then Return '//모든템이아니다
Arin.WLog2(Auto_Log, "load_style 기본값 체크박스등의 값을 불러온다. 이것은 맨첨에만 불러오면 된다. ", LogFile)
''''''''''''''''''' 개체조정''우측 스타일 체크박스를 가져온다.
For Each B As Control In SetForm.TabPage2.Controls
If B.GetType.Name.ToUpper = "CHECKBOX" Then '//체크박스라면 태그를 저장한다.
CType(B, Windows.Forms.CheckBox).Checked = Arinini.Read("STYLE", B.Name, False) '//기본값 false
End If
Next
If Admin Then
For Each A As ToolStripDropDownItem In Me.mainmenu.DropDownItems '//여기서 체크박스인것들만
If A.GetType.Name.ToUpper = "TOOLSTRIPMENUITEM" Then
If CType(A, ToolStripMenuItem).CheckOnClick Then
CType(A, ToolStripMenuItem).Checked = Arinini.Read("STYLE", A.Name, False)
End If
End If
Next
End If
'For Each B As Control In Me.TabPage3.Controls
' If B.GetType.Name.ToUpper = "CHECKBOX" Then '//체크박스라면 태그를 저장한다.
' CType(B, Windows.Forms.CheckBox).Checked = Arinini.Read("STYLE", B.Name, False) '//기본값 false
' End If
'Next
''''''''''''''''''''''''''''외'''''''''''''''''''''''''''''''''
SetForm.tb_marginX.Text = 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_scalex.Text = StyleList(SetForm.cmb_style.SelectedIndex).ScaleX ' Arinini.Read("STYLE", "ScaleX", "1.5")
SetForm.tb_scaley.Text = StyleList(SetForm.cmb_style.SelectedIndex).ScaleY ' Arinini.Read("STYLE", "ScaleY", "1.3")
''''''''''''2중
SetForm.cb_dummy.Checked = StyleList(SetForm.cmb_style.SelectedIndex).Dummy 'Arinini.Read("STYLE", "dummy", False)
SetForm.cmb_dummy.SelectedIndex = StyleList(SetForm.cmb_style.SelectedIndex).Dummytype ' Arinini.Read("STYLE", "dummytype", 0)
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))
Me.pDoc.DefaultPageSettings.Landscape = StyleList(SetForm.cmb_style.SelectedIndex).LandScape ' Arinini.Read("STYLE", "LandScape", False)
If StyleList(SetForm.cmb_style.SelectedIndex).LandScape Then
SetForm.rad_land.Checked = True
Else
SetForm.rad_port.Checked = True
End If
'SetForm.rad_land.Checked = IIf(StyleList(SetForm.cmb_style.SelectedIndex).LandScape, 1, 0)
'Me.SetLayOut(IIf(Me.cmb_landscape.SelectedIndex = 0, False, True))
SetForm.CheckBox4.Checked = StyleList(SetForm.cmb_style.SelectedIndex).Viewimage ' Arinini.Read("STYLE", "ViewImage", True)
SetForm.tb_myfontsize.Text = StyleList(SetForm.cmb_style.SelectedIndex).PrintFontOffset ' Arinini.Read("STYLE", "PrintFontOffset", 0)
'Me.PictureBox1.Width = StyleList(setform.cmb_style.SelectedIndex).CanvasX 'Arinini.Read("STYLE", "CanvasX", 297) '520
'Me.PictureBox1.Height = StyleList(setform.cmb_style.SelectedIndex).CanvasY ' Arinini.Read("STYLE", "CanvasY", 520) '520
NOTICE(SetForm.cmb_style.Text & "스타일을 불러왔습니다.", Me.lb_msg)
End Sub
Public Sub SAVE_STYLE()
Arin.WLog2(Auto_Log, "ini파일에 스타일을 저장합니다. ", LogFile)
Dim Arinini As New MyINI(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File)
Dim Tobj As MyControlOLEDBv2.MyLabel
'//현재 선택된 스타일을 저장합니다.
If SetForm.cmb_style.SelectedIndex < 0 Then
erp.SetError(SetForm.cmb_style, "저장할 스타일이 선택되어있지 않습니다")
NOTICE("스타일을 선택하세요", Me.lb_msg)
Return
End If
erp.SetError(SetForm.cmb_style, vbNullString)
'Dim Div As Char
For i As Integer = 0 To Me.AllLabels.GetUpperBound(0)
Tobj = Me.AllLabels(i).ctl
Arinini.Write("STYLE", Tobj.Name & "pos", Tobj.Left & "," & Tobj.Top & "," & Tobj.Width & "," & Tobj.Height)
Arinini.Write("STYLE", Tobj.Name & "font", Tobj.MyFont.Name & "," & Tobj.MyFont.Size & "," & Tobj.MyFont.Underline & "," & Tobj.MyFont.Bold & "," & Tobj.MyFont.Italic & "," & Tobj.장평 & "," & Tobj.장높이)
Arinini.Write("STYLE", Tobj.Name & "visible", "true") '기본값으로 표시로 정해놓고 체크박스 체크한다.
Arinini.Write("STYLE", Tobj.Name & "space", Tobj.공백)
'Select Case Tobj.Name.ToUpper.Substring(0, 1)
' Case "U", "A", "B", "D", "E"
'Arinini.Write("STYLE", Tobj.Name & "mytext", Arin.TextEnc(Tobj.MyText))
'End Select
'Div = Tobj.Name.Substring(0, 1) '1자리만끊어서 체크박스 태그랑 연결한다.
'For Each B As Control In Me.TabPage1.Controls
' If B.GetType.Name.ToUpper = "CHECKBOX" Then '//체크박스라면 태그를 저장한다.
' If B.Tag <> Nothing AndAlso B.Tag.ToString.ToUpper = Div.ToString.ToUpper Then '//해당 체크박스를 찾았으면 체크박스 상태로 저장을한다.
' Arinini.Write("STYLE", Tobj.Name & "visible", CType(B, Windows.Forms.CheckBox).Checked) 'A.Visible)
' Exit For
' End If
' End If
'Next
Next
For Each TC As TabPage In SetForm.TabControl1.TabPages '//탭컨트롤1의 모든 페이지에서 체크박스의 상태를 저장한다.
For Each B As Control In TC.Controls
If B.GetType.Name.ToUpper = "CHECKBOX" Then '//체크박스라면 태그를 저장한다.
Arinini.Write("STYLE", B.Name, CType(B, Windows.Forms.CheckBox).Checked) 'A.Visible)
End If
Next
Next
'For Each B As Control In Me.TabPage1.Controls
' If B.GetType.Name.ToUpper = "CHECKBOX" Then '//체크박스라면 태그를 저장한다.
' Arinini.Write("STYLE", B.Name, CType(B, Windows.Forms.CheckBox).Checked) 'A.Visible)
' End If
'Next
'For Each B As Control In Me.TabPage3.Controls
' If B.GetType.Name.ToUpper = "CHECKBOX" Then '//체크박스라면 태그를 저장한다.
' Arinini.Write("STYLE", B.Name, CType(B, Windows.Forms.CheckBox).Checked) 'A.Visible)
' End If
'Next
'Arinini.Write("STYLE", "CanvasX", Me.PictureBox1.Width) '//캔버스사이즈저장한다.
'Arinini.Write("STYLE", "CanvasY", Me.PictureBox1.Height)
Arinini.Write("STYLE", "ViewImage", SetForm.CheckBox4.Checked)
Arinini.Write("STYLE", "MarginX", SetForm.tb_marginX.Text)
Arinini.Write("STYLE", "MarginY", SetForm.tb_marginY.Text)
Arinini.Write("STYLE", "ScaleX", SetForm.tb_scalex.Text)
Arinini.Write("STYLE", "ScaleY", SetForm.tb_scaley.Text)
If SetForm.tb_picfile.Text.Trim = "" Then
Arinini.Write("STYLE", "backimg", "")
Else
Dim newpath As String = CStr(My.Application.Info.DirectoryPath & "\image\").ToUpper
Dim NEwpathp As Short = (SetForm.tb_picfile.Text.ToUpper.IndexOf(newpath))
If NEwpathp = -1 Then
Arinini.Write("STYLE", "backimg", SetForm.tb_picfile.Text)
Else
Arinini.Write("STYLE", "backimg", SetForm.tb_picfile.Text.Substring(NEwpathp + newpath.Length))
End If
End If
Arinini.Write("STYLE", "PrintFontOffset", SetForm.tb_myfontsize.Text)
Arinini.Write("STYLE", "LandScape", Me.pDoc.DefaultPageSettings.Landscape)
'//더미 체크박스랑 더미콤보박스 인덱스랑 변위 x,y
Arinini.Write("STYLE", "dummy", SetForm.cb_dummy.Checked)
Arinini.Write("STYLE", "dummytype", SetForm.cmb_dummy.SelectedIndex)
Arinini.Write("STYLE", "dummmyx", SetForm.tb_secx.Text)
Arinini.Write("STYLE", "dummmyy", SetForm.tb_secy.Text)
' Arinini.Write("STYLE", "picstyle", Me.ComboBox1.SelectedIndex)
'//스타일저장시에 현재 레이아웃상태또한 저장하게한다. 이부분은 스타일불러올때 쓰지는 않고
'//가로/세로 선택할때 불러오게한다(파일에서 직접 불러오게한다 어차피 한번뿐이므로 궃이 메모리에 올리필요없다
SaveReadLayOut(False) '//레이아웃저장한다.
NOTICE("기본스타일을 저장했습니다", Me.lb_msg)
Arin.WLog2(Auto_Log, "save style 완료후 데이터테이블 갱신을 호춣 ", LogFile)
Me.데이터테이블갱신()
End Sub
Public Sub SaveReadLayOut(ByVal read As Boolean) '//현재 화면구성을 가로/세로 결정합니다.
'//ini파일에저장한다. 섹션명은 pagetype0 ,pagetyp1 0은 세로 1은 가로다
Dim ini As New MyINI(StyleDir.FullName & "\" & StyleList(SetForm.cmb_style.SelectedIndex).File)
Dim Secname As String = "pagetype" & IIf(SetForm.rad_land.Checked, 1, 0) 'Me.cmb_landscape.SelectedIndex
If read = False Then
'ini.Write(Secname, "tablelayoutpanel1loc", Me.TableLayoutPanel1.Left & "," & Me.TableLayoutPanel1.Top)
'ini.Write(Secname, "tablelayoutpanel1size", Me.TableLayoutPanel1.Width & "," & Me.TableLayoutPanel1.Height)
ini.Write(Secname, "PictureBox1loc", Me.PictureBox1.Left & "," & Me.PictureBox1.Top)
ini.Write(Secname, "PictureBox1size", Me.PictureBox1.Width & "," & Me.PictureBox1.Height)
'ini.Write(Secname, "TabControl1loc", Me.TabControl1.Left & "," & Me.TabControl1.Top)
'ini.Write(Secname, "TabControl1size", Me.TabControl1.Width & "," & Me.TabControl1.Height)
'ini.Write(Secname, "GroupBox3loc", Me.GroupBox3.Left & "," & Me.GroupBox3.Top)
'ini.Write(Secname, "GroupBox3size", Me.GroupBox3.Width & "," & Me.GroupBox3.Height)
'ini.Write(Secname, "GroupBox2loc", Me.GroupBox2.Left & "," & Me.GroupBox2.Top)
'ini.Write(Secname, "GroupBox2size", Me.GroupBox2.Width & "," & Me.GroupBox2.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, "ToolStrip2loc", Me.ToolStrip2.Left & "," & Me.ToolStrip2.Top)
ini.Write(Secname, "mesize", Me.Width & "," & Me.Height)
Else '//여기는 읽는 부분
If SetForm.rad_land.Checked = False Then '//세로
Me.pDoc.DefaultPageSettings.Landscape = False
'TableLayoutPanel1.Location = New Point(ini.Read(Secname, "tablelayoutpanel1loc", "0,31").Split(",")(0), ini.Read(Secname, "tablelayoutpanel1loc", "0,31").Split(",")(1))
'TableLayoutPanel1.Size = New Size(ini.Read(Secname, "tablelayoutpanel1size", "297,522").Split(",")(0), ini.Read(Secname, "tablelayoutpanel1size", "297,522").Split(",")(1))
PictureBox1.Location = New Point(ini.Read(Secname, "PictureBox1loc", "3,3").Split(",")(0), ini.Read(Secname, "PictureBox1loc", "3,3").Split(",")(1))
PictureBox1.Size = New Size(ini.Read(Secname, "PictureBox1size", "270,479").Split(",")(0), ini.Read(Secname, "PictureBox1size", "270,479").Split(",")(1))
'TabControl1.Location = New Point(ini.Read(Secname, "TabControl1loc", "303,34").Split(",")(0), ini.Read(Secname, "TabControl1loc", "303,34").Split(",")(1))
'TabControl1.Size = New Size(ini.Read(Secname, "TabControl1size", "279,519").Split(",")(0), ini.Read(Secname, "TabControl1size", "279,519").Split(",")(1))
''GroupBox3.Location = New Point(ini.Read(Secname, "GroupBox3loc", "11,368").Split(",")(0), ini.Read(Secname, "GroupBox3loc", "11,368").Split(",")(1))
'GroupBox3.Size = New Size(ini.Read(Secname, "GroupBox3size", "246,78").Split(",")(0), ini.Read(Secname, "GroupBox3size", "246,78").Split(",")(1))
'GroupBox2.Location = New Point(ini.Read(Secname, "GroupBox2loc", "11,170").Split(",")(0), ini.Read(Secname, "GroupBox2loc", "11,170").Split(",")(1))
'GroupBox2.Size = New Size(ini.Read(Secname, "GroupBox2size", "245,192").Split(",")(0), ini.Read(Secname, "GroupBox2size", "245,192").Split(",")(1))
'cmb_style.Location = New Point(ini.Read(Secname, "cmb_styleloc", "11,18").Split(",")(0), ini.Read(Secname, "cmb_styleloc", "11,18").Split(",")(1))
'cmb_style.Size = New Size(ini.Read(Secname, "cmb_stylesize", "245,146").Split(",")(0), ini.Read(Secname, "cmb_stylesize", "245,146").Split(",")(1))
' ToolStrip2.Location = New Point(ini.Read(Secname, "ToolStrip2loc", "3,451").Split(",")(0), ini.Read(Secname, "ToolStrip2loc", "3,451").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
'TableLayoutPanel1.Location = New Point(ini.Read(Secname, "tablelayoutpanel1loc", "0,31").Split(",")(0), ini.Read(Secname, "tablelayoutpanel1loc", "0,31").Split(",")(1))
'TableLayoutPanel1.Size = New Size(ini.Read(Secname, "tablelayoutpanel1size", "710,292").Split(",")(0), ini.Read(Secname, "tablelayoutpanel1size", "710,292").Split(",")(1))
PictureBox1.Location = New Point(ini.Read(Secname, "PictureBox1loc", "325,3").Split(",")(0), ini.Read(Secname, "PictureBox1loc", "325,3").Split(",")(1))
PictureBox1.Size = New Size(ini.Read(Secname, "PictureBox1size", "355,200").Split(",")(0), ini.Read(Secname, "PictureBox1size", "355,200").Split(",")(1))
'TabControl1.Location = New Point(ini.Read(Secname, "TabControl1loc", "3,326").Split(",")(0), ini.Read(Secname, "TabControl1loc", "3,326").Split(",")(1))
'TabControl1.Size = New Size(ini.Read(Secname, "TabControl1size", "711,228").Split(",")(0), ini.Read(Secname, "TabControl1size", "711,228").Split(",")(1))
''GroupBox3.Location = New Point(ini.Read(Secname, "GroupBox3loc", "513,6").Split(",")(0), ini.Read(Secname, "GroupBox3loc", "513,6").Split(",")(1))
'GroupBox3.Size = New Size(ini.Read(Secname, "GroupBox3size", "184,78").Split(",")(0), ini.Read(Secname, "GroupBox3size", "184,78").Split(",")(1))
'GroupBox2.Location = New Point(ini.Read(Secname, "GroupBox2loc", "262,6").Split(",")(0), ini.Read(Secname, "GroupBox2loc", "262,6").Split(",")(1))
'GroupBox2.Size = New Size(ini.Read(Secname, "GroupBox2size", "245,192").Split(",")(0), ini.Read(Secname, "GroupBox2size", "245,192").Split(",")(1))
'cmb_style.Location = New Point(ini.Read(Secname, "cmb_styleloc", "11,18").Split(",")(0), ini.Read(Secname, "cmb_styleloc", "11,18").Split(",")(1))
'cmb_style.Size = New Size(ini.Read(Secname, "cmb_stylesize", "245,139").Split(",")(0), ini.Read(Secname, "cmb_stylesize", "245,139").Split(",")(1))
' ToolStrip2.Location = New Point(ini.Read(Secname, "ToolStrip2loc", "3,159").Split(",")(0), ini.Read(Secname, "ToolStrip2loc", "3,159").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
Private Sub cmb_controls_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
'//개체가 선택되면 해당 개체의 내역을 보여준다.
'Me.Timer1.Enabled = False
Arin.WLog2(Auto_Log, "개체목록 콤보박스에서 특정 개체가 선택되었다 view property 호출", LogFile)
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 MyControlOLEDBv2.MyLabel In SelCon
If vertical Then '//상하
If My.Computer.Keyboard.AltKeyDown Then
If offset < 0 Then
sender.장높이 -= 1
Else
sender.장높이 += 1
End If
ElseIf My.Computer.Keyboard.CtrlKeyDown Then
If offset < 0 Then
sender.장높이 -= 10
Else
sender.장높이 += 10
End If
Else
sender.장높이 += offset
End If
Else '//좌우
If My.Computer.Keyboard.AltKeyDown Then
If offset < 0 Then
sender.장평 -= 1
Else
sender.장평 += 1
End If
ElseIf My.Computer.Keyboard.CtrlKeyDown Then
If offset < 0 Then
sender.장평 -= 10
Else
sender.장평 += 10
End If
Else
sender.장평 += offset
End If
End If
Next
Me.preview_window()
End Sub
Public Sub LOAD_STYLEC(ByVal StyleName As String, ByVal Div As String)
'//기타스타일은 빈도가 적으니 파일에서 불러오기로한다.;;메모리는 싫타.
Dim Arinini As New MyINI(FileC)
If Not IO.File.Exists(FileC) Then
MSG("기타스타일설정 파일이 존재하지 않습니다\n\n관리자에 문의하세요", MsgBoxStyle.Critical, "오류")
Return
End If
Dim pos(), font(), visible As String '//구전산번호를 구현해본다.
Dim Tobj As MyControlOLEDBv2.MyLabel
For i As Integer = 0 To Me.AllLabels.GetUpperBound(0)
Tobj = Me.AllLabels(i).ctl
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")
'//상태를 읽어서 바로 적용한다.
Tobj.Location = New Point(pos(0), pos(1))
Tobj.Size = New Size(pos(2), pos(3))
Tobj.MyFont = New Font(font(0), font(1), IIf(font(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
Tobj.장평 = font(5)
Tobj.장높이 = font(6)
Tobj.공백 = Arinini.Read(StyleName, Tobj.Name & "space", 0)
Tobj.Visible = CType(visible, Boolean)
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")
'//상태를 읽어서 바로 적용한다.
Tobj.Location = New Point(pos(0), pos(1))
Tobj.Size = New Size(pos(2), pos(3))
Tobj.MyFont = New Font(font(0), font(1), IIf(font(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
Tobj.장평 = font(5)
Tobj.장높이 = font(6)
Tobj.공백 = Arinini.Read(StyleName, Tobj.Name & "space", 0)
Tobj.Visible = CType(visible, Boolean)
End If
End If
Catch ex As Exception
Arin.WLog2(Auto_Log, "LOAD_STYLE_CUSTOM 오류:" & ex.Message.ToString, "LOAD_STYLEC")
End Try
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 MyINI(FileC)
'//현재 선택된 스타일을 저장합니다.
Arinini.Write(stylename, "DESC", stylename)
Dim Tobj As MyControlOLEDBv2.MyLabel
For i As Integer = 0 To Me.AllLabels.GetUpperBound(0)
Tobj = Me.AllLabels(i).ctl
Arinini.Write(stylename, Tobj.Name & "pos", Tobj.Left & "," & Tobj.Top & "," & Tobj.Width & "," & Tobj.Height)
Arinini.Write(stylename, Tobj.Name & "font", Tobj.MyFont.Name & "," & Tobj.MyFont.Size & "," & Tobj.MyFont.Underline & "," & Tobj.MyFont.Bold & "," & Tobj.MyFont.Italic & "," & Tobj.장평 & "," & Tobj.장높이)
Arinini.Write(stylename, Tobj.Name & "visible", Tobj.Visible)
Arinini.Write(stylename, Tobj.Name & "space", Tobj.공백)
Next
NOTICE("기타스타일을 저장했습니다", Me.lb_msg)
End Sub
Private Sub Button30_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.CtrSize(False, -5)
End Sub
Private Sub Button29_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.CtrSize(False, 5)
End Sub
Private Sub Button32_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.CtrSize(True, -5)
End Sub
Private Sub Button31_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.CtrSize(True, 5)
End Sub
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.CtrPos(False, -5)
End Sub
Private Sub Button6_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.CtrPos(False, 5)
End Sub
Private Sub Button27_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.CtrPos(True, -5)
End Sub
Private Sub Button26_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.CtrPos(True, 5)
End Sub
Private Sub BindingNavigatorPositionItem_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles BindingNavigatorPositionItem.KeyUp
'//현재위치에서 엔터켯을경우 데이터베이스 위치값을 변경한다.(position)
If e.KeyCode = Keys.Enter Then
If IsNumeric(Me.BindingNavigatorPositionItem.Text) Then Me.GeTviewData(Me.BindingNavigatorPositionItem.Text - 1, True)
End If
End Sub
'Private Sub NPartternCheck()
' Dim 번호패턴검사 As Integer = 0
' '//패턴검사시작
' ' Me.PictureBox1.Image = Image.FromFile(My.Application.Info.DirectoryPath & "\image\start.png")
' Dim endcnt As Integer = Me.textbox2.Text
' For i As Integer = Me.textbox1.Text To Me.textbox2.Text
' ' If chkFlag Then Exit For
' showcnt(i, endcnt, "패턴검사중")
' Me.textbox1.Text = i
' 번호패턴검사 = ChkNumPattern(i)
' ' MsgBox(번호패턴검사)
' If 번호패턴검사 = 0 Then '1은 길이패턴이 없고 3이나 2는 문자패턴이다
' NOTICE("일련번호=" & i + 1 & "번 문자,길이 패턴이 존재하지 않습니다", Me.lb_msg)
' My.Computer.Audio.Play(My.Application.Info.DirectoryPath & "\sound\ding.wav", AudioPlayMode.Background)
' 'If MsgBox("Sdf", MsgBoxStyle.OkCancel) = MsgBoxResult.Ok Then
' Me.BindingSource1.Position = i
' Exit For
' End If
' Next
' If Me.textbox1.Text = Me.textbox2.Text Then '//완료되었다면
' My.Computer.Audio.Play(My.Application.Info.DirectoryPath & "\sound\notify.wav", AudioPlayMode.Background)
' NOTICE("패턴검사가 완료되었습니다", Me.lb_msg)
' End If
' Me.bt_chkpattern.Text = "시작(&S)"
'End Sub
Private Sub showcnt(ByVal cnt1 As Integer, ByVal cnt2 As Integer, Optional ByVal tag As String = "")
Me.lb_msg.Text = cnt1 & "/" & cnt2 & Space(1) & tag
My.Application.DoEvents()
End Sub
Private Sub cmb_landscape_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.SaveReadLayOut(True)
End Sub
Private Sub 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.BindingNavigatorMoveNextItem.PerformClick()
Me.BindingNavigatorPositionItem.Focus()
'End If
Else
If Me.BindingNavigatorPositionItem.Text > 0 Then
Me.BindingNavigatorMovePreviousItem.PerformClick()
Me.BindingNavigatorPositionItem.Focus()
End If
End If
End Sub
Public Sub preview_window() '//미리보기화면을 생성합니다.
Dim MyFont As Font
Dim NewFontSize As Int16 = 10
Dim dummy As Boolean = False '//이값이 true 이면 출력시 변위를 지정해서 출력한다.
Dim BackScr As New Bitmap(Me.PictureBox1.Width, Me.PictureBox1.Height, Me.PictureBox1.CreateGraphics)
Dim Ga As Graphics = Graphics.FromImage(BackScr)
Dim Brush As SolidBrush
Dim obj As MyControlOLEDBv2.MyLabel
'페이지 구분을 이해하고 몇개를 찍을지 결정한다.
'Debug.Print("프린터인덱스=" & Me.printindex)
'Debug.Print("프린터배열=" & Me.PrintArray.GetUpperBound(0))
' If Me.printindex <> -1 Then Me.GeTviewData(Me.PrintArray(Me.printindex)) '//페이지를 갱신하고 출력을 시작한다.
'Dummyflag: '//--2장출력일경우 이부분에서 다시 시작한다.
'If Not Me.PictureBox1.BackgroundImage Is Nothing Then
' Ga.DrawImage(Me.PictureBox1.BackgroundImage, 0, 0, Me.PictureBox1.Width, Me.PictureBox1.Height)
' End If
For i As Integer = 0 To Me.AllLabels.GetUpperBound(0) '//모든 개체들에 대해서 인쇄를 설정한다.
obj = Me.AllLabels(i).ctl
If obj.Visible AndAlso obj.MyText <> "" Then '//화면에 보이는것만 한다.
NewFontSize = obj.MyFont.Size + SetForm.tb_myfontsize.Text
If NewFontSize < 0 Then NewFontSize = 0
Brush = New SolidBrush(obj.MyForeColor) '//전경색으로 브러쉬를 만든다.
MyFont = New Font(obj.MyFont.FontFamily, NewFontSize, obj.MyFont.Style)
If obj.장평 = 100 AndAlso obj.장높이 = 100 Then '//장평미사용 문자열 처리
'Ga.RotateTransform(45)
Ga.DrawString(obj.최종문자, MyFont, Brush, obj.Location)
Else '//장평사용 이미지 처리
Dim NewX, Newy As Integer
Dim SrcDpix, SrcDPiY As Single
'MsgBox(Tobj.장높이)
SrcDpix = obj.CreateGraphics.DpiX
SrcDPiY = obj.CreateGraphics.DpiY
NewX = obj.GetSize(MyFont).Width * (obj.장평 / 100) * (Ga.DpiX / SrcDpix)
Newy = obj.GetSize(MyFont).Height * (obj.장높이 / 100) * (Ga.DpiY / SrcDPiY)
Dim BMP As New Bitmap(NewX, Newy, Ga)
Dim G As Graphics = Graphics.FromImage(BMP)
G.ResetTransform()
G.ScaleTransform((obj.장평 / 100), (obj.장높이 / 100))
G.DrawString(obj.최종문자, MyFont, Brush, 0, 0)
G.Dispose()
Ga.DrawImage(BMP, New Point(obj.Left, obj.Top)) ', CInt(GetSize.Width * (v장평 / 100)), GetSize.Height)
'Ga.RotateTransform(20
End If
End If
Next
If SetForm.cb_dummy.Checked Then '//복사가 선택되어있으며 ㄴ한번더 출력한다.
For i As Integer = 0 To Me.AllLabels.GetUpperBound(0) '//모든 개체들에 대해서 인쇄를 설정한다.
obj = Me.AllLabels(i).ctl
If obj.Visible AndAlso obj.MyText <> "" Then '//화면에 보이는것만 한다.
NewFontSize = obj.MyFont.Size + SetForm.tb_myfontsize.Text
If NewFontSize < 0 Then NewFontSize = 0
Brush = New SolidBrush(obj.MyForeColor) '//전경색으로 브러쉬를 만든다.
MyFont = New Font(obj.MyFont.FontFamily, NewFontSize, obj.MyFont.Style)
If obj.장평 = 100 AndAlso obj.장높이 = 100 Then '//장평미사용 문자열 처리
Ga.DrawString(obj.최종문자, MyFont, Brushes.Gray, (obj.Left + SetForm.tb_secx.Text), (obj.Top + SetForm.tb_secy.Text))
Else '//장평사용 이미지 처리
Dim NewX, Newy As Integer
Dim SrcDpix, SrcDPiY As Single
'MsgBox(Tobj.장높이)
SrcDpix = obj.CreateGraphics.DpiX
SrcDPiY = obj.CreateGraphics.DpiY
NewX = obj.GetSize(MyFont).Width * (obj.장평 / 100) * (Ga.DpiX / SrcDpix)
Newy = obj.GetSize(MyFont).Height * (obj.장높이 / 100) * (Ga.DpiY / SrcDPiY)
Dim BMP As New Bitmap(NewX, Newy, Ga)
Dim G As Graphics = Graphics.FromImage(BMP)
G.ResetTransform()
G.ScaleTransform((obj.장평 / 100), (obj.장높이 / 100))
G.DrawString(obj.최종문자, MyFont, Brushes.Gray, 0, 0)
G.Dispose()
Ga.DrawImage(BMP, CSng(obj.Left + SetForm.tb_secx.Text), CSng(obj.Top + SetForm.tb_secy.Text)) ', CInt(GetSize.Width * (v장평 / 100)), GetSize.Height)
End If
End If
Next
End If
Ga.Dispose()
Me.PictureBox1.Image = BackScr
End Sub
Private Sub BindingSource1_PositionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles BindingSource1.PositionChanged
'MsgBox("BindingSource1_PositionChanged=" & Now.ToString & "current=" & Me.BindingNavigatorPositionItem.Text & "mnoview=" & NoView)
Debug.Print("BindingSource1_PositionChanged : " & Me.BindingSource1.Position)
Debug.Print("스크롤바값 범위값 " & Me.VScrollBar1.Minimum & "/" & Me.VScrollBar1.Maximum)
If Me.BindingSource1.Position >= 0 Then Me.VScrollBar1.Value = Me.BindingSource1.Position
If Me.NoView Then
Me.NoView = False
Else
Me.GeTviewData(Me.BindingNavigatorPositionItem.Text - 1, True)
End If
End Sub
Private Sub VScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles VScrollBar1.Scroll
Debug.Print("Scroll Old:" & e.OldValue & "/ New :" & e.NewValue & "/ Current : " & Me.VScrollBar1.Value)
Debug.Print("스크롤바값 범위값 " & Me.VScrollBar1.Minimum & "/" & Me.VScrollBar1.Maximum)
If e.NewValue > 0 Then
Me.BindingSource1.Position = e.NewValue
Else
Debug.Print("스크롤바value값이 0보다 작습니다. 소스의 위치를 0으로 설정합니다")
Me.BindingSource1.Position = 0
End If
End Sub
Private Sub PictureBox1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseClick
Dim Tobj As MyControlOLEDBv2.MyLabel
Dim selitem As New ArrayList
Tobj = Nothing
For i As Integer = 0 To Me.AllLabels.GetUpperBound(0)
If Me.AllLabels(i).ctl.Visible AndAlso Me.AllLabels(i).ctl.MyText <> "" AndAlso _
((e.X >= Me.AllLabels(i).ctl.Left) And e.X <= (Me.AllLabels(i).ctl.Left + Me.AllLabels(i).ctl.GetSize.Width)) _
AndAlso ((e.Y >= Me.AllLabels(i).ctl.Top) AndAlso (e.Y <= (Me.AllLabels(i).ctl.Top + Me.AllLabels(i).ctl.GetSize.Height))) Then
Tobj = Me.AllLabels(i).ctl
selitem.Add(Me.AllLabels(i).ctl)
'Exit For
End If
Next
If Tobj Is Nothing Then Return '//선택된게 없으면 날린다
'If Me.chk_multisel.Checked Then '//다중목록에서 선택시가 체크되어있으면 목록을 표시해준다.
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), MyControlOLEDBv2.MyLabel).설명)
Next
If A.ShowDialog() = Windows.Forms.DialogResult.OK Then
Tobj = selitem.Item(A.ListBox1.SelectedIndex)
Else '//캔슬시에는 첫번째 아템으로 한다.
Tobj = selitem.Item(0)
End If
End If
'End If
Dim Exist As Boolean = False '//선택개체에 존재여부
If SelCon Is Nothing Then
SelCon.Add(Tobj)
Else
If e.Button = Windows.Forms.MouseButtons.Right Then
For Each obj As MyControlOLEDBv2.MyLabel In SelCon
If obj.Name = Tobj.Name Then '//삭제된다.
obj.MyForeColor = Color.Black
SelCon.Remove(obj)
Exist = True
Exit For
End If
Next
If Exist = False Then
SelCon.Add(Tobj)
Tobj.MyForeColor = Color.Tomato
End If
ElseIf e.Button = Windows.Forms.MouseButtons.Left Then '왼쪽클리이면 지우고 다시 셋팅
For Each SC As MyControlOLEDBv2.MyLabel In SelCon
SC.MyForeColor = Color.Black
Next
SelCon.Clear()
SelCon.Add(Tobj)
Tobj.MyForeColor = Color.DodgerBlue
If My.Computer.Keyboard.CtrlKeyDown Then '//컨트롤이 눌러졋으면 해당 그룹을 전부 찾는다.
'MsgBox(Tobj.Name)
SelCon.Clear()
For z As Short = 0 To Me.AllLabels.GetUpperBound(0)
If Me.AllLabels(z).ctl.Name.Substring(0, 1) = Tobj.Name.Substring(0, 1) Then
Me.AllLabels(z).ctl.MyForeColor = Color.Blue
SelCon.Add(Me.AllLabels(z).ctl)
End If
Next
End If
Else '//가운데버튼이다. 가운데는 폰트변경으로한다.
SetForm.bt_fontchange.PerformClick()
End If
End If
SetForm.cmb_controls.Text = Tobj.설명
SetForm.ViewProperty(Tobj)
Me.preview_window()
End Sub
Private Sub PictureBox1_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDoubleClick
Dim Tobj As MyControlOLEDBv2.MyLabel
Tobj = Nothing
For i As Integer = 0 To Me.AllLabels.GetUpperBound(0)
If Me.AllLabels(i).ctl.Visible AndAlso Me.AllLabels(i).ctl.MyText <> "" AndAlso _
((e.X >= Me.AllLabels(i).ctl.Left) And e.X <= (Me.AllLabels(i).ctl.Left + Me.AllLabels(i).ctl.GetSize.Width)) _
AndAlso ((e.Y >= Me.AllLabels(i).ctl.Top) AndAlso (e.Y <= (Me.AllLabels(i).ctl.Top + Me.AllLabels(i).ctl.GetSize.Height))) Then
Tobj = Me.AllLabels(i).ctl
Exit For
End If
Next
If Tobj Is Nothing Then Return '//선택된게 없으면 날린다
Dim Msg As New System.Text.StringBuilder("변경할 값을 입력하세요")
Msg.AppendLine("줄바꿈을하려면 \n 을 입력하세요")
Msg.AppendLine("예) 세로로 12를 출력하려면 1\n2 을 입력하세요")
Msg.AppendLine()
Msg.AppendLine("변경한 값은 현재페이지에만 적용됩니다")
Dim Val As String = InputBox(Msg.ToString, "변경", Tobj.MyText)
If Val = "" Then Return
Val = Val.Replace("\n", vbCrLf)
Tobj.MyText = Val
Me.preview_window()
End Sub
Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click
Me.Close()
End Sub
Private Sub 길이패턴연습(ByVal srcstr As String, ByVal pname As String, ByVal log As String, ByVal loadStyle As String, ByVal S라벨() As MyControlOLEDBv2.MyLabel)
Dim Wlen As Short = srcstr.Length : If Wlen <= 0 Then Return '//없는 글귀가 왓을때 턴해버린다.
Dim SepPos As Short = srcstr.IndexOf(";")
Dim DR() As DataRow
Dim CTLPOS() As String
Dim CTLFONT() As String
Dim CTLVISIBLE As Boolean
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & "DESC'")
If DR.GetUpperBound(0) = 0 Then '//길이패턴이 있으면
Arin.WLog2(Auto_Log, "길이패턴 검색 길이=" & Wlen & " 구분자위치=" & SepPos & " 미들네임=" & pname, log)
For Each C As MyControlOLEDBv2.MyLabel In S라벨
Try
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & C.Name & "POS'")
If DR.GetUpperBound(0) = 0 Then
CTLPOS = DR(0)(1).ToString.Split(",")
C.Location = New Point(CTLPOS(0), CTLPOS(1))
C.Size = New Size(CTLPOS(2), CTLPOS(3))
End If
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & C.Name & "FONT'")
If DR.GetUpperBound(0) = 0 Then
CTLFONT = DR(0)(1).ToString.Split(",")
C.MyFont = New Font(CTLFONT(0), CTLFONT(1), IIf(CTLFONT(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
C.장평 = CTLFONT(5)
C.장높이 = CTLFONT(6)
End If
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & C.Name & "VISIBLE'")
If DR.GetUpperBound(0) = 0 Then
CTLVISIBLE = DR(0)(1).ToString
C.Visible = CType(CTLVISIBLE, Boolean)
End If
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & C.Name & "SPACE'")
If DR.GetUpperBound(0) = 0 Then
C.공백 = DR(0)(1).ToString
End If
C.Tag = "L"
Catch ex As Exception
Arin.WLog2(Auto_Log, "길이패턴오류 길이=" & Wlen & " Message=" & ex.Message.ToString, log)
End Try
Next
Else
Arin.WLog2(Auto_Log, "길이패턴불일치 기본스타일 복원 길이=" & Wlen & " 문자열=" & srcstr, log)
Me.LOAD_STYLE(loadStyle) '//패턴이 존재하지 않을경우 S스타일을 초기화합니다(이전 패턴타입을 초기화하는것이다)
End If
End Sub
Private Sub 문자패턴연습(ByVal srcstr As String, ByVal pname As String, ByVal log As String, ByVal S라벨() As MyControlOLEDBv2.MyLabel)
Dim Wlen As Short = srcstr.Length : If Wlen <= 0 Then Return '//없는 글귀가 왓을때 턴해버린다.
Dim SepPos As Short = srcstr.IndexOf(";")
Dim DR() As DataRow
Dim CTLPOS() As String
Dim CTLFONT() As String
Dim CTLVISIBLE As Boolean
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & "DESC'")
If DR.GetUpperBound(0) = 0 Then '//길이패턴이 있으면
Arin.WLog2(Auto_Log, "문자패턴 검색 길이=" & Wlen & " 구분자위치=" & SepPos & " 미들네임=" & pname, log)
For Each C As MyControlOLEDBv2.MyLabel In S라벨
Try
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & C.Name & "POS'")
If DR.GetUpperBound(0) = 0 Then
CTLPOS = DR(0)(1).ToString.Split(",")
C.Location = New Point(CTLPOS(0), CTLPOS(1))
C.Size = New Size(CTLPOS(2), CTLPOS(3))
End If
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & C.Name & "FONT'")
If DR.GetUpperBound(0) = 0 Then
CTLFONT = DR(0)(1).ToString.Split(",")
C.MyFont = New Font(CTLFONT(0), CTLFONT(1), IIf(CTLFONT(3).ToUpper = "TRUE", FontStyle.Bold, FontStyle.Regular), GraphicsUnit.Point)
C.장평 = CTLFONT(5)
C.장높이 = CTLFONT(6)
End If
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & C.Name & "VISIBLE'")
If DR.GetUpperBound(0) = 0 Then
CTLVISIBLE = DR(0)(1).ToString
C.Visible = CType(CTLVISIBLE, Boolean)
End If
DR = StyleList(SetForm.cmb_style.SelectedIndex).PATTERNTABLE.Select("설명 = '" & pname & C.Name & "SPACE'")
If DR.GetUpperBound(0) = 0 Then
C.공백 = DR(0)(1).ToString
End If
C.Tag = "L"
Catch ex As Exception
Arin.WLog2(Auto_Log, "문자패턴오류 길이=" & Wlen & " Message=" & ex.Message.ToString, log)
End Try
Next
Else
Arin.WLog2(Auto_Log, "문자패턴불일치 길이=" & Wlen & " 문자열=" & srcstr, log)
End If
End Sub
Private Sub cmb_style_SelectionChangeCommitted(ByVal sender As Object, ByVal e As System.EventArgs)
'//스타일을 직접 선택햇을때 기본idx값을 0 으로한다.
' MsgBox("스타일직접선택")
FirstIdx = 0
End Sub
Private Sub tb_ntype_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles tb_ntype.MouseEnter
Me.tb_ntype.Focus()
Me.tb_ntype.SelectAll()
End Sub
Private Sub ToolStripButton6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton6.Click
If MsgBox("현재 스타일(기본)을 저장하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.YesNo, "스타일저장") = MsgBoxResult.Yes Then
SAVE_STYLE()
Else
NOTICE("스타일(기존)저장이 취소되었습니다", Me.lb_msg)
End If
End Sub
Private Sub BindingNavigatorPositionItem_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles BindingNavigatorPositionItem.MouseEnter
Me.BindingNavigatorPositionItem.Focus()
Me.BindingNavigatorPositionItem.SelectAll()
End Sub
Private Sub cm_styleedit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cm_styleedit.Click
StyleEdit.ListIndex = SetForm.cmb_style.SelectedIndex
StyleEdit.Path = Me.StyleDir
StyleEdit.Show()
End Sub
Private Sub bt_canvasD_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles bt_canvasD.MouseDown, bt_canvasL.MouseDown, bt_canvasR.MouseDown, bt_canvasU.MouseDown
If e.Button = Windows.Forms.MouseButtons.Right Then
Select Case sender.name.ToString.ToUpper
Case "BT_CANVASD"
Me.PictureBox1.Top += 5
Case "BT_CANVASU"
Me.PictureBox1.Top -= 5
Case "BT_CANVASR"
Me.PictureBox1.Left += 5
Case "BT_CANVASL"
Me.PictureBox1.Left -= 5
End Select
ElseIf e.Button = Windows.Forms.MouseButtons.Left Then
Select Case sender.name.ToString.ToUpper
Case "BT_CANVASL"
Me.PictureBox1.Width -= 2
Case "BT_CANVASR"
Me.PictureBox1.Width += 2
Case "BT_CANVASU"
Me.PictureBox1.Height -= 2
Case "BT_CANVASD"
Me.PictureBox1.Height += 2
End Select
ElseIf e.Button = Windows.Forms.MouseButtons.Middle Then
Select Case sender.name.ToString.ToUpper
Case "BT_CANVASL"
Me.Width -= 2
Case "BT_CANVASR"
Me.Width += 2
Case "BT_CANVASU"
Me.Height -= 2
Case "BT_CANVASD"
Me.Height += 2
End Select
End If
End Sub
#End Region
#Region "이곳에서는 사용되지않는 부분"
#End Region
Private Sub Printform_Karo_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 Printform_Karo_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 ToolStripButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_print.Click
Me.Print()
End Sub
Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_print_preview.Click
Me.Print_Preview()
End Sub
End Class