Files
FileManager/DriveInfo/MDiMain.vb
2021-12-26 22:53:39 +09:00

1571 lines
71 KiB
VB.net

Imports System.Windows.Forms
Imports System.IO
Imports CommonClassv2
Imports System.Data
Imports System.Threading
Public Class MDiMain
Public NewList As Boolean = False '//파일을 불러오거나 편집모드를 켯을떄변경
Dim auth As New MyAuth
Dim FB As New FolderBrowserDialog
Dim install, installkey As Long
Dim strbuff As New System.Text.StringBuilder
Dim Macro() As Str_Macro
#Region "화면하단에 수량을 표시"
Delegate Sub showcnt1handler(ByVal cnt1 As Integer, ByVal cnt2 As Integer, ByVal tag As String)
Sub ShowCnt1(ByVal cnt1 As Integer, ByVal cnt2 As Integer, Optional ByVal tag As String = "")
If C1StatusBar1.InvokeRequired Then
C1StatusBar1.Invoke(New showcnt1handler(AddressOf ShowCnt1), New Object() {cnt1, cnt2, tag})
Else
Me.lb_cnt1.Text = cnt1 & "/" & cnt2 & Space(1) & tag
Me.C1StatusBar1.Refresh()
End If
End Sub
Sub ShowCnt2(ByVal cnt1 As Integer, ByVal cnt2 As Integer, Optional ByVal tag As String = "")
If C1StatusBar1.InvokeRequired Then
C1StatusBar1.Invoke(New showcnt1handler(AddressOf ShowCnt2), New Object() {cnt1, cnt2, tag})
Else
Me.lb_cnt2.Text = cnt1 & "/" & cnt2 & Space(1) & tag
Me.C1StatusBar1.Refresh()
End If
End Sub
#End Region
#Region "운용기록창메세지표시"
Delegate Sub OLogHandler(m As String)
Sub OLog(m As String)
If RichTextBox1.InvokeRequired Then
RichTextBox1.Invoke(New OLogHandler(AddressOf OLog), New Object() {m})
Else
m = String.Format("[{0}] {1}", Now.ToString("HHmmss"), m)
If RichTextBox1.TextLength > 4000 Then RichTextBox1.Clear() '//일정크기가 되면 데이터를 지운다
RichTextBox1.AppendText(vbCrLf + m)
RichTextBox1.ScrollToCaret()
End If
End Sub
#End Region
'''매크로폴더에서 목록을 가져옵니다.
Private Sub Load_Macro()
PLog.Add(">> Load_Macro")
Dim Ini As MyINI
Dim DI As New DirectoryInfo(PathMacro)
If Not DI.Exists Then
PLog.Add("No Macro Dir(" + DI.FullName + ") => Create")
DI.Create()
End If
Dim FI() As FileInfo = DI.GetFiles(MacroPattern & "*.ini")
ReDim Macro(FI.GetUpperBound(0)) '//매크로 등록한다.
PLog.Add(Macro.Length.ToString() + "개의 매크로파일을 검색했습니다")
Dim I As Integer = 0
Me.cmb_macro.Items.Clear()
Me.cmb_macro.Items.Add("이전설정")
For Each F As FileInfo In FI
Me.Macro(I).FileName = F.FullName
Ini = New MyINI(F.FullName)
Me.Macro(I).Desc = Ini.Read("main", "desc", "기본설명")
Me.cmb_macro.Items.Add(Me.Macro(I).Desc)
PLog.Add("#Macro File=" + F.Name + ", desc=" + Me.Macro(I).Desc)
I += 1
Next
End Sub
Public Sub AddScheduleDiv(m As String)
Dim lv4 As ListViewItem = lvSchedule.Items.Add("")
lv4.SubItems.Add("--")
lv4.SubItems.Add(m)
lv4.SubItems.Add("완료")
lv4.SubItems.Add("-")
lv4.ForeColor = Color.Gray
lvSchedule.Refresh()
End Sub
Public Sub Noti(m As String)
If NotifyIcon1.Visible = False Then NotifyIcon1.Visible = True
NotifyIcon1.ShowBalloonTip(1000, "FileManager", m, ToolTipIcon.Info)
End Sub
Private Sub MDiMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
If MsgBox("프로그램이 종료됩니다", MsgBoxStyle.OkCancel + MsgBoxStyle.Information, "종료확인") <> MsgBoxResult.Ok Then
e.Cancel = True
Return
End If
'//현재설정을 저장한다
Setting_Save()
'//더이상 화면에 로그메세지가 표시되지 않게한다
RemoveHandler Pub.PLog.RaiseMsg, AddressOf RaiseLogMessage
NotifyIcon1.Visible = False
NotifyIcon1.Dispose()
'//프로그램종료메세지 추가 및 Flush
Pub.PLog.Add("Program Closing", True)
End Sub
Private Sub MDiMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'제목표시줄에 프로그램명과 버젼을 표시합니다
Me.Text = My.Application.Info.ProductName & " Ver. {0}.{1:00}.{2}.{3}"
Me.Text = System.String.Format(Me.Text, My.Application.Info.Version.Major, My.Application.Info.Version.Minor, My.Application.Info.Version.Build, My.Application.Info.Version.Revision)
Me.Show()
My.Application.DoEvents()
RichTextBox1.Clear()
'//프로그램초기화
Pub.init()
'//로그메세지이벤트할당(로그가 들어오면 화면에 뿌릴수있도록 한다)
AddHandler PLog.RaiseMsg, AddressOf RaiseLogMessage
PLog.Add("프로그램 실행", True)
PLog.Add("FTP Class init")
FTP_0 = New FTPClients.Client_2("127.0.0.1", "Anonymous", "")
'//매크로기능 초기화
Load_Macro()
If Me.cmb_macro.Items.Count > 0 Then Me.cmb_macro.SelectedIndex = 0
'//툴팁메세지추가
Dim SB As New System.Text.StringBuilder("[복사]")
SB.AppendLine()
SB.AppendLine("복사하려는 파일의 위치")
SB.AppendLine()
SB.AppendLine("[삭제]")
SB.AppendLine("삭제하려는 파일의 위치")
SB.AppendLine()
SB.AppendLine("[이동]")
SB.AppendLine("이동하려는 파일의 위치")
Me.bt_workdir.ToolTipText = SB.ToString
PLog.Add("프로그램 초기화 완료", True)
End Sub
'//로그클래스로부터의 발생 메세지
Private Sub RaiseLogMessage(time As String, gubun As String, msg As String)
OLog(msg)
End Sub
#Region "설정 불러오기 & 저장하기"
Private Sub Setting_Load(Optional ByVal Macroindex As Integer = 0)
Dim ini As MyINI
If Macroindex = 0 Then
ini = New MyINI(IniFile)
Else
ini = New MyINI(Me.Macro(Macroindex - 1).FileName)
End If
'//파일명표시
PLog.Add(String.Format("Load Setting : {0},{1}", Macroindex, ini.FileName))
Me.Src_Init()
'//인증사용안함 191125 -
LoadAuthData()
If Command() <> "ARIN" AndAlso Not ReadAuth() Then '//에러났을떄는 카운터를 확인
'//사용횟수가 10번ㅇ르 초과했는지 확인
Runcnt = Me.ReadAuthcount
Dim f As New fAuth()
If (f.ShowDialog <> System.Windows.Forms.DialogResult.OK) Then
End
End If
'If Runcnt >= 10 Then
' Dim NewKey As String = InputBox("인증번호를 입력하세요 (인증번호는 숫자로만 이루어져 있습니다)")
' If IsNumeric(NewKey) = False Then
' MsgBox("프로그램을 재실행 하세요", MsgBoxStyle.Information, "확인")
' End
' End If
' auth.SetAuth(NewKey, My.Application.Info.DirectoryPath & "\epole.ini")
' MsgBox("프로그램을 재실행 하세요", MsgBoxStyle.Information, "확인")
' End
'Else
' MsgBox(CStr(10 - Runcnt) & "번의 사용횟수가 남았습니다", MsgBoxStyle.Critical, "실행확인")
'End If
End If
'//가져올부분은 작업폴더/백업폴더/백업폴더2/확장자/서브디렉토리참조/백업정책1/백업정책2/중복정책/실행형태/검사형태
Me.tb_workdir.Text = ini.Read("main", "workdir", "c:\")
Me.desd_tb_path.Text = ini.Read("main", "desdir", "c:\")
Me.tb_bakdir1.Text = ini.Read("main", "bakdir1", "c:\")
Me.tb_ext.Text = ini.Read("main", "ext", "JPG")
Me.chk_subdir.Checked = ini.Read("main", "subdir", True)
Dim baktype As String = ini.Read("main", "bak1type", 1)
If String.IsNullOrEmpty(baktype) Then baktype = "1"
cbBakType.SelectedIndex = baktype
If CBool(ini.Read("main", "bak1folder", False)) Then
cbBakTarget.SelectedIndex = 0
Else
cbBakTarget.SelectedIndex = 1
End If
Dim runtime As String = ini.Read("main", "runtype", 0)
btCopy.Pressed = False
btDel.Pressed = False
btMove.Pressed = False
If runtime = "1" Then
btDel.Pressed = True
ElseIf runtime = "2" Then
btMove.Pressed = True
Else
btCopy.Pressed = True
End If
'Me.cmb_runtype.SelectedIndex = ini.Read("main", "runtype", 0) //160407
'//하위폴더목록 불러오기
Dim SubCnt As Integer = ini.Read("main", "subdirCnt", 0)
For i As Integer = 1 To SubCnt
AddSubDirList(ini.Read("subdir", "list" & i, ""))
Next
'//srcfile
'//가져올부분은 작업폴더/백업폴더/백업폴더2/확장자/서브디렉토리참조/백업정책1/백업정책2/중복정책/실행형태/검사형태
Dim PF As String = ini.Read("srcfile", "prevfile", "")
If PF = "" Then
Prev_file = Nothing
Else
Prev_file = New System.IO.FileInfo(PF)
End If
'//시작,종료영역 복구
Me.tb_sttrange.Text = ini.Read("srcfile", "sttrange", "1")
Me.tb_endrange.Text = ini.Read("srcfile", "endrange", "0")
If Me.tb_sttrange.Text = "0" Then Me.tb_sttrange.Text = "1"
For Each AA As Control In Me.src_tp.Controls
If AA.GetType.Name.ToUpper = "IMPCTL" Then
CType(AA, impctl).열번호 = ini.Read("srcfile", AA.Name & "C", "")
CType(AA, impctl).문자열자르기 = ini.Read("srcfile", AA.Name & "S", "")
CType(AA, impctl).포맷마스크 = ini.Read("srcfile", AA.Name & "F", "")
End If
Next
'//DESFile
For Each AA As Control In Me.desf_pt.Controls
If AA.GetType.Name.ToUpper = "IMPCTL" Then
CType(AA, impctl).열번호 = ini.Read("desfile", AA.Name & "C", "")
CType(AA, impctl).문자열자르기 = ini.Read("desfile", AA.Name & "S", "")
CType(AA, impctl).포맷마스크 = ini.Read("desfile", AA.Name & "F", "")
End If
Next
'//DESDIR
For Each AA As Control In Me.desd_pt.Controls
If AA.GetType.Name.ToUpper = "IMPCTL" Then
CType(AA, impctl).열번호 = ini.Read("desdir", AA.Name & "C", "")
CType(AA, impctl).문자열자르기 = ini.Read("desdir", AA.Name & "S", "")
CType(AA, impctl).포맷마스크 = ini.Read("desdir", AA.Name & "F", "")
End If
Next
Me.des_chk_merge.Checked = ini.Read("desdir", "Chkmerge", False)
'//srcdir 160408
For Each AA As Control In Me.srcd_pt.Controls
If AA.GetType.Name.ToUpper = "IMPCTL" Then
CType(AA, impctl).열번호 = ini.Read("srcdir", AA.Name & "C", "")
CType(AA, impctl).문자열자르기 = ini.Read("srcdir", AA.Name & "S", "")
CType(AA, impctl).포맷마스크 = ini.Read("srcdir", AA.Name & "F", "")
End If
Next
Me.src_chk_merge.Checked = ini.Read("srcdir", "Chkmerge", False)
'//160716
Me.chkReplay.Checked = ini.Read("option", "replay", True)
Me.chkAutoRun.Checked = ini.Read("option", "autorun", False)
Me.chkHide.Checked = ini.Read("option", "hide", False)
'//ftp 정보 복구
FTPServer = ini.Read("ftp", "server", "")
FTPID = ini.Read("ftp", "id", "Anonymouse")
FTPPW = ini.Read("ftp", "pass", "")
FTPPort = ini.Read("ftp", "port", "21")
FTPPath = ini.Read("ftp", "path", "/")
FTPPassive = ini.Read("ftp", "passive", False)
FTPUTF8 = ini.Read("ftp", "utf8", False)
If String.IsNullOrEmpty(FTPPath) Then FTPPath = "/"
FTPPath = FTPPath.Replace("//", "/")
Dim ftpindex As Integer = ini.Read("ftp", "index", "0")
FTP_0.host = FTPServer + ":" + FTPPort.ToString()
FTP_0.user = FTPID
FTP_0.pass = FTPPW
FTP_0.Passive = FTPPassive
FTP_0.utf8 = FTPUTF8
PLog.Add("Load Setting OK", True)
End Sub
Private Function LoadAuthData() As Boolean
Me.lb_msg.Text = "Read Auth Data"
Dim Arinini As New MyINI2(My.Application.Info.DirectoryPath & "\data.ini")
Dim buf() As String
If Not Arinini.Exist Then
'//파일이없는건 오류
installkey = -1
install = 1
End If
Try
'//파일이 잇으면 그값ㅇ르 가져온다
Me.install = Arinini.Read("main", "install2", 0)
Me.installkey = Arinini.Read("main", "installkey2", 0)
Catch ex As Exception
installkey = -1
install = 1
End Try
Return True
End Function
Private Function ReadAuthcount() As Integer
Dim RunCnt As Integer = 0
Dim ini As New MyINI2(My.Application.Info.DirectoryPath & "\data.ini")
Dim RegDate As String = ini.Read("main", "regdate2", "")
Dim CurDate As String = Me.auth.GetDateNumberEnc(Today.AddDays(-10))
If RegDate = "" Then '//등록일이없으면 10번카운터를 셋팅한다.
RunCnt = 10
ini.Write("main", "reg2", RunCnt) '//1일로한다.
ini.Write("main", "regdate2", Me.auth.GetDateNumberEnc(Today)) '//1일로한다.
Else
'//상요자가 숫자를 임의로 고칠수있으니 설치된 날짜랑 오늘이랑 10일이상차이나면 횟수에상관없이 사용불가로한다.
If CurDate > RegDate Then
MsgBox("프로그램을 사용할 수 없습니다" & vbCrLf & "배포업체에 문의하세요", MsgBoxStyle.Information, "확인")
Return 10
End If
RunCnt = ini.Read("main", "reg2", 10) '//없으면 10으로한다 즉 사용못하게하겠다는거다
If RunCnt < 10 Then
RunCnt += 1
ini.Write("main", "reg2", RunCnt) '//1일로한다.
End If
End If
If RunCnt >= 10 Then Return 10
Return RunCnt
End Function
Private Function ReadAuth() As Boolean
If install = 0 OrElse installkey = 0 Then
' MsgBox("인증정보가 존재하지 않습니다." & vbCrLf & vbCrLf & "홈페이지 [자료실] 에서 인증번호를 확인하세요" & vbCrLf & "062-382-0411" & vbCrLf & Common.HomePage, MsgBoxStyle.Critical, "확인")
'Process.Start(HomePage)
Return False
End If
Dim 현재날짜값 As Long = auth.GetDateNumber(Now)
If 현재날짜값 > install Then
' MsgBox("사용기간이 초과되었습니다." & vbCrLf & vbCrLf & "홈페이지 [자료실] 에서 인증번호를 확인하세요" & vbCrLf & "062-382-0411" & vbCrLf & Common.HomePage, MsgBoxStyle.Critical, "확인")
'Process.Start(HomePage)
Return False '//만기일을 초과했다면
End If
'Dim FI As New System.IO.FileInfo(My.Application.Info.DirectoryPath & "\epole.ini")
'If (auth.GetDateNumber(FI.LastAccessTimeUtc)) > Now.ToFileTimeUtc Then '//설정파일을 접근한 날짜가 오늘보다 크면 즉 오늘이 조작디었을경우다
' ' MsgBox("사용기간이 초과되었습니다." & vbCrLf & vbCrLf & "홈페이지 [자료실] 에서 인증번호를 확인하세요" & vbCrLf & "062-382-0411" & vbCrLf & Common.HomePage, MsgBoxStyle.Critical, "확인")
' 'Process.Start(HomePage)
' Return False '//만기일을 초과했다면
'End If
Dim 해쉬값 As Integer = install.GetHashCode()
If installkey.ToString <> 해쉬값 Then '//인증정보가 손상되었다면
' MsgBox("인증정보가 손상되었습니다" & vbCrLf & vbCrLf & "홈페이지 [자료실] 에서 인증번호를 확인하세요" & vbCrLf & "062-382-0411" & vbCrLf & Common.HomePage, MsgBoxStyle.Critical, "확인")
'Process.Start(HomePage)
Return False
End If
Rundate = Date.FromFileTimeUtc(install)
Return True
' MsgBox(auth.GetDateNumberEnc(Now))
End Function
Private Sub SetAuth(ByVal NewDate As Date)
Dim auth As New MyAuth
Dim Arinini As New MyINI2(My.Application.Info.DirectoryPath & "\data.ini")
Arinini.Write("main", "install2", auth.GetDateNumber(NewDate))
Arinini.Write("main", "installkey2", auth.GetDateNumberEnc(NewDate))
MsgBox("기록완료")
End Sub
Private Function Setting_Save(Optional ByVal Macroindex As Integer = 0) As Boolean '//현재 셋팅을 저장합니다.
'//저장목록은 시작/종료 열번호 아이템의 텍스트이다.
PLog.Add(">> : Save_Setting")
Dim Macroname As String
Dim ini As MyINI
If Macroindex = 0 Then
ini = New MyINI(IniFile)
Macroname = "기본설정"
ElseIf Macroindex = -999 Then '//이건 새로운 매크로의 추가다. 매크로 파일명을 새로지어야한다.
Macroname = InputBox("매크로 설명을 입력하세요", "설명입력", "신규매크로")
If String.IsNullOrEmpty(Macroname) Then Return False
Dim i As Integer = 0
Dim NewName As String = ""
NewName:
i += 1
NewName = PathMacro & "\" & MacroPattern & Format(Me.Macro.GetUpperBound(0) + i + 1, "00") & ".ini"
If New FileInfo(NewName).Exists Then GoTo NewName
ini = New MyINI(NewName)
Else
ini = New MyINI(Me.Macro(Macroindex - 1).FileName)
Macroname = Me.Macro(Macroindex - 1).Desc
End If
ini.Write("main", "desc", Macroname)
ini.Write("main", "workdir", Me.tb_workdir.Text)
ini.Write("main", "desdir", Me.desd_tb_path.Text)
ini.Write("main", "bakdir1", Me.tb_bakdir1.Text)
ini.Write("main", "ext", Me.tb_ext.Text)
ini.Write("main", "subdir", Me.chk_subdir.Checked)
ini.Write("main", "bak1type", cbBakType.SelectedIndex)
If btDel.Pressed Then
ini.Write("main", "runtype", "1")
ElseIf btMove.Pressed Then
ini.Write("main", "runtype", "2")
Else
ini.Write("main", "runtype", "0")
End If
If cbBakTarget.SelectedIndex = 0 Then
ini.Write("main", "bak1folder", Boolean.TrueString)
Else
ini.Write("main", "bak1folder", Boolean.FalseString)
End If
'//하위폴더목록을 저장한다.
ini.Write("main", "subdirCnt", Me.list_subdir.Items.Count)
For i As Integer = 1 To Me.list_subdir.Items.Count
ini.Write("subdir", "list" & i, Me.list_subdir.Items(i - 1).Text)
Next
'//srcfile
If Not Prev_file Is Nothing Then ini.Write("srcfile", "prevfile", Prev_file.FullName)
ini.Write("srcfile", "sttrange", Me.tb_sttrange.Text)
ini.Write("srcfile", "endrange", Me.tb_endrange.Text)
For Each AA As Control In Me.src_tp.Controls
If AA.GetType.Name.ToUpper = "IMPCTL" Then
ini.Write("srcfile", AA.Name & "C", CType(AA, impctl).열번호)
ini.Write("srcfile", AA.Name & "S", CType(AA, impctl).문자열자르기)
ini.Write("srcfile", AA.Name & "F", CType(AA, impctl).포맷마스크)
End If
Next
'//desfile
For Each AA As Control In Me.desf_pt.Controls
If AA.GetType.Name.ToUpper = "IMPCTL" Then
ini.Write("desfile", AA.Name & "C", CType(AA, impctl).열번호)
ini.Write("desfile", AA.Name & "S", CType(AA, impctl).문자열자르기)
ini.Write("desfile", AA.Name & "F", CType(AA, impctl).포맷마스크)
End If
Next
'//desdir
For Each AA As Control In Me.desd_pt.Controls
If AA.GetType.Name.ToUpper = "IMPCTL" Then
ini.Write("desdir", AA.Name & "C", CType(AA, impctl).열번호)
ini.Write("desdir", AA.Name & "S", CType(AA, impctl).문자열자르기)
ini.Write("desdir", AA.Name & "F", CType(AA, impctl).포맷마스크)
End If
Next
ini.Write("desdir", "Chkmerge", Me.des_chk_merge.Checked)
'//srcdir 160408
For Each AA As Control In Me.srcd_pt.Controls
If AA.GetType.Name.ToUpper = "IMPCTL" Then
ini.Write("srcdir", AA.Name & "C", CType(AA, impctl).열번호)
ini.Write("srcdir", AA.Name & "S", CType(AA, impctl).문자열자르기)
ini.Write("srcdir", AA.Name & "F", CType(AA, impctl).포맷마스크)
End If
Next
ini.Write("srcdir", "Chkmerge", Me.src_chk_merge.Checked)
'//160716
ini.Write("option", "replay", Me.chkReplay.Checked)
ini.Write("option", "autorun", Me.chkAutoRun.Checked)
ini.Write("option", "hide", Me.chkHide.Checked)
ini.Write("ftp", "server", FTPServer)
ini.Write("ftp", "id", FTPID)
ini.Write("ftp", "pass", FTPPW)
ini.Write("ftp", "port", FTPPort)
ini.Write("ftp", "passive", FTPPassive.ToString())
ini.Write("ftp", "utf8", FTPUTF8.ToString())
ini.Write("ftp", "path", FTPPath)
PLog.Add("<< : Save Setting(" + Macroindex.ToString() + ")")
Return True
End Function
#End Region
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'//타이머가 작동중임을 표시한다.
If RibbonLabel2.Text = "" Then
RibbonLabel2.Text = ""
Else
RibbonLabel2.Text = ""
End If
If Not RibbonGroup1.Enabled Then
RibbonGroup1.Enabled = True
RibbonGroup2.Enabled = True
RibbonGroup3.Enabled = True
RibbonGroup4.Enabled = True
RibbonGroup6.Enabled = True
RibbonGroup7.Enabled = True
End If
'//현재 상태값을 화면에 보여준다.
strbuff = New System.Text.StringBuilder
Select Case cbBakTarget.SelectedIndex
Case 0
strbuff.Append("[폴더]")
Case 1
strbuff.Append("[파일]")
End Select
strbuff = New System.Text.StringBuilder
'//---원본목록부분
If IsNumeric(Me.tb_sttrange.Text) = False OrElse Me.tb_sttrange.Text <= 0 Then
Me.preview1.Text = "시작범위값이 숫자가 아니거나 0보다 작습니다"
Me.preview1.ForeColor = Color.Red
ElseIf Me.NewList = False Then
Me.preview1.Text = "원본목록이 정의되지 않았습니다."
Me.preview1.ForeColor = Color.Red
Else
strbuff.Append(Me.src_Impctl1.getValue(Me.src_view1, Me.tb_sttrange.Text)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.src_Impctl2.getValue(Me.src_view1, Me.tb_sttrange.Text)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.src_Impctl3.getValue(Me.src_view1, Me.tb_sttrange.Text)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.src_Impctl4.getValue(Me.src_view1, Me.tb_sttrange.Text)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.src_Impctl5.getValue(Me.src_view1, Me.tb_sttrange.Text)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.src_Impctl6.getValue(Me.src_view1, Me.tb_sttrange.Text)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.src_Impctl7.getValue(Me.src_view1, Me.tb_sttrange.Text)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
Me.preview1.Text = "미리보기 : " & strbuff.ToString & Pub.GetExtendFromMdi.Trim("*")
Me.preview1.ForeColor = Color.Black
End If
'//원보폴더 160408
If src_chk_merge.Checked Then
pviewSrcDir.Text = ""
Me.pviewSrcDir.ForeColor = Color.Black
Me.pviewSrcDir.Text = "[대기]"
If IsNumeric(getSP) = False OrElse getSP() <= 0 Then
Me.pviewSrcDir.Text = "[원본파일] 시작범위값이 숫자가 아니거나 0보다 작습니다"
Me.pviewSrcDir.ForeColor = Color.Red
Else
Me.pviewSrcDir.Text = "미리보기 : " & Me.DESD_GetSrcDir(getSP, "파일명", "확장자", "") ' Me.tb_path.Text & "\" & Get_FileList(Frm_srcfile.tb_sttrange.Text + 1, "파일명", "확장자").ToString
If Me.pviewSrcDir.Text.IndexOf("*") >= 0 OrElse Me.pviewDesDir.Text.IndexOf("?") >= 0 Then
Me.pviewSrcDir.Text = "원본폴더조합시에는 * 또는 ? 를 사용할 수 없습니다"
Me.pviewSrcDir.ForeColor = Color.Red
End If
End If
Else
pviewSrcDir.Text = tb_workdir.Text
Me.pviewSrcDir.ForeColor = Color.Gray
End If
'//대상폴더
If Me.desd_Impctl1.enabled = False Then Me.desd_Impctl1.enabled = True
If Me.desd_Impctl2.enabled = False Then Me.desd_Impctl2.enabled = True
If Me.desd_Impctl3.enabled = False Then Me.desd_Impctl3.enabled = True
If Me.desd_Impctl4.enabled = False Then Me.desd_Impctl4.enabled = True
If Me.desd_Impctl5.enabled = False Then Me.desd_Impctl5.enabled = True
If Me.desd_Impctl6.enabled = False Then Me.desd_Impctl6.enabled = True
If Me.desd_Impctl7.enabled = False Then Me.desd_Impctl7.enabled = True
Me.pviewDesDir.ForeColor = Color.Black
Me.pviewDesDir.Text = "[대기]"
If IsNumeric(getSP) = False OrElse getSP() <= 0 Then
Me.pviewDesDir.Text = "[원본파일] 시작범위값이 숫자가 아니거나 0보다 작습니다"
Me.pviewDesDir.ForeColor = Color.Red
Else
Me.pviewDesDir.Text = "미리보기 : " & Me.DESD_GetDesDir(getSP, "파일명", "확장자", "") ' Me.tb_path.Text & "\" & Get_FileList(Frm_srcfile.tb_sttrange.Text + 1, "파일명", "확장자").ToString
If Me.pviewDesDir.Text.IndexOf("*") >= 0 OrElse Me.pviewDesDir.Text.IndexOf("?") >= 0 Then
Me.pviewDesDir.Text = "대상폴더조합시에는 * 또는 ? 를 사용할 수 없습니다"
Me.pviewDesDir.ForeColor = Color.Red
End If
End If
'//대상파일부분
If Me.desf_Impctl1.enabled = False Then Me.desf_Impctl1.enabled = True
If Me.desf_Impctl2.enabled = False Then Me.desf_Impctl2.enabled = True
If Me.desf_Impctl3.enabled = False Then Me.desf_Impctl3.enabled = True
If Me.desf_Impctl4.enabled = False Then Me.desf_Impctl4.enabled = True
If Me.desf_Impctl5.enabled = False Then Me.desf_Impctl5.enabled = True
If Me.desf_Impctl6.enabled = False Then Me.desf_Impctl6.enabled = True
If Me.desf_Impctl7.enabled = False Then Me.desf_Impctl7.enabled = True
Me.pviewDesFile.ForeColor = Color.Black
Me.pviewDesFile.Text = "[대기]"
If IsNumeric(getSP) = False OrElse getSP() < 1 Then
Me.pviewDesFile.Text = "[원본파일] 시작범위값이 숫자가 아니거나 1보다 작습니다"
Me.pviewDesFile.ForeColor = Color.Red
Return
End If
Me.pviewDesFile.Text = "미리보기 : " & Me.Desf_Get_FileList(getSP, "파일명", "확장자") & Pub.GetExtendFromMdi.Trim("*")
If Me.pviewDesFile.Text.IndexOf("*") >= 0 OrElse Me.pviewDesFile.Text.IndexOf("?") >= 0 Then
Me.pviewDesFile.Text = "대상파일조합시에는 * 또는 ? 를 사용할 수 없습니다"
Me.pviewDesFile.ForeColor = Color.Red
End If
End Sub
'''입력값에 오류를 체크한다.
Private Function Check_InputError() As Boolean
If Me.NewList = False Then
MsgBox("원본 목록이 정의되지않았습니다", MsgBoxStyle.Critical, "확인")
Return True
End If
Ep = Me.GetLastRowCount '//목록에서 종료줄번호
Addlog2("원본목록 줄번호 범위 " & getSP() & " ~ " & Ep, True)
If Val(getSP) < 1 OrElse Val(Ep) < Val(getSP) Then
MsgBox("목록의 시작줄번호가 1보다 작거나 종료번호가 시작번호보다 작습니다.", MsgBoxStyle.Critical, Ep & " 학인")
Return True
End If
If tb_workdir.Text.StartsWith("ftp:/") Then
If IsPro Then
If btCopy.Pressed = False AndAlso btDel.Pressed = False Then
MsgBox("FTP를 원본으로 사용할 때에는 '이동' 작업을 할 수 없습니다", MsgBoxStyle.Critical, "확인")
Return True
End If
Else
If btCopy.Pressed = False Then
MsgBox("FTP를 원본으로 사용할 때에는 '이동/삭제' 작업을 할 수 없습니다", MsgBoxStyle.Critical, "확인")
Return True
End If
End If
Else
If Directory.Exists(Me.tb_workdir.Text) = False Then
MsgBox("지정된 작업폴더가 존재하지 않거나" & vbCrLf & "경로에 문제가있습니다", MsgBoxStyle.Critical, "확인")
Return True
End If
End If
'//백업폳러확인
If Directory.Exists(GetBakDir1) = False AndAlso (GetBackType1() = E_baktype.Folder1) Then
MsgBox("사용자지정폴더1이 존재하지않지않습니다" & vbCrLf & "백업정책을 해제하거나 경로를 다시 설정하세요", MsgBoxStyle.Critical, "확인")
Return True
End If
'//여기까지 왔다면 오류 없음
Return False
End Function
Public Delegate Sub Msghandler(s As String)
Public Sub MSG(ByVal s As String)
If C1StatusBar1.InvokeRequired Then
C1StatusBar1.Invoke(New Msghandler(AddressOf MSG), New Object() {s})
Else
lb_msg.Text = s
C1StatusBar1.Refresh()
End If
End Sub
#Region "SubDir"
Public ReadOnly Property HasSubDir As Boolean
Get
If Me.list_subdir.Items.Count > 0 Then
Return True
Else
Return False
End If
End Get
End Property
Public ReadOnly Property SubDirCount As Integer
Get
Return Me.list_subdir.Items.Count
End Get
End Property
Private Sub list_subdir_KeyDown(sender As Object, e As KeyEventArgs) Handles list_subdir.KeyDown
If e.KeyCode = Keys.Delete Then
If Me.list_subdir.Items.Count < 1 OrElse Me.list_subdir.FocusedItem Is Nothing Then Return
Dim 현재위치 As Integer = Me.list_subdir.FocusedItem.Index
PLog.Add("Remove SubDir Item : " + Me.list_subdir.Items(현재위치).Text)
Me.list_subdir.Items.Remove(Me.list_subdir.Items(현재위치))
If Me.list_subdir.Items.Count >= 현재위치 + 1 Then
Me.list_subdir.FocusedItem = Me.list_subdir.Items(현재위치)
ElseIf Me.list_subdir.Items.Count > 0 Then
Me.list_subdir.FocusedItem = Me.list_subdir.Items(0)
End If
End If
End Sub
'''하위폴더목록을 추가한다.
Public Sub AddSubDirList(ByVal s As String)
If s <> "" Then
If list_subdir.InvokeRequired Then
list_subdir.Invoke(New addsubDirlistHandler(AddressOf AddSubDirList), New Object() {s})
Else
If Me.list_subdir.Items.IndexOfKey(s.ToUpper) = -1 Then
Dim lv As ListViewItem = Me.list_subdir.Items.Add(s.ToUpper, s.ToString, 0)
lv.ForeColor = Color.Black
lv.SubItems.Add("")
End If
End If
End If
End Sub
Private Delegate Sub addsubDirlistHandler(s As String)
Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btAddSubDir.Click
Dim A As String
input:
A = InputBox("\,/는 제외하고 입력하세요", "서브폴더명입력")
If A = "" Then Return
AddSubDirList(A)
GoTo input
End Sub
Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btDeleteSubDir.Click
If Me.list_subdir.Items.Count = 0 OrElse Me.list_subdir.SelectedItems.Count < 1 Then Return
Me.list_subdir.Items.Remove(Me.list_subdir.SelectedItems(0))
End Sub
#End Region
#Region "SRCFILE"
Private Sub src_bt_read_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Private Sub Src_RenameColumnname()
PLog.Add("Rename : Column Title")
For i As Integer = 0 To Me.src_view1.Sheets.Count - 1
For Each CL As FarPoint.Win.Spread.Column In Me.src_view1.Sheets(i).Columns
Me.src_view1.Sheets(i).Columns(CL.Index).Label = CL.Index + 1
Next
Next
Me.NewList = True
End Sub
Private Sub Src_Init()
PLog.Add("Farpoint Init")
Dim im As New FarPoint.Win.Spread.InputMap
im = src_view1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextColumnWrap)
im = src_view1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused)
im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.MoveToNextColumnWrap)
End Sub
Public Function Get_SrcFileList(ByVal sp As Integer) As String
If sp = 0 Then Return ""
Dim strbuff As New System.Text.StringBuilder
strbuff.Append(Me.src_Impctl1.getValue(Me.src_view1, sp - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.src_Impctl2.getValue(Me.src_view1, sp - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.src_Impctl3.getValue(Me.src_view1, sp - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.src_Impctl4.getValue(Me.src_view1, sp - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.src_Impctl5.getValue(Me.src_view1, sp - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.src_Impctl6.getValue(Me.src_view1, sp - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.src_Impctl7.getValue(Me.src_view1, sp - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
Return strbuff.ToString
End Function
Public Function GetLastRowCount() As Integer '//마지막 줄번호를 리턴
If Me.tb_endrange.Text = "" Then Me.tb_endrange.Text = "0"
Dim Ep As String = Me.tb_endrange.Text '//종료줄번호
Dim Sp As String = Me.tb_sttrange.Text '//시작줄번호
Dim nullcnt As Integer = 0
Dim Offset As Integer = 10
If Ep = "" OrElse Ep = "0" Then '//끝까지이므로 여기서 계산을 해준다. 1,2,3번열이 연속 5번 비어있으면 멈춘다.
For i As Integer = Val(Sp) To Me.src_view1.ActiveSheet.RowCount
If Me.src_view1.ActiveSheet.Cells(i, 0).Text = "" AndAlso Me.src_view1.ActiveSheet.Cells(i, 1).Text = "" AndAlso Me.src_view1.ActiveSheet.Cells(i, 2).Text = "" Then
nullcnt += 1
If nullcnt = 5 Then
Ep = i - 4 '//160407 4 to 3
Exit For
End If
Else
nullcnt = 0
End If
Next
Return Val(Ep)
End If
Return Ep
End Function
Public Function Get_FileListArray() As ArrayList
Dim FileList As New ArrayList
If NewList = False Then Return Nothing '//목록자체가 결정되지않았다.
Dim strbuff As System.Text.StringBuilder
Dim SP, Ep As String
SP = Me.tb_sttrange.Text
Ep = Me.tb_endrange.Text
If Ep = "" OrElse Ep = "0" Then Ep = Me.src_view1.ActiveSheet.RowCount
If SP < 1 OrElse Ep < SP Then Return Nothing '//1이상으로시작하고 종료숫자는 시작보다 커야한다.
'//파일목록을 작성합니다.
MSG("파일목록을 작성합니다")
Dim NullCnt As Short = 0
For i As Integer = SP To Ep
MSG(i & "번줄을 작성하는중...")
strbuff = New System.Text.StringBuilder
strbuff.Append(Me.src_Impctl1.getValue(Me.src_view1, SP - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.src_Impctl2.getValue(Me.src_view1, SP - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.src_Impctl3.getValue(Me.src_view1, SP - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.src_Impctl4.getValue(Me.src_view1, SP - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.src_Impctl5.getValue(Me.src_view1, SP - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.src_Impctl6.getValue(Me.src_view1, SP - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.src_Impctl7.getValue(Me.src_view1, SP - 1)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
If strbuff.ToString.Trim <> "" Then
FileList.Add(strbuff.ToString) '//내용이있으면 배열에저장한다.
NullCnt = 0
Else
NullCnt += 1
If NullCnt = 5 Then '//빈줄이나올때 널카운트를 증가시키고 빈줄이 5번연속나올때는 빠져나온다.
Exit For
End If
End If
Next
MSG("파일목록을 작성완료")
If FileList.Count = 0 Then Return Nothing
Return FileList
End Function
Private Sub SRC_Imp_Enable(ByVal value As Boolean)
PLog.Add("Import Control Enable Set = " + value.ToString())
If Me.src_Impctl1.enabled <> value Then Me.src_Impctl1.enabled = value
If Me.src_Impctl2.enabled <> value Then Me.src_Impctl2.enabled = value
If Me.src_Impctl3.enabled <> value Then Me.src_Impctl3.enabled = value
If Me.src_Impctl4.enabled <> value Then Me.src_Impctl4.enabled = value
If Me.src_Impctl5.enabled <> value Then Me.src_Impctl5.enabled = value
If Me.src_Impctl6.enabled <> value Then Me.src_Impctl6.enabled = value
If Me.src_Impctl7.enabled <> value Then Me.src_Impctl7.enabled = value
End Sub
#End Region
#Region "DESDIR"
Private Sub ToolStripButton4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles desd_find_folder.Click
Dim FB As New FolderBrowserDialog
FB.SelectedPath = Me.desd_tb_path.Text
If FB.ShowDialog = Windows.Forms.DialogResult.OK Then
Me.desd_tb_path.Text = FB.SelectedPath
End If
End Sub
Public Function DESD_GetSrcDir(ByVal Rownum As Integer, ByVal orgfn As String, ByVal orgext As String, ByVal subfolder As String) As String
'//sp는 목록을 사용햇을때 몇번째 row인지의 오프셋이다.
If Rownum = 0 Then Return "#Err"
Dim pathdiv As Char = "\"c
If tb_workdir.Text.StartsWith("ftp:") Then pathdiv = "/"c
Dim NewDir As String
If Me.src_chk_merge.Checked Then '//폴더만사용
' Addlog2(Get_FileList(Rownum, orgfn, orgext).ToString)
NewDir = Me.tb_workdir.Text.Trim(pathdiv) & pathdiv & srcd_Get_FileList(Rownum, orgfn, orgext).ToString
Else
NewDir = Me.tb_workdir.Text.Trim(pathdiv) & pathdiv & subfolder
End If
' MsgBox(NewDir.Replace("\\", "\"), MsgBoxStyle.Information, subfolder)
Return (NewDir.Replace(pathdiv + pathdiv, pathdiv))
End Function
Public Function DESD_GetDesDir(ByVal Rownum As Integer, ByVal orgfn As String, ByVal orgext As String, ByVal subfolder As String) As String
'//sp는 목록을 사용햇을때 몇번째 row인지의 오프셋이다.
If Rownum = 0 Then Return "#Err"
Dim NewDir As String
If Me.des_chk_merge.Checked Then '//폴더만사용
' Addlog2(Get_FileList(Rownum, orgfn, orgext).ToString)
NewDir = Me.desd_tb_path.Text.Trim("\") & "\" & desd_Get_FileList(Rownum, orgfn, orgext).ToString
Else
NewDir = Me.desd_tb_path.Text.Trim("\") & "\" & subfolder
End If
' MsgBox(NewDir.Replace("\\", "\"), MsgBoxStyle.Information, subfolder)
Return (NewDir.Replace("\\", "\"))
End Function
Delegate Function desd_Get_FileListHandler(ByVal sp As Integer, ByVal orgfn As String, ByVal orgext As String) As String
Private Function desd_Get_FileList(ByVal sp As Integer, ByVal orgfn As String, ByVal orgext As String) As String
If im1.InvokeRequired Then
Return im1.Invoke(New desd_Get_FileListHandler(AddressOf desd_Get_FileList), New Object() {sp, orgfn, orgext})
Else
Dim strbuff As New System.Text.StringBuilder
strbuff.Append(Me.desd_Impctl1.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.desd_Impctl2.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.desd_Impctl3.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.desd_Impctl4.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.desd_Impctl5.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.desd_Impctl6.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.desd_Impctl7.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
Return strbuff.ToString
End If
End Function
Delegate Function srcd_Get_FileListHandler(ByVal sp As Integer, ByVal orgfn As String, ByVal orgext As String) As String
Public Function srcd_Get_FileList(ByVal sp As Integer, ByVal orgfn As String, ByVal orgext As String) As String
If im1.InvokeRequired Then
Return im1.Invoke(New srcd_Get_FileListHandler(AddressOf srcd_Get_FileList), New Object() {sp, orgfn, orgext})
Else
Dim strbuff As New System.Text.StringBuilder
strbuff.Append(Me.im1.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.im2.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.im3.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.im4.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.im5.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.im6.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.im7.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
Return strbuff.ToString
End If
End Function
#End Region
#Region "DESFILE"
Public Function Desf_Get_FileList(ByVal sp As Integer, ByVal orgfn As String, ByVal orgext As String) As String
Dim strbuff As New System.Text.StringBuilder
strbuff.Append(Me.desf_Impctl1.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.desf_Impctl2.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.desf_Impctl3.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.desf_Impctl4.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.desf_Impctl5.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.desf_Impctl6.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
strbuff.Append(Me.desf_Impctl7.getValue(Me.src_view1, sp, orgfn, orgext)) ' Me.view1.ActiveSheet.Cells(Me.tb_sttrange.Text, CT.열번호.Substring(1)).Text)
Return strbuff.ToString
End Function
#End Region
'Private Sub StatusStrip1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)
' '//사용자가 파일목록을 직접 구성하려고할때를 가정한다.
' '//기존파일뒤에 추가할것인지 초기화하고 추가할것인지 묻는다
' If MsgBox("기존파일의 목록을 유지하고 추가하시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "원본목록 사용자생성") <> MsgBoxResult.Ok Then
' Me.DataSet1.FileList.Rows.Clear()
' Me.DataSet1.FileList.AcceptChanges()
' End If
' '//이렇게되면 이제 추가를 한다.
' If (e.Data.GetDataPresent(DataFormats.FileDrop)) Then
' Dim STR() As String = CType(e.Data.GetData(DataFormats.FileDrop), String())
' For Each fn As String In STR
' My.Application.DoEvents()
' Dim Fi As New System.IO.FileInfo(fn)
' Dim Dir As System.IO.DirectoryInfo
' If Fi.Exists = False Then '//디렉토리다.
' Dir = New System.IO.DirectoryInfo(fn)
' For Each Ff As System.IO.FileInfo In Dir.GetFiles("*.jpg", 1)
' Me.DataSet1.FileList.Rows.Add(New String() {Ff.DirectoryName, Ff.Name})
' Me.lb_cnt1.Text = "파일검색중(" & Me.DataSet1.FileList.Rows.Count & ")"
' My.Application.DoEvents()
' Next
' Else '//파일일경우에
' If Fi.Extension.ToUpper = ".JPG" Then Me.DataSet1.FileList.Rows.Add(New String() {Fi.DirectoryName, Fi.Name})
' Me.lb_cnt1.Text = "파일검색중(" & Me.DataSet1.FileList.Rows.Count & ")"
' My.Application.DoEvents()
' End If
' Next
' End If
' MsgBox(Me.DataSet1.FileList.Rows.Count, MsgBoxStyle.Information, "수집")
' 'Me.dv_filelist.DataSource = Me.DataSet1.FileList
'End Sub
'Private Sub StatusStrip1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)
' '//대상목록파일을 직접 지정할려고할때 쓴다.
' If (e.Data.GetDataPresent(DataFormats.FileDrop)) Then
' e.Effect = DragDropEffects.Copy
' ElseIf (e.Data.GetDataPresent(DataFormats.StringFormat)) Then
' ' MsgBox("string")
' e.Effect = DragDropEffects.Copy
' ElseIf (e.Data.GetDataPresent(DataFormats.Text)) Then
' ' MsgBox("text")
' e.Effect = DragDropEffects.Copy
' Else
' e.Effect = DragDropEffects.None
' End If
'End Sub
Private Sub des_chk_merge_CheckedChanged(sender As Object, e As EventArgs) Handles des_chk_merge.CheckedChanged
desd_pt.Enabled = des_chk_merge.Checked
PLog.Add("대상폴더조합기능 변경 : " + des_chk_merge.Checked.ToString(), True)
End Sub
Private Sub src_chk_merge_CheckedChanged(sender As Object, e As EventArgs) Handles src_chk_merge.CheckedChanged
srcd_pt.Enabled = src_chk_merge.Checked
ToolStrip1.Enabled = Not src_chk_merge.Checked
'list_subdir.Enabled = Not src_chk_merge.Checked
PLog.Add("원본폴더조합기능 변경 : " + src_chk_merge.Checked.ToString(), True)
End Sub
Private Sub srcd_find_ftp_Click(sender As Object, e As EventArgs) Handles srcd_find_ftp.Click
Dim f As New fFtpPath(FTPServer, FTPID, FTPPW, FTPPort, FTPPassive, FTPUTF8, FTPPath)
If f.ShowDialog() = Windows.Forms.DialogResult.OK Then
tb_workdir.Text = "ftp:/" + f.Selpath
PLog.Add("FTP 원본경로 변경 : " + f.Selpath)
FTPServer = f.tb_ftpserver.Text
FTPID = f.tb_ftpid.Text
FTPPW = f.tb_ftppass.Text
FTPPort = f.tb_ftpport.Text
FTPPassive = f.chk_ftpPassive.Checked
FTPUTF8 = f.chk_ftputf8.Checked
FTPPath = f.tb_ftppath.Text
Else
MsgBox("선택이 취소되었습니다", MsgBoxStyle.Information, "확인")
End If
FTP_0.Close()
End Sub
Private Sub srcd_find_folder_Click(sender As Object, e As EventArgs) Handles bt_workdir.Click
Me.FB.SelectedPath = Me.tb_workdir.Text
If Me.FB.ShowDialog() = Windows.Forms.DialogResult.OK Then
Me.tb_workdir.Text = FB.SelectedPath
PLog.Add("원본경로 변경 : " + FB.SelectedPath)
End If
End Sub
Private Sub ToolStripButton4_Click_1(sender As Object, e As EventArgs) Handles ToolStripButton4.Click
Dim SB As New System.Text.StringBuilder("[복사]")
SB.AppendLine()
SB.AppendLine("복사가될 위치 : 원본폴더로부터 이곳에 복사됩니다")
SB.AppendLine()
SB.AppendLine("[삭제]")
SB.AppendLine("사용되지않음")
SB.AppendLine()
SB.AppendLine("[이동]")
SB.AppendLine("원본폴더로부터 이동되는 위치")
MsgBox(SB.ToString, MsgBoxStyle.Information, "확인")
End Sub
Private Sub RibbonButton10_Click(sender As Object, e As EventArgs) Handles RibbonButton10.Click
PLog.Add("닫기버튼클릭")
Me.Close()
End Sub
Private Sub btCopy_Click(sender As Object, e As EventArgs) Handles btCopy.Click, btDel.Click, btMove.Click
Dim bt As C1.Win.C1Ribbon.RibbonToggleButton = sender
If bt.Name.ToLower = "btdel" Then
btCopy.Pressed = False
btDel.Pressed = True
btMove.Pressed = False
PLog.Add("작업형태 [delete] 클릭")
ElseIf bt.Name.ToLower = "btmove" Then
btCopy.Pressed = False
btDel.Pressed = False
btMove.Pressed = True
PLog.Add("작업형태 [move] 클릭")
Else
btCopy.Pressed = True
btDel.Pressed = False
btMove.Pressed = False
PLog.Add("작업형태 [copy] 클릭")
End If
End Sub
Private Sub RibbonButton11_Click_1(sender As Object, e As EventArgs) Handles RibbonButton11.Click
Form_Status.Winhide = False
Form_Status.AutoRun = False
Form_Status.Show()
End Sub
Private Sub RibbonTextBox2_TextChanged(sender As Object, e As EventArgs) Handles tb_sttrange.TextChanged
If Me.tb_sttrange.Text = "0" Then
MsgBox("목록의 시작값은 반드시 1보다 커야합니다", MsgBoxStyle.Critical, "확인")
Me.tb_sttrange.Text = "1"
End If
End Sub
'''파일(엑셀)열기
Private Sub RibbonButton8_Click(sender As Object, e As EventArgs) Handles btOpenFile.Click
Dim fn As String
If Prev_file Is Nothing Then
fn = ARINCLASS.OpenFile("", "엑셀파일|*.xls")
Else
fn = ARINCLASS.OpenFile(Prev_file.FullName, "엑셀파일|*.xls")
End If
If fn <> "" Then
'//설정창으로 표시를 해준다.
TabControl1.SelectedIndex = 0
Prev_file = New System.IO.FileInfo(fn)
Noti("File Open" + vbCrLf + fn)
PLog.Add("File Open : " + fn)
Me.src_view1.OpenExcel(fn)
Src_RenameColumnname()
'//줄너비값을 이용하여 처리해준다
If chk_autorow.Checked Then
tb_endrange.Text = "0"
Dim 마지막줄번호 As Integer = GetLastRowCount()
tb_endrange.Text = 마지막줄번호.ToString()
src_view1_Sheet1.RowCount = CInt(tb_endrange.Text) + 5
PLog.Add("Auto RowCount = " + tb_endrange.Text, True)
End If
End If
End Sub
'''목록직접작성하기
Private Sub RibbonButton9_Click(sender As Object, e As EventArgs) Handles btMakeNewList.Click
'//설정창으로 표시를 해준다.
TabControl1.SelectedIndex = 0
Prev_file = Nothing
Me.src_view1.ActiveSheet.RowCount = 0
Me.src_view1.ActiveSheet.RowCount = 100
Me.src_view1.ActiveSheet.ColumnCount = 0
Me.src_view1.ActiveSheet.ColumnCount = 100
Dim CT As New FarPoint.Win.Spread.CellType.TextCellType
For i As Integer = 0 To Me.src_view1.Sheets.Count - 1
For Each CL As FarPoint.Win.Spread.Column In Me.src_view1.Sheets(i).Columns
CL.HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center
CL.VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center
Me.src_view1.Sheets(i).Columns(CL.Index).CellType = CT
Next
Next
Src_RenameColumnname()
End Sub
Private Sub RibbonButton8_Click_1(sender As Object, e As EventArgs) Handles bT_netdrvconn.Click
Dim DirName As Char = "X"
Dim Path As String = "\\Kepgis_4822\ndis\photo"
dname:
If Directory.Exists(DirName & ":\") Then
MsgBox("지정된 드라이브가 존재합니다 다른드라이브명을 사용하세요", MsgBoxStyle.Critical, "확인")
DirName = Chr(Asc(DirName) + 1)
GoTo dname
End If
Dim A As New System.Text.StringBuilder("사용할 네트워크 드라이브/네트워크경로를 입력하세요")
A.AppendLine()
A.AppendLine("예) X/\\Kepgis_<지점코드>\ndis\photo")
Dim n As String = InputBox(A.ToString, "드라이브연결", DirName & "/" & Path)
If n = "" Then Return
Dim S() As String = n.Split("/")
If Directory.Exists(S(0) & ":\") Then
MsgBox("지정된 드라이브가 존재합니다 다른드라이브명을 사용하세요", MsgBoxStyle.Critical, "확인")
Return
End If
Dim P As New Process
P.StartInfo.FileName = "net"
P.StartInfo.Arguments = " use " & S(0) & ": " & S(1)
PLog.Add("Net Drive Connect : " + P.StartInfo.Arguments)
P.Start()
End Sub
Private Sub RibbonButton12_Click(sender As Object, e As EventArgs) Handles bt_netdrvdel.Click
Dim A As String = InputBox("드라이브명을 입력하세요" & vbCrLf & "X", "네트워크드라이브 삭제", "X")
If A = "" Then Return
Dim P As New Process
P.StartInfo.FileName = "net"
P.StartInfo.Arguments = " use " & A & ": /d"
PLog.Add("Net Drive Delete : " + P.StartInfo.Arguments)
P.Start()
End Sub
Private Sub RibbonButton8_Click_2(sender As Object, e As EventArgs) Handles RibbonButton8.Click
If Me.Setting_Save(-999) Then
MsgBox("매크로가 저장되었습니다", MsgBoxStyle.Information, "확인")
Me.Load_Macro()
End If
End Sub
Private Sub RibbonButton12_Click_1(sender As Object, e As EventArgs) Handles RibbonButton12.Click
If Me.cmb_macro.SelectedIndex <= 0 Then
MsgBox("저장될 매크로가 선택되지않았습니다", MsgBoxStyle.Information, "확인")
Return
End If
If Me.Setting_Save(Me.cmb_macro.SelectedIndex) Then
MsgBox("매크로가 저장되었습니다", MsgBoxStyle.Information, "확인")
Me.Load_Macro()
End If
End Sub
Private Sub RibbonButton13_Click(sender As Object, e As EventArgs) Handles RibbonButton13.Click
If Me.cmb_macro.SelectedIndex <= 0 Then
MsgBox("삭제될 매크로가 선택되지않았습니다", MsgBoxStyle.Information, "확인")
Return
End If
File.Delete(Me.Macro(Me.cmb_macro.SelectedIndex - 1).FileName)
MsgBox("매크로가 삭제되었습니다", MsgBoxStyle.Information, "확인")
Me.Load_Macro()
End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmb_macro.SelectedIndexChanged
Setting_Load(Me.cmb_macro.SelectedIndex)
End Sub
#Region "실행버튼"
Private Sub RibbonButton1_Click(sender As Object, e As EventArgs) Handles bt_run.Click
Job_Start(chkReplay.Checked)
End Sub
Sub Job_Start(replay As Boolean)
If Check_InputError() Then Return
Me.Timer1.Enabled = False
If btDel.Pressed AndAlso chkAutoRun.Checked Then
If MsgBox("삭제 작업이면서 자동실행이 설정되어 있습니다. 작업을 진행 할까요?", MsgBoxStyle.Information + MsgBoxStyle.YesNo, "실행확인") <> MsgBoxResult.Yes Then Return
End If
If chkAutoRun.Checked AndAlso tb_workdir.Text.StartsWith("ftp:/") Then
If MsgBox("FTP의경우 백업정책이 적용되지 않습니다" + Environment.NewLine + "진행 하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.YesNo, "실행확인") <> MsgBoxResult.Yes Then Return
End If
Dim startP As Integer = Integer.Parse(tb_sttrange.Text) '//시작줄
Dim endP As Integer = GetLastRowCount() '//종료줄
Dim WorkDir As String = GetWorkDIr()
If MsgBox("시스템 데이터를 수집합니다" & vbCrLf & "이후 실행 메세지가 출력됩니다" & vbCrLf & "계속하시겠습니까?", MsgBoxStyle.Information + MsgBoxStyle.OkCancel, "실행확인") <> MsgBoxResult.Ok Then Return
'//작업창으로 화면을 돌려준다.
Me.TabControl1.SelectedIndex = 1
Me.TabControl1.Refresh()
'//데이터테이블초기화(대상목록이저장된다)
PLog.Add("데이터테이블초기화")
DataSet1.SrcList.Rows.Clear()
DataSet1.FileList.Rows.Clear()
DataSet1.WorkList.Rows.Clear()
DataSet1.SrcList.AcceptChanges() '//삭제승인
DataSet1.FileList.AcceptChanges()
DataSet1.WorkList.AcceptChanges()
'//스케쥴창표시
lvSchedule.Items.Clear()
lvSchedule.Refresh()
'//작업파라미터를 생성
Dim param As New RunParam
param.StartP = startP
param.Replay = replay
param.EndP = endP
param.WorkDir = WorkDir
param.isCopy = btCopy.Pressed
param.원본폴더조합 = src_chk_merge.Checked
param.확장자 = Me.GetExt()
If chkHide.Checked Then
Me.WindowState = FormWindowState.Minimized
Noti("작업실행")
End If
'//작업시작
If Job.Run(param) Then
'//스케쥴데이터도 기록을 해준다. 160717
Dim fn As String = PathList + "\스케쥴" + Format(Now, "yyMMddHHmm") + ".txt"
Dim buf As New System.Text.StringBuilder
For i As Integer = 1 To lvSchedule.Columns.Count
buf.Append(vbTab + lvSchedule.Columns(i - 1).Text)
Next
buf.AppendLine()
For Each lv As ListViewItem In lvSchedule.Items
For i As Integer = 1 To lvSchedule.Columns.Count
buf.Append(vbTab + lv.SubItems(i - 1).Text)
Next
buf.AppendLine()
Next
System.IO.File.WriteAllText(fn, buf.ToString())
'//목록을 미리 저장해준다.
'Dim 파일_전체 As String = PathList + "\" + Format(Now, "yyMMddHHmm") + "전체파일목록.xls"
'Dim 파일_작업 As String = PathList + "\" + Format(Now, "yyMMddHHmm") + "작업파일목록.xls"
'Dim 파일_원본 As String = PathList + "\" + Format(Now, "yyMMddHHmm") + "원본파일목록.xls"
'SaveExcelFile(파일_전체, DataSet1.FileList)
'SaveExcelFile(파일_작업, DataSet1.WorkList)
'SaveExcelFile(파일_원본, DataSet1.SrcList)
If chkHide.Checked Then
Form_Status.WindowState = FormWindowState.Minimized
Else
Form_Status.WindowState = FormWindowState.Normal
End If
Form_Status.Show()
Application.DoEvents()
'//svae List
Form_Status.AutoRun = chkAutoRun.Checked
Form_Status.Winhide = chkHide.Checked
Form_Status.SaveList(Form_Status.E_SaveType.FileList, False)
Form_Status.SaveList(Form_Status.E_SaveType.SrcList, False)
Form_Status.SaveList(Form_Status.E_SaveType.WorkList, False)
'//작업내용표시
If chkAutoRun.Checked Then
Form_Status.btRun.PerformClick()
End If
End If
'//임시로 뷰에 보여준다.
Me.Timer1.Enabled = True
End Sub
#End Region
#Region "Progress Bar"
Private Delegate Sub PorgressSetHandler(Max As Integer, Min As Integer, value As Integer)
Public Sub ProgressSet(Max As Integer, Min As Integer, value As Integer)
If C1StatusBar1.InvokeRequired Then
C1StatusBar1.Invoke(New PorgressSetHandler(AddressOf ProgressSet), New Object() {Max, Min})
Else
prb1.Maximum = Max
prb1.Minimum = Min
prb1.Value = value
C1StatusBar1.Refresh()
End If
End Sub
Private Delegate Sub ProgressvalHandler(value As Integer)
Public Sub ProgressVal(value As Integer)
If C1StatusBar1.InvokeRequired Then
C1StatusBar1.Invoke(New ProgressvalHandler(AddressOf ProgressVal), New Object() {value})
Else
prb1.Value = value
C1StatusBar1.Refresh()
End If
End Sub
#End Region
'''확장자명을 가져옵니다.
Function GetExt() As String
If C1Ribbon1.InvokeRequired Then
Return C1Ribbon1.Invoke(New GetExtHandler(AddressOf GetExt), New Object() {})
Else
Dim ext As String = tb_ext.Text.Trim()
If String.IsNullOrEmpty(ext) Then ext = "JPG"
Return ext
End If
End Function
Delegate Sub GetExtHandler()
'''입력된 하위폴더목록이 현재 존재하는가 확인합니다.
Function CheckExistSubDir(subdir As String) As Boolean
If list_subdir.InvokeRequired Then
Return list_subdir.Invoke(New CheckExistSubDirHandler(AddressOf CheckExistSubDir), New Object() {subdir})
Else
If list_subdir.Items.IndexOfKey(subdir) = -1 Then
Return False
Else
Return True
End If
End If
End Function
Delegate Sub CheckExistSubDirHandler(subdir As String)
Sub SubDirListCler()
If list_subdir.InvokeRequired Then
list_subdir.Invoke(New MethodInvoker(AddressOf SubDirListCler), New Object() {})
Else
list_subdir.Items.Clear()
list_subdir.Refresh()
End If
End Sub
Sub ScheduleListCler()
If lvSchedule.InvokeRequired Then
lvSchedule.Invoke(New MethodInvoker(AddressOf ScheduleListCler), New Object() {})
Else
lvSchedule.Items.Clear()
lvSchedule.Refresh()
End If
End Sub
Function GetSrcMerge() As Boolean
If ToolStrip5.InvokeRequired Then
ToolStrip5.Invoke(New MethodInvoker(AddressOf GetSrcMerge), New Object() {})
Else
Return src_chk_merge.Checked
End If
End Function
Function GetStartPosition() As Integer
If C1Ribbon1.InvokeRequired Then
C1Ribbon1.Invoke(New MethodInvoker(AddressOf GetStartPosition), New Object() {})
Else
Return tb_sttrange.Text
End If
End Function
Function GetSubDirCount() As Integer
If list_subdir.InvokeRequired Then
list_subdir.Invoke(New MethodInvoker(AddressOf GetSubDirCount), New Object() {})
Else
Return list_subdir.Items.Count
End If
End Function
Delegate Sub GetSubDirItemStringHandler(rowindex As Integer, colindex As Integer)
Function GetSubDirItemString(rowindex As Integer, colindex As Integer) As String
If list_subdir.InvokeRequired Then
Return list_subdir.Invoke(New GetSubDirItemStringHandler(AddressOf GetSubDirItemString), New Object() {rowindex, colindex})
Else
Return list_subdir.Items(rowindex).SubItems(colindex).Text
End If
End Function
Delegate Sub AddScheduleItemHanlder(A As String, B As String, C As String, D As String)
Sub AddScheduleItem(A As String, B As String, C As String, D As String)
If lvSchedule.InvokeRequired Then
lvSchedule.Invoke(New AddScheduleItemHanlder(AddressOf AddScheduleItem), New Object() {A, B, C, D})
Else
Dim lv As ListViewItem = lvSchedule.Items.Add(A)
lv.SubItems.Add(B)
lv.SubItems.Add(C)
lv.SubItems.Add(D)
lvSchedule.Refresh()
End If
End Sub
Private Sub RibbonButton1_Click_1(sender As Object, e As EventArgs) Handles RibbonButton1.Click
If cbBakType.SelectedIndex <> 1 Then
MsgBox("백업방법이 사용자지정폴더일때에 사용됩니다.", MsgBoxStyle.Information, "확인")
End If
Me.FB.SelectedPath = Me.tb_bakdir1.Text
Me.FB.ShowDialog()
Me.tb_bakdir1.Text = FB.SelectedPath
End Sub
Private Sub src_chk_merge_Click(sender As Object, e As EventArgs) Handles src_chk_merge.Click
If src_chk_merge.Checked Then
MsgBox("원본폴더를 조합할 경우 '하위폴더목록'을 수동으로 입력할 수 없습니다" + vbCrLf + "하위폴더는 원본조합에서 자동으로 설정됩니다")
End If
End Sub
Private Sub chkReplay_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles chkReplay.CheckedChanged
PLog.Add("작업이어하기 클릭 변경값=" + chkReplay.Checked.ToString())
End Sub
Private Sub chkAutoRun_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles chkAutoRun.CheckedChanged
PLog.Add("작업자동실행 클릭 변경값=" + chkAutoRun.Checked.ToString())
End Sub
Private Sub btMakeCache_Click(sender As System.Object, e As System.EventArgs) Handles btMakeCache.Click
'//Summary 파일을 재 생성한다.
If Not GetWorkDIr().ToLower.StartsWith("ftp:") Then
MsgBox("캐쉬파일(Summary.txt)는 FTP대상일때만 사용할 수 있습니다", MsgBoxStyle.Critical, "확인")
Return
End If
Dim CacheDirName As String = PathJob + "\" + FTPServer
CacheDirName = CacheDirName.Replace("\\", "\")
MsgBox("캐쉬파일(Summary.txt)을 생성할 폴더를 선택하세요", MsgBoxStyle.Information, "확인")
Dim fd As New FolderBrowserDialog
fd.SelectedPath = CacheDirName
If (fd.ShowDialog() = Windows.Forms.DialogResult.OK) Then
Dim di As New System.IO.DirectoryInfo(fd.SelectedPath)
If Not di.Exists Then
MsgBox("대상폴더" + vbCrLf + di.FullName + "가 존재하지 않습니다", MsgBoxStyle.Critical, "확인")
Return
End If
'//summary 파일이 존재하는가?
Dim Summary As New System.IO.FileInfo(di.FullName + "\Summary.txt")
If Summary.Exists Then
If MsgBox("캐쉬파일(Summary.txt)가 현재 존재합니다. 새로 생성하시겠습니까?", MsgBoxStyle.YesNo + MsgBoxStyle.Information, "확인") <> MsgBoxResult.Yes Then
Return
End If
End If
Dim files() As System.IO.FileInfo = di.GetFiles("*." + GetExt())
If files.Length < 1 Then
If MsgBox("대상폴더에 파일이 존재하지 않습니다." + vbCrLf + "진행하시겠습니까?", _
MsgBoxStyle.YesNo Or MsgBoxStyle.Question, "확인") <> MsgBoxResult.Yes Then
Return
End If
End If
'//이대상파일의 summay를 먼저 생성하고 하위폴더를 추가로 생성한다.
Dim summaryCur As New ArinSetting.ArinSetting(Summary.FullName)
summaryCur.CreateFile()
summaryCur.Data("file", "count") = files.Length.ToString()
Dim filelist As String = ""
For Each fi As System.IO.FileInfo In files
filelist += "," + fi.Name
Next
summaryCur.Data("file", "list") = filelist
Dim 하위폴더() As System.IO.DirectoryInfo = di.GetDirectories()
summaryCur.Data("subdir", "count") = 하위폴더.Length.ToString()
Dim 하위폴더목록 As String = ""
For Each subdr As System.IO.DirectoryInfo In 하위폴더
하위폴더목록 += "," + subdr.Name
Next
summaryCur.Data("subdir", "list") = 하위폴더목록
summaryCur.Save()
MsgBox("캐쉬파일(Summary.txt)이 생성되었습니다" + vbCrLf + _
"폴더내에 하위폴더가 있다면 해당 폴더도 개별 생성해야합니다", MsgBoxStyle.Information, "확인")
End If
End Sub
Private Sub C1Ribbon1_RibbonEvent(sender As System.Object, e As C1.Win.C1Ribbon.RibbonEventArgs) Handles C1Ribbon1.RibbonEvent
End Sub
Private Sub MDiMain_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
If e.KeyCode = Keys.F12 AndAlso e.Control Then
If ETCLOGIN.ShowDialog = System.Windows.Forms.DialogResult.OK Then
' Me.bt_others.Visible = True
IsPro = True
Else
IsPro = False
End If
End If
End Sub
End Class