Files
Epole_Class/Project_fp5/번호형식완료.txt
2020-05-24 15:12:23 +09:00

145 lines
7.9 KiB
Plaintext

'MsgBox("번호형식지정 : " & 번호, MsgBoxStyle.Information, msg)
'//지정된 번호형식으로 전부번호를 표시한다.
'//20070826 번호는 분리/통합으로 구분해서 출력한다.
Dim A() As Char = 번호.ToCharArray
Dim P() As Char = msg.ToCharArray
Me.CLEAR_ITEM("X")
'//12자이상은 개별이라고 한다면 해당번호를 혼합으로 바꾼다.
If Me.cmb_sep.SelectedIndex = -1 OrElse (Me.cmb_sep.SelectedIndex = 1 AndAlso 번호.Length > 30) Then Me.cmb_sep.SelectedIndex = 0
Dim NextCtl As MyControlOLEDBv2.MyLabel = Me.S전주번호(0)
Dim CurPos As Short = 0 '//몇번째 컨트롤까지 썻다는 표시
Dim CPos As Short = 0 '//전체문자중 몇번째까지 했다는 표시
Dim Limit(P.GetUpperBound(0)) As Short '//각배열별 한계숫자
For i As Short = 0 To P.GetUpperBound(0)
If i = 0 Then
Limit(i) = CInt(P(i).ToString)
Else
Limit(i) = Limit(i - 1) + CInt(P(i).ToString)
End If
' MsgBox("한게값 : " & i & " 값=" & Limit(i))
Next
Select Case Me.cmb_sep.SelectedIndex
Case 0 '//혼합
'//형식수가 4를 넘지않으면 개별 넘을경우 통합출력으로한다.
'//연습데이터 3442 : 345 R23L1 R932
' MsgBox("번호형식=" & msg & "/" & 번호 & "/p0=" & P(0))
Me.tb_ntype.Enabled = True '//분리엿을때 이것이 false 로 된다.
Dim OK As Short = -1 '//완료 번호형식 배열값
Dim 사용한컨트롤위치 As Short = -1
Dim RES As Boolean = False
For i As Integer = 0 To A.GetUpperBound(0)
If CInt(P(OK + 1).ToString) <= 4 Then '//개별로넣는다
If i + 1 < Limit(OK + 1) Then
사용한컨트롤위치 += 1
Me.S전주번호(사용한컨트롤위치).MyText &= IIf(A(i) <> ";", A(i), "")
ElseIf i + 1 = Limit(OK + 1) Then
OK += 1 : If OK + 1 > Limit.GetUpperBound(0) Then Exit For
사용한컨트롤위치 += 1
Me.S전주번호(사용한컨트롤위치).MyText &= IIf(A(i) <> ";", A(i), "")
End If
Else '//4보다크다면 해당 ok가 끈날때까지 한개의 컨트롤에 넣는다.
If RES = False Then
사용한컨트롤위치 += 1
RES = True
End If
If i + 1 < Limit(OK + 1) Then
Me.S전주번호(사용한컨트롤위치).MyText &= IIf(A(i) <> ";", A(i), "")
ElseIf i + 1 = Limit(OK + 1) Then
Me.S전주번호(사용한컨트롤위치).MyText &= IIf(A(i) <> ";", A(i), "")
OK += 1 : If OK + 1 > Limit.GetUpperBound(0) Then Exit For
RES = False
End If
End If
Next
Case 1 '//분리
Me.tb_ntype.Enabled = False
For i As Int16 = 0 To A.GetUpperBound(0) '//개별 12개의 열에 데이터를 출력한다.(30개로 늘렷으니 충분할것이다)
Me.S전주번호(i).MyText = IIf(A(i) <> ";", A(i), "")
Next
Case 2 '//통합
Me.tb_ntype.Enabled = True
Dim OK As Short = -1 '//완료 번호형식 배열값
For i As Integer = 0 To A.GetUpperBound(0)
If i < Limit(OK + 1) Then
Me.S전주번호(OK + 1).MyText &= IIf(A(i) <> ";", A(i), "")
ElseIf i = Limit(OK + 1) Then
OK += 1 : If OK + 1 > Limit.GetUpperBound(0) Then Exit For
Me.S전주번호(OK + 1).MyText &= IIf(A(i) <> ";", A(i), "")
End If
Next
End Select
For i As Integer = 0 To Me.S전주번호.GetUpperBound(0)
Me.S전주번호(i).Visible = IIf(Me.S전주번호(i).MyText = "", False, True)
Next
==============
원래 혼합식
==============
'//형식수가 최대값을(MaxChar) 넘지않으면 개별 : 넘을경우 통합출력으로한다. '//연습데이터 342 : 345 R23L1 R9
If CInt(P(0).ToString) <> 0 AndAlso CInt(P(0).ToString) <= MaxChar Then '//첫줄에해당할 문자를 전부 개별로 넣는다.
For i As Int16 = 0 To (CInt(P(0).ToString) - 1)
If i <= A.GetUpperBound(0) Then '//정상적인 범위의 데이터일경우
Me.AllLabels(lbl.Si + i).Text = IIf(A(i) <> ";", A(i), "") '//0번째 (0,0) ;는 wordspace으로 변환한다.
CPos = i '//몇번쨰 컨트롤을 썻는지 알려준다.
CurPos = i '//전체문자중 현재 몇번까지 썻는지 위치정보를 기록한다.
End If
Next
ElseIf CInt(P(0).ToString) > MaxChar Then '//첫줄의 문자를 통합으로한다.
For i As Int16 = 0 To (CInt(P(0).ToString) - 1)
If i <= A.GetUpperBound(0) Then '//정상적인 범위의 데이터
Me.AllLabels(lbl.Si + CPos).Text &= IIf(A(i) <> ";", A(i), "") '//Cpos 가 0이였기때문에 0번컨트롤에 지정된문자전체를 할당한다(통합이라는것이다)
CurPos = i '//전체문자중 현재 몇번까지 썻는지 위치정보를 기록한다.
End If
Next
End If
'curpos 는 몇번째 번호까지 했다는것이다(그 다음번호를 가르킨다) 'cpos 는 몇번째 컨트롤까지 썻다는 뜻이다.
RaiseEvent StatusMessage(CurPos & "번 문자까지 사용됬고 " & CPos & "번 컨트롤까지 사용되었다", e_EventMessage.Normal)
'//컨트롤번호가 0일경우다. 만약 값이없으면 1번째줄에서 아무것도없엇따는뜻이다.(시작위치를 -1로 초기화한다.)
If CPos = 0 AndAlso Me.AllLabels(lbl.Si).Text = "" Then CPos = -1
'//2번째줄을 테스트한다.
If CInt(P(1).ToString) > 0 AndAlso CInt(P(1).ToString) <= MaxChar Then
For i As Int16 = CurPos + 1 To CInt(P(0).ToString) + CInt(P(1).ToString) - 1
If i <= A.GetUpperBound(0) Then
Me.AllLabels(lbl.Si + CPos + 1).Text = IIf(A(i) <> ";", A(i), "") '//0번째 (0,0)
CPos += 1
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.AllLabels(lbl.Si + CPos).Text &= IIf(A(i) <> ";", A(i), "") '//0번째 (0,0)
CurPos = i
End If
Next
End If
If CInt(P(2).ToString) > 0 AndAlso CInt(P(2).ToString) <= MaxChar Then
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.AllLabels(lbl.Si + CPos + 1).Text = IIf(A(i) <> ";", A(i), "") '//0번째 (0,0)
CPos += 1
CurPos = i
End If
Next
ElseIf CInt(P(2).ToString) > 0 Then '//통합출력
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.AllLabels(lbl.Si + CPos).Text &= IIf(A(i) <> ";", A(i), "") '//0번째 (0,0)
CurPos = i
End If
Next
End If