Visual Basic

Home

Visual Basic Tutorial
Knowledge Developer Database Internet Resource
ฟอร์ม
1. คุณสมบัติ, เมธอด และ Event
2. คุณสมบัติ, เมธอด และ Event ของฟอร์ม
3. กราฟฟิก
 
Visual Basic Tutorial
1. Visual Basic 6
2. ฟอร์ม
3. Intrinsic Control
4. ตัวแปรและ Procedure
5. Class
6. Common Control1
7. Common Control2
8. ActiveX Control
9. Interface
10. ฐานข้อมูล
11. Database Control
 
Developer
Visual Basic
Microsoft Access
Microsoft Excel
 

Form

ฟอร์มเป็นอ๊อบเจคพื้นที่ใช้ในการติดต่อกับผู้ใช้งาน โดยการสร้างทำได้ตามวิธีที่แนะนำมาแล้ว ใน Visual Basic มี Template ของฟอร์ม สำหรับการสร้างฟอร์ม โดยเลือกเมนู Project แล้วเลือกคำสั่ง Add Form จากนั้นให้วิธีการสร้างฟอร์มจากรายการในไดอะล๊อกบ๊อกซ์ ของ Add Form

คุณสมบัติเบื้องต้น

เมื่อสร้างฟอร์มขึ้นมาแล้ว มีคุณสมบัติที่มีผลต่อการทำงานฟอร์มที่ต้องพิจารณา คือ

BorderStyle ตามค่าเริ่มต้นจะกำหนด 2-Sizable คือ สามารถปรับขนาด Windows ได้ ถ้ากำหนดมีขนาดตายตัว ให้เลือก 1-FixedSingle หรือ 3-FixedDialog ในแบบหลังจะไม่มีปุ่ม Minimize และ Maximize

Caption เป็นการกำหนดชื่อหรือข้อความให้กับแถบไตเติลของฟอร์ม
ControlBox, MinButton และ MaxButton ถ้าต้องการให้มีปุ่มบนฟอร์มให้ตั้งค่าเป็น True ถ้าไม่ต้องการให้ตั้งค่าเป็น False ค่าเริ่มต้นของคุณสมบัติชุดนี้มีค่าเป็น True
WindowState เป็นการกำหนดลักษณะของฟอร์มเมื่อเปิดฟอร์มนั้น เช่น ถ้าต้องการให้ใหญ่เต็มจอ ให้กำหนดเป็น 2-Maximized
StartUpPosition เป็นการกำหนดตำแหน่งของฟอร์ม เมื่อเปิดฟอร์มนั้น
รอบอายุของฟอร์ม
การเรียกฟอร์มมาใช้แต่ละครั้ง ประกอบด้วยลำดับ event ที่เกิดขึ้นตั้งแต่เริ่มต้น จนถึงการสิ้นสุดการใช้งาน

ลำดับการเกิด event ของฟอร์ม คือ Initialize -> Load -> Resize -> Activate -> Paint -> QueryUnload -> Unload -> Terminate

แต่ช่วงระหว่าง Activate และ Paint อาจจะมีการเปลี่ยนระหว่างฟอร์ม เป็น

Activate -> Paint -> Deactivate -> Activate ->

Initialize Event

Initialize event เป็น event แรกที่เกิดขึ้นเมื่อมีการเรียกฟอร์มจากคำสั่งและเกิดก่อนที่ Visual Basic จะแสดง Windows และตัว control บนฟอร์ม ตามปกติใช้ในการตั้งค่าให้กับตัวแปร

Public BookTitle As String
Public newBook As Boolean

Private Sub Form_Initialize()
    ' ไม่จำเป็น
    BookTitle = ""
    ' จำเป็นมาก
    newBook = True
End Sub

เมื่อฟอร์มได้รับการ Initialize การกำหนดค่าตัวแปรจะให้ค่าเป็น 0 หรือ ข้อความว่าง ดังนั้น BookTitle = " " ตามตัวอย่างไม่จำเป็นต้องกำหนด

Load Event

