Keine Beschreibung
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

個人班表.vb 30KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  1. Option Strict Off
  2. Imports System.Drawing.Imaging
  3. Imports System.IO
  4. Imports System.Text.RegularExpressions
  5. Public Class 個人班表
  6. ReadOnly ds, ds1 As New DataSet
  7. Dim X1, XX, XXX, AA As Double
  8. Dim Q, 開始位置1, 開始位置2, 標準長度, 行(31) As Integer
  9. Dim inputString As String
  10. Dim 剛啟動 As Boolean
  11. Private Sub 讀取排班()
  12. Dim ds43 As New DataSet
  13. 人員彙總_dgv.DataSource = Nothing : ds43.Clear()
  14. 人員彙總_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  15. 人員彙總_dgv.ColumnHeadersHeight = 40 : 人員彙總_dgv.AllowUserToAddRows = False
  16. SQL_排班系統_人員排班()
  17. da.Fill(ds43) : 人員彙總_dgv.DataSource = ds43.Tables(0) : conn.Close()
  18. 人員彙總_dgv.Columns(0).ReadOnly = True : 人員彙總_dgv.Columns(1).ReadOnly = True : 人員彙總_dgv.Columns(2).ReadOnly = True
  19. 人員彙總_dgv.Columns(3).ReadOnly = True : 人員彙總_dgv.Columns(4).ReadOnly = True
  20. 人員彙總_dgv.Columns(3).DefaultCellStyle.Format = "#,##0.0"
  21. 人員彙總_dgv.Columns(4).DefaultCellStyle.Format = "#,##0.0"
  22. End Sub
  23. Private Sub 讀取排班資料表()
  24. 排班明細_dgv.DataSource = Nothing : ds1.Clear()
  25. 排班明細_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  26. 排班明細_dgv.ColumnHeadersHeight = 25 : 排班明細_dgv.AllowUserToAddRows = False
  27. SQL_排班系統_個人整月排班()
  28. da.Fill(ds1) : 排班明細_dgv.DataSource = ds1.Tables(0) : conn.Close()
  29. End Sub
  30. Private Sub 讀取星期()
  31. 星期_dgv.DataSource = Nothing : ds.Clear()
  32. 星期_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  33. 星期_dgv.ColumnHeadersHeight = 25 : 星期_dgv.AllowUserToAddRows = False
  34. SQL_排班系統_個人整月星期()
  35. da.Fill(ds) : 星期_dgv.DataSource = ds.Tables(0) : conn.Close()
  36. End Sub
  37. Private Sub 進度條變化(ByVal index As Integer)
  38. If 剛啟動 = True Then
  39. Dim 姓名_tb As TextBox = CType(Me.Controls.Find("姓名_tb" & index, True)(0), TextBox)
  40. Dim 班別_cb As ComboBox = CType(Me.Controls.Find("班別_cb" & index, True)(0), ComboBox)
  41. Dim NumericUpDown As NumericUpDown = CType(Me.Controls.Find("NumericUpDown" & index, True)(0), NumericUpDown)
  42. Dim BUP As NumericUpDown = CType(Me.Controls.Find("BUP" & index, True)(0), NumericUpDown)
  43. Dim ComboBox1 As ComboBox = CType(Me.Controls.Find("ComboBox" & (index * 2 - 1), True)(0), ComboBox)
  44. Dim ComboBox2 As ComboBox = CType(Me.Controls.Find("ComboBox" & (index * 2), True)(0), ComboBox)
  45. Dim CheckBox As CheckBox = CType(Me.Controls.Find("CheckBox" & index, True)(0), CheckBox)
  46. If 姓名_tb.Text <> "" OrElse 班別_cb.Text <> "休" Then
  47. Do2 = NumericUpDown.Value : 班條長度()
  48. ComboBox1.Size = New Size(340 + XXX, 25) : ComboBox2.Size = New Size(340 - XXX, 25)
  49. Do2 = BUP.Value : 班條長度() : ComboBox2.Size = New Size(ComboBox2.Size.Width + XXX, 25)
  50. If Not CheckBox.Checked AndAlso Val(Strings.Left(班別_cb.Text, 2)) < 17 Then : ComboBox2.Visible = True : Else : ComboBox2.Visible = False
  51. End If
  52. End If
  53. End If
  54. End Sub
  55. Private Sub 休息變化(ByVal index As Integer)
  56. If 剛啟動 = True Then ' 取得對應的 ComboBox 和 NumericUpDown 控件
  57. Dim 班別_cb As ComboBox = CType(Me.Controls.Find("班別_cb" & index, True)(0), ComboBox)
  58. Dim NUP As NumericUpDown = CType(Me.Controls.Find("NUP" & index, True)(0), NumericUpDown)
  59. Dim NumericUpDown As NumericUpDown = CType(Me.Controls.Find("NumericUpDown" & index, True)(0), NumericUpDown)
  60. Dim ComboBox1 As ComboBox = CType(Me.Controls.Find("ComboBox" & (index * 2 - 1), True)(0), ComboBox)
  61. Dim ComboBox2 As ComboBox = CType(Me.Controls.Find("ComboBox" & (index * 2), True)(0), ComboBox)
  62. XX = Val(Strings.Left(班別_cb.Text, 2)) * 60 + Val(Strings.Mid(班別_cb.Text, 4, 2)) : 班別圖示計算載入() ' 計算班別開始時間 (轉換成分鐘)
  63. X1 = NUP.Value : Do2 = NumericUpDown.Value ' 取得數值
  64. 休息長度() : 班條長度() ' 計算長度
  65. ComboBox1.Location = New Point(開始位置1 + XX, 行(index)) : ComboBox2.Location = New Point(開始位置2 + XX + X1 + XXX, 行(index)) ' 更新 ComboBox 位置
  66. 進度條變化(index) ' 呼叫對應的進度條方法
  67. End If
  68. End Sub
  69. Private Sub 班別_下拉表單資料載入()
  70. SQL_排班系統_班別_下拉()
  71. For no As Integer = 1 To 31
  72. Dim 班別_cbS As ComboBox = CType(Me.Controls.Find("班別_cb" + no.ToString(), True)(0), ComboBox) : 班別_cbS.Items.Clear()
  73. Next
  74. While (dr.Read())
  75. For no As Integer = 1 To 31
  76. Dim 班別_cbS As ComboBox = CType(Me.Controls.Find("班別_cb" + no.ToString(), True)(0), ComboBox) : 班別_cbS.Items.Add(dr("時段"))
  77. Next
  78. End While : conn.Close()
  79. End Sub
  80. Private Sub 班別圖示計算載入()
  81. XX = (XX - 480) * 1.41666
  82. End Sub
  83. Private Sub 班條長度()
  84. Dim 小時 As Double = 85
  85. If Do2 = 4 Then : XXX = 0 : ElseIf Do2 = 1 Then : XXX = -(小時 * 3) : ElseIf Do2 = 1.5 Then : XXX = -(小時 * 2.5)
  86. ElseIf Do2 = 2 Then : XXX = -(小時 * 2) : ElseIf Do2 = 2.5 Then : XXX = -(小時) + (-(小時 / 2)) : ElseIf Do2 = 3 Then : XXX = -(小時) : ElseIf Do2 = 3.5 Then : XXX = -(小時 / 2)
  87. ElseIf Do2 = 4.5 Then : XXX = 小時 / 2 : ElseIf Do2 = 5 Then : XXX = 小時 : ElseIf Do2 = 5.5 Then : XXX = 小時 + (小時 / 2) : ElseIf Do2 = 6 Then : XXX = 小時 * 2
  88. ElseIf Do2 = 6.5 Then : XXX = 小時 * 2.5 : ElseIf Do2 = 7 Then : XXX = 小時 * 3 : ElseIf Do2 = 7.5 Then : XXX = 小時 * 3.5 : ElseIf Do2 = 8 Then : XXX = 小時 * 4 : End If
  89. End Sub
  90. Private Sub 休息長度()
  91. X1 = (X1 - 1) * 8 * 10
  92. End Sub
  93. Private Sub 個人班表_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  94. 剛啟動 = False
  95. '--------------坐標系設定---------------------------
  96. 開始位置1 = 460 : 開始位置2 = 885 : 標準長度 = 297 : 行(0) = 27
  97. 行(1) = 44 : 行(2) = 行(1) + 行(0) : 行(3) = 行(2) + 行(0) : 行(4) = 行(3) + 行(0) : 行(5) = 行(4) + 行(0) : 行(6) = 行(5) + 行(0) : 行(7) = 行(6) + 行(0) : 行(8) = 行(7) + 行(0)
  98. 行(9) = 行(8) + 行(0) : 行(10) = 行(9) + 行(0) : 行(11) = 行(10) + 行(0) : 行(12) = 行(11) + 行(0) : 行(13) = 行(12) + 行(0) : 行(14) = 行(13) + 行(0) : 行(15) = 行(14) + 行(0)
  99. 行(16) = 行(15) + 行(0) : 行(17) = 行(16) + 行(0) : 行(18) = 行(17) + 行(0) : 行(19) = 行(18) + 行(0) : 行(20) = 行(19) + 行(0) : 行(21) = 行(20) + 行(0) : 行(22) = 行(21) + 行(0)
  100. 行(23) = 行(22) + 行(0) : 行(24) = 行(23) + 行(0) : 行(25) = 行(24) + 行(0) : 行(26) = 行(25) + 行(0) : 行(27) = 行(26) + 行(0) : 行(28) = 行(27) + 行(0) : 行(29) = 行(28) + 行(0)
  101. 行(30) = 行(29) + 行(0) : 行(31) = 行(30) + 行(0)
  102. 人員彙總_dgv.SendToBack() : 年_lb.Text = PA : 月_lb.Text = PA1
  103. 剛啟動 = True
  104. For i As Integer = 1 To 31
  105. Dim tb As TextBox = CType(Me.Controls("姓名_tb" & i), TextBox) : Dim cb As ComboBox = CType(Me.Controls("班別_cb" & i), ComboBox)
  106. If tb IsNot Nothing AndAlso cb IsNot Nothing Then : tb.Tag = i : AddHandler tb.TextChanged, AddressOf 姓名_tb_TextChanged : End If
  107. Next
  108. End Sub
  109. Private Sub 姓名_tb_TextChanged(sender As Object, e As EventArgs)
  110. Dim tb As TextBox = CType(sender, TextBox) : Dim index As Integer = CInt(tb.Tag)
  111. Dim 班別_cb As ComboBox = CType(Me.Controls.Find("班別_cb" & index, True)(0), ComboBox)
  112. Dim cb1 As ComboBox = CType(Me.Controls.Find("ComboBox" & (index * 2 - 1), True)(0), ComboBox)
  113. Dim cb2 As ComboBox = CType(Me.Controls.Find("ComboBox" & (index * 2), True)(0), ComboBox)
  114. If 班別_cb IsNot Nothing AndAlso 班別_cb.Text <> "休" AndAlso tb.Text <> "" Then
  115. If cb1 IsNot Nothing Then cb1.Visible = True : If cb2 IsNot Nothing Then cb2.Visible = True : XX = 0
  116. If 班別_cb.Text = "" Or 班別_cb.Text = "休" Then
  117. If cb1 IsNot Nothing Then cb1.Location = New Point(開始位置1 + XX, 行(index + 1)) : If cb2 IsNot Nothing Then cb2.Location = New Point(開始位置2 + XX, 行(index + 1))
  118. End If : 進度條變化(index + 1)
  119. Else
  120. If cb1 IsNot Nothing Then cb1.Visible = False : If cb2 IsNot Nothing Then cb2.Visible = False
  121. End If
  122. End Sub
  123. Private Sub 個人班表預設()
  124. XX = 0 : Dim Q As Integer
  125. For no As Integer = 1 To 31
  126. Dim 姓名_tbS As TextBox = CType(Me.Controls.Find("姓名_tb" + no.ToString(), True)(0), TextBox)
  127. Dim 班別_cbS As ComboBox = CType(Me.Controls.Find("班別_cb" + no.ToString(), True)(0), ComboBox)
  128. Dim ComboBoxsS1 As ComboBox = CType(Me.Controls.Find("ComboBox" + (no + 62 + Q).ToString(), True)(0), ComboBox)
  129. Dim ComboBoxsS2 As ComboBox = CType(Me.Controls.Find("ComboBox" + (no + 62 + 1 + Q).ToString(), True)(0), ComboBox)
  130. Dim ComboBoxs1 As ComboBox = CType(Me.Controls.Find("ComboBox" + (no + Q).ToString(), True)(0), ComboBox)
  131. Dim ComboBoxs2 As ComboBox = CType(Me.Controls.Find("ComboBox" + (no + 1 + Q).ToString(), True)(0), ComboBox)
  132. Q += 1 : 姓名_tbS.Text = "" : 剛啟動 = False : 班別_cbS.Text = "休" : ComboBoxs1.Visible = False : ComboBoxs2.Visible = False
  133. ComboBoxsS1.SelectedIndex = 0 : ComboBoxsS2.SelectedIndex = 0
  134. Next : 剛啟動 = True
  135. For i As Integer = 1 To 31
  136. Dim cb1 As ComboBox = CType(Me.Controls.Find("ComboBox" & (2 * i - 1), True)(0), ComboBox)
  137. Dim cb2 As ComboBox = CType(Me.Controls.Find("ComboBox" & (2 * i), True)(0), ComboBox)
  138. cb1.Location = New Point(開始位置1 + XX, 行(i)) : cb2.Location = New Point(開始位置2 + XX, 行(i))
  139. Next
  140. End Sub
  141. Private Sub 個人班表_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
  142. 班別_下拉表單資料載入() : 個人班表預設()
  143. PA = 年_lb.Text & "/" & 月_lb.Text : 人員_tb.Text = PA2 : 讀取排班() : 個人班表讀取()
  144. End Sub
  145. Private Sub 個人班表讀取()
  146. 讀取排班資料表() : 讀取星期()
  147. If 排班明細_dgv.Rows.Count > 0 Then : 個人班表預設()
  148. Q = 0 : Dim WW As Integer = 0
  149. For no As Integer = 1 To 31
  150. Dim TextBoxS As TextBox = CType(Me.Controls.Find("TextBox" + no.ToString(), True)(0), TextBox)
  151. Dim TextBoxS1 As TextBox = CType(Me.Controls.Find("TextBox" + (no + 31).ToString(), True)(0), TextBox)
  152. Dim 姓名_tbS As TextBox = CType(Me.Controls.Find("姓名_tb" + no.ToString(), True)(0), TextBox)
  153. Dim 班別_cbS As ComboBox = CType(Me.Controls.Find("班別_cb" + no.ToString(), True)(0), ComboBox)
  154. Dim A_lbS As Label = CType(Me.Controls.Find("A_lb" + no.ToString(), True)(0), Label)
  155. Dim CheckBoxS As CheckBox = CType(Me.Controls.Find("CheckBox" + no.ToString(), True)(0), CheckBox)
  156. Dim NumericUpDownS As NumericUpDown = CType(Me.Controls.Find("NumericUpDown" + no.ToString(), True)(0), NumericUpDown)
  157. Dim NUPS As NumericUpDown = CType(Me.Controls.Find("NUP" + no.ToString(), True)(0), NumericUpDown)
  158. Dim BUPS As NumericUpDown = CType(Me.Controls.Find("BUP" + no.ToString(), True)(0), NumericUpDown)
  159. Dim ComboBoxsS1 As ComboBox = CType(Me.Controls.Find("ComboBox" + (no + 62 + Q).ToString(), True)(0), ComboBox)
  160. Dim ComboBoxsS2 As ComboBox = CType(Me.Controls.Find("ComboBox" + (no + 62 + 1 + Q).ToString(), True)(0), ComboBox)
  161. Dim ComboBoxs1 As ComboBox = CType(Me.Controls.Find("ComboBox" + (no + Q).ToString(), True)(0), ComboBox)
  162. Dim ComboBoxs2 As ComboBox = CType(Me.Controls.Find("ComboBox" + (no + 1 + Q).ToString(), True)(0), ComboBox) : Q += 1
  163. If no - 1 <= 星期_dgv.Rows.Count - 1 Then '班表簽認
  164. TextBoxS.Text = 星期_dgv.Rows(no - 1).Cells("星期").Value
  165. If 星期_dgv.Rows(no - 1).Cells("班表簽認").Value.ToString = "Y" Then : TextBoxS1.Text = "已鎖定" : TextBoxS1.BackColor = Color.PaleGreen
  166. Else : TextBoxS1.Text = "會變動" : TextBoxS1.BackColor = Color.Pink : End If
  167. Else : TextBoxS.Text = "" : End If
  168. If WW <= 排班明細_dgv.Rows.Count - 1 Then
  169. If Val(排班明細_dgv.Rows(WW).Cells("項次").Value.ToString) = Val(A_lbS.Text) Then
  170. If 排班明細_dgv.Rows(WW).Cells("班別").Value.ToString <> "休" Then
  171. ComboBoxs1.Text = 排班明細_dgv.Rows(WW).Cells("一段").Value : ComboBoxs2.Text = 排班明細_dgv.Rows(WW).Cells("二段").Value
  172. ComboBoxsS1.Text = 排班明細_dgv.Rows(WW).Cells("顏色1").Value
  173. ComboBoxsS2.Text = 排班明細_dgv.Rows(WW).Cells("顏色2").Value
  174. NUPS.Value = 排班明細_dgv.Rows(WW).Cells("休息").Value : NumericUpDownS.Value = 排班明細_dgv.Rows(WW).Cells("時數").Value
  175. 姓名_tbS.Text = 排班明細_dgv.Rows(WW).Cells("姓名").Value.ToString
  176. inputString = 班別_cbS.Name : Dim match As Match = Regex.Match(inputString, "\d+$")
  177. If match.Success Then : Dim number As Integer = Integer.Parse(match.Value) : PA3 = number : End If
  178. 班別_cbS.Text = 排班明細_dgv.Rows(WW).Cells("班別").Value.ToString
  179. BUPS.Value = 排班明細_dgv.Rows(WW).Cells("後段").Value : CheckBoxS.Checked = 排班明細_dgv.Rows(WW).Cells("半天").Value : WW += 1
  180. Else
  181. ComboBoxs1.Text = "" : ComboBoxs2.Text = "" : NUPS.Value = 0.5 : NumericUpDownS.Value = 4 : 姓名_tbS.Text = ""
  182. 班別_cbS.Text = "休" : CheckBoxS.Checked = False : WW += 1
  183. End If
  184. Else
  185. ComboBoxs1.Text = "" : ComboBoxs2.Text = "" : NUPS.Value = 0.5 : NumericUpDownS.Value = 4 : 姓名_tbS.Text = ""
  186. 班別_cbS.Text = "休" : CheckBoxS.Checked = False
  187. End If
  188. Else
  189. ComboBoxs1.Text = "" : ComboBoxs2.Text = "" : NUPS.Value = 0.5 : NumericUpDownS.Value = 4 : 姓名_tbS.Text = ""
  190. 班別_cbS.Text = "休" : CheckBoxS.Checked = False
  191. End If
  192. Next
  193. Else : 個人班表預設() : End If
  194. End Sub
  195. Private Sub 截圖_bt_Click(sender As Object, e As EventArgs) Handles 截圖_bt.Click
  196. Dim bm = New Bitmap(Panel1.Width, Panel1.Height) : Panel1.Controls.SetChildIndex(PictureBox1, 0)
  197. Panel1.DrawToBitmap(bm, Panel1.ClientRectangle) : My.Computer.Clipboard.SetImage(bm) : PictureBox1.SendToBack()
  198. If 存檔_ch.Checked = True Then ' 保存圖片到桌面
  199. Dim desktopPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
  200. Dim filePath As String = Path.Combine(desktopPath, 年_lb.Text & 月_lb.Text & 人員_tb.Text & ".png")
  201. bm.Save(filePath, ImageFormat.Png) : MsgBox("已將圖片存檔到桌面!!")
  202. End If
  203. End Sub
  204. Private Sub 日期上移_bt_Click(sender As Object, e As EventArgs) Handles 日期上移_bt.Click
  205. If 月_lb.Text <> 1 Then
  206. 月_lb.Text = CInt(月_lb.Text) - 1
  207. If CInt(月_lb.Text) < 10 Then : 月_lb.Text = "0" & 月_lb.Text : End If
  208. Else
  209. 年_lb.Text = CInt(年_lb.Text) - 1 : 月_lb.Text = 12
  210. If CInt(月_lb.Text) < 10 Then : 月_lb.Text = "0" & 月_lb.Text : End If
  211. End If : PA = 年_lb.Text & "/" & 月_lb.Text : PA2 = 人員_tb.Text : 個人班表讀取()
  212. End Sub
  213. Private Sub 日期下移_bt_Click(sender As Object, e As EventArgs) Handles 日期下移_bt.Click
  214. If 月_lb.Text <> 12 Then
  215. 月_lb.Text = CInt(月_lb.Text) + 1
  216. If CInt(月_lb.Text) < 10 Then : 月_lb.Text = "0" & 月_lb.Text : End If
  217. Else
  218. 年_lb.Text = CInt(年_lb.Text) + 1 : 月_lb.Text = 1
  219. If CInt(月_lb.Text) < 10 Then : 月_lb.Text = "0" & 月_lb.Text : End If
  220. End If : PA = 年_lb.Text & "/" & 月_lb.Text : PA2 = 人員_tb.Text : 個人班表讀取()
  221. End Sub
  222. Private Sub 人員向前_bt_Click(sender As Object, e As EventArgs) Handles 人員向前_bt.Click
  223. For I As Integer = 0 To 人員彙總_dgv.Rows.Count - 1
  224. If 人員_tb.Text = 人員彙總_dgv.Rows(I).Cells("姓名").Value.ToString() Then
  225. If I = 0 Then : MsgBox("已經是第一筆人員資料!!") : Else
  226. 人員_tb.Text = 人員彙總_dgv.Rows(I - 1).Cells("姓名").Value.ToString()
  227. PA = 年_lb.Text & "/" & 月_lb.Text : PA2 = 人員_tb.Text : 個人班表讀取() : Exit Sub
  228. End If
  229. End If
  230. If I = 人員彙總_dgv.Rows.Count - 1 Then
  231. 人員_tb.Text = 人員彙總_dgv.Rows(0).Cells("姓名").Value.ToString()
  232. PA = 年_lb.Text & "/" & 月_lb.Text : PA2 = 人員_tb.Text : 個人班表讀取() : Exit Sub
  233. End If
  234. Next
  235. End Sub
  236. Private Sub 人員向後_bt_Click(sender As Object, e As EventArgs) Handles 人員向後_bt.Click
  237. For I As Integer = 0 To 人員彙總_dgv.Rows.Count - 1
  238. If 人員_tb.Text = 人員彙總_dgv.Rows(I).Cells("姓名").Value.ToString() Then
  239. If I = 人員彙總_dgv.Rows.Count - 1 Then : MsgBox("已經是最後一筆人員資料!!") : Else
  240. 人員_tb.Text = 人員彙總_dgv.Rows(I + 1).Cells("姓名").Value.ToString()
  241. PA = 年_lb.Text & "/" & 月_lb.Text : PA2 = 人員_tb.Text : 個人班表讀取() : Exit Sub
  242. End If
  243. End If
  244. If I = 人員彙總_dgv.Rows.Count - 1 Then
  245. 人員_tb.Text = 人員彙總_dgv.Rows(I).Cells("姓名").Value.ToString()
  246. PA = 年_lb.Text & "/" & 月_lb.Text : PA2 = 人員_tb.Text : 個人班表讀取() : Exit Sub
  247. End If
  248. Next
  249. End Sub
  250. Private Sub 班別_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 班別_cb1.SelectedIndexChanged, 班別_cb2.SelectedIndexChanged, 班別_cb3.SelectedIndexChanged,
  251. 班別_cb4.SelectedIndexChanged, 班別_cb5.SelectedIndexChanged, 班別_cb6.SelectedIndexChanged, 班別_cb7.SelectedIndexChanged, 班別_cb8.SelectedIndexChanged,
  252. 班別_cb9.SelectedIndexChanged, 班別_cb10.SelectedIndexChanged, 班別_cb11.SelectedIndexChanged, 班別_cb12.SelectedIndexChanged, 班別_cb13.SelectedIndexChanged,
  253. 班別_cb14.SelectedIndexChanged, 班別_cb15.SelectedIndexChanged, 班別_cb16.SelectedIndexChanged, 班別_cb17.SelectedIndexChanged, 班別_cb18.SelectedIndexChanged,
  254. 班別_cb19.SelectedIndexChanged, 班別_cb20.SelectedIndexChanged, 班別_cb21.SelectedIndexChanged, 班別_cb22.SelectedIndexChanged, 班別_cb23.SelectedIndexChanged,
  255. 班別_cb24.SelectedIndexChanged, 班別_cb25.SelectedIndexChanged, 班別_cb26.SelectedIndexChanged, 班別_cb27.SelectedIndexChanged, 班別_cb28.SelectedIndexChanged,
  256. 班別_cb29.SelectedIndexChanged, 班別_cb30.SelectedIndexChanged, 班別_cb31.SelectedIndexChanged
  257. If 剛啟動 = True Then
  258. Dim cbIndex As Integer = CInt(sender.Tag) ' 使用 Tag 屬性來識別不同的 ComboBox
  259. If cbIndex = 0 And CInt(PA3) <> 0 Then
  260. Dim CB1 As ComboBox = CType(Me.Controls.Find("ComboBox" & (CInt(PA3) * 2 - 1).ToString(), True)(0), ComboBox)
  261. Dim CB2 As ComboBox = CType(Me.Controls.Find("ComboBox" & (CInt(PA3) * 2).ToString(), True)(0), ComboBox)
  262. If CType(sender, ComboBox).Text <> "休" Then : CB1.Visible = True : CB2.Visible = True : 休息變化(CInt(PA3))
  263. Else : CB1.Visible = False : CB2.Visible = False : End If
  264. Else
  265. Dim CB1 As ComboBox = CType(Me.Controls.Find("ComboBox" & (cbIndex * 2 - 1).ToString(), True)(0), ComboBox)
  266. Dim CB2 As ComboBox = CType(Me.Controls.Find("ComboBox" & (cbIndex * 2).ToString(), True)(0), ComboBox)
  267. If CType(sender, ComboBox).Text <> "休" Then : CB1.Visible = True : CB2.Visible = True : 休息變化(cbIndex)
  268. Else : CB1.Visible = False : CB2.Visible = False : End If
  269. End If : PA3 = "0"
  270. End If
  271. End Sub
  272. Private Sub NUP_ValueChanged(sender As Object, e As EventArgs) Handles NUP1.ValueChanged, NUP2.ValueChanged, NUP3.ValueChanged, NUP4.ValueChanged, NUP5.ValueChanged,
  273. NUP6.ValueChanged, NUP7.ValueChanged, NUP8.ValueChanged, NUP9.ValueChanged, NUP10.ValueChanged, NUP11.ValueChanged, NUP12.ValueChanged, NUP13.ValueChanged,
  274. NUP14.ValueChanged, NUP15.ValueChanged, NUP16.ValueChanged, NUP17.ValueChanged, NUP18.ValueChanged, NUP19.ValueChanged, NUP20.ValueChanged, NUP21.ValueChanged,
  275. NUP22.ValueChanged, NUP23.ValueChanged, NUP24.ValueChanged, NUP25.ValueChanged, NUP26.ValueChanged, NUP27.ValueChanged, NUP28.ValueChanged, NUP29.ValueChanged,
  276. NUP30.ValueChanged, NUP31.ValueChanged
  277. If 剛啟動 = True Then
  278. Dim nup As NumericUpDown = DirectCast(sender, NumericUpDown) : Dim index As Integer = Integer.Parse(nup.Name.Replace("NUP", "")) ' 取得觸發事件的 NumericUpDown
  279. Dim 班別_cb As ComboBox = CType(Me.Controls.Find("班別_cb" & index, True)(0), ComboBox) ' 取得對應的 ComboBox 和 班別_cb 控件
  280. Dim ComboBox1 As ComboBox = CType(Me.Controls.Find("ComboBox" & (index * 2 - 1), True)(0), ComboBox)
  281. Dim ComboBox2 As ComboBox = CType(Me.Controls.Find("ComboBox" & (index * 2), True)(0), ComboBox)
  282. If 班別_cb.Text <> "休" Then : 休息變化(index) : ComboBox1.Visible = True : ComboBox2.Visible = True : Else : ComboBox1.Visible = False : ComboBox2.Visible = False : End If
  283. End If
  284. End Sub
  285. Private Sub BUP_ValueChanged(sender As Object, e As EventArgs) Handles BUP1.ValueChanged, BUP2.ValueChanged, BUP3.ValueChanged, BUP4.ValueChanged, BUP5.ValueChanged,
  286. BUP6.ValueChanged, BUP7.ValueChanged, BUP8.ValueChanged, BUP9.ValueChanged, BUP10.ValueChanged, BUP11.ValueChanged, BUP12.ValueChanged, BUP13.ValueChanged,
  287. BUP14.ValueChanged, BUP15.ValueChanged, BUP16.ValueChanged, BUP17.ValueChanged, BUP18.ValueChanged, BUP19.ValueChanged, BUP20.ValueChanged, BUP21.ValueChanged,
  288. BUP22.ValueChanged, BUP23.ValueChanged, BUP24.ValueChanged, BUP25.ValueChanged, BUP26.ValueChanged, BUP27.ValueChanged, BUP28.ValueChanged, BUP29.ValueChanged,
  289. BUP30.ValueChanged, BUP31.ValueChanged
  290. If 剛啟動 = True Then
  291. Dim bup As NumericUpDown = DirectCast(sender, NumericUpDown) : Dim index As Integer = CInt(bup.Name.Replace("BUP", ""))
  292. Dim txtBox As TextBox = DirectCast(Me.Controls.Find("姓名_tb" & index, True)(0), TextBox)
  293. Dim cmbBox As ComboBox = DirectCast(Me.Controls.Find("班別_cb" & index, True)(0), ComboBox)
  294. If txtBox.Text <> "" AndAlso cmbBox.Text <> "休" Then : 進度條變化(index) : End If
  295. End If
  296. End Sub
  297. Private Sub CheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged,
  298. CheckBox4.CheckedChanged, CheckBox5.CheckedChanged, CheckBox6.CheckedChanged, CheckBox7.CheckedChanged, CheckBox8.CheckedChanged, CheckBox9.CheckedChanged,
  299. CheckBox10.CheckedChanged, CheckBox11.CheckedChanged, CheckBox12.CheckedChanged, CheckBox13.CheckedChanged, CheckBox14.CheckedChanged, CheckBox15.CheckedChanged,
  300. CheckBox16.CheckedChanged, CheckBox17.CheckedChanged, CheckBox18.CheckedChanged, CheckBox19.CheckedChanged, CheckBox20.CheckedChanged, CheckBox21.CheckedChanged,
  301. CheckBox22.CheckedChanged, CheckBox23.CheckedChanged, CheckBox24.CheckedChanged, CheckBox25.CheckedChanged, CheckBox26.CheckedChanged, CheckBox27.CheckedChanged,
  302. CheckBox28.CheckedChanged, CheckBox29.CheckedChanged, CheckBox30.CheckedChanged, CheckBox31.CheckedChanged
  303. If 剛啟動 = True Then
  304. Dim chk As CheckBox = DirectCast(sender, CheckBox) : Dim index As Integer = CInt(chk.Name.Replace("CheckBox", ""))
  305. Dim cmbBox As ComboBox = Me.Controls.Find("班別_cb" & index, True).FirstOrDefault()
  306. If cmbBox IsNot Nothing AndAlso cmbBox.Text <> "休" Then : 休息變化(index) : End If
  307. End If
  308. End Sub
  309. Private Sub NumericUpDown_ValueChanged(sender As Object, e As EventArgs) Handles NumericUpDown1.ValueChanged, NumericUpDown2.ValueChanged, NumericUpDown3.ValueChanged,
  310. NumericUpDown4.ValueChanged, NumericUpDown5.ValueChanged, NumericUpDown6.ValueChanged, NumericUpDown7.ValueChanged, NumericUpDown8.ValueChanged,
  311. NumericUpDown9.ValueChanged, NumericUpDown10.ValueChanged, NumericUpDown11.ValueChanged, NumericUpDown12.ValueChanged, NumericUpDown13.ValueChanged,
  312. NumericUpDown14.ValueChanged, NumericUpDown15.ValueChanged, NumericUpDown16.ValueChanged, NumericUpDown17.ValueChanged, NumericUpDown18.ValueChanged,
  313. NumericUpDown19.ValueChanged, NumericUpDown20.ValueChanged, NumericUpDown21.ValueChanged, NumericUpDown22.ValueChanged, NumericUpDown23.ValueChanged, NumericUpDown24.ValueChanged,
  314. NumericUpDown25.ValueChanged, NumericUpDown26.ValueChanged, NumericUpDown27.ValueChanged, NumericUpDown28.ValueChanged,
  315. NumericUpDown29.ValueChanged, NumericUpDown30.ValueChanged, NumericUpDown31.ValueChanged
  316. If 剛啟動 = True Then
  317. Dim numUpDown As NumericUpDown = DirectCast(sender, NumericUpDown)
  318. Dim index As Integer = CInt(numUpDown.Name.Replace("NumericUpDown", "")) ' 取得對應的索引值
  319. Dim 班別_cb As ComboBox = CType(Me.Controls("班別_cb" & index), ComboBox) ' 找到對應的 ComboBox
  320. If 班別_cb IsNot Nothing AndAlso 班別_cb.Text <> "休" Then : 休息變化(index) : End If
  321. End If
  322. End Sub
  323. Private Sub SetComboBoxBackColor(comboBox As ComboBox, selectedIndex As Integer)
  324. Select Case selectedIndex
  325. Case 1 : comboBox.BackColor = Color.LawnGreen : Case 2 : comboBox.BackColor = Color.LightBlue : Case 3 : comboBox.BackColor = Color.LightCoral
  326. Case 4 : comboBox.BackColor = Color.LightCyan : Case 5 : comboBox.BackColor = Color.LightGoldenrodYellow : Case 6 : comboBox.BackColor = Color.LightGray
  327. Case 7 : comboBox.BackColor = Color.LightGreen : Case 8 : comboBox.BackColor = Color.LightPink : Case 9 : comboBox.BackColor = Color.LightSalmon
  328. Case 0 : comboBox.BackColor = Color.DimGray
  329. End Select
  330. End Sub
  331. Private Sub ComboBox63_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox63.SelectedIndexChanged, ComboBox64.SelectedIndexChanged, ComboBox65.SelectedIndexChanged,
  332. ComboBox66.SelectedIndexChanged, ComboBox67.SelectedIndexChanged, ComboBox68.SelectedIndexChanged, ComboBox69.SelectedIndexChanged, ComboBox70.SelectedIndexChanged,
  333. ComboBox71.SelectedIndexChanged, ComboBox72.SelectedIndexChanged, ComboBox73.SelectedIndexChanged, ComboBox74.SelectedIndexChanged, ComboBox75.SelectedIndexChanged,
  334. ComboBox76.SelectedIndexChanged, ComboBox77.SelectedIndexChanged, ComboBox78.SelectedIndexChanged, ComboBox79.SelectedIndexChanged, ComboBox80.SelectedIndexChanged,
  335. ComboBox81.SelectedIndexChanged, ComboBox82.SelectedIndexChanged, ComboBox83.SelectedIndexChanged, ComboBox84.SelectedIndexChanged, ComboBox85.SelectedIndexChanged,
  336. ComboBox86.SelectedIndexChanged, ComboBox87.SelectedIndexChanged, ComboBox88.SelectedIndexChanged, ComboBox89.SelectedIndexChanged, ComboBox90.SelectedIndexChanged,
  337. ComboBox91.SelectedIndexChanged, ComboBox92.SelectedIndexChanged, ComboBox93.SelectedIndexChanged, ComboBox94.SelectedIndexChanged, ComboBox95.SelectedIndexChanged,
  338. ComboBox96.SelectedIndexChanged, ComboBox97.SelectedIndexChanged, ComboBox98.SelectedIndexChanged, ComboBox99.SelectedIndexChanged, ComboBox100.SelectedIndexChanged,
  339. ComboBox101.SelectedIndexChanged, ComboBox102.SelectedIndexChanged, ComboBox103.SelectedIndexChanged, ComboBox104.SelectedIndexChanged, ComboBox105.SelectedIndexChanged,
  340. ComboBox106.SelectedIndexChanged, ComboBox107.SelectedIndexChanged, ComboBox108.SelectedIndexChanged, ComboBox109.SelectedIndexChanged, ComboBox110.SelectedIndexChanged,
  341. ComboBox111.SelectedIndexChanged, ComboBox112.SelectedIndexChanged, ComboBox113.SelectedIndexChanged, ComboBox114.SelectedIndexChanged, ComboBox115.SelectedIndexChanged,
  342. ComboBox116.SelectedIndexChanged, ComboBox117.SelectedIndexChanged, ComboBox118.SelectedIndexChanged, ComboBox119.SelectedIndexChanged, ComboBox120.SelectedIndexChanged,
  343. ComboBox121.SelectedIndexChanged, ComboBox122.SelectedIndexChanged, ComboBox123.SelectedIndexChanged, ComboBox124.SelectedIndexChanged
  344. If 剛啟動 = True Then
  345. Dim chk As ComboBox = DirectCast(sender, ComboBox) : Dim index As Integer = CInt(chk.Name.Replace("ComboBox", ""))
  346. Dim CB1 As ComboBox = CType(Me.Controls.Find("ComboBox" & (index - 62), True)(0), ComboBox)
  347. Dim CB2 As ComboBox = CType(Me.Controls.Find("ComboBox" & (index), True)(0), ComboBox)
  348. SetComboBoxBackColor(CB1, CB2.SelectedIndex)
  349. End If
  350. End Sub
  351. End Class