ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 4945|ตอบกลับ: 1

[VB.NET] แจกโค้ดการสร้าง TabControl, Panel และ Button Control แบบ Run Time โปรเจคทองก้อนเบอเกอร์แดนซ์

[คัดลอกลิงก์]

308

กระทู้

498

โพสต์

5973

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
5973


จาก 2 ภาคที่ได้แจกแจงไปแล้ว สำหรับโปรเจคทองก้อนเบอเกอร์แดนซ์ หวังว่าหลายคนคงน่าจะเห็นภาพที่ชัดเจนมากยิ่งขึ้นแล้วน่ะครับ มาภาคนี้เราจะสร้าง Control เพื่อให้ทำงานแบบที่เรียกว่า Dynamic กันแบบเต็มตัวสักที เพราะเราไม่รู้ว่ามีอาหาร เครื่องดื่มกี่ประเภท (อันนี้ใช้ TabControl) แล้วก็ยังไม่รู้อีกว่าจำนวนรายการอาหาร หรือเครื่องดื่มที่มีอยู่เป็นจำนวนเท่าไหร่ (อันนี้ใช้ปุ่มคำสั่ง Button Control) และสุดท้ายคือการใช้ Panel Control เพื่อตีกรอบจำนวนปุ่มเอาไว้ไม่ให้ล้น ...

มาดูส่วนสำคัญในการสร้างปุ่ม (Button) เพื่อแสดงรายการอาหารและเครื่องดื่ม
  1.     ' / -------------------------------------------------------------------
  2.     ' / สร้างปุ่มคำสั่ง (Button) แบบ @RunTime ตามจำนวนหลัก, จำนวนปุ่ม
  3.     Private Sub AddButtons(ByVal ColCount As Byte, ByVal MaxBtn As Byte)
  4.         For i As Integer = 0 To MaxBtn - 1
  5.             Dim B As New Button
  6.             pn.Controls.Add(B)
  7.             With B
  8.                 .Height = 80    '/ กำหนดความสูง
  9.                 .Width = 100    '/ กำหนดความกว้าง

  10.                 ' / -------------------------------------------------------------------
  11.                 '// เช่น จำนวนหลัก = 4 และจำนวนปุ่ม = 10
  12.                 '// คำนวณหาระยะในแนวนอน คิดระยะซ้าย (Left) ตามหลัก (Column)
  13.                 '/ i Mod 4 การหารเอาเศษ คำตอบจะได้ คือ 0, 1, 2 และ 3 (จำนวนหลัก - 1 คือ ค่าสูงสุด)
  14.                 '/ เมื่อ i = 0
  15.                 '/ 0 Mod 4 = 0 ระยะทางซ้ายหลักแรกของปุ่มที่จะแสดงผลคือ 0
  16.                 '/ เมื่อ i = 1
  17.                 '/ 1 Mod 4 = 1 หลักที่ 2 ของปุ่มที่จะแสดงผลคือ 1 * 100 = 100
  18.                 '/ เมื่อ i = 2
  19.                 '/ 2 Mod 4 = 2 หลักที่ 3 ของปุ่มที่จะแสดงผลคือ 2 * 100 = 200
  20.                 '/ เมื่อ i = 3
  21.                 '/ 3 Mod 4 = 3 หลักที่ 4 ของปุ่มที่จะแสดงผลคือ 3 * 100 = 300
  22.                 .Left = (i Mod ColCount) * B.Width
  23.                 '/ เมื่อ i = 4
  24.                 '/ 4 Mod 4 = 0 ระยะทางซ้ายหลักแรกของปุ่มที่จะแสดงผลคือ 0 * 100 = 0
  25.                 '/ จากนั้นก็เกิดค่าเศษเป็น 0, 1, 2, 3 ซ้ำใหม่อีกจนกว่าจะหมดจำนวนปุ่ม

  26.                 ' / -------------------------------------------------------------------
  27.                 '// เช่น จำนวนหลัก = 4 และจำนวนปุ่ม = 10
  28.                 '// คำนวณหาระยะในแนวตั้ง คิดระยะบนสุด (Top) ด้วยการหารตัดเศษ (จะได้เลขจำนวนเต็ม)
  29.                 '/ เมื่อ i = 0, 1, 2, 3 (ทุกตัวมีค่าน้อยกว่าตัวหาร) ทำให้ Top = 0 นั่นคือ 4 หลักแรกจะถูกกำหนดค่า Top คงที่ = 0
  30.                 '/ เมื่อ i = 4, 5, 6, 7 หากหารตัดเศษด้วย 4 คำตอบมีค่าเป็น 1 หมด ทำให้ 1 * 80 = 80 ... แถวนี้จึงถูกตรึง Top ไว้ที่ 80
  31.                 .Top = (i \ ColCount) * B.Height
  32.                 .Text = Chr((i \ ColCount) + Asc("A")) & i Mod ColCount + 1
  33.                 Buttons.Add(B.Text, B)
  34.                 '// ค่านี้นำไปซ่อนใน Tag ซึ่งหากเราดึงจากฐานข้อมูลมามันก็คือค่า PK หรือ Primary Key
  35.                 .Tag = i
  36.                 .Cursor = Cursors.Hand
  37.             End With
  38.             '// การสร้าง Events handler ซึ่งจะทำให้ลดปริมาณชุดคำสั่งในการกดปุ่ม ให้เหลือแค่ชุดเดียว
  39.             AddHandler B.Click, AddressOf ClickButton
  40.         Next
  41.     End Sub
