หากมีคำถาม ขอให้ไปโพสต์ลง เว็บบอร์ดจีทูจีเน็ตดอตคอม ตัวใหม่แทนน่ะครับ

หรือติดต่อเข้ามาทาง Inbox ที่ เฟซบุ๊ค ผมครับ

หน้าหลัก
ข่าวสาร - บทความ ทั้งหมด
VB 6/VB.Net
ASP/ASP.Net
จับฉ่ายคอมพิวเตอร์
เรียนรู้ผ่าน Flash Movie
บทความที่มีผู้ตอบล่าสุด  
 RSS Feeds
 ดาวน์โหลดโปรแกรม RSS Reader ได้ที่นี่ ...   Download โปรแกรม RSS Reader

Forum - www.g2gnet.com
Webmaster - www.g2gnet.com
Visitors - Session views
 5 3 5 7 6 0 8

7 ธันวาคม พ.ศ.2549
62 Users On-Line.
Visitors - Page views
 8 6 9 3 9 2 0
1 กุมภาพันธ์ พ.ศ.2551

Google   
เว็บ g2gnet.com
ขนาดตัวอักษร:  

การเคลียร์ข้อมูลของ TextBox ในฟอร์มแบบอัตโนมัติ ... มีเป็น 100 Piper เอ๊ย TextBox ก็เคลียร์ได้สบายๆ

Category »  VB 6/VB.Net
โดย : Webmaster เมื่อ 7/7/2550 1:01:00
(อ่าน : 43475) 

หลายต่อหลายครั้งที่ผมต้องเขียนโปรแกรมเพื่อควบคุมให้วัตถุ หรือ Control มีการแสดงผลแบบ Dynamic (เพิ่ม หรือ ลดได้) อันเป็นลักษณะของ Run Time หมายความว่าจะใช้รูปแบบของ Design Time คือจับ Control มาลากใส่ๆลงบนฟอร์มไม่ได้เลย ดังภาพด้านล่างนี้


โปรแกรมนี้อาศัยการทำงานแบบ Run Time คือการอ่านข้อมูลเข้ามาแล้วสั่งให้โปรแกรมทำการสร้าง CheckBox ขึ้นมาอัตโนมัติ
ซึ่งมันจะคำนวณตามจำนวนข้อมูล หรือ หัวข้อที่ใช้ในการประเมินผลพนักงาน

แต่แล้ว ... เมื่อคืนที่ผ่านมา (5 ก.ค.) คุณหนุ่มใหญ่ไร้เมีย เอ๊ย ไร้พัดลม ([email protected] หากอ่านชื่อเมล์ผิดก็ขออภัยน่ะครับ ให้เมล์ไว้เลยแล้วกัน เผื่อจะมีสาวแก่ แม่ม่าย สนใจก็ช่วยจัดหาพัดลมให้พี่แกหน่อยสักตัวน่ะครับ 55555) MSN มาถามเรื่องการเคลียร์ข้อมูลของ TextBox หลายๆตัวในฟอร์ม ว่าทำยังไง ไอ้เราก็งงๆ มาถามอะไรที่มันง่ายจัง (ว่ะ)


ตัวอย่าง

Private Sub Form_Load()
    Text1.Text = ""
    Text2.Text = ""
    Text3.Text = ""
    Text4.Text = ""
End Sub

แต่ทางคุณ [email protected] บอกมาว่าไม่ใช่ ไม่อยากได้แบบนี้ ... ไอ้เรารึก็คิด ... เอ หมอนี่มันชักกวนเราแล้วซิ แต่โดยสันดานของผมเองเป็น "คนซื่อๆเหมือนกระบือไม่มีเจ้าของ" อยู่แล้ว ก็มองโลกในแง่ดีล่ะครับ เขาคงน่าจะหมายถึงการเรียกใช้ Object หรือ Control เป็นแน่แท้ ซึ่งเรื่องนี้มันก็เลยทำให้ผมฉุกคิดขึ้นมาได้ เออ ... น้านน่ะซิ งานต่างๆของเราที่ต้องเคลียร์ข้อมูลใน Control ทำไมไม่เคยสั่งผ่านวัตถุเอา (ว่ะ) เฮ้ย ... เดิมมีแต่ก็อบไปก็อบมาทั้ง Control และ Code มาใช้งาน 55555 คิดได้ไงเนี่ย ... ว่าแล้วก็เริ่มละเลงโค้ดลงไป

