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
|