Public Class impctl Dim v필드명 As String 'Dim v_nullvaluevisible As Boolean = True Public Event TimeExpired(ByVal sender As Object, ByVal Status As String) ''' ''' 사용여부 ''' ''' ''' ''' Overloads Property enabled() As Boolean Get Return Me.ComboBox1.Enabled End Get Set(ByVal value As Boolean) Me.ComboBox1.Enabled = value Me.Label1.Enabled = value End Set End Property ''' ''' 데이터가 표시된 포맷을 입력 ''' ''' ''' ''' Public Property 포맷마스크() As String Get Return Me.TextBox3.Text End Get Set(ByVal value As String) Me.TextBox3.Text = value End Set End Property ''' ''' 연결할 필드명입니다. ''' ''' ''' ''' Public Property 필드명() As String Get Return v필드명 End Get Set(ByVal value As String) v필드명 = value End Set End Property Public Property 제목() As String Get Return Me.Label1.Text End Get Set(ByVal value As String) Me.Label1.Text = value.Replace("/", vbCrLf) End Set End Property Public Property 문자열자르기() As String Get Return Me.TextBox2.Text End Get Set(ByVal value As String) Me.TextBox2.Text = value End Set End Property Public Property 열번호() As String Get Return Me.ComboBox1.Text End Get Set(ByVal value As String) Me.ComboBox1.Text = value End Set End Property Public Function getValue(ByVal Spread As FarPoint.Win.Spread.FpSpread, ByVal RowPos As Integer, Optional ByVal OrgFn As String = "원본파일명", Optional ByVal OrgExt As String = "원본확장자") As String Dim SUbidx As Integer Dim VALSTR As String Dim 파일명 As String If Me.열번호 = "" Then '//즉 없다는뜻이다. Return "" Else '//있다. '//원본파일명과 원본확장가 이 두가지를 처리해야한다. If Me.열번호.Length = 1 Then Return Me.열번호 '//길이 1개짜리는 뭔지모르겟지만 걍 반환 If Me.열번호.Substring(0, 1) = "#" AndAlso IsNumeric(Me.열번호.Substring(1)) = False Then Return Me.열번호 '//#인데 그 다음이 숫자가 아닐경우는 바로 리턴 If Me.열번호 = "파일명" Then VALSTR = OrgFn ElseIf Me.열번호 = "확장자" Then VALSTR = OrgExt ElseIf Me.열번호.Substring(0, 1) <> "#" Then '//열번호도 아니고 원본내용도아니라면 그냥 리턴 Return Me.열번호 Else '//이건 열번호를 지정한 경우에해당한다. If RowPos > Spread.ActiveSheet.RowCount Then Return "[Err:줄초과]" '//줄번호가 전체 줄번호를 초과할경우 SUbidx = Me.열번호.Substring(1) '//#을 제외한 컬럼번호만을 가져온다. If SUbidx > Spread.ActiveSheet.ColumnCount Then Return "[Err:열초과]" '//지정된 컬럼번호가 전체 컬럼수를 초과할경우 VALSTR = Spread.ActiveSheet.Cells(RowPos - 1, CInt(SUbidx - 1)).Text If VALSTR.Trim = "" Then Return "" '//가져온문자가없으면 리턴 End If 파일명 = VALSTR '//이걸로 파일명은 추출했따 이제 자르기만 수행하면된다. If Me.문자열자르기 = "" OrElse Me.문자열자르기 = "0,0" Then '//문자열자르기확인 없다 그대로 리턴 Return VALSTR Else '//문자열자르기가 있으면 잘라서 보내준다. Dim DIV(1) As String If Me.문자열자르기.IndexOf(",") = -1 Then DIV(0) = Me.문자열자르기 DIV(1) = "0" Else DIV = Me.문자열자르기.Split(",") End If If DIV(1) = "0" Then '//시작부터 끝까지 Try If 파일명.Length < DIV(0) Then VALSTR = "" Else VALSTR = 파일명.Substring(DIV(0) - 1) End If Catch ex As Exception VALSTR = 파일명 End Try Return VALSTR Else '/지정범위 Try VALSTR = 파일명.Substring(DIV(0) - 1, DIV(1)) Catch ex As Exception VALSTR = 파일명 End Try Return VALSTR End If End If End If End Function Public Sub New() ' 이 호출은 Windows Form 디자이너에 필요합니다. InitializeComponent() ' AddHandler TextBox1.TextChanged, ADDRESS OF 'AddHandler TextBox1.TextChanged, AddressOf ControlChanged ' AddHandler Me.DoubleClick, Me.TextBox1.DoubleClick 'AddHandler Me.TimeExpired, AddressOf timeExp End Sub Private Sub timeExp(ByVal sender As Object, ByVal stri As String) 'MsgBox(stri) End Sub Private Sub ControlChanged(ByVal sender As Object, ByVal e As System.EventArgs) Dim A As TextBox = CType(sender, TextBox) If A.Text.Length <= 0 Then Exit Sub Select Case A.Text.Substring(0, 1) Case ":" If IsNumeric(A.Text.Substring(1)) Then A.BackColor = Color.LawnGreen Else A.BackColor = Color.Tomato End If Case "?" A.BackColor = Color.Gray Case "#" A.BackColor = Color.SteelBlue Case Else A.BackColor = Color.White End Select End Sub Private Sub UserControl1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.DoubleClick RaiseEvent TimeExpired(Me, "sdf") End Sub Private Sub TextBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) RaiseEvent TimeExpired(Me, "sdf") End Sub Private Sub TextBox1_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.Enter Me.ComboBox1.SelectAll() End Sub Private Sub TextBox2_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.Enter Me.TextBox2.SelectAll() End Sub Private Sub TextBox2_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.GotFocus Me.TextBox2.SelectAll() ' SendKeys.Send("{TAB}") End Sub Private Sub TextBox1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.GotFocus Me.ComboBox1.SelectAll() End Sub Private Sub ComboBox1_STextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.TextChanged '이 컨트롤은 파일관리자용으로 특화된 컨트롤이다. '기본적인 입력은 해당 문자열이다 '#숫자 는 연결시킬 열번호이다. (이것은 푸른색으로한다) Dim A As ComboBox = CType(sender, ComboBox) If A.Text.Length <= 0 Then Exit Sub '//입력된 길이가 없다면 리턴 Select Case A.Text.Substring(0, 1) '//앞자리문자로 구분한다. Case "#" If Not IsNumeric(A.Text.Substring(1)) Then A.BackColor = Color.Tomato Else A.BackColor = Color.SteelBlue End If Case Else A.BackColor = Color.White End Select End Sub Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged End Sub End Class