..
This commit is contained in:
145
Project_fp13/번호형식완료.txt
Normal file
145
Project_fp13/번호형식완료.txt
Normal file
@@ -0,0 +1,145 @@
|
||||
'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
|
||||
Reference in New Issue
Block a user