ฟอร์มนี่มันก็คือ Control ชนิดหนึ่ง แต่มันมีคุณสมบัติที่พิเศษอย่างหนึ่งก็คือว่า สามารถนำเอา Control ตัวอื่นๆมาวางลงไปบนตัวมันได้ จากตัวอย่างนี้ก็คือการนำ TextBox หลายๆตัวมาวางแปะไว้บนฟอร์มนั่นเอง จากจุดนี้เราก็พอจะเขียนคำสั่งได้แล้ว นั่นคือ ต้องใช้ For Each Control (TextBox) ที่วางอยู่บน Form


Private Sub cmdClearForm_Click()
Dim Ctl As Control
    ' สำหรับ Control ทุกๆตัวที่วางแปะลงบน Form1
    For Each Ctl In Form1
        ' ถ้า Control ตัวนั้นมันเป็น TextBox ก็ทำการใส่ค่าว่างให้มันซ่ะ
        If TypeOf Ctl Is TextBox Then Ctl.Text = ""
    Next ' Control ตัวถัดไป
End Sub

ก่อนกดปุ่มเคลียร์ข้อมูล


หลังกดปุ่มเคลียร์ข้อมูล

โห ... ต่อให้มี TextBox นับร้อยตัวก็สบายเลยซิเนี่ย แต่แบบนี้มันคงจะง่ายไปหน่อยล่ะมั้งครับ ... พี่น้อง ถ้าหากว่า ...

  • ในฟอร์มหนึ่งๆมีการสั่งให้เคลียร์ข้อมูลใน TextBox หลายๆครั้ง
  • ในโปรเจคหนึ่งๆ มันมีหลายๆฟอร์ม
    พูดง่ายๆ สมควรปรับให้มันเป็นโปรแกรมย่อย (Sub Program) ดีกว่าครับ ดังนั้นเราควรจะย้ายโค้ดเหล่านี้ไปใส่ไว้ใน Module น่าจะดีกว่า

     

    
    ' ประกาศไว้ใน Module (นามสกุล .BAS)
    Option Explicit
    ' โปรแกรมย่อยที่มีการรับค่า Control เข้ามา ... ในที่นี้คือชื่อฟอร์ม
    Public Sub ClearForm(frm As Form)
    Dim Ctl As Control
        For Each Ctl In frm
            If TypeOf Ctl Is TextBox Then Ctl.Text = ""
        Next
    End Sub
    
    
    ' ในฟอร์มทั่วไป (ตอนนี้เราสั่งมาจาก Form1)
    Private Sub cmdClearForm_Click()
        ' ส่งค่าชื่อ Form1 ไปให้กับโปรแกรมย่อย
        Call ClearForm(Form1)
    End Sub
    

    กรณีของ Control ตัวอื่นๆก็ใช้ได้เหมือนกันน่ะครับ พี่น้อง ... ก็อาศัยการตรวจสอบ Control แต่ละชนิดด้วยคำสั่ง TypeOf

    Conclusion: นี่คือเรื่องจริงในชีวิตเลยครับ ... มันคงไม่ต่างอะไรไปจากการเดินขึ้นภูเขา พอตัวเราอยู่บริเวณเท้า (ตีน) เขา เราจะสามารถมองเห็นต้นไม้ที่อยู่ใกล้ๆเราได้ว่า นี่ต้นสักน่ะ นี่ต้นประดู่น่ะ อะไรประมาณนี้ แต่พอเราเดินขึ้นเขาไปสูงๆจนถึงยอดภูเขาแล้ว สายตาของเราจะมองได้กว้างมากขึ้น แต่พอมองกลับลงไปที่เท้า (ตีน) เขา กลับไม่รู้เลยว่าไอ้ต้นที่อยู่ไกลๆลิบนั่นมันเป็นต้นอะไรกันแน่ ... วู้ย


  • จี ทู จี เน็ต ดอต คอม - g2gNet Dot Com
    เลขทะเบียนพาณิชย์อิเล็กทรอนิกส์ 0407314800231
    CopyLeft © 2004 - 2099 g2gNet.Com All rights reserved.
    Email: [email protected] หรือ โทร. 08-6862-6560