คัดลอกไปที่คลิปบอร์ด
นี่คือคณิตศาสตร์ฉบับอนุบาลแมวเหมียวอีกล่ะ โดยการหาระยะในแนวนอนของปุ่มด้วยการหารเอาเศษ (Mod) ส่วนการหาระยะในแนวตั้งใช้การหารตัดเศษ \ ... อ่ะจึ๊ยยย ...

การสร้างเหตุการณ์ เมื่อเลือกคลิ๊กที่ปุ่ม (Button)
  1.     '// Click Button event, get the text and tag of button.
  2.     Public Sub ClickButton(ByVal sender As Object, ByVal e As System.EventArgs)
  3.         Dim btn As Button = sender
  4.         MessageBox.Show("คุณคลิ๊ก [" + btn.Text + "]" & vbCrLf & "Tag=" & btn.Tag & " จะเป็นค่า Primary Key")
  5.     End Sub
คัดลอกไปที่คลิปบอร์ด
คุณจะมีกี่ร้อยกี่พันปุ่ม มันก็มีแค่เหตุการณ์ในการคลิ๊กเพียงชุดเดียว

การสร้าง TabControl ตัวนี้แอดมินถือเป็นการตั้งโจทย์ ให้ไปสร้างเองตามจำนวนกลุ่มหรือประเภทสินค้าที่มี
  1.     ' / -------------------------------------------------------------------
  2.     ' / สร้าง TabControl
  3.     Sub AddTabControl()
  4.         Me.tabControl1 = New TabControl()
  5.         Me.tabPage1 = New TabPage()
  6.         Me.tabPage2 = New TabPage()
  7.         With tabControl1
  8.             .Controls.AddRange(New Control() {Me.tabPage1, Me.tabPage2})
  9.             .Padding = New Point(6, 3)
  10.             .Location = New Point(1, 1)
  11.             .Size = New Size(500, 500)
  12.             .Font = New Font("Tahoma", 10, FontStyle.Bold)
  13.             '/ Selects tabPage1 using SelectedTab.
  14.             .SelectedTab = tabPage1
  15.             '/ หรือ Me.tabControl1.SelectTab(0)
  16.         End With
  17.         Me.tabPage1.Text = "Burger"
  18.         Me.tabPage2.Text = "Beverage"
  19.         Me.Controls.AddRange(New Control() {Me.tabControl1})
  20.     End Sub
คัดลอกไปที่คลิปบอร์ด

การสร้าง Panel
  1.     ' / -------------------------------------------------------------------
  2.     ' / สร้าง Panel เพื่อตีกรอบใส่ค่าปุ่ม (Button)
  3.     Sub AddPanel()
  4.         '// Create new Panel
  5.         With pn
  6.             .Location = New System.Drawing.Point(3, 6)
  7.             .Size = New System.Drawing.Size(402, 402)
  8.             .BackColor = Color.LemonChiffon
  9.             .AutoScroll = True
  10.         End With
  11.     End Sub
คัดลอกไปที่คลิปบอร์ด
Conclusion: ก็ไม่รู้ว่าจะสรุปอะไรดีครับ เพราะแอดมินได้เรียงลำดับขั้นตอนวิธีการต่างๆเอาไว้เพื่อให้ได้ศึกษากัน ส่วนใครจะรับไปได้มากได้น้อย ก็คงขึ้นอยู่กับตัวทุกท่านเอง ... สวัสดี
ดาวน์โหลดโค้ดต้นฉบับแบบเต็ม VB.NET (2010) ได้ที่นี่

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

0

กระทู้

58

โพสต์

10

เครดิต

Member

Rank: 2

เครดิต
10
โพสต์ 2022-10-25 19:43:34 | ดูโพสต์ทั้งหมด

ขอบคุณครับ
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2024-3-29 14:33 , Processed in 0.204307 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้