Load event เป็น event ที่เกิดขึ้นต่อจาก initialize event ใช้ในการอ้างค่าให้กับฟอร์ม โดย event จะครบสมบูรณ์เมื่อ Visual Basic สร้าง window ของฟอร์มและตัว control เรียบร้อยแล้ว

Private Sub Form_Load()
    BookTitle = "Visual Basic 6.0"
    txtBook.Text = BookTitle
    If newBook Then chkNewBook.Value = vbChecked
End Sub

Resize Event

Resize event เกิดขึ้นก่อนที่จะเห็นฟอร์ม โดย event สามารถใช้ในการปรับตัว control ให้พอดีกับฟอร์ม นอกจาก Resize event เกิดขึ้นผู้ใช้ปรับขนาดฟอร์มเอง

Private Sub Form_Resize()
    ' modified textBox size
    txtBook.Width = ScaleWidth - txtBook.Left
    txtNote.Width = ScaleWidth - txtNote.Left
    txtNote.Height = ScaleHeight - txtNote.Top
    Refresh
End Sub

Activate Event

Activate event เกิดขึ้นหลังจาก Resize event และเมื่อฟอร์มได้รับสถานะแอ็คทีฟ event ที่ใช้ประโยชน์ในการปรับปรุงค่าที่อาจจะเกิดจากการปรับปรุงจากฟอร์มอื่น

Private Sub Form_Activate()
    txtNote = "There are many new book."
End Sub

Paint Event

Paint event เป็นอีก event ที่เกิดขึ้นก่อนที่ฟอร์มจะทำงานได้อย่างสมบูรณ์ แต่จะไม่เกิดขึ้นถ้ามีกำหนดคุณสมบัติ AutoDraw เป็น True การประยุกต์ Paint event เพื่อใช้กับเมธอดกราฟฟิก เช่น การลากเส้น วงกลม เป็นต้น

Private Sub Form_Paint()
Dim r, ini, x, y As Single
Dim q As Integer

Cls
q = 0
' ตั้งค่าจุดศูนย์กลาง
x = ScaleWidth / 2
y = ScaleHeight / 2
If x < y Then ini = x Else ini = y
FillStyle = vbFSSolid

' วาดจากด้านนอก
For r = ini To 1 Step -(ini / 16)
    FillColor = QBColor(q)
    q = q + 1
    Circle (x, y), r
Next
' ฟื้น fillStyle เดิม
FillStyle = vbTransparent

End Sub

Paint event มีการประมวลผล เมื่อมีการ Refresh ฟอร์ม และเกิดขึ้นเมื่อมีการปรับขนาดฟอร์ม

Deactivate Event

Deactivate event เกิดขึ้นเมื่อมีการเปลี่ยนไปยังฟอร์มอื่น อาจจะใช้กับการซ่อนฟอร์มชั่วคราว โดยการกำหนดค่าคุณสมบัติ Visible เป็น False หรือใช้เมธอด Hide

Private Sub Form_Deactivate ( )
   Form1.Visible = False
End Sub

หรือ

Private Sub Form_Deactivate ( )
   Form1.Hide
End Sub

QueryUnload Event

เมื่อมีการ Unload ฟอร์ม จะเกิด QueryUnload event กับฟอร์มนั้น และสามารถตรวจสอบ Unload ได้จากพารามิเตอร์ UnloadMode

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

Select Case UnloadMode
' ปิดฟอร์ม โดยผู้ใช้
Case vbFormControlMenu ' = 0
'ปิดฟอร์ม โดยคำสั่ง
Case vbFormCode ' = 1
' สิ้นสุด Window ปัจจุบัน
Case vbAppWindows ' = 2
' ปิดโปรแกรม โดย Task Manager
Case vbAppTaskManager ' = 3
' ฟอร์มแม่ MDI ปิดฟอร์มนี้
Case vbFormMDIForm ' = 4
' ปิดฟอร์ม
Case vbFormOwner ' = 5
End Select
End Sub

ยกเลิกการ Unload ให้ตั้งค่าพารามิเตอร์ Cancel เป็น True

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

    Select Case UnloadMode
        Case vbFormControlMenu , vbAppTaskManager
        Cancel = True
    End Select

End Sub

Unload Event

Unload event เป็นโอกาสสุดท้ายที่โปรแกรมสามารถยกเลิกการปิดฟอร์มได้ event ที่สามารถใช้ในการแจ้งข่าวสารให้ผู้ใช้ เช่น การบันทึกข้อมูล

Public IsSaved As Boolean

Private Sub Form_Unload(Cancel As Integer)
    If Not IsSaved Then
        MsgBox "Please save data"
        Cancel = True
    End If
End Sub

ถ้าไม่มีการยกเลิกการ Unload ขั้นต่อไป Visual Basic จะทำการยกเลิกตัว control ปิดฟอร์ม และยกเลิกทรัพยากรต่าง ๆ ของ Window

Controls Collection

ฟอร์มมีคุณสมบัติ คือ Controls collection ที่เก็บตัว control ทั้งหมดที่อยู่บนฟอร์ม โดย collection ช่วยในการเขียนคำสั่งการทำงานแบบต่อเนื่อง เช่น การล้างค่าของตัว control ทั้งหมดบนฟอร์ม

Dim i As Integer
On Error Resume Next

For i = 0 To Controls Count - 1
    Controls ( i ). Text = ""
Next

หรือใช้ For Each… Next

Dim Ctrl As Control
On Error Resume Next

For Each Ctrl In Controls
    Ctrl.Text = " "
Next

อ๊อบเจค Screen

อ๊อบเจค Screen เป็นอ๊อบเจคแบบ global ที่ใช้ทำงานด้านการมองเห็น ตามปกติคุณสมบัติ Left, Top, Width และ Height ของฟอร์ม ใช้หน่วยวัดคือ twips ซึ่งหน่วยนี้สามารถใช้ได้กับจอภาพและการพิมพ์ โดยการพิมพ์ 1 นิ้ว เท่ากับ 1,440 twips สีบนจอภาพขึ้นกับการกำหนดความละเอียดของจอภาพ การหาขนาดทำได้จากคุณสมบัติ Width และ Height ของอ๊อบเจค Screen เช่น การย้ายฟอร์มไปที่มุมขวาด้านล่างของจอภาพสามารถใช้คำสั่ง

Move Screen.Width - Width, Screen.Height - Height

การแปลงค่าจาก twips เป็นหน่วยอื่น เช่น แปลงเป็นพิกเซล ให้ใช้คุณสมบัติ TwipsPerPixelX และ TwipsPerPixelY ของอ๊อบเจค Screen

ScrWidth = Screen.Width / Screen.TwipsPerPixelX
ScrHeight = Screen. Height / Screen.TwipsPerPixelY
Move Left, Top, Width - 10 * Screen.TwipsPerPixelX, Height - 20 * Screen.TwipsPerPixelY

อ๊อบเจค Screen สามารถใช้ในการระบุขนาดของฟอนต์ โดยใช้คุณสมบัติ Font และ FontCount

Dim i As Integer

For i = 0 To Screen.FontCount - 1
    lstFonts.AddItem Screen.Fonts(i)
Next

การกำหนดรูปร่างเมาส์ โดยใช้คุณสมบัติ MousePointer และ MouseIcon

Screen.MousePointer = vbHuouglass

การกำหนดให้กับตัว control กับโปรแกรมประยุกต์ที่ใช้งาน สามารถประยุกต์กับอ๊อบเจค Screen โดยการใช้คุณสมบัติ ActiveForm และ ActiveControl ซึ่ง ActiveForm มีคุณสมบัติอ่านอย่างเดียว (read-only) แต่ใช้อ้างอิงฟอร์มที่แอ็คทีฟ ส่วน ActiveControl อ้างถึงตัว control ที่ได้รับการโฟกัสบนฟอร์มที่แอ็คทีฟ

On Error Resume Next
If Screen.ActiveForm.Name = "frmBook" Then
    Screen.ActiveControl.Text = ""
End If

 

  

สงวนลิขสิทธิ (C) widebase