No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

新甘特圖模板.vb 66KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835
  1. Imports System.Drawing.Drawing2D
  2. Imports System.Globalization
  3. Imports System.IO
  4. Imports Telerik.WinControls
  5. Imports Telerik.WinControls.Taskbar.Core
  6. Imports Telerik.WinControls.UI
  7. Public Class 新甘特圖模板
  8. Dim ESTR, 檔名, 下載檔案位置1, 下載檔案位置2 As String
  9. Dim RI As Integer = -1
  10. Dim SK As String = "要查找的 KEY"
  11. Dim Str As String = Application.StartupPath
  12. Dim 可加進度, 暫停計算, 放大 As Boolean
  13. Dim EDR As Integer
  14. DIM 對話框(31) As String
  15. Private Sub Set_合約清單()
  16. Dim ds6 As New DataSet : 合約_dgv.DataSource = Nothing : ds6.Clear()
  17. 合約_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  18. 合約_dgv.ColumnHeadersHeight = 25 : 合約_dgv.AllowUserToAddRows = False
  19. PA = 關鍵字搜尋_tb.Text : PA46 = 合約編號1_cb.Text : PA47 = 工程期1_ch.Text
  20. SQL_合約清單1()
  21. da.Fill(ds6) : 合約_dgv.DataSource = ds6.Tables(0) : conn.Close()
  22. 合約_dgv.Columns(0).FillWeight = 80 : 合約_dgv.Columns(5).FillWeight = 200 : 合約_dgv.Columns(26).FillWeight = 50
  23. 合約_dgv.Columns(27).FillWeight = 50 : 合約_dgv.Columns(28).FillWeight = 50
  24. For i As Integer = 1 To 29 : 合約_dgv.Columns(i).Visible = False : Next
  25. 合約_dgv.Columns(5).Visible = True : 合約_dgv.Columns(26).Visible = True : 合約_dgv.Columns(27).Visible = True : 合約_dgv.Columns(28).Visible = True
  26. End Sub
  27. Private Sub Set_進度清單()
  28. Dim ds5 As New DataSet : 合約2_dgv.DataSource = Nothing : ds5.Clear()
  29. 合約2_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  30. 合約2_dgv.ColumnHeadersHeight = 25 : 合約2_dgv.AllowUserToAddRows = False
  31. PA = 關鍵字搜尋_tb.Text : PA46 = 合約編號1_cb.Text : PA45 = 工程執行主管_cb.Text
  32. SQL_進度清單()
  33. da.Fill(ds5) : 合約2_dgv.DataSource = ds5.Tables(0) : conn.Close()
  34. 合約2_dgv.Columns(1).Visible = False : 合約2_dgv.Columns(2).Visible = False : 合約2_dgv.Columns(3).Visible = False : 合約2_dgv.Columns(4).Visible = False
  35. 合約2_dgv.Columns(5).Visible = False : 合約2_dgv.Columns(6).Visible = False : 合約2_dgv.Columns(7).Visible = False : 合約2_dgv.Columns(8).Visible = False
  36. 合約2_dgv.Columns(9).Visible = False : 合約2_dgv.Columns(10).Visible = False
  37. 合約2_dgv.Columns(0).ReadOnly = True
  38. If 系統語言 = "繁體中文" Then
  39. 合約2_dgv.Columns(表頭(1)).FillWeight = 250
  40. If 放大 = True Then : 合約2_dgv.Columns(表頭(1)).Visible = True : 合約2_dgv.Columns(表頭(2)).Visible = False
  41. Else : 合約2_dgv.Columns(表頭(1)).Visible = False : 合約2_dgv.Columns(表頭(2)).Visible = False : End If
  42. Else
  43. 合約2_dgv.Columns(表頭(2)).FillWeight = 250
  44. If 放大 = True Then : 合約2_dgv.Columns(表頭(1)).Visible = False : 合約2_dgv.Columns(表頭(2)).Visible = True
  45. Else : 合約2_dgv.Columns(表頭(1)).Visible = False : 合約2_dgv.Columns(表頭(2)).Visible = False : End If
  46. End If
  47. '--------移到錨定地點--------------------------------------------------------------------------------------------------------------------------------------------------------------
  48. If 合約編號_tb.Text <> "" Then : Dim searchString As String = 合約編號_tb.Text
  49. For Each row As DataGridViewRow In 合約2_dgv.Rows
  50. If row.Cells(表頭(0)).Value IsNot Nothing AndAlso row.Cells(表頭(0)).Value.ToString() = searchString Then : 合約2_dgv.CurrentCell = row.Cells(表頭(0)) : Exit For : End If
  51. Next
  52. End If
  53. If Panel2.Visible = False Then
  54. Panel2.Visible = True : Panel4.Location = New System.Drawing.Point(162, 0) : Panel4.Size = New System.Drawing.Point(Panel4.Size.Width - 162, Panel4.Size.Height)
  55. 甘特圖_gv.Ratio = 565 / 甘特圖_gv.Size.Width
  56. End If
  57. End Sub
  58. Private Sub Set_未建立進度清單()
  59. Dim ds5 As New DataSet : 未建清單_dgv.DataSource = Nothing : ds5.Clear()
  60. 未建清單_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  61. 未建清單_dgv.ColumnHeadersHeight = 25 : 未建清單_dgv.AllowUserToAddRows = False
  62. PA = 關鍵字搜尋_tb.Text : PA46 = 合約編號1_cb.Text : PA45 = 工程執行主管_cb.Text
  63. SQL未建立甘特圖清單()
  64. da.Fill(ds5) : 未建清單_dgv.DataSource = ds5.Tables(0) : conn.Close()
  65. 未建清單_dgv.Columns(1).Visible = False : 未建清單_dgv.Columns(2).Visible = False : 未建清單_dgv.Columns(3).Visible = False : 未建清單_dgv.Columns(4).Visible = False
  66. 未建清單_dgv.Columns(5).Visible = False : 未建清單_dgv.Columns(6).Visible = False : 未建清單_dgv.Columns(7).Visible = False : 未建清單_dgv.Columns(8).Visible = False
  67. 未建清單_dgv.Columns(9).Visible = False : 未建清單_dgv.Columns(10).Visible = False : 未建清單_dgv.Columns(11).Visible = False
  68. 未建清單_dgv.Columns(0).ReadOnly = True
  69. For i As Integer = 0 To 未建清單_dgv.Rows.Count - 1
  70. If Strings.Left(未建清單_dgv("乙方", i).Value.ToString, 2) = "HX" Then : 未建清單_dgv("乙方", i).Value = "HX" : Else : 未建清單_dgv("乙方", i).Value = "PGS" : End If
  71. Dim strA As String = 未建清單_dgv("開始日期", i).Value.ToString : Dim dateA As Date = Date.ParseExact(strA, "yyyy/MM/dd", DateTimeFormatInfo.InvariantInfo)
  72. Dim days As Integer = 未建清單_dgv("工期", i).Value.ToString : Dim newDate As Date = dateA.AddDays(days) : 未建清單_dgv("結束日期", i).Value = newDate.ToString("yyyy/MM/dd")
  73. 未建清單_dgv("間距", i).Value = "月"
  74. Next
  75. If 系統語言 = "繁體中文" Then
  76. 未建清單_dgv.Columns(表頭(1)).FillWeight = 250 : 未建清單_dgv.Columns(表頭(1)).Visible = True : 未建清單_dgv.Columns(表頭(2)).Visible = False
  77. Else
  78. 未建清單_dgv.Columns(表頭(2)).FillWeight = 250 : 未建清單_dgv.Columns(表頭(1)).Visible = False : 未建清單_dgv.Columns(表頭(2)).Visible = True
  79. End If
  80. End Sub
  81. Private Sub 甲方條件下拉清單讀取()
  82. SQL合約條件讀取() : 合約編號1_cb.Items.Clear() : 合約編號1_cb.Items.Add("") : While (dr.Read()) : 合約編號1_cb.Items.Add(dr("約號甲方")) : End While : conn.Close()
  83. End Sub
  84. Private Sub 執行主管下拉清單讀取()
  85. SQL執行主管下拉() : 帳號_cb.Items.Clear() : 職稱_cb.Items.Clear() : 工程執行主管_cb.Items.Clear()
  86. 帳號_cb.Items.Add("") : 職稱_cb.Items.Add("") : 工程執行主管_cb.Items.Add("")
  87. While (dr.Read()) : 帳號_cb.Items.Add(dr("帳號")) : 職稱_cb.Items.Add(dr("職稱")) : 工程執行主管_cb.Items.Add(dr("姓名")) : End While : conn.Close()
  88. End Sub
  89. Private Sub Set_語言()
  90. 語言_dgv.DataSource = Nothing
  91. 語言_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  92. 語言_dgv.ColumnHeadersHeight = 25
  93. 語言_dgv.AllowUserToAddRows = False
  94. For i As Integer = 0 To 語言_dgv.Rows.Count - 1 : 語言_dgv.Rows.RemoveAt(0) : Next
  95. If File.Exists(Str + "\LANGUAGE_FILE.csv") Then
  96. Dim filereader = My.Computer.FileSystem.OpenTextFileReader(Str + "\LANGUAGE_FILE.csv", System.Text.Encoding.Default)
  97. Dim line As String = filereader.ReadLine()
  98. While Not (line Is Nothing)
  99. line = filereader.ReadLine()
  100. If line <> Nothing Then
  101. line = line.Replace("""", "")
  102. If Strings.Left(line, 4) = "G000" Or Strings.Left(line, 8) = "H001-108" Or Strings.Left(line, 8) = "H110-118" Or Strings.Left(line, 4) = 介面 Then
  103. If 系統語言 = "繁體中文" Then
  104. If Strings.Mid(line, 10, 2) = "CH" Then : 語言_dgv.Rows.Insert(0)
  105. 語言_dgv.Rows(0).Cells(0).Value = Strings.Left(line, 11)
  106. If Strings.Mid(line, 13, 300).EndsWith(",") Then
  107. 語言_dgv.Rows(0).Cells(1).Value = Strings.Mid(line, 13, 300).Substring(0, Strings.Mid(line, 13, 300).Length - 1)
  108. Else : 語言_dgv.Rows(0).Cells(1).Value = Strings.Mid(line, 13, 300) : End If
  109. End If
  110. ElseIf 系統語言 = "English" Then
  111. If Strings.Mid(line, 10, 2) = "EN" Then : 語言_dgv.Rows.Insert(0)
  112. 語言_dgv.Rows(0).Cells(0).Value = Strings.Left(line, 11)
  113. If Strings.Mid(line, 13, 300).EndsWith(",") Then
  114. 語言_dgv.Rows(0).Cells(1).Value = Strings.Mid(line, 13, 300).Substring(0, Strings.Mid(line, 13, 300).Length - 1)
  115. Else : 語言_dgv.Rows(0).Cells(1).Value = Strings.Mid(line, 13, 300) : End If
  116. End If
  117. ElseIf 系統語言 = "Indonesian" Then
  118. If Strings.Mid(line, 10, 2) = "IN" Then : 語言_dgv.Rows.Insert(0)
  119. 語言_dgv.Rows(0).Cells(0).Value = Strings.Left(line, 11)
  120. If Strings.Mid(line, 13, 300).EndsWith(",") Then
  121. 語言_dgv.Rows(0).Cells(1).Value = Strings.Mid(line, 13, 300).Substring(0, Strings.Mid(line, 13, 300).Length - 1)
  122. Else : 語言_dgv.Rows(0).Cells(1).Value = Strings.Mid(line, 13, 300) : End If
  123. End If
  124. End If
  125. End If
  126. End If
  127. End While
  128. filereader.Close()
  129. End If
  130. End Sub
  131. Private Sub Set_語言查詢()
  132. RI = -1 : For Each row As DataGridViewRow In 語言_dgv.Rows
  133. If Strings.Left(row.Cells(0).Value.ToString(), 8) = SK Then
  134. RI = row.Index : Exit For
  135. End If
  136. Next
  137. End Sub
  138. Private Sub 語言轉換讀取()
  139. Set_語言()
  140. SK = "H001-108" : Set_語言查詢() : Me.Text = 語言_dgv(1, RI).Value.ToString : SK = "G000-108" : Set_語言查詢() : ToolTip1.ToolTipTitle = 語言_dgv(1, RI).Value.ToString
  141. SK = "G000-198" : Set_語言查詢() : 對話框(0) = 語言_dgv(1, RI).Value.ToString : SK = "G000-113" : Set_語言查詢() : 對話框(1) = 語言_dgv(1, RI).Value.ToString
  142. SK = "H401-100" : Set_語言查詢() : 對話框(2) = 語言_dgv(1, RI).Value.ToString : SK = "H401-101" : Set_語言查詢() : 對話框(3) = 語言_dgv(1, RI).Value.ToString
  143. SK = "H401-102" : Set_語言查詢() : 對話框(4) = 語言_dgv(1, RI).Value.ToString : SK = "H401-103" : Set_語言查詢() : 對話框(5) = 語言_dgv(1, RI).Value.ToString
  144. SK = "H401-104" : Set_語言查詢() : 對話框(6) = 語言_dgv(1, RI).Value.ToString : SK = "H401-105" : Set_語言查詢() : 對話框(7) = 語言_dgv(1, RI).Value.ToString
  145. SK = "H401-106" : Set_語言查詢() : 對話框(8) = 語言_dgv(1, RI).Value.ToString : SK = "H401-107" : Set_語言查詢() : 對話框(9) = 語言_dgv(1, RI).Value.ToString
  146. SK = "G000-199" : Set_語言查詢() : 對話框(10) = 語言_dgv(1, RI).Value.ToString : SK = "G000-110" : Set_語言查詢() : 對話框(11) = 語言_dgv(1, RI).Value.ToString
  147. SK = "H401-108" : Set_語言查詢() : Label7.Text = 語言_dgv(1, RI).Value.ToString : SK = "H110-118" : Set_語言查詢() : Label40.Text = 語言_dgv(1, RI).Value.ToString
  148. SK = "H401-109" : Set_語言查詢() : Label1.Text = 語言_dgv(1, RI).Value.ToString : SK = "G000-200" : Set_語言查詢() : Label6.Text = 語言_dgv(1, RI).Value.ToString
  149. SK = "H401-110" : Set_語言查詢() : Label2.Text = 語言_dgv(1, RI).Value.ToString : SK = "H401-116" : Set_語言查詢() : 對話框(30) = 語言_dgv(1, RI).Value.ToString
  150. SK = "H401-111" : Set_語言查詢() : Label5.Text = 語言_dgv(1, RI).Value.ToString : SK = "G000-201" : Set_語言查詢() : Label8.Text = 語言_dgv(1, RI).Value.ToString
  151. SK = "H401-112" : Set_語言查詢() : Label3.Text = 語言_dgv(1, RI).Value.ToString : SK = "H401-113" : Set_語言查詢() : Label4.Text = 語言_dgv(1, RI).Value.ToString
  152. SK = "H401-114" : Set_語言查詢() : 高級編輯_lb.Text = 語言_dgv(1, RI).Value.ToString : SK = "G000-118" : Set_語言查詢() : 對話框(12) = 語言_dgv(1, RI).Value.ToString
  153. SK = "G000-202" : Set_語言查詢() : 對話框(13) = 語言_dgv(1, RI).Value.ToString : SK = "G000-203" : Set_語言查詢() : 對話框(14) = 語言_dgv(1, RI).Value.ToString
  154. SK = "G000-204" : Set_語言查詢() : 對話框(15) = 語言_dgv(1, RI).Value.ToString : SK = "G000-205" : Set_語言查詢() : 對話框(16) = 語言_dgv(1, RI).Value.ToString
  155. SK = "G000-206" : Set_語言查詢() : 對話框(17) = 語言_dgv(1, RI).Value.ToString : SK = "G000-207" : Set_語言查詢() : 對話框(18) = 語言_dgv(1, RI).Value.ToString
  156. SK = "G000-208" : Set_語言查詢() : 對話框(19) = 語言_dgv(1, RI).Value.ToString : SK = "G000-209" : Set_語言查詢() : 對話框(20) = 語言_dgv(1, RI).Value.ToString
  157. SK = "G000-210" : Set_語言查詢() : 對話框(21) = 語言_dgv(1, RI).Value.ToString : SK = "G000-211" : Set_語言查詢() : 對話框(22) = 語言_dgv(1, RI).Value.ToString
  158. SK = "G000-212" : Set_語言查詢() : 對話框(23) = 語言_dgv(1, RI).Value.ToString : SK = "G000-119" : Set_語言查詢() : 對話框(24) = 語言_dgv(1, RI).Value.ToString
  159. SK = "H401-115" : Set_語言查詢() : 對話框(25) = 語言_dgv(1, RI).Value.ToString : SK = "G000-213" : Set_語言查詢() : 對話框(26) = 語言_dgv(1, RI).Value.ToString
  160. SK = "G000-214" : Set_語言查詢() : 對話框(27) = 語言_dgv(1, RI).Value.ToString : SK = "G000-120" : Set_語言查詢() : 對話框(28) = 語言_dgv(1, RI).Value.ToString
  161. SK = "G000-126" : Set_語言查詢() : 對話框(29) = 語言_dgv(1, RI).Value.ToString : SK = "G000-215" : Set_語言查詢() : 表頭(1) = 語言_dgv(1, RI).Value.ToString
  162. SK = "G000-216" : Set_語言查詢() : 表頭(2) = 語言_dgv(1, RI).Value.ToString : SK = "H401-117" : Set_語言查詢() : 對話框(31) = 語言_dgv(1, RI).Value.ToString
  163. SK = "G000-156" : Set_語言查詢() : Label379.Text = 語言_dgv(1, RI).Value.ToString : 表頭(0) = 語言_dgv(1, RI).Value.ToString
  164. End Sub
  165. Private Sub 縮放2_bt_MouseEnter(sender As Object, e As EventArgs) Handles 縮放2_bt.MouseEnter
  166. ToolTip1.SetToolTip(Me.縮放2_bt, 對話框(0))
  167. End Sub
  168. Private Sub 縮放1_bt_MouseEnter(sender As Object, e As EventArgs) Handles 縮放1_bt.MouseEnter
  169. ToolTip1.SetToolTip(Me.縮放1_bt, 對話框(0))
  170. End Sub
  171. Private Sub 查詢_bt_MouseEnter(sender As Object, e As EventArgs) Handles 查詢_bt.MouseEnter
  172. ToolTip1.SetToolTip(Me.查詢_bt, 對話框(1))
  173. End Sub
  174. Private Sub 新增主項_bt_MouseEnter(sender As Object, e As EventArgs) Handles 新增主項_bt.MouseEnter
  175. ToolTip1.SetToolTip(Me.新增主項_bt, 對話框(2))
  176. End Sub
  177. Private Sub 創建甘特圖_bt_MouseEnter(sender As Object, e As EventArgs) Handles 創建甘特圖_bt.MouseEnter
  178. ToolTip1.SetToolTip(Me.創建甘特圖_bt, 對話框(3))
  179. End Sub
  180. Private Sub 刪除項目_bt_MouseEnter(sender As Object, e As EventArgs) Handles 刪除項目_bt.MouseEnter
  181. ToolTip1.SetToolTip(Me.刪除項目_bt, 對話框(4))
  182. End Sub
  183. Private Sub 新增子項1_bt_MouseEnter(sender As Object, e As EventArgs) Handles 新增子項1_bt.MouseEnter
  184. ToolTip1.SetToolTip(Me.新增子項1_bt, 對話框(5))
  185. End Sub
  186. Private Sub 新增子項2_bt_MouseEnter(sender As Object, e As EventArgs) Handles 新增子項2_bt.MouseEnter
  187. ToolTip1.SetToolTip(Me.新增子項2_bt, 對話框(6))
  188. End Sub
  189. Private Sub 新增標點1_bt_MouseEnter(sender As Object, e As EventArgs) Handles 新增標點1_bt.MouseEnter
  190. ToolTip1.SetToolTip(Me.新增標點1_bt, 對話框(7))
  191. End Sub
  192. Private Sub 新增標點2_bt_MouseEnter(sender As Object, e As EventArgs) Handles 新增標點2_bt.MouseEnter
  193. ToolTip1.SetToolTip(Me.新增標點2_bt, 對話框(8))
  194. End Sub
  195. Private Sub 進度表刪除_bt_MouseEnter(sender As Object, e As EventArgs) Handles 進度表刪除_bt.MouseEnter
  196. ToolTip1.SetToolTip(Me.進度表刪除_bt, 對話框(9))
  197. End Sub
  198. Private Sub 導出_bt_MouseEnter(sender As Object, e As EventArgs) Handles 導出_bt.MouseEnter
  199. ToolTip1.SetToolTip(Me.導出_bt, 對話框(10))
  200. End Sub
  201. Private Sub 存檔_bt_MouseEnter(sender As Object, e As EventArgs) Handles 存檔_bt.MouseEnter
  202. ToolTip1.SetToolTip(Me.存檔_bt, 對話框(11))
  203. End Sub
  204. Private Sub 新甘特圖模板_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  205. Me.MdiParent = HX_PGS_ERP_SYS : Me.WindowState = 2 : Me.AutoScroll = True : HX_PGS_ERP_SYS.WindowState = 2
  206. H(401) = True : 介面 = "H401" : 語言轉換讀取() : 顯示說明(999, False)
  207. 視窗2_pl.Visible = False : Panel1.SendToBack()
  208. If CInt(登入人級別) <= 3 Then : 進度表刪除_bt.Enabled = True : 工程執行主管_cb.Enabled = True
  209. ElseIf CInt(登入人級別) > 3 Then : 進度表刪除_bt.Enabled = False : 工程執行主管_cb.Enabled = False : End If
  210. End Sub
  211. Private Sub 新甘特圖模板_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
  212. 執行主管下拉清單讀取() : 甲方條件下拉清單讀取() : Set_合約清單() : Set_進度清單() : 新甘特圖模板_Siz()
  213. End Sub
  214. Private Sub 新甘特圖模板_Closed(sender As Object, e As EventArgs) Handles MyBase.Closed
  215. MyMod.虛擬桌面開啟()
  216. End Sub
  217. Private Sub 新甘特圖模板_SizeChanged(sender As Object, e As EventArgs) Handles MyBase.SizeChanged
  218. 新甘特圖模板_Siz() : 甘特圖_gv.Ratio = 565 / 甘特圖_gv.Size.Width
  219. End Sub
  220. Private Sub 新甘特圖模板_Siz()
  221. MyMod.清單字體大小調整()
  222. 合約_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", HX_PGS_ERP_SYS.字體_NUD.Value)
  223. 合約2_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", HX_PGS_ERP_SYS.字體_NUD.Value)
  224. End Sub
  225. Private Sub 語轉扭_bt_Click(sender As Object, e As EventArgs) Handles 語轉扭_bt.Click
  226. H(401) = True : 介面 = "H401" : 語言轉換讀取() : Set_進度清單() : Set_未建立進度清單()
  227. End Sub
  228. Private Sub 未建清單_dgv_CellClick(ByVal sender As System.Object, ByVal e As DataGridViewCellEventArgs) Handles 未建清單_dgv.CellClick
  229. If e.RowIndex = -1 Then : Else : 暫停計算 = True
  230. 合約編號_cb.Text = 未建清單_dgv("乙方", e.RowIndex).Value.ToString : 合約編號1_tb.Text = 未建清單_dgv("甲方", e.RowIndex).Value.ToString
  231. 合約編號2_tb.Text = 未建清單_dgv("立約號", e.RowIndex).Value.ToString : 合約編號3_tb.Text = 未建清單_dgv("序號", e.RowIndex).Value.ToString
  232. 合約編號_tb.Text = 未建清單_dgv(表頭(0), e.RowIndex).Value.ToString : 工程名稱_中_tb.Text = 未建清單_dgv(表頭(1), e.RowIndex).Value.ToString
  233. 工程名稱_英_tb.Text = 未建清單_dgv(表頭(2), e.RowIndex).Value.ToString : 工程執行主管_cb.Text = 未建清單_dgv("項目負責", e.RowIndex).Value.ToString
  234. 開始日期_dtp.Value = 未建清單_dgv("開始日期", e.RowIndex).Value.ToString : 結束日期_dtp.Value = 未建清單_dgv("結束日期", e.RowIndex).Value.ToString
  235. 暫停計算 = False : 時間區間計算() : 可加進度 = True
  236. 新建甘特圖() : 新增主項_bt.PerformClick() : 新增主項_bt.PerformClick() : 新增主項_bt.PerformClick()
  237. End If
  238. End Sub
  239. Private Sub 合約2_dgv_CellClick(ByVal sender As System.Object, ByVal e As DataGridViewCellEventArgs) Handles 合約2_dgv.CellClick
  240. If e.RowIndex = -1 Then : Else : 暫停計算 = True
  241. If 放大 = True Then : 縮放2_bt.PerformClick() : End If
  242. 合約編號_cb.Text = 合約2_dgv("乙方", e.RowIndex).Value.ToString : 合約編號1_tb.Text = 合約2_dgv("甲方", e.RowIndex).Value.ToString
  243. 合約編號2_tb.Text = 合約2_dgv("立約號", e.RowIndex).Value.ToString : 合約編號3_tb.Text = 合約2_dgv("序號", e.RowIndex).Value.ToString
  244. 合約編號_tb.Text = 合約2_dgv(表頭(0), e.RowIndex).Value.ToString : 工程名稱_中_tb.Text = 合約2_dgv(表頭(1), e.RowIndex).Value.ToString
  245. If 合約2_dgv("間距", e.RowIndex).Value.ToString = "天" Then : 天_ch.Checked = True : 周_ch.Checked = False : 月_ch.Checked = False
  246. ElseIf 合約2_dgv("間距", e.RowIndex).Value.ToString = "周" Then : 天_ch.Checked = False : 周_ch.Checked = True : 月_ch.Checked = False
  247. ElseIf 合約2_dgv("間距", e.RowIndex).Value.ToString = "月" Then : 天_ch.Checked = False : 周_ch.Checked = False : 月_ch.Checked = True : End If
  248. 暫停計算 = False : 時間區間計算() : 可加進度 = True
  249. Dim ds1 As New DataSet
  250. PA5 = 合約編號_tb.Text : ds1.Clear() : SQL_工程進度表讀取() : da.Fill(ds1)
  251. 下載檔案位置1 = Str + "\" & PA5 & "_Items.csv"
  252. 下載檔案位置2 = Str + "\" & PA5 & "_Links.csv"
  253. If 下載檔案位置1 <> "" Then : If File.Exists(下載檔案位置1) Then : File.Delete(下載檔案位置1) : End If : End If
  254. If 下載檔案位置2 <> "" Then : If File.Exists(下載檔案位置2) Then : File.Delete(下載檔案位置2) : End If : End If
  255. If ds1.Tables(0).Rows.Count > 0 Then
  256. If IsDBNull(ds1.Tables(0).Rows(0).Item("清單")) = False Then
  257. Dim imgData1() As Byte : imgData1 = ds1.Tables(0).Rows(0).Item("清單")
  258. Dim imgData2() As Byte : imgData2 = ds1.Tables(0).Rows(0).Item("連線")
  259. Dim fs1 As FileStream : fs1 = File.Create(Str + "\" & PA5 & "_Items.csv", imgData1.Length - 1)
  260. Dim fs2 As FileStream : fs2 = File.Create(Str + "\" & PA5 & "_Links.csv", imgData2.Length - 1)
  261. fs1.Write(imgData1, 0, imgData1.Length - 1) : fs1.Close()
  262. fs2.Write(imgData2, 0, imgData2.Length - 1) : fs2.Close()
  263. 檔名 = 合約編號_tb.Text
  264. 設定清單_dgv.DataSource = Nothing : 清單_dgv.DataSource = Nothing
  265. 連線清單_dgv.Rows.Clear() : 甘特圖_gv.GanttViewElement.SelectedItem = Nothing
  266. 甘特圖_gv.Links.Clear() : 連線清單_dgv.Rows.Clear() : 甘特圖_gv.GanttViewElement.SelectedItem = Nothing
  267. 載入Itemcsv內容() : 載入Linkcsv內容() : 載入甘特圖()
  268. If 設定清單_dgv.Rows.Count > 0 Then : 載入Links() : End If
  269. Else : 新建甘特圖() : 新增主項_bt.PerformClick() : 新增主項_bt.PerformClick() : 新增主項_bt.PerformClick() : End If
  270. End If : conn.Close()
  271. If 下載檔案位置1 <> "" Then : If File.Exists(下載檔案位置1) Then : File.Delete(下載檔案位置1) : End If : End If
  272. If 下載檔案位置2 <> "" Then : If File.Exists(下載檔案位置2) Then : File.Delete(下載檔案位置2) : End If : End If
  273. Panel2.Visible = False : Panel4.Location = New System.Drawing.Point(0, 0) : Panel4.Size = New System.Drawing.Point(Panel4.Size.Width + 162, Panel4.Size.Height)
  274. 甘特圖_gv.Ratio = 565 / 甘特圖_gv.Size.Width
  275. 開始日期_dtp.Value = 合約2_dgv("開始日期", e.RowIndex).Value.ToString : 結束日期_dtp.Value = 合約2_dgv("結束日期", e.RowIndex).Value.ToString
  276. 工程名稱_英_tb.Text = 合約2_dgv(表頭(2), e.RowIndex).Value.ToString : 工程執行主管_cb.Text = 合約2_dgv("項目負責", e.RowIndex).Value.ToString
  277. End If
  278. End Sub
  279. Private Sub 時間區間計算()
  280. If 天_ch.Checked = True Then : 間距_nud.Value = DateDiff("d", 開始日期_dtp.Value, 結束日期_dtp.Value)
  281. If 間距_nud.Value > 55 Then : 天_ch.Checked = False : 周_ch.Checked = True : 月_ch.Checked = False
  282. 間距_nud.Value = DateDiff("ww", 開始日期_dtp.Value, 結束日期_dtp.Value) : End If
  283. ElseIf 周_ch.Checked = True Then : 間距_nud.Value = DateDiff("ww", 開始日期_dtp.Value, 結束日期_dtp.Value)
  284. If 間距_nud.Value > 55 Then : 天_ch.Checked = False : 周_ch.Checked = False : 月_ch.Checked = True
  285. 間距_nud.Value = DateDiff("m", 開始日期_dtp.Value, 結束日期_dtp.Value) : End If
  286. ElseIf 月_ch.Checked = True Then : 間距_nud.Value = DateDiff("m", 開始日期_dtp.Value, 結束日期_dtp.Value) : End If
  287. End Sub
  288. Private Sub 新建甘特圖()
  289. 設定清單_dgv.DataSource = Nothing : 清單_dgv.DataSource = Nothing
  290. 連線清單_dgv.Rows.Clear() : 甘特圖_gv.GanttViewElement.SelectedItem = Nothing
  291. 載入甘特圖() : If 設定清單_dgv.Rows.Count > 0 Then : 載入Links() : End If
  292. End Sub
  293. Private Sub 創建甘特圖_bt_Click(sender As Object, e As EventArgs) Handles 創建甘特圖_bt.Click
  294. Dim XD As Integer = Me.Size.Width : XD = (XD - 750) / 2 : Dim YD As Integer = Me.Size.Height : YD = (YD - 583) / 2
  295. If 視窗2_pl.Visible = False Then
  296. 視窗2_pl.Location = New System.Drawing.Point(XD, YD) : 視窗2_pl.BringToFront() : 視窗2_pl.Visible = True : Set_未建立進度清單()
  297. Else : 視窗2_pl.Visible = False : End If
  298. End Sub
  299. Private Sub CanceL2_bt_Click(sender As Object, e As EventArgs) Handles CanceL2_bt.Click
  300. If 視窗2_pl.Visible = False Then : 視窗2_pl.Visible = True : 視窗2_pl.BringToFront() : Else
  301. 視窗2_pl.Visible = False : End If
  302. End Sub
  303. Private Sub 合約編號1_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 合約編號1_cb.SelectedIndexChanged
  304. Set_合約清單() : Set_進度清單()
  305. End Sub
  306. Private Sub 工程執行主管_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 工程執行主管_cb.SelectedIndexChanged
  307. 帳號_cb.SelectedIndex = 工程執行主管_cb.SelectedIndex : 職稱_cb.SelectedIndex = 工程執行主管_cb.SelectedIndex : Set_進度清單()
  308. End Sub
  309. Private Sub 縮放2_bt_Click(sender As Object, e As EventArgs) Handles 縮放2_bt.Click
  310. Dim NX, NY, NX1, NY1 As Integer : NX = 合約2_dgv.Size.Width : NY = 合約2_dgv.Size.Height : NX1 = Panel2.Size.Width : NY1 = Panel2.Size.Height
  311. If 系統語言 = "繁體中文" Then
  312. 合約2_dgv.Columns(表頭(1)).FillWeight = 250
  313. If 放大 = True Then
  314. 合約2_dgv.Size = New System.Drawing.Point(NX - 400, NY) : 放大 = False : 合約2_dgv.Columns(表頭(1)).Visible = False : 合約2_dgv.Columns(表頭(2)).Visible = False
  315. Panel2.Size = New System.Drawing.Point(NX1 - 400, NY1)
  316. Else
  317. 合約2_dgv.Size = New System.Drawing.Point(NX + 400, NY) : 放大 = True : 合約2_dgv.Columns(表頭(1)).Visible = True : 合約2_dgv.Columns(表頭(2)).Visible = False
  318. Panel2.Size = New System.Drawing.Point(NX1 + 400, NY1)
  319. End If
  320. Else
  321. 合約2_dgv.Columns(表頭(2)).FillWeight = 250
  322. If 放大 = True Then
  323. 合約2_dgv.Size = New System.Drawing.Point(NX - 400, NY) : 放大 = False : 合約2_dgv.Columns(表頭(1)).Visible = False : 合約2_dgv.Columns(表頭(2)).Visible = False
  324. Panel2.Size = New System.Drawing.Point(NX1 - 400, NY1)
  325. Else
  326. 合約2_dgv.Size = New System.Drawing.Point(NX + 400, NY) : 放大 = True : 合約2_dgv.Columns(表頭(1)).Visible = False : 合約2_dgv.Columns(表頭(2)).Visible = True
  327. Panel2.Size = New System.Drawing.Point(NX1 + 400, NY1)
  328. End If
  329. End If
  330. End Sub
  331. Private Sub 載入CSV檔()
  332. 項目清單_dgv.AllowUserToAddRows = False : 項目清單_dgv.AllowUserToDeleteRows = False : 項目清單_dgv.AllowUserToResizeRows = False
  333. 項目清單_dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill : 項目清單_dgv.ReadOnly = True : 項目清單_dgv.RowHeadersVisible = False
  334. 項目清單_dgv.Columns.Add("File Name", "File Name") : Dim fileNames() As String = Directory.GetFiles("./GanttView", "*.csv")
  335. For Each fileName As String In fileNames
  336. Dim name As String = Path.GetFileNameWithoutExtension(fileName).Split("_"c)(0)
  337. If Not 項目清單_dgv.Rows.Cast(Of DataGridViewRow)().Any(Function(row) row.Cells("File Name").Value = name) Then : Dim row As String() = {name} : 項目清單_dgv.Rows.Add(row) : End If
  338. Next
  339. End Sub
  340. Private Sub 載入甘特圖()
  341. 甘特圖_gv.Items.Clear() : 甘特圖_gv.Columns.Clear()
  342. '新增表格表頭
  343. Dim titleColumn As New GanttViewTextViewColumn("Title") : Dim startColumn As New GanttViewTextViewColumn("Start") : Dim endColumn As New GanttViewTextViewColumn("End")
  344. Me.甘特圖_gv.GanttViewElement.Columns.Add(titleColumn) : Me.甘特圖_gv.GanttViewElement.Columns.Add(startColumn) : Me.甘特圖_gv.GanttViewElement.Columns.Add(endColumn)
  345. Me.甘特圖_gv.GanttViewElement.Columns("Title").HeaderText = 對話框(30)
  346. Me.甘特圖_gv.GanttViewElement.Columns("Start").HeaderText = Label1.Text
  347. Me.甘特圖_gv.GanttViewElement.Columns("End").HeaderText = Label2.Text
  348. '甘特圖時間指標設定
  349. Dim todayIndicator As GanttViewTodayIndicatorElement = Me.甘特圖_gv.GanttViewElement.GraphicalViewElement.TodayIndicatorElement
  350. todayIndicator.BackColor = Color.Red : todayIndicator.BackColor2 = Color.Red
  351. Dim timelineTodayIndicator As GanttViewTimelineTodayIndicatorElement = Me.甘特圖_gv.GanttViewElement.GraphicalViewElement.TimelineTodayIndicatorElement
  352. timelineTodayIndicator.BackColor = Color.Green : timelineTodayIndicator.BackColor2 = Color.Green
  353. If 清單_dgv.Rows.Count > 0 Then
  354. 開始日期_dtp.Value = 清單_dgv.Rows(0).Cells(1).Value.ToString() : 結束日期_dtp.Value = 清單_dgv.Rows(清單_dgv.Rows.Count - 1).Cells(2).Value.ToString()
  355. For i As Integer = 0 To 清單_dgv.Rows.Count - 1
  356. Dim progress As Double = 清單_dgv.Rows(i).Cells(3).Value.ToString()
  357. Dim item As New GanttViewDataItem With {
  358. .Start = 清單_dgv.Rows(i).Cells(1).Value.ToString(),
  359. .End = 清單_dgv.Rows(i).Cells(2).Value.ToString(),
  360. .Progress = progress,
  361. .Title = 清單_dgv.Rows(i).Cells(0).Value.ToString()
  362. }
  363. Dim parentTitle As String = 清單_dgv.Rows(i).Cells(5).Value.ToString() : Dim level As Integer = CInt(清單_dgv.Rows(i).Cells(6).Value.ToString())
  364. If level = 1 Then : If parentTitle = "Nothing" Then : Me.甘特圖_gv.Items.Add(item) : End If
  365. ElseIf level = 2 Then : Dim parentIndex As Integer = -1
  366. For m As Integer = 0 To 甘特圖_gv.Items.Count - 1 : If 甘特圖_gv.Items(m).Title = parentTitle Then : parentIndex = m : End If : Next
  367. If parentIndex <> -1 Then : 甘特圖_gv.Items(parentIndex).Items.Add(item) : End If
  368. ElseIf level = 3 Then
  369. For Each rootItem As GanttViewDataItem In 甘特圖_gv.Items
  370. For Each childItem As GanttViewDataItem In rootItem.Items
  371. If childItem.Title = parentTitle Then : 甘特圖_gv.Items(rootItem.Index).Items(childItem.Index).Items.Add(item) : End If
  372. Next
  373. Next
  374. ElseIf level = 4 Then
  375. Dim parentItems = From rootItem In 甘特圖_gv.Items
  376. From childItem In rootItem.Items
  377. From grandchildItem In childItem.Items
  378. Where grandchildItem.Title = parentTitle
  379. Select New With {
  380. .RootIndex = rootItem.Index,
  381. .ChildIndex = childItem.Index,
  382. .GrandchildIndex = grandchildItem.Index
  383. }
  384. For Each parentItem In parentItems : 甘特圖_gv.Items(parentItem.RootIndex).Items(parentItem.ChildIndex).Items(parentItem.GrandchildIndex).Items.Add(item) : Next
  385. ElseIf level = 5 Then
  386. Dim parentItems = From rootItem In 甘特圖_gv.Items
  387. From childItem In rootItem.Items
  388. From grandchildItem In childItem.Items
  389. From fivechildItem In grandchildItem.Items
  390. Where fivechildItem.Title = parentTitle
  391. Select New With {
  392. .RootIndex = rootItem.Index,
  393. .ChildIndex = childItem.Index,
  394. .GrandchildIndex = grandchildItem.Index,
  395. .FiveChildIndex = fivechildItem.Index
  396. }
  397. For Each parentItem In parentItems
  398. 甘特圖_gv.Items(parentItem.RootIndex).Items(parentItem.ChildIndex).Items(parentItem.GrandchildIndex).Items(parentItem.FiveChildIndex).Items.Add(item)
  399. Next
  400. End If
  401. Next
  402. Else : End If
  403. 甘特圖_gv.GanttViewElement.GraphicalViewElement.OnePixelTime = New TimeSpan(0, 50, 0)
  404. Me.甘特圖_gv.GanttViewElement.Columns(0).Width = 300 : Me.甘特圖_gv.GanttViewElement.Columns(1).Width = 130 : Me.甘特圖_gv.GanttViewElement.Columns(2).Width = 130
  405. End Sub
  406. Private Sub 載入Links()
  407. For i As Integer = 0 To 設定清單_dgv.Rows.Count - 1
  408. Dim linkItem As New GanttViewLinkDataItem With {
  409. .StartItem = FindItemByTitle(甘特圖_gv.Items, 設定清單_dgv.Rows(i).Cells(0).Value.ToString()),
  410. .EndItem = FindItemByTitle(甘特圖_gv.Items, 設定清單_dgv.Rows(i).Cells(1).Value.ToString())
  411. }
  412. If 設定清單_dgv.Rows(i).Cells(2).Value.ToString() = "FinishToFinish" Then : linkItem.LinkType = 0
  413. ElseIf 設定清單_dgv.Rows(i).Cells(2).Value.ToString() = "FinishToStart" Then : linkItem.LinkType = 1
  414. ElseIf 設定清單_dgv.Rows(i).Cells(2).Value.ToString() = "StartToFinish" Then : linkItem.LinkType = 2
  415. Else : linkItem.LinkType = 3 : End If : Me.甘特圖_gv.Links.Add(linkItem)
  416. Next
  417. End Sub
  418. Private Function FindItemByTitle(items As GanttViewDataItemCollection, title As String) As GanttViewDataItem
  419. For Each item In items
  420. If item.Title = title Then : Return item : End If : Dim childItem = FindItemByTitle(item.Items, title) : If childItem IsNot Nothing Then : Return childItem : End If
  421. Next : Return Nothing
  422. End Function
  423. Private Sub 開始日期_rdtp_ValueChanged(sender As Object, e As EventArgs) Handles 開始日期_dtp.ValueChanged
  424. If 結束日期_dtp.Value >= 開始日期_dtp.Value Then
  425. 甘特圖_gv.GanttViewElement.GraphicalViewElement.TimelineStart = 開始日期_dtp.Value : 甘特圖_gv.GanttViewElement.GraphicalViewElement.TimelineEnd = 結束日期_dtp.Value
  426. End If
  427. End Sub
  428. Private Sub 結束日期_rdtp_ValueChanged(sender As Object, e As EventArgs) Handles 結束日期_dtp.ValueChanged
  429. If 結束日期_dtp.Value >= 開始日期_dtp.Value Then
  430. 甘特圖_gv.GanttViewElement.GraphicalViewElement.TimelineStart = 開始日期_dtp.Value : 甘特圖_gv.GanttViewElement.GraphicalViewElement.TimelineEnd = 結束日期_dtp.Value
  431. End If
  432. End Sub
  433. Private Sub 項目清單_dgv_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles 項目清單_dgv.CellClick
  434. If e.RowIndex = -1 Then : Else : 檔名 = 項目清單_dgv.Rows(e.RowIndex).Cells(0).Value.ToString()
  435. 甘特圖_gv.Links.Clear() : 連線清單_dgv.Rows.Clear() : 甘特圖_gv.GanttViewElement.SelectedItem = Nothing : 載入Itemcsv內容() : 載入Linkcsv內容() : 載入甘特圖()
  436. If 設定清單_dgv.Rows.Count > 0 Then : 載入Links() : End If
  437. End If
  438. End Sub
  439. Private Sub TraverseItems(ByVal item As GanttViewDataItem, ByVal level As Integer, ItemRows As List(Of String))
  440. Dim itemElement As GanttGraphicalViewBaseItemElement = Me.甘特圖_gv.GanttViewElement.GraphicalViewElement.GetElement(item)
  441. If item.Parent Is Nothing Then
  442. ItemRows.Add(item.Title & "," & item.Start & "," & item.End & "," & item.Progress & "," & item.Index & "," & "Nothing" & "," & item.Level & "," & ColorTranslator.FromHtml(ColorTranslator.ToHtml(itemElement.TaskElement.BackColor)).Name)
  443. Else
  444. ItemRows.Add(item.Title & "," & item.Start & "," & item.End & "," & item.Progress & "," & item.Index & "," & item.Parent.Title & "," & item.Level & "," & ColorTranslator.FromHtml(ColorTranslator.ToHtml(itemElement.TaskElement.BackColor)).Name)
  445. End If
  446. For Each childItem As GanttViewDataItem In item.Items : TraverseItems(childItem, level + 1, ItemRows) : Next
  447. End Sub
  448. Public Class MyRadGanttView
  449. Inherits RadGanttView
  450. Public Sub Export(ByVal path As String)
  451. Dim traverser As New GanttViewTraverser(Me.GanttViewElement) : traverser.TraverseAllItems = True : Dim flatItemsCollection As New List(Of GanttViewDataItem)()
  452. While traverser.MoveNext() : flatItemsCollection.Add(traverser.Current) : End While : Dim height As Single = flatItemsCollection.Count * Me.ItemHeight + Me.HeaderHeight
  453. Dim width As Single = CSng((Me.GanttViewElement.GraphicalViewElement.TimelineBehavior.AdjustedTimelineEnd.AddDays(1) -
  454. Me.GanttViewElement.GraphicalViewElement.TimelineBehavior.AdjustedTimelineStart).TotalSeconds /
  455. CSng(Me.GanttViewElement.GraphicalViewElement.OnePixelTime.TotalSeconds))
  456. Dim columnsWidth As Integer = 0
  457. For Each col As GanttViewTextViewColumn In Me.Columns : If col.Visible Then : columnsWidth += col.Width : End If : Next
  458. width += columnsWidth : Dim bmp As New Bitmap(CInt(width), CInt(height)) : Me.drawArea = New RectangleF(0, 0, columnsWidth, 100)
  459. Using grp As Graphics = Graphics.FromImage(bmp) : grp.FillRectangle(Brushes.White, 0, 0, bmp.Width, bmp.Height) : End Using
  460. MyBase.DrawTextViewAndGraphicalViewToBitmap(bmp) : MyBase.DrawHeaderAndTimelineViewToBitmap(bmp) : bmp.Save(path)
  461. End Sub
  462. End Class
  463. Private Sub 甘特圖_gv_TxtViewCellFormatting(sender As Object, e As GanttViewTextViewCellFormattingEventArgs) Handles 甘特圖_gv.TextViewCellFormatting
  464. e.CellElement.BackColor = Color.White
  465. End Sub
  466. Private Sub 甘特圖_gv_TextViewItemFormatting(sender As Object, e As GanttViewTextViewItemFormattingEventArgs) Handles 甘特圖_gv.TextViewItemFormatting
  467. If (e.Item.Items.Count > 0) Then : e.ItemElement.DrawFill = True : e.ItemElement.BackColor = Color.LightSeaGreen : e.ItemElement.GradientStyle = GradientStyles.Solid
  468. ElseIf (e.Item.Start <> e.Item.End) Then : e.ItemElement.DrawFill = True : e.ItemElement.BackColor = Color.LightYellow : e.ItemElement.GradientStyle = GradientStyles.Solid
  469. Else : e.ItemElement.ResetValue(LightVisualElement.DrawBorderProperty, ValueResetFlags.Local) : e.ItemElement.ResetValue(LightVisualElement.BackColorProperty, ValueResetFlags.Local)
  470. e.ItemElement.ResetValue(LightVisualElement.GradientStyleProperty, ValueResetFlags.Local)
  471. End If
  472. End Sub
  473. Private Sub 甘特圖_gv_TimelineItemFormatting(sender As Object, e As GanttViewTimelineItemFormattingEventArgs) Handles 甘特圖_gv.TimelineItemFormatting
  474. Dim currentCulture As CultureInfo = CultureInfo.CurrentCulture
  475. Dim weekNo As Integer = currentCulture.Calendar.GetWeekOfYear(e.Item.Start, currentCulture.DateTimeFormat.CalendarWeekRule, currentCulture.DateTimeFormat.FirstDayOfWeek)
  476. Dim color1 As Color = Color.Black : Dim color2 As Color = Color.White : If weekNo Mod 2 = 0 Then : color1 = Color.White : color2 = Color.Black : End If
  477. e.ItemElement.TopElement.DrawFill = True : e.ItemElement.TopElement.DrawBorder = False : e.ItemElement.TopElement.GradientStyle = GradientStyles.Solid
  478. e.ItemElement.TopElement.BackColor = color1 : e.ItemElement.TopElement.ForeColor = color2 : e.ItemElement.Size = New Size(e.ItemElement.Size.Width, 60)
  479. End Sub
  480. Private Sub 甘特圖_gv_GraphicalViewItemFormatting(sender As Object, e As GanttViewGraphicalViewItemFormattingEventArgs) Handles 甘特圖_gv.GraphicalViewItemFormatting
  481. For i As Integer = 0 To 連線清單_dgv.Rows.Count - 2
  482. Dim startItem2 As GanttViewDataItem = FindItemByTitle(甘特圖_gv.Items, 連線清單_dgv.Rows(i).Cells(0).Value.ToString())
  483. Dim endItem2 As GanttViewDataItem = FindItemByTitle(甘特圖_gv.Items, 連線清單_dgv.Rows(i).Cells(1).Value.ToString())
  484. If startItem2 IsNot Nothing AndAlso endItem2 IsNot Nothing Then
  485. If startItem2.Title.Contains("New Item") Or endItem2.Title.Contains("New Item") Then : Else
  486. If endItem2.Start < startItem2.End Then
  487. Dim totalDuration As TimeSpan = endItem2.End - endItem2.Start : endItem2.Start = startItem2.End : endItem2.End = endItem2.Start + totalDuration
  488. End If
  489. End If
  490. End If
  491. Next
  492. For Each row In 清單_dgv.Rows
  493. If row.Cells(0).Value.ToString() = e.Item.Title Then : e.ItemElement.TaskElement.BackColor = Color.FromName(row.Cells(7).Value.ToString()) : Exit For : End If
  494. Next
  495. End Sub
  496. Private Sub 甘特圖_gv_GraphicalViewLinkItemFormatting(sender As Object, e As GanttViewLinkItemFormattingEventArgs) Handles 甘特圖_gv.GraphicalViewLinkItemFormatting
  497. Dim penColor As Color = Color.Black : Dim dash As DashStyle = DashStyle.Solid
  498. Select Case e.Link.LinkType
  499. Case TasksLinkType.FinishToFinish : dash = DashStyle.DashDotDot : penColor = Color.Red : Exit Select
  500. Case TasksLinkType.FinishToStart : dash = DashStyle.Dash : penColor = Color.Green : Exit Select
  501. Case TasksLinkType.StartToFinish : dash = DashStyle.DashDot : penColor = Color.Blue : Exit Select
  502. Case TasksLinkType.StartToStart : dash = DashStyle.Dot : penColor = Color.Black : Exit Select
  503. End Select
  504. Dim pen As New Pen(penColor) : pen.DashStyle = dash : pen.Width = 3 : pen.LineJoin = LineJoin.Bevel : pen.EndCap = LineCap.ArrowAnchor : e.Pen = pen
  505. End Sub
  506. Private Sub 甘特圖_gv_ToolTipTextNeeded(sender As Object, e As ToolTipTextNeededEventArgs) Handles 甘特圖_gv.ToolTipTextNeeded
  507. Dim taskElement As GanttViewTaskElement = TryCast(sender, GanttViewTaskElement)
  508. Dim mileStone As GanttViewMilestoneElement = TryCast(sender, GanttViewMilestoneElement)
  509. Dim summaryItem As GanttViewSummaryElement = TryCast(sender, GanttViewSummaryElement)
  510. If mileStone IsNot Nothing Then
  511. Dim itemElement As GanttViewMilestoneItemElement = TryCast(mileStone.Parent, GanttViewMilestoneItemElement)
  512. e.ToolTipText = itemElement.Data.Title & " : " & itemElement.Data.Start.ToShortDateString() & " - " + itemElement.Data.[End].ToShortDateString()
  513. End If
  514. If summaryItem IsNot Nothing Then
  515. Dim itemElement As GanttGraphicalViewBaseItemElement = TryCast(summaryItem.Parent, GanttGraphicalViewBaseItemElement)
  516. e.ToolTipText = itemElement.Data.Title & " : " & itemElement.Data.Start.ToShortDateString() & " - " + itemElement.Data.[End].ToShortDateString()
  517. End If
  518. If taskElement IsNot Nothing Then
  519. Dim itemElement As GanttGraphicalViewBaseItemElement = TryCast(taskElement.Parent, GanttGraphicalViewBaseItemElement)
  520. If itemElement IsNot Nothing Then
  521. e.ToolTipText = itemElement.Data.Title & " : " & itemElement.Data.Start.ToShortDateString() & " - " + itemElement.Data.[End].ToShortDateString()
  522. End If
  523. End If
  524. End Sub
  525. Private Sub 甘特圖_gv_SelectedItemChanged(sender As Object, e As GanttViewSelectedItemChangedEventArgs) Handles 甘特圖_gv.SelectedItemChanged
  526. If 甘特圖_gv.SelectedItem IsNot Nothing AndAlso 甘特圖_gv.SelectedItem.Progress.ToString() <> "" Then
  527. 進度_nud.Value = 甘特圖_gv.SelectedItem.Progress
  528. End If
  529. End Sub
  530. Private Sub 甘特圖_gv_LinkAdding(sender As Object, e As GanttViewLinkAddingEventArgs) Handles 甘特圖_gv.LinkAdding '==========連線環狀判斷、是否往後移動判斷=======
  531. Dim startItem As GanttViewDataItem = e.Link.StartItem : Dim endItem As GanttViewDataItem = e.Link.EndItem
  532. If CheckCircularDependency(startItem, endItem) Then : e.Cancel = True : End If ' 檢查新增的連結是否會形成環狀
  533. If IsNothing(startItem.Title) = False Then
  534. If startItem.Title.Contains("<New Item>") Or endItem.Title.Contains("<New Item>") Or startItem.Title.Contains("<New Child>") Or
  535. endItem.Title.Contains("<New Child>") Or startItem.Title.Contains("<New Milestone>") Or endItem.Title.Contains("<New Milestone>") Then : e.Cancel = True
  536. End If
  537. If e.Cancel = False Then
  538. If endItem.Start <= startItem.End And e.Link.LinkType = TasksLinkType.FinishToStart Then
  539. Dim totalDuration As TimeSpan = endItem.End - endItem.Start : endItem.Start = startItem.End : endItem.End = endItem.Start + totalDuration
  540. End If
  541. Dim row() As String = {startItem.Title, endItem.Title, e.Link.LinkType.ToString} : 連線清單_dgv.Rows.Add(row)
  542. End If
  543. End If
  544. End Sub
  545. Private Sub 甘特圖_gv_LinkRemove(sender As Object, e As GanttViewLinkRemovedEventArgs) Handles 甘特圖_gv.LinkRemoved
  546. For Each row In 連線清單_dgv.Rows
  547. If row.Cells(0).Value.ToString() = e.Link.StartItem.Title And row.Cells(1).Value.ToString() = e.Link.EndItem.Title And
  548. row.Cells(2).Value.ToString() = e.Link.LinkType.ToString() Then : 連線清單_dgv.Rows.Remove(row) : Exit For
  549. End If
  550. Next
  551. End Sub
  552. Private Sub 甘特圖_gv_ItemAdded(sender As Object, e As GanttViewItemAddedEventArgs) Handles 甘特圖_gv.ItemAdded
  553. If e.Item.Level >= 6 Then : 甘特圖_gv.SelectedItem.Items.Remove(e.Item) : End If
  554. End Sub
  555. Private Function CheckCircularDependency(startItem As GanttViewDataItem, endItem As GanttViewDataItem) As Boolean
  556. For Each link As GanttViewLinkDataItem In 甘特圖_gv.Links ' 檢查已經存在的連結是否和當前新增的連結形成環狀
  557. If link.StartItem Is endItem AndAlso link.EndItem Is startItem Then : Return True
  558. ElseIf link.EndItem Is startItem AndAlso CheckCircularDependency(link.StartItem, endItem) Then : Return True : End If
  559. Next : Return False
  560. End Function
  561. Private Sub 進度條_rtb_ValueChanged(sender As Object, e As EventArgs) Handles 進度條_rtb.ValueChanged
  562. Me.甘特圖_gv.GanttViewElement.GraphicalViewElement.OnePixelTime = New TimeSpan(0, CInt(Fix(Me.進度條_rtb.Value)), 0)
  563. End Sub
  564. Private Sub 載入Itemcsv內容()
  565. Try
  566. Dim dt As New DataTable() : Dim filePath As String = Str + "\" & 檔名 & "_Items.csv"
  567. If File.Exists(filePath) Then
  568. Using reader As New StreamReader(filePath) : Dim headers() As String = reader.ReadLine().Split(","c)
  569. For Each header As String In headers : dt.Columns.Add(header) : Next
  570. While Not reader.EndOfStream : Dim row() As String = reader.ReadLine().Split(","c) : dt.Rows.Add(row) : End While
  571. End Using
  572. End If
  573. 清單_dgv.AllowUserToAddRows = False : 清單_dgv.AllowUserToDeleteRows = False : 清單_dgv.AllowUserToResizeRows = False
  574. 清單_dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill : 清單_dgv.ReadOnly = True : 清單_dgv.RowHeadersVisible = False : 清單_dgv.DataSource = dt
  575. For i As Integer = 0 To 清單_dgv.Rows.Count - 1
  576. If Strings.Left(清單_dgv.Rows(i).Cells("Color").Value.ToString(), 1) = "L" Then : Else
  577. 清單_dgv.Rows(i).Cells("Color").Value = "LightGray"
  578. End If
  579. Next
  580. Catch ex As Exception : MGB(對話框(31), 1) : End Try
  581. End Sub
  582. Private Sub 載入Linkcsv內容()
  583. Dim dt As New DataTable() : Dim filePath As String = Str + "\" & 檔名 & "_Links.csv"
  584. If File.Exists(filePath) Then
  585. Using reader As New StreamReader(filePath) : Dim headers() As String = reader.ReadLine().Split(","c)
  586. For Each header As String In headers : dt.Columns.Add(header) : Next
  587. While Not reader.EndOfStream : Dim row() As String = reader.ReadLine().Split(","c) : dt.Rows.Add(row) : End While
  588. End Using
  589. End If
  590. 設定清單_dgv.AllowUserToAddRows = False : 設定清單_dgv.AllowUserToDeleteRows = False : 設定清單_dgv.AllowUserToResizeRows = False
  591. 設定清單_dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill : 設定清單_dgv.ReadOnly = True : 設定清單_dgv.RowHeadersVisible = False : 設定清單_dgv.DataSource = dt
  592. End Sub
  593. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles 導出_bt.Click
  594. Dim sfd As New SaveFileDialog()
  595. sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
  596. sfd.Filter = "PNG檔案 (*.png)|*.png" : sfd.FileName = 合約編號_tb.Text & ".png" '取得存檔路徑
  597. If sfd.ShowDialog() = DialogResult.OK Then '在這裡進行檔案存檔的程式碼
  598. Dim saveFilePath As String = sfd.FileName
  599. 甘特圖_gv.Export(saveFilePath) : MGB(對話框(29), 1)
  600. End If
  601. End Sub
  602. Private Sub 新增主項_bt_Click(sender As Object, e As EventArgs) Handles 新增主項_bt.Click
  603. Dim newItem As New GanttViewDataItem() : newItem.Start = 開始日期_dtp.Value : newItem.End = 開始日期_dtp.Value.AddDays(3)
  604. newItem.Title = "<New Item>" : 甘特圖_gv.Items.Add(newItem)
  605. End Sub
  606. Private Sub 工程進度表檔案更新()
  607. 檔名 = 合約編號_tb.Text
  608. 下載檔案位置1 = Str + "\" & 檔名 & "_Items.csv"
  609. 下載檔案位置2 = Str + "\" & 檔名 & "_Links.csv"
  610. If 下載檔案位置1 <> "" Then : If File.Exists(下載檔案位置1) Then : File.Delete(下載檔案位置1) : End If : End If
  611. If 下載檔案位置2 <> "" Then : If File.Exists(下載檔案位置2) Then : File.Delete(下載檔案位置2) : End If : End If
  612. '==========Links.csv==================
  613. Dim filePath As String = Str + "\" & 檔名 & "_Links.csv" : Dim LinkRows As New List(Of String)()
  614. For i As Integer = 0 To 甘特圖_gv.Links.Count - 1
  615. LinkRows.Add(甘特圖_gv.Links(i).StartItem.Title & "," & 甘特圖_gv.Links(i).EndItem.Title & "," & 甘特圖_gv.Links(i).LinkType.ToString())
  616. Next
  617. File.WriteAllText(filePath, "StartItem, EndItem, LinkType" & Environment.NewLine)
  618. File.AppendAllLines(filePath, LinkRows)
  619. '============Items.csv===============
  620. filePath = Str + "\" & 檔名 & "_Items.csv" : Dim ItemRows As New List(Of String)()
  621. For Each rootItem As GanttViewDataItem In 甘特圖_gv.Items : TraverseItems(rootItem, 0, ItemRows) : Next
  622. File.WriteAllText(filePath, "Title,Start,End,Progress,index,Parent,Level,Color" & Environment.NewLine)
  623. File.AppendAllLines(filePath, ItemRows)
  624. '========
  625. 載入Itemcsv內容() : 載入Linkcsv內容()
  626. PA49 = 下載檔案位置1 : PA1 = 合約編號_tb.Text : SQL_工程責任表_新增檔案1()
  627. PA49 = 下載檔案位置2 : PA1 = 合約編號_tb.Text : SQL_工程責任表_新增檔案2()
  628. If 下載檔案位置1 <> "" Then : If File.Exists(下載檔案位置1) Then : File.Delete(下載檔案位置1) : End If : End If
  629. If 下載檔案位置2 <> "" Then : If File.Exists(下載檔案位置2) Then : File.Delete(下載檔案位置2) : End If : End If
  630. End Sub
  631. Private Sub 進度表刪除_bt_Click(sender As Object, e As EventArgs) Handles 進度表刪除_bt.Click
  632. If 合約編號_tb.Text = "" Then : MGB(對話框(25), 1) : Else
  633. MGB(對話框(26), 2)
  634. If 訊息回應 = "YES" Then
  635. INB(對話框(27)) : PA = 訊息回應
  636. If PA = "YES" Then : PA = 合約編號_tb.Text
  637. SQL_工程進度表_刪除總表2() : SQL_工程進度表_刪除總表1() : SQL_工程進度表_刪除總表3() : MGB(對話框(28), 1) : Set_進度清單()
  638. End If
  639. End If
  640. End If
  641. End Sub
  642. Private Sub 存檔_bt_Click(sender As Object, e As EventArgs) Handles 存檔_bt.Click
  643. Dim 合約編號條件 As Boolean = True
  644. If 合約編號_cb.Text = "" Then : MGB(對話框(13), 1) : 合約編號條件 = False : End If
  645. If 合約編號1_tb.Text = "" Then : MGB(對話框(14), 1) : 合約編號條件 = False : Else
  646. Dim d As Int32
  647. For index = 0 To 合約編號1_tb.Text.Length - 1
  648. d = Asc(合約編號1_tb.Text(index))
  649. Dim 可能不行 As Boolean = False
  650. If (d < 65 Or d > 90) Then : 可能不行 = True : End If 'c變數若在65~90是大寫的英文字母
  651. If 可能不行 = True Then
  652. If (d < 97 Or d > 122) Then : 可能不行 = True : Else : 可能不行 = False : End If 'c變數若在97~122是小寫的英文字母
  653. If 可能不行 = True Then '然後查表, c變數若在48~57, 表示它是數字,
  654. If (d < 48 Or d > 57) Then : MGB(對話框(15), 1) : 合約編號條件 = False : Exit For : End If
  655. End If
  656. End If
  657. Next
  658. End If
  659. If 合約編號2_tb.Text = "" Then : MGB(對話框(16), 1) : 合約編號條件 = False : End If
  660. Dim c As Int32 '然後查表, c變數若在48~57, 表示它是數字,
  661. For index = 0 To 合約編號2_tb.Text.Length - 1
  662. c = Asc(合約編號2_tb.Text(index))
  663. If c < 48 Or c > 57 Then : MGB(對話框(17), 1) : 合約編號條件 = False : Exit For : Else
  664. If Len(合約編號2_tb.Text) <> 6 Then : MGB(對話框(18), 1) : 合約編號條件 = False : Exit For : End If
  665. End If
  666. Next
  667. If 合約編號3_tb.Text = "" Then : MGB(對話框(19), 1) : 合約編號條件 = False
  668. ElseIf IsNumeric(合約編號3_tb.Text) = False Then : MGB(對話框(20), 1) : 合約編號條件 = False
  669. End If
  670. If 工程執行主管_cb.Text = "" Then : MGB(對話框(21), 1) : 合約編號條件 = False : End If
  671. If 工程名稱_中_tb.Text = "" Then : MGB(對話框(22), 1) : 合約編號條件 = False : End If
  672. If 工程名稱_英_tb.Text = "" Then : MGB(對話框(23), 1) : 合約編號條件 = False : End If
  673. If 合約編號條件 = True Then
  674. SQL_工程責任表_最後一筆資料()
  675. If dr.Read() Then : EDR = Double.Parse(Strings.Right(dr("流水號").ToString, 9)) : Else : EDR = 0 : End If
  676. conn.Close() : EDR += 1
  677. If EDR < 10 Then : ESTR = "PR" & "00000000" & EDR : ElseIf EDR > 9 And EDR < 100 Then : ESTR = "PR" & "0000000" & EDR
  678. ElseIf EDR > 99 And EDR < 1000 Then : ESTR = "PR" & "000000" & EDR : ElseIf EDR > 999 And EDR < 10000 Then : ESTR = "PR" & "00000" & EDR
  679. ElseIf EDR > 9999 And EDR < 100000 Then : ESTR = "PR" & "0000" & EDR : ElseIf EDR > 99999 And EDR < 100000 Then : ESTR = "PR" & "000" & EDR
  680. ElseIf EDR > 999999 And EDR < 1000000 Then : ESTR = "PR" & "00" & EDR : ElseIf EDR > 9999999 And EDR < 10000000 Then : ESTR = "PR" & "0" & EDR
  681. ElseIf EDR > 99999999 Then : ESTR = "PR" & EDR : End If : PA9 = ESTR
  682. PA = 合約編號_tb.Text : PA2 = 工程執行主管_cb.Text : PA3 = 帳號_cb.Text : PA4 = 職稱_cb.Text : PA5 = 工程名稱_中_tb.Text : PA6 = 工程名稱_英_tb.Text
  683. PA7 = Strings.Format(開始日期_dtp.Value, "yyyy/MM/dd") : PA8 = Strings.Format(結束日期_dtp.Value, "yyyy/MM/dd")
  684. If 天_ch.Checked = True Then : PA1 = "天" : ElseIf 周_ch.Checked = True Then : PA1 = "周" : ElseIf 月_ch.Checked = True Then : PA1 = "月" : End If
  685. SQL_工程責任表_資料重複認證()
  686. If dr.Read() Then
  687. SQL_工程責任表_修改資料() : 工程進度表檔案更新() : Set_進度清單() : MGB(對話框(24), 1)
  688. Else
  689. SQL_工程責任表_新增資料() : 工程進度表檔案更新() : Set_進度清單() : MGB(對話框(12), 1)
  690. End If
  691. End If
  692. End Sub
  693. Private Sub 刪除項目_bt_Click(sender As Object, e As EventArgs) Handles 刪除項目_bt.Click
  694. If Not Me.甘特圖_gv.GanttViewElement.SelectedItem Is Nothing Then
  695. Dim children As List(Of GanttViewDataItem) = New List(Of GanttViewDataItem)() : Dim queue As Queue(Of GanttViewDataItem) = New Queue(Of GanttViewDataItem)()
  696. queue.Enqueue(Me.甘特圖_gv.GanttViewElement.SelectedItem)
  697. Do While queue.Count > 0
  698. Dim item As GanttViewDataItem = queue.Dequeue() : children.Add(item)
  699. If Not item.Items Is Nothing AndAlso item.Items.Count > 0 Then : Dim i As Integer = 0
  700. Do While i < item.Items.Count
  701. queue.Enqueue(item.Items(i)) : i += 1
  702. Loop
  703. End If
  704. Loop
  705. Dim j As Integer = 0
  706. Do While j < Me.甘特圖_gv.GanttViewElement.Links.Count
  707. If children.Contains(Me.甘特圖_gv.GanttViewElement.Links(j).StartItem) OrElse children.Contains(Me.甘特圖_gv.GanttViewElement.Links(j).EndItem) Then
  708. Me.甘特圖_gv.GanttViewElement.Links.RemoveAt(j) : Else : j += 1
  709. End If
  710. Loop
  711. If Me.甘特圖_gv.GanttViewElement.SelectedItem.Parent Is Nothing Then : Me.甘特圖_gv.GanttViewElement.Items.Remove(Me.甘特圖_gv.GanttViewElement.SelectedItem)
  712. Else : Me.甘特圖_gv.GanttViewElement.SelectedItem.Parent.Items.Remove(Me.甘特圖_gv.GanttViewElement.SelectedItem) : End If
  713. End If
  714. End Sub
  715. Private Sub 進度_nud_ValueChanged(sender As Object, e As EventArgs) Handles 進度_nud.ValueChanged
  716. If Not Me.甘特圖_gv.GanttViewElement.SelectedItem Is Nothing Then
  717. Dim selectedItem As GanttViewDataItem = Me.甘特圖_gv.GanttViewElement.SelectedItem : selectedItem.Progress = 進度_nud.Value
  718. End If
  719. End Sub
  720. Private Sub 新增子項1_bt_Click(sender As Object, e As EventArgs) Handles 新增子項1_bt.Click
  721. If Not Me.甘特圖_gv.GanttViewElement.SelectedItem Is Nothing Then
  722. Dim newItem As GanttViewDataItem = New GanttViewDataItem() : newItem.Start = Me.甘特圖_gv.GanttViewElement.SelectedItem.Start
  723. newItem.End = Me.甘特圖_gv.GanttViewElement.SelectedItem.End : newItem.Title = "<New Child>"
  724. Me.甘特圖_gv.GanttViewElement.SelectedItem.Items.Insert(0, newItem)
  725. End If
  726. End Sub
  727. Private Sub 新增子項2_bt_Click(sender As Object, e As EventArgs) Handles 新增子項2_bt.Click
  728. If Not Me.甘特圖_gv.GanttViewElement.SelectedItem Is Nothing Then
  729. Dim newItem As GanttViewDataItem = New GanttViewDataItem() : newItem.Start = Me.甘特圖_gv.GanttViewElement.SelectedItem.Start
  730. newItem.End = Me.甘特圖_gv.GanttViewElement.SelectedItem.End : newItem.Title = "<New Child>"
  731. Me.甘特圖_gv.GanttViewElement.SelectedItem.Items.Insert(Me.甘特圖_gv.GanttViewElement.SelectedItem.Items.Count, newItem)
  732. End If
  733. End Sub
  734. Private Sub 新增標點1_bt_Click(sender As Object, e As EventArgs) Handles 新增標點1_bt.Click
  735. If Not Me.甘特圖_gv.GanttViewElement.SelectedItem Is Nothing Then : Dim newItem As GanttViewDataItem = New GanttViewDataItem()
  736. newItem.Start = Me.甘特圖_gv.GanttViewElement.SelectedItem.Start : newItem.End = newItem.Start : newItem.Title = "<New Milestone>"
  737. Me.甘特圖_gv.GanttViewElement.SelectedItem.Items.Insert(0, newItem)
  738. End If
  739. End Sub
  740. Private Sub 新增標點2_bt_Click(sender As Object, e As EventArgs) Handles 新增標點2_bt.Click
  741. If Not Me.甘特圖_gv.GanttViewElement.SelectedItem Is Nothing Then : Dim newItem As GanttViewDataItem = New GanttViewDataItem()
  742. newItem.Start = Me.甘特圖_gv.GanttViewElement.SelectedItem.Start : newItem.End = newItem.Start : newItem.Title = "<New Milestone>"
  743. Me.甘特圖_gv.GanttViewElement.SelectedItem.Items.Insert(Me.甘特圖_gv.GanttViewElement.SelectedItem.Items.Count, newItem)
  744. End If
  745. End Sub
  746. '==========變色按鈕===============
  747. Private Sub 紅色_bt_Click(sender As Object, e As EventArgs) Handles 紅色_bt.Click
  748. If Not Me.甘特圖_gv.GanttViewElement.SelectedItem Is Nothing Then : Dim selectedItem As GanttViewDataItem = Me.甘特圖_gv.GanttViewElement.SelectedItem
  749. Dim itemElement As GanttGraphicalViewBaseItemElement = Me.甘特圖_gv.GanttViewElement.GraphicalViewElement.GetElement(selectedItem)
  750. itemElement.TaskElement.BackColor = Color.LightPink
  751. For Each row In 清單_dgv.Rows
  752. If row.Cells(0).Value.ToString() = 甘特圖_gv.GanttViewElement.SelectedItem.Title Then : row.Cells(7).Value = "LightPink" : Exit For : End If
  753. Next
  754. End If
  755. End Sub
  756. Private Sub 綠色_bt_Click(sender As Object, e As EventArgs) Handles 綠色_bt.Click
  757. If Not Me.甘特圖_gv.GanttViewElement.SelectedItem Is Nothing Then : Dim selectedItem As GanttViewDataItem = Me.甘特圖_gv.GanttViewElement.SelectedItem
  758. Dim itemElement As GanttGraphicalViewBaseItemElement = Me.甘特圖_gv.GanttViewElement.GraphicalViewElement.GetElement(selectedItem)
  759. itemElement.TaskElement.BackColor = Color.LimeGreen
  760. For Each row In 清單_dgv.Rows
  761. If row.Cells(0).Value.ToString() = 甘特圖_gv.GanttViewElement.SelectedItem.Title Then : row.Cells(7).Value = "LimeGreen" : Exit For : End If
  762. Next
  763. End If
  764. End Sub
  765. Private Sub 藍色_bt_Click(sender As Object, e As EventArgs) Handles 藍色_bt.Click
  766. If Not Me.甘特圖_gv.GanttViewElement.SelectedItem Is Nothing Then : Dim selectedItem As GanttViewDataItem = Me.甘特圖_gv.GanttViewElement.SelectedItem
  767. Dim itemElement As GanttGraphicalViewBaseItemElement = Me.甘特圖_gv.GanttViewElement.GraphicalViewElement.GetElement(selectedItem)
  768. itemElement.TaskElement.BackColor = Color.LightSkyBlue
  769. For Each row In 清單_dgv.Rows
  770. If row.Cells(0).Value.ToString() = 甘特圖_gv.GanttViewElement.SelectedItem.Title Then : row.Cells(7).Value = "LightSkyBlue" : Exit For : End If
  771. Next
  772. End If
  773. End Sub
  774. Private Sub 黃色_bt_Click(sender As Object, e As EventArgs) Handles 黃色_bt.Click
  775. If Not Me.甘特圖_gv.GanttViewElement.SelectedItem Is Nothing Then : Dim selectedItem As GanttViewDataItem = Me.甘特圖_gv.GanttViewElement.SelectedItem
  776. Dim itemElement As GanttGraphicalViewBaseItemElement = Me.甘特圖_gv.GanttViewElement.GraphicalViewElement.GetElement(selectedItem)
  777. itemElement.TaskElement.BackColor = Color.LightGoldenrodYellow
  778. For Each row In 清單_dgv.Rows
  779. If row.Cells(0).Value.ToString() = 甘特圖_gv.GanttViewElement.SelectedItem.Title Then : row.Cells(7).Value = "LightGoldenrodYellow" : Exit For : End If
  780. Next
  781. End If
  782. End Sub
  783. Private Sub 縮放1_bt_Click(sender As Object, e As EventArgs) Handles 縮放1_bt.Click
  784. If Panel2.Visible = True Then
  785. Panel2.Visible = False : Panel4.Location = New System.Drawing.Point(0, 0) : Panel4.Size = New System.Drawing.Point(Panel4.Size.Width + 162, Panel4.Size.Height)
  786. 甘特圖_gv.Ratio = 565 / 甘特圖_gv.Size.Width
  787. Else
  788. Panel2.Visible = True : Panel4.Location = New System.Drawing.Point(162, 0) : Panel4.Size = New System.Drawing.Point(Panel4.Size.Width - 162, Panel4.Size.Height)
  789. 甘特圖_gv.Ratio = 565 / 甘特圖_gv.Size.Width
  790. End If
  791. End Sub
  792. Private Sub Panel2_MouseMove(sender As Object, e As MouseEventArgs) Handles Panel2.MouseMove
  793. Dim mousePos As Point = e.Location ' 滑鼠在 Panel 內的位置
  794. Dim panelRect As Rectangle = Panel2.ClientRectangle ' Panel 的邊界
  795. Dim rightRect As New Rectangle(panelRect.Right - 10, panelRect.Top, 10, panelRect.Height) ' Panel 右邊界
  796. If rightRect.Contains(mousePos) Then ' 碰到右邊界,執行事件 C
  797. If Panel2.Visible = True Then
  798. Panel2.Visible = False : Panel4.Location = New System.Drawing.Point(0, 0)
  799. Panel4.Size = New System.Drawing.Point(Panel4.Size.Width + 162, Panel4.Size.Height)
  800. 甘特圖_gv.Ratio = 565 / 甘特圖_gv.Size.Width
  801. End If
  802. End If
  803. End Sub
  804. Private Sub Panel4_MouseMove(sender As Object, e As MouseEventArgs) Handles Panel4.MouseMove
  805. Dim mousePos As Point = e.Location ' 滑鼠在 Panel 內的位置
  806. Dim panelRect As Rectangle = Panel4.ClientRectangle ' Panel 的邊界
  807. Dim leftRect As New Rectangle(panelRect.Left, panelRect.Top, 10, panelRect.Height) ' Panel 左邊界
  808. If leftRect.Contains(mousePos) Then ' 碰到左邊界,執行事件 A
  809. If Panel2.Visible = False Then
  810. Panel2.Visible = True : Panel4.Location = New System.Drawing.Point(162, 0)
  811. Panel4.Size = New System.Drawing.Point(Panel4.Size.Width - 162, Panel4.Size.Height)
  812. 甘特圖_gv.Ratio = 565 / 甘特圖_gv.Size.Width
  813. End If
  814. End If
  815. End Sub
  816. Dim OldX, OldY As Long
  817. Dim drag As Boolean
  818. Private Sub 視窗2_pl_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 視窗2_pl.MouseDown
  819. If e.Button = MouseButtons.Left Then : OldX = e.X : OldY = e.Y : drag = True : End If
  820. End Sub
  821. Private Sub 視窗2_pl_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 視窗2_pl.MouseMove
  822. If drag Then : 視窗2_pl.Left = 視窗2_pl.Left + e.X - OldX : 視窗2_pl.Top = 視窗2_pl.Top + e.Y - OldY : End If
  823. End Sub
  824. Private Sub 視窗2_pl_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 視窗2_pl.MouseUp
  825. drag = False
  826. End Sub
  827. End Class