|
จาก 2 ภาคที่ได้แจกแจงไปแล้ว สำหรับโปรเจคทองก้อนเบอเกอร์แดนซ์ หวังว่าหลายคนคงน่าจะเห็นภาพที่ชัดเจนมากยิ่งขึ้นแล้วน่ะครับ มาภาคนี้เราจะสร้าง Control เพื่อให้ทำงานแบบที่เรียกว่า Dynamic กันแบบเต็มตัวสักที เพราะเราไม่รู้ว่ามีอาหาร เครื่องดื่มกี่ประเภท (อันนี้ใช้ TabControl) แล้วก็ยังไม่รู้อีกว่าจำนวนรายการอาหาร หรือเครื่องดื่มที่มีอยู่เป็นจำนวนเท่าไหร่ (อันนี้ใช้ปุ่มคำสั่ง Button Control) และสุดท้ายคือการใช้ Panel Control เพื่อตีกรอบจำนวนปุ่มเอาไว้ไม่ให้ล้น ...
มาดูส่วนสำคัญในการสร้างปุ่ม (Button) เพื่อแสดงรายการอาหารและเครื่องดื่ม
- ' / -------------------------------------------------------------------
- ' / สร้างปุ่มคำสั่ง (Button) แบบ @RunTime ตามจำนวนหลัก, จำนวนปุ่ม
- Private Sub AddButtons(ByVal ColCount As Byte, ByVal MaxBtn As Byte)
- For i As Integer = 0 To MaxBtn - 1
- Dim B As New Button
- pn.Controls.Add(B)
- With B
- .Height = 80 '/ กำหนดความสูง
- .Width = 100 '/ กำหนดความกว้าง
- ' / -------------------------------------------------------------------
- '// เช่น จำนวนหลัก = 4 และจำนวนปุ่ม = 10
- '// คำนวณหาระยะในแนวนอน คิดระยะซ้าย (Left) ตามหลัก (Column)
- '/ i Mod 4 การหารเอาเศษ คำตอบจะได้ คือ 0, 1, 2 และ 3 (จำนวนหลัก - 1 คือ ค่าสูงสุด)
- '/ เมื่อ i = 0
- '/ 0 Mod 4 = 0 ระยะทางซ้ายหลักแรกของปุ่มที่จะแสดงผลคือ 0
- '/ เมื่อ i = 1
- '/ 1 Mod 4 = 1 หลักที่ 2 ของปุ่มที่จะแสดงผลคือ 1 * 100 = 100
- '/ เมื่อ i = 2
- '/ 2 Mod 4 = 2 หลักที่ 3 ของปุ่มที่จะแสดงผลคือ 2 * 100 = 200
- '/ เมื่อ i = 3
- '/ 3 Mod 4 = 3 หลักที่ 4 ของปุ่มที่จะแสดงผลคือ 3 * 100 = 300
- .Left = (i Mod ColCount) * B.Width
- '/ เมื่อ i = 4
- '/ 4 Mod 4 = 0 ระยะทางซ้ายหลักแรกของปุ่มที่จะแสดงผลคือ 0 * 100 = 0
- '/ จากนั้นก็เกิดค่าเศษเป็น 0, 1, 2, 3 ซ้ำใหม่อีกจนกว่าจะหมดจำนวนปุ่ม
- ' / -------------------------------------------------------------------
- '// เช่น จำนวนหลัก = 4 และจำนวนปุ่ม = 10
- '// คำนวณหาระยะในแนวตั้ง คิดระยะบนสุด (Top) ด้วยการหารตัดเศษ (จะได้เลขจำนวนเต็ม)
- '/ เมื่อ i = 0, 1, 2, 3 (ทุกตัวมีค่าน้อยกว่าตัวหาร) ทำให้ Top = 0 นั่นคือ 4 หลักแรกจะถูกกำหนดค่า Top คงที่ = 0
- '/ เมื่อ i = 4, 5, 6, 7 หากหารตัดเศษด้วย 4 คำตอบมีค่าเป็น 1 หมด ทำให้ 1 * 80 = 80 ... แถวนี้จึงถูกตรึง Top ไว้ที่ 80
- .Top = (i \ ColCount) * B.Height
- .Text = Chr((i \ ColCount) + Asc("A")) & i Mod ColCount + 1
- Buttons.Add(B.Text, B)
- '// ค่านี้นำไปซ่อนใน Tag ซึ่งหากเราดึงจากฐานข้อมูลมามันก็คือค่า PK หรือ Primary Key
- .Tag = i
- .Cursor = Cursors.Hand
- End With
- '// การสร้าง Events handler ซึ่งจะทำให้ลดปริมาณชุดคำสั่งในการกดปุ่ม ให้เหลือแค่ชุดเดียว
- AddHandler B.Click, AddressOf ClickButton
- Next
- End Sub
คัดลอกไปที่คลิปบอร์ด นี่คือคณิตศาสตร์ฉบับอนุบาลแมวเหมียวอีกล่ะ โดยการหาระยะในแนวนอนของปุ่มด้วยการหารเอาเศษ (Mod) ส่วนการหาระยะในแนวตั้งใช้การหารตัดเศษ \ ... อ่ะจึ๊ยยย ...
การสร้างเหตุการณ์ เมื่อเลือกคลิ๊กที่ปุ่ม (Button)
- '// Click Button event, get the text and tag of button.
- Public Sub ClickButton(ByVal sender As Object, ByVal e As System.EventArgs)
- Dim btn As Button = sender
- MessageBox.Show("คุณคลิ๊ก [" + btn.Text + "]" & vbCrLf & "Tag=" & btn.Tag & " จะเป็นค่า Primary Key")
- End Sub
คัดลอกไปที่คลิปบอร์ด คุณจะมีกี่ร้อยกี่พันปุ่ม มันก็มีแค่เหตุการณ์ในการคลิ๊กเพียงชุดเดียว
การสร้าง TabControl ตัวนี้แอดมินถือเป็นการตั้งโจทย์ ให้ไปสร้างเองตามจำนวนกลุ่มหรือประเภทสินค้าที่มี
- ' / -------------------------------------------------------------------
- ' / สร้าง TabControl
- Sub AddTabControl()
- Me.tabControl1 = New TabControl()
- Me.tabPage1 = New TabPage()
- Me.tabPage2 = New TabPage()
- With tabControl1
- .Controls.AddRange(New Control() {Me.tabPage1, Me.tabPage2})
- .Padding = New Point(6, 3)
- .Location = New Point(1, 1)
- .Size = New Size(500, 500)
- .Font = New Font("Tahoma", 10, FontStyle.Bold)
- '/ Selects tabPage1 using SelectedTab.
- .SelectedTab = tabPage1
- '/ หรือ Me.tabControl1.SelectTab(0)
- End With
- Me.tabPage1.Text = "Burger"
- Me.tabPage2.Text = "Beverage"
- Me.Controls.AddRange(New Control() {Me.tabControl1})
- End Sub
คัดลอกไปที่คลิปบอร์ด
การสร้าง Panel
- ' / -------------------------------------------------------------------
- ' / สร้าง Panel เพื่อตีกรอบใส่ค่าปุ่ม (Button)
- Sub AddPanel()
- '// Create new Panel
- With pn
- .Location = New System.Drawing.Point(3, 6)
- .Size = New System.Drawing.Size(402, 402)
- .BackColor = Color.LemonChiffon
- .AutoScroll = True
- End With
- End Sub
คัดลอกไปที่คลิปบอร์ด Conclusion: ก็ไม่รู้ว่าจะสรุปอะไรดีครับ เพราะแอดมินได้เรียงลำดับขั้นตอนวิธีการต่างๆเอาไว้เพื่อให้ได้ศึกษากัน ส่วนใครจะรับไปได้มากได้น้อย ก็คงขึ้นอยู่กับตัวทุกท่านเอง ... สวัสดี
ดาวน์โหลดโค้ดต้นฉบับแบบเต็ม VB.NET (2010) ได้ที่นี่
|
ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง
คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน
x
|