Chapter 5 การใช้งานฟอร์ม

Chapter 5 Using the Form

การใช้งานฟอร์ม

  • คุณสมบัติของฟอร์ม
  • เมธอดของฟอร์ม
  • เหตุการณ์ของฟอร์ม

 

ฟอร์มเป็นอ๊อบเจ็กต์ตัวแรกๆ ที่คุณจะต้องเริ่มต้นใช้งาน และเข้าไปเกี่ยวข้องด้วยมากที่สุด ถือได้ว่าในแอพพลิเคชันแบบปกติ จะต้องประกอบไปด้วย ฟอร์มอย่างน้อยที่สุด 1 ฟอร์ม หัวข้อนี้จะเป็นการอธิบายแนวทางในการใช้งานฟอร์ม ให้เกิดประสิทธิภาพมากที่สุด

ทุกๆ ครั้งที่คุณโหลด VB ขึ้นมา จะปรากฎฟอร์มว่างๆ ขึ้นมา 1 ฟอร์มเสมอ เพื่อเป็นจุดเริ่มต้นให้คุณนำคอนโทรลต่างๆ มาสร้างอินเตอร์เฟสบนฟอร์ม ถือได้ว่า ฟอร์มเป็นตัวบรรจุ (Container) นั่นเอง ซึ่งคุณจะต้องสื่อให้ผู้ใช้สามารถทำความเข้าใจ และไม่สร้างความสับสนในการใช้งานแอพพลิเคชัน ให้กับผู้ใช้ โดยผ่านทางฟอร์มนี้ให้ได้ ก็จะทำให้แอพพลิเคชันของคุณน่าใช้ยิ่งขึ้น

clip_image002

รูปที่ 5-1 แสดงฟอร์มว่างๆ ที่ถูกโหลดเข้ามาใน VBIDE ทุกครั้ง

สิ่งที่คุณต้องสนใจก็คือ แถบ title bar ของฟอร์ม คุณสามารถแก้ไขข้อความที่แถบ title bar ของ Form1 ได้โดยการแก้ไขคุณสมบัติ caption ที่อยู่ในหน้าต่างคุณสมบัติ   ซึ่งควรจะเป็นชื่อของโปรแกรม หรือแอพพลิเคชันของคุณ ถ้าคุณไม่ได้กำหนดชื่อ คุณจะได้ชื่อเชยๆ ว่า Form1, Form2, Form3.....Form(n) ถ้าคุณสร้างแอพพลิเคชันประเภท editor คุณสามารถประยุกต์ใช้แสดง ชื่อโปรแกรม, ชื่อ drive, ชื่อไฟล์ ที่ title bar ได้ เป็นต้น ดังรูป

clip_image003

รูปที่ 5-2 แสดงฟอร์มที่คุณแก้ไขคุณสมบัติ Caption ของ Form1

clip_image004

ในบางครั้งถ้าคุณไม่ต้องการแถบ   title bar ให้คุณทำดังนี้

  • แก้ไขคุณสมบัติ ControlBox=False
  • แก้ไขคุณสมบัติ MaxButton=False
  • แก้ไขคุณสมบัติ MinButton=False คุณจะได้ Form1 ดังรูป

clip_image005

รูปที่ 5-3 แสดงฟอร์มที่ไม่มีแถบ title bar

การตั้งชื่อฟอร์มให้คุณแก้ไขที่คุณสมบัติ Name โดยปกติแล้วคุณควรจะใช้คำนำหน้าว่า frm แล้วตามด้วยชื่อฟอร์ม ซึ่งคุณจะต้องใช้ชื่อ (คุณสมบัติ Name) นี้ เพื่อ เขียนโค้ดอ้างอิงถึงฟอร์มดังกล่าว และชื่อที่คุณตั้ง ควรกับสอดคล้องกับหน้าที่ที่มันกระทำอยู่ด้วย เช่น frmStart อาจหมายถึง เป็นฟอร์มแรก ที่ต้องถูกโหลดขึ้นมา เนื่องจากว่า แอพพลิเคชันของคุณอาจมีมากกว่า 1 ฟอร์มก็ได้ ดังนั้นการตั้งชื่อ สามารถช่วยให้คุณเรียกใช้งานฟอร์มได้ถูกต้อง สรุปได้ว่า คุณสมบัติ caption คือ ข้อความที่จะปรากฎบน title bar ส่วนคุณสมบัติ Name คือชื่อที่ไว้สำหรับอ้างอิงอ๊อบเจ๊กต์ฟอร์ม ในเวลาเขียนโค้ด แต่คุณยังสามารถใช้คำสงวน Me เพื่ออ้างอิงถึงฟอร์มปัจจุบันก็ได้

clip_image006

รูปที่ 5-4 ขณะแก้ไขคุณสมบัติ Name ของ Form


คุณสมบัติของฟอร์ม

สำหรับคุณสมบัติอื่นๆ ที่น่าสนใจ มีดังนี้ (กรณีที่คุณมีการเปลี่ยนแปลงชื่อของฟอร์ม (คุณสมบัติ name) ให้คุณเปลื่ยนจาก Form1 เป็นชื่อที่คุณตั้งไว้)

ActiveControl

คุณสมบัตินี้มีหน้าที่สำหรับรายงานชื่อคอนโทรลที่อยู่ในสถานะแอกทีฟ ซึ่งสามารถอ่านค่าได้เฉพาะในขณะรันเท่านั้น ส่วนในขณะออกแบบไม่สามารถ ใช้งานคุณสมบัตินี้ได้ มีรูปแบบการใช้งานดังนี้

Form1.ActiveControl


Appearance

คุณสมบัตินี้มีหน้าที่สำหรับกำหนดลักษณะของฟอร์มที่คุณจะนำไปใช้งาน มีรูปแบบการใช้งานดังนี้

Form1.Appearance[=value]

ตัวแปร value หมายถึง เลขจำนวนเต็ม integer ซึ่งคุณสามารถกำหนดค่าได้ดังนี้

กำหนดค่า

รายละเอียด

0

ใช้งานฟอร์มแบบ 2 มิติ (แบบ Flat)

1

(Default) ใช้งานฟอร์มแบบ 3 มิติ (3D)

clip_image007

รูปที่ 5-5 แสดงฟอร์มแบบ 3 มิติ และแบบ 2 มิติ


AutoRedraw

คุณสมบัตินี้มีหน้าที่สำหรับคืนค่า หรือกำหนดวิธีที่จะวาดฟอร์มใหม่อีกครั้ง เมื่อฟอร์มดังกล่าวถูกซ้อนทับด้วยฟอร์มอื่นๆ มีรูปแบบการใช้งานดังนี้

Form1.AutoRedraw [= boolean]

ตัวแปร boolean มีความหมายดังนี้

กำหนดค่า

ความหมาย

True

หมายถึง กำหนดให้วาดฟอร์มใหม่ทุกครั้งโดยอัตโนมัติ ซึ่งจะนำมาจากหน่วยความจำ ส่วนที่เรียกว่า หน่วยความจำอิมเมจ มีข้อเสียก็คือ ทำงานช้า และใช้หน่วยความจำมาก

False

(Default) ยกเลิกการวาดฟอร์มใหม่แบบอัตโนมัติ และจะทำการวาดฟอร์มในเหตุการณ์ Form_Paint ( ) เท่านั้น


BackColor และ ForeColor

คุณสมบัติ BackColor มีหน้าที่สำหรับ กำหนดสีพื้นหลัง (Background) ของฟอร์ม และคุณสมบัติ ForeColor มีหน้าที่สำหรับ กำหนดสีของข้อความ ที่ปรากฎอยู่ในฟอร์ม มีรูปแบบการใช้งานดังนี้

Form1.BackColor [= color]
Form1.ForeColor [= color]

ตัวแปร color คือสีที่คุณต้องการ ซึ่งจะเป็นแบบการผสมจากถาดแม่สี RGB ซึ่งคุณสามารถกำหนดได้ถึง 16,777,215 สี  (&HFFFFFF&) หรือใช้ฟังก์ชัน       QBColor ( ) ซึ่งสนับสนุน 16 สีก็ได้ ถ้าคุณกำหนดสีในขณะออกแบบ จะมีแท็บสี 2 แท็บให้คุณเลือก คือ

  • แท็บ Palette หมายถึง ต้องการใช้สีจากการผสมของแม่สี RGB ตามปกติ

clip_image008

รูปที่ 5-6 แสดงแท็บ Palette

  • แท็บ System หมายถึง ต้องการใช้สี โดยเลือกจากตัวอย่างของสีที่ควรจะเป็น ในสภาวะต่างๆ ซึ่งขึ้นอยู่กับการกำหนดสีใน Control Panel ด้วย เช่น ขณะถูก Hilight, Disable ฯลฯ เป็นต้น เป็นการอำนวยความสะดวกให้คุณ ในกรณีที่ คุณต้องการใช้สีที่เป็นมาตรฐาน และเหมาะสมกับสภาวะนั้นๆ

clip_image009

รูปที่ 5-7 แสดงแท็บ System


BorderStyle

คุณสมบัตินี้มีหน้าที่กำหนดรูปแบบของฟอร์มที่จะปรากฎขึ้นมา มีรูปแบบการใช้งานดังนี้

Form1.BorderStyle = [value]

ตัวแปร value หมายถึง ตัวเลขจำนวนเต็ม หรือค่าคงที่ ที่ใช้สำหรับกำหนดรูปแบบของเส้นขอบของฟอร์ม สามารถมีค่าได้ดังนี้

ค่าคงที่

ค่าตัวเลข

รายละเอียด

vbBSNone

0

กำหนดให้ฟอร์มไม่มีเส้นขอบ ไม่มี title bar ไม่สามารถปรับขนาดได้ด้วยเมาส์

vbFixedSingle

1

แสดงเส้นขอบแบบ Fixed Single (มีเส้นขอบแบบเส้นเดียว)   กำหนดให้ฟอร์มมีปุ่ม  Control-menu และปุ่ม Close เท่านั้น ไม่สามารถปรับขนาดได้ด้วยเมาส์

vbSizable

2

เป็นค่า Default ทุกครั้งที่โหลดฟอร์มขึ้นมา VB จะกำหนดให้ฟอร์มมีรูปแบบนี้ คุณสามารถปรับขนาด โดยการใช้เมาส์ได้ และมี titlebar,   Control-menu,  title bar,  Maximize button, และ  Minimize button ครบถ้วนทุกอย่าง :-)

vbFixedDouble

3

แสดงเส้นขอบฟอร์มแบบ Fixed Dialog  หมายถึงฟอร์มมี title bar มี   Control-menu และปุ่ม Close  แต่ไม่มีปุ่ม Maximize และ Minimize button และคุณไม่สามารถ ปรับขนาดของฟอร์มได้ด้วยเมาส์

vbFixedToolWindow

4

แสดงฟอร์มแบบ Fixed ToolWindow เป็นฟอร์มที่ไม่สามารถปรับขนาดได้ด้วยเมาส์   มี title bar และปุ่ม Close เท่านั้น ตัวอักษรที่แสดงในแถบ  title bar จะแสดงด้วยฟอนต์ ขนาดเล็ก ซึ่งก็มีขนาดไม่ต่างจากปกติ เท่าใดนัก และฟอร์มจะไม่ปรากฎบน Task bar ของ Windows 98/95/NT 4.0

vbSizableToolWindow

5

แสดงฟอร์มแบบ   ToolWindow เหมือนแบบที่ 4 ต่างกันที่คุณสามารถปรับขนาดฟอร์มได้ ด้วยเมาส์

clip_image010

รูปที่ 5-8 แสดงลักษณะของฟอร์มแบบต่างๆ


ControlBox

คุณสมบัติ ControlBox  มีหน้าที่กำหนดให้ฟอร์ม แสดงปุ่ม ControlBox, คุณสมบัติ MaxButton มีหน้าที่กำหนดให้ฟอร์มแสดงปุ่ม Max และคุณสมบัติ MinButton กำหนดให้ฟอร์มแสดงปุ่ม Min หรือไม่ ทั้ง 3 คุณสมบัติ คุณสามารถกำหนดได้ในขณะออกแบบเท่านั้น ส่วนขณะรัน คุณสามารถอ่านค่า ได้อย่างเดียวเท่านั้น   มีรูปแบบการใช้งานดังนี้

Form1.ControlBox

ในขณะออกแบบ คุณสามารถกำหนดได้ 2 แบบคือ

ค่า

รายละเอียด

True

(Default) กำหนดให้แสดงปุ่ม ControlButton

False

ไม่ต้องแสดงปุ่ม ControlButton

คุณจะใช้คุณสมบัตินี้ได้ คุณต้องกำหนดให้คุณสมบัติ BorderStyle เป็นแบบ 1 (Fixed Single), 2 (Sizable), หรือ 3 (Fixed Double) เท่านั้น


Count

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

Form1.Count


MaxButton และ MinButton

คุณสมบัตินี้มีหน้าที่สำหรับกำหนดให้ Form แสดงปุ่ม Max/Min ที่แถบ title bar หรือไม่ มีรูปแบบการใช้งานดังนี้

Form1.MaxButton
Form1.MinButton

คุณสามารถกำหนดค่าได้ดังนี้

ค่า

รายละเอียด

True

(Default) กำหนดให้ฟอร์มแสดงปุ่ม Max หรือปุ่ม Min  บน title bar

False

ไม่ต้องแสดงปุ่ม Max หรือ Min บน title bar

คุณจะใช้คุณสมบัตินี้ได้ คุณต้องกำหนดให้คุณสมบัติ BorderStyle เป็นแบบ 1 (Fixed Single), 2 (Sizable), หรือ 3 (Fixed Double) เท่านั้น


Enabled

คุณสมบัตินี้มีหน้าที่สำหรับกำหนดให้ฟอร์ม สามารถตอบรับ หรือตอบสนองเหตุการณ์ที่เกิดขึ้นจากผู้ใช้ได้ หรือไม่ มีรูปแบบการใช้งานดังนี้

Form1.Enabled [= boolean]

ตัวแปร boolean มีความหมายดังนี้

ค่า

รายละเอียด

True

(Default) กำหนดให้ฟอร์มสามารถ ตอบสนองเหตุการณ์ที่เกิดขึ้นได้

False

กำหนดให้ฟอร์มไม่สามารถตอบรับกับการกระทำของผู้ใช้


Height และ Width

คุณสมบัติ Height มีหน้าที่สำหรับกำหนดความสูงของฟอร์ม ส่วนคุณสมบัติ Width มีหน้าที่สำหรับกำหนดความยาวของฟอร์ม มีรูปแบบการใช้งานดังนี้

Form1.Height [= number]
Form1.Width [= number]

ตัวแปร number หมายถึง เลขจำนวนจริง Single ที่เป็นขนาดความสูง และความกว้างของฟอร์ม โดยรวมถึงความหนาของ border และ title bar ของฟอร์มด้วย มีหน่วยเป็น twip


Left และ Top

คุณสมบัตินี้มีหน้าที่สำหรับคืนค่า หรือกำหนดตำแหน่งของฟอร์ม ที่จะปรากฎบนจอภาพ โดยวัดเทียบจากมุมซ้ายบนของจอภาพ กับมุมซ้ายบนของฟอร์ม มีรายละเอียดดังนี้

คุณสมบัติ Left คืนค่า หรือกำหนดระยะห่าง ระหว่างขอบในด้านซ้ายของฟอร์มกับจอภาพ มีหน่วยเป็น twip
คุณสมบัติ Top คืนค่า หรือกำหนดระยะห่าง ระหว่างขอบในด้านบนของฟอร์มกับจอภาพ มีหน่วยเป็น twip หรือขึ้นอยู่กับคุณสมบัติ ScaleMode ทั้ง 2 คุณสมบัติ มีรูปแบบการใช้งานดังนี้

Form1.Left [= x]
Form1.Top [= y]

ตัวแปร x หมายถึง เลขจำนวนจริง Single ที่เป็นตำแหน่งของฟอร์มที่จะปรากฎบนจอภาพ วัดตามแนวแกน x
ตัวแปร y  หมายถึง เลขจำนวนจริง Single ที่เป็นตำแหน่งของฟอร์มที่จะปรากฎบนจอภาพ วัดตามแนวแกน y

clip_image004[1]

ตำแหน่งของฟอร์มที่ปรากฎขึ้นมา จะแสดงในรูปแบบของพิกัด co-ordinate โดยมีหน่วยเป็น twip ถ้าคุณมีการเคลื่อนย้าย หรือเปลี่ยนตำแหน่งของฟอร์ม คุณสมบัติ Left และ Top จะเปลี่ยนไปโดยอัตโนมัติ และถ้าคุณมีการปรับขนาดของฟอร์มด้วยเมาส์ คุณสมบัติ Height และ Width ก็จะมีค่าเปลี่ยนแปลง โดยอัตโนมัติเช่นกัน เนื่องจากว่าคุณสามารถใช้คุณสมบัตินี้ เพื่อเคลื่อนย้ายตำแหน่งของฟอร์มได้ เช่นเดียวกับเมธอด Move มีคำแนะนำว่า ถ้าคุณต้องการเคลื่อนย้ายฟอร์ม ให้ใช้เมธอด Move แทนการกำหนดคุณสมบัติ Left, Top เพราะสามารถประมวลผลได้เร็วกว่า


Icon

ใช้สำหรับระบุรูปแบบของไอคอน เมื่อผู้ใช้ย่อฟอร์มลง (Minimize) ซึ่งจะต้องเป็นไฟล์ที่มีนามสกุล *.ico เท่านั้น มีรูปแบบการใช้งานดังนี้

Form1.Icon

สำหรับคุณสมบัตินี้คุณสามารถกำหนดได้ทั้งในขณะออกแบบ และขณะรัน โดยที่ขณะออกแบบ คุณสามารถกำหนดรูปแบบไอคอนได้ โดยการกำหนดโดยตรงผ่านทางหน้าต่าง properties แต่ถ้าในขณะรัน คุณต้องใช้ฟังก์ชัน LoadPicture() เช่น

Form1.Icon =LoadPicture("c:\ico\save.ico") หมายถึง ให้โหลดไอคอน save.ico ที่อยู่ในโฟลเดอร์ ico จากไดรฟ์ C:\

แต่ถ้าคุณใช้ฟังก์ชัน LoadPicture() โดยไม่มีการระบุชื่อไฟล์ไอคอน VB จะแสดงไอคอนของฟอร์มแบบปกติให้คุณโดยอัตโนมัติ เช่น

Form1.Icon =LoadPicture( ) หมายถึง ถ้าผู้ใช้มีการย่อฟอร์มลง จะใช้ไอคอนฟอร์มปกติ


MousePointer

ใช้สำหรับกำหนดรูปแบบของเมาส์ เพื่อแสดงสถานะ หรือรูปแบบการทำงานของฟอร์มในระยะเวลาหนึ่งๆ   มีรูปแบบการใช้งานดังนี้

Form1.MousePointer [= value]

ตัวแปร value หมายถึง ค่าคงที่ หรือค่าตัวเลขที่แทนลักษณะของเมาส์ ซึ่งมีอยู่ด้วยกัน 17 กรณี ดังตารางต่อไปนี้

ค่าคงที่

ค่าตัวเลข

รายละเอียด

vbDefault

0

(Default) ลักษณะของเมาส์ ขึ้นอยู่กับอ๊อบเจ็กต์ หรือการทำงานในขณะนั้น

vbArrow

1

Arrow -กำหนดให้เมาส์แสดงในลักษณะ clip_image011

vbCrosshair

2

Cross (crosshair pointer)-กำหนดให้เมาส์แสดงในลักษณะ clip_image012

vbIbeam

3

I beam-กำหนดให้เมาส์แสดงในลักษณะ clip_image013

vbIconPointer

4

กำหนดให้เมาส์แสดงในลักษณะ clip_image011[1]

vbSizePointer

5

กำหนดให้เมาส์แสดงในลักษณะ clip_image014

vbSizeNESW

6

กำหนดให้เมาส์แสดงในลักษณะ clip_image015

vbSizeNS

7

กำหนดให้เมาส์แสดงในลักษณะ clip_image016

vbSizeNWSE

8

กำหนดให้เมาส์แสดงในลักษณะ clip_image017

vbSizeWE

9

กำหนดให้เมาส์แสดงในลักษณะ clip_image018

vbUpArrow

10

กำหนดให้เมาส์แสดงในลักษณะ clip_image019

vbHourglass

11

กำหนดให้เมาส์แสดงในลักษณะ clip_image020

vbNoDrop

12

กำหนดให้เมาส์แสดงในลักษณะ clip_image021

vbArrowHourglass

13

กำหนดให้เมาส์แสดงในลักษณะ clip_image022

vbArrowQuestion

14

กำหนดให้เมาส์แสดงในลักษณะ clip_image023

vbSizeAll

15

กำหนดให้เมาส์แสดงในลักษณะ clip_image014[1]

vbCustom

99

กำหนดให้ลักษณะของเมาส์ ขึ้นอยู่กับคุณสมบัติ MouseIcon


MouseIcon

คุณสมบัตินี้มีหน้าที่กำหนดลักษณะของเมาส์ ซึ่ง ถ้าคุณต้องการใช้ไอคอนตามแบบที่คุณต้องการ คุณต้องกำหนดให้คุณสมบัติ MousePointer มีค่าเท่ากับ 99 เสียก่อน จึงจะใช้คุณสมบัตินี้ได้ มีรูปแบบการใช้งานดังนี้

Form1.MouseIcon = LoadPicture(pathname)
Form1.MouseIcon [=picture]

ตัวแปร pathname หมายถึง ชื่อไฟล์ไอคอนที่คุณระบุไดรฟ์และเส้นทางที่คุณจัดเก็บไฟล์ดังกล่าว
ตัวแปร picture หมายถึง ชื่อไฟล์ไอคอน ซึ่งคุณระบุแต่ชื่อไฟล์ (*.ico)


Picture

คุณสมบัตินี้มีหน้าที่สำหรับกำหนดสีพื้นหลังของอ๊อบเจ็กต์ฟอร์ม   มีรูปแบบการใช้งานดังนี้

Form1.Picture [= picture]

ตัวแปร picture หมายถึง ชื่อของไฟล์ภาพกราฟฟิก สำหรับชนิดของไฟล์กราฟฟิก ที่ฟอร์มสนับสนุนคือ Bitmap (*.bmp), icon(*.ico), metafile(*.wmf), GIF(*.gif) และ  JPEG (*.jpg)

สำหรับการกำหนดรูปภาพกราฟฟิก ในขณะออกแบบคุณสามารถกำหนดไฟล์กราฟฟิกได้โดยตรงจากหน้าต่างคุณสมบัติ ซึ่งสนับสนุนไฟล์กราฟฟิกที่กล่าวมา ทั้งหมด เมื่อคุณกำหนดที่หน้าต่างคุณสมบัติ มันจะแสดงไดอะล๊อกบ๊อกซ์ Load Picture ขึ้นมา ดังรูป

clip_image024

รูปที่ 5-9 แสดงไดอะล๊อกบ๊อกซ์ Load Picture

เมื่อคุณกำหนดไฟล์กราฟฟิกแล้ว ถ้าคุณ Compile โปรเจ็กต์ ไฟล์กราฟฟิกดังกล่าวจะถูกรวมเข้ากับไฟล์ *.exe โดยอัตโนมัติ

สำหรับในขณะรันคุณอาจใช้ฟังก์ชัน LoadPicture ( ) เพื่อโหลดภาพกราฟฟิกก็ได้ แต่คุณสามารถกำหนดได้เฉพาะไฟล์กราฟฟิกดังนี้ Bitmap (*.bmp), icon(*.ico), metafile(*.wmf) เท่านั้น


ScaleMode

คุณสมบัตินี้มีหน้าที่สำหรับคืนค่า หรือกำหนดหน่วยวัด ที่ใช้ในฟอร์ม มีรูปแบบการใช้งานดังนี้

Form1.ScaleMode [= value]

ตัวแปร value หมายถึง เลขจำนวนเต็มแทนหน่วยวัด   ซึ่งมีความหมายดังนี้

ค่าคงที่

ค่าตัวเลข

รายละเอียด

vbUser

0

หมายถึง มีการกำหนดหน่วยวัดที่คุณสมบัติ   ScaleHeight, ScaleWidth, ScaleLeft, และ  ScaleTop ตัวใดตัวหนึ่งหรือทั้งหมด ให้มีหน่วยวัดที่ไม่ตรงกับหน่วยวัดใดเลย

vbTwips

1

(Default) หน่วย  Twip (โดยที่ 1440 twips เท่ากับ 1 นิ้ว และ  567 twips เท่ากับ 1 เซนติเมตร

vbPoints

2

หน่วย  Point ( โดยที่ 72 points เท่ากับ 1 นิ้ว)

vbPixels

3

หน่วย  Pixel (เป็นหน่วยที่เล็กที่สุด สำหรับหน่วยวัด ซึ่งเป็นการบอกความละเอียด (resolution) ของจอภาพ)

vbCharacters

4

หน่วยตัวอักษร (Character)   (โดยที่ 1 ตัวอักษรในแนวนอนเท่ากับ 120 twips ส่วนแนวตั้งมีความสูงเท่ากับ 240 twips )

vbInches

5

หน่วยนิ้ว (Inch)

vbMillimeters

6

หน่วยมิลลิเมตร (Millimeter)

vbCentimeters

7

หน่วยเซนติเมตร (Centimeter)


Visible

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

Form1.Visible [= boolean]

ตัวแปร boolean คุณสามารถกำหนดค่า มีความหมายได้ดังนี้

กำหนดค่า

รายละเอียด

True

(Default) ผู้ใช้เห็นฟอร์มได้ปกติ

False

ฟอร์มจะถูกซ่อนไว้ในหน่วยความจำ (ในขณะออกแบบ คุณยังคงสามารถมองเห็นอยู่ แต่จะมีผลในขณะรัน)

clip_image004[2]

คุณยังสามารถใช้เมธอด show และ hide แทนการกำหนดคุณสมบัตินี้ก็ได้


WindowState

คุณสมบัตินี้มีหน้าที่กำหนดสถานะของฟอร์ม มีรูปแบบการใช้งานดังนี้

Form1.WindowState [= value]

ตัวแปร value คุณสามารถกำหนดค่าได้ดังนี้

ค่าคงที่

ค่าตัวเลข

รายละเอียด

vbNormal

0

(Default) กำหนดให้ฟอร์มมีสถานะปกติ หรือมีสถานะตามที่คุณได้กำหนดไว้ ไม่ว่าคุณจะกำหนดสถานะ ในขณะออกแบบ หรือในขณะรัน (โดยการเขียนโค้ด)

vbMinimized

1

กำหนดให้ฟอร์มมีสถานะเป็นแบบไอคอน เหมือนกับผู้ใช้คลิกที่ปุ่ม Minimize

vbMaximized

2

กำหนดให้ฟอร์มมีสถานะเป็นแบบเต็มจอภาพ เหมือนกับผู้ใช้คลิกที่ปุ่ม Maximize

นี่เป็นเพียงคุณสมบัติบางส่วนที่ผู้เขียนเห็นว่ามีความจำเป็นในการใช้งาน คุณสามารถทราบรายละเอียดเพิ่มเติมของคุณสมบัติอื่นๆ ของฟอร์มได้ โดยดูที่หัวข้อ Reference/Language Reference/F/Form Object,Forms Collection/Properties ใน msdn Library


เมธอดของฟอร์ม

ฟอร์มมีเมธอดที่น่าสนใจดังนี้

Cls

มีหน้าที่ลบข้อความ หรือรูปภาพใดๆ ที่อยู่บนฟอร์ม ในขณะรันมีรูปแบบการใช้งานดังนี้

Form1.Cls

clip_image004[3]

ข้อจำกัดในการใช้งานก็คือ ถ้าคุณกำหนดให้แสดง background โดยการใช้คุณสมบัติ picture เมธอดนี้จะไม่มีผลต่อ background นั้นๆ และถ้าข้อความ หรือรูปภาพที่แสดงอยู่บนฟอร์ม ในขณะที่คุณสมบัติ AutoRedraw มีค่าเท่ากับ false อยู่ เมธอด cls นี้ก็ไม่มีผลเช่นกัน คุณต้องกำหนดให้คุณสมบัติ AutoRedraw มีค่าเท่ากับ true ก่อน จึงจะสามารถลบรูปภาพนั้นๆ โดยเมธอด cls ได้


Hide

ใช้สำหรับซ่อนฟอร์ม มีผลทำให้ผู้ใช้ไม่สามารถเห็นฟอร์มนั้นๆ ได้ แต่ฟอร์มดังกล่าวยังคงอยู่ในหน่วยความจำ คุณยังคงสามารถเขียนโค้ด เพื่อควบคุมฟอร์มดังกล่าวได้ปกติ ซึ่งมีผลเหมือนกับกำหนดคุณสมบัติ Form1.Visible = False มีรูปแบบการใช้งานดังนี้

Form1.Hide

ในกรณีที่คุณใช้วิธี Hide กับฟอร์มที่ยังไม่ได้โหลดเข้ามาในหน่วยความจำ VB จะโหลดฟอร์มนั้นๆ มาที่หน่วยความจำ แต่จะไม่แสดงออกมาให้ผู้ใช้เห็น คุณก็สามารถเขียนโค้ดเพื่อควบคุมฟอร์มดังกล่าวได้เช่นกัน แล้วใช้วิธี Show เพื่อแสดงฟอร์มออกมาให้ผู้ใช้เห็นในภายหลังก็ได้


Move

โดยปกติแล้ว คุณสมบัตินี้ใช้สำหรับกำหนดตำแหน่งฟอร์ม หรือเคลื่อนย้ายฟอร์ม   แต่คุณยังสามารถใช้ option เพื่อปรับขนาดความกว้าง หรือความสูงของฟอร์มได้อีกด้วย มีรูปแบบการใช้งานดังนี้

Form1.Move left, [top, width, height]

ตัวแปรแต่ตัวมีความหมายดังนี้

ตัวแปร

รายละเอียด

left

คุณต้องกำหนด เป็นตัวเลขจำนวนจริง  Single ซึ่งเป็นการกำหนดตำแหน่งแบบคู่ลำดับ co-ordinate ตามแนวแกน x (x-axis) สำหรับด้านซ้ายมือของฟอร์ม

top

(Optional) เป็นตัวเลขจำนวนจริง Single ซึงเป็นตำแหน่งแบบคู่ลำดับ ตามแนวแกน y (y-axis) สำหรับด้านบนของฟอร์ม

width

(Optional) เป็นเลขจำนวนจริง ซึ่งเป็นความกว้างของฟอร์ม

height

(Optional)  เป็นเลขจำนวนจริง ซึ่งเป็นความสูงของฟอร์ม


Print

เมธอดนี้มีหน้าที่สำหรับเขียนข้อความลงบนฟอร์ม มีรูปแบบการใช้งานดังนี้

[Form1.] Print [outputlist]

ตัวแปร outputlist หมายถึง ข้อความที่คุณต้องการแสดงบนฟอร์ม เช่น

Private Sub Form_Activate()
Dim i As Integer
  For i = 1 To 10
Print i
  Next i
End Sub


Show

เมธอดนี้มีหน้าที่สำหรับกำหนดให้ฟอร์มที่ซ่อนอยู่ด้วยเมธอด Hide หรือคุณสมบัติ Visible=False ปรากฎออกมา มีรูปแบบการใช้งาน ดังนี้

Form1.Show [style], [ownerform]

ตัวแปร style หมายถึง เลขจำนวนเต็ม Integer ซึ่งใช้สำหรับกำหนดรูปแบบของฟอร์ม ที่จะปรากฏออกมา คุณสามารถกำหนดค่าได้ดังนี้

  • 0 หมายถึง ฟอร์มปรากฎออกมาในรูปแบบ Modeless
  • 1 หมายถึง ฟอร์มปรากฎออกมาในรูปแบบ Modal

ตัวแปร  ownerform หมายถึง ข้อมูลชนิด String ซึ่งเป็นชื่อของฟอร์มที่คุณต้องการ Show โดยใช้คำสงวน Me เพื่อระบุฟอร์มที่ต้องการแสดง เช่น

Option Explicit
Private Sub Form_Load()
   Form2.Show , Me
End Sub

ให้คุณทดลองเพิ่ม Form เข้าไป 2 ฟอร์ม แล้วลองรันโปรเจ็กต์ดู ปรากฎว่า Form2 จะอยู่ด้านบนตลอดเวลา ซึ่งเป็นผลมาจากตัวแปร ownerform กำหนดให้ Form2 แสดงอยู่ตลอดเวลา


เหตุการณ์ของฟอร์ม

สำหรับเหตุการณ์ที่น่าสนใจของฟอร์มมีดังนี้

Form_Load ( ), Form_Active ( ), Form_Deactive ( ) และ Form_Unload (  )

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

Private Sub Form_Load ( )
Private Sub Form_Active ( )
Private Sub Form_Deactive ( )
Private Sub Form_Unload ( Cancel As Integer )

อาร์กิวเมนต์ Cancel หมายถึง เลขจำนวนเต็ม Integer มีความหมายดังนี้

กำหนดค่า

ความหมาย

0

หมายถึง ฟอร์มถูกโหลดออกจากหน่วยความจำ

ไม่เท่ากับ 0

หมายถึง ฟอร์มยังคงอยู่ในหน่วยความจำ

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

Private Sub Form_Load()
With Combo1
  .AddItem = "aaaa"
  .AddItem = "bbbb"
  .AddItem = "cccc"
  .AddItem = "dddd"
End With
End Sub

เมื่อ Form ถูกโหลดเข้ามาในหน่วยความจำ รายการ "aaaa" ถึง "dddd" จะถูกเพิ่มไปที่คอนโทรล ComboBox โดยที่ผู้ใช้มองไม่เห็น รายละเอียดของขั้นตอนดังกล่าว ในการใช้งานเหตุการณ์ Form_Load ( ) นี้ คุณอาจจะต้องมีการเพิ่ม กระบวนการต่างๆ ในขั้นตอนนี้มากพอสมควร และคุณจะต้องกำหนดค่าเริ่มต้นต่างๆ ที่คุณจะใช้ในแอพพลิเคชันให้เสร็จสิ้นในเหตุการณ์นี้ ตัวอย่างที่คุณสามารถพบเห็นได้ก็คือ เมื่อคุณเริ่มต้น boot เครื่องจะเห็นได้ว่ามี จอภาพโลโก้ (splash screen) ของ Windows95/98 หรือ NT ขึ้นมา ให้คุณสังเกตแถบที่เคลื่อนไหวด้านล่าง คุณจะพบว่ามันจะเคลื่อนไหวไปเรื่อยๆ ซึ่งหมายถึงระบบปฎิบัติการ Windows กำลังโหลดองค์ประกอบเริ่มต้นต่างๆ ขึ้นมา เช่น DeskTop, TaskBar ไอคอนต่างๆ ฯลฯ เมื่อโหลดเสร็จสิ้นแล้ว ก็จะปรากฎสภาพแวดล้อม Windows ที่พร้อมในการใช้งาน (รึเปล่า?) ขึ้นมา

เหตุการณ์ Form_Active (  ) จะเป็นเหตุการณ์ที่เกิดต่อจากเหตุการณ์ Form_Load ( ) จะเป็นเหตุการณ์ที่ปรากฎขึ้นบนจอภาพ ซึ่งหมายถึง คุณจะต้องทำให้สภาพแวดล้อมของแอพพลิเคชันของคุณ พร้อมในการใช้งาน คุณอาจจะใช้เหตุการณ์  Form_Active อยู่ในสถานะ แอกทีฟ เพื่อประมวลผลอะไรบางอย่างก็ได้

เหตุการณ์ Form_Deactive ( ) เป็นเหตุการณ์ที่เกิดขึ้น ต่อจากที่ Form อยู่ในสภาวะแอกทีฟแล้ว หมายถึง เหตุการณ์ที่ Form ไม่ได้อยู่ในสภาวะได้รับความสนใจนั่นเอง

เหตุการณ์ Form_Unload (Cancel As Integer) เป็นเหตุการณ์ที่ Form ถูกโหลดออกจากหน่วยความจำ ซึ่งเป็นการยกเลิกการใช้งาน Form นั้นๆ เป็นการคืนหน่วยความจำให้กับระบบอีกด้วย

ไม่ว่าคุณจะพัฒนาแอพพลิเคชันด้านใดก็ตาม เหตุการณ์ทั้ง 4 คุณจะต้องใช้งานอย่างแน่นอน ขอให้คุณทำความเข้าใจเหตุการณ์ทั้ง 4 ให้ดี เพราะเป็นพื้นฐานที่คุณจะใช้งาน Form ได้อย่างมีประสิทธิภาพ และตรงกับความต้องการของคุณ สำหรับตัวอย่างการใช้งาน Form เบื้องต้น ผู้เขียนจะเขียนร่วมกับการใช้งานคอนโทรลต่างๆ ในส่วนของการประยุกต์ใช้งาน Form ให้คุณดูในหัวข้อ "บทที่ 52 การประยุกต์ใช้งานฟอร์มด้วย Windows API"


Form_Click ( )

เป็นเหตุการณ์ที่เกิดขึ้น เมื่อผู้ใช้คลิ๊กที่บริเวณพื้นที่แสดงผลของ   Form โดยที่ไม่รวมบริเวณแถบ title bar มีรูปแบบการใช้งานดังนี้

Private Sub Form_Click( )

End Sub


Form_DblClick ( )

เป็นเหตุการณ์ที่เกิดขึ้น เมื่อผู้ใช้ดับเบิลคลิ๊กที่บริเวณพื้นที่แสดงผลของ   Form โดยที่ไม่รวมบริเวณแถบ title bar มีรูปแบบการใช้งานดังนี้

Private Sub Form_DblClick ( )

End Sub


Form_KeyDown ( ), Form_KeyUp ( ) และ Form_KeyPress ( )

เหตุการณ์ Form_KeyDown ( )  เกิดขึ้นเมื่อผู้ใช้กดปุ่ม (press) ที่คีย์บอร์ดลง  เหตุการณ์ Form_KeyUp ( ) เกิดขึ้นเมื่อผู้ใช้ปล่อยปุ่ม (release) ที่คีย์บอร์ด และเหตุการณ์ Form_KeyPress ( ) เกิดขึ้นเมื่อผู้ใช้กดและปล่อยปุ่มคีย์บอร์ด ซึ่งหมายถึง ผู้ใช้พิมพ์ตามปกตินั่นเอง มีรูปแบบการใช้งานดังนี้

Private Sub Form_KeyDown(keycode As Integer, shift As Integer)

End Sub

Private Sub Form_KeyUp(keycode As Integer, shift As Integer)

End Sub

Private Sub Form_KeyPress(keyascii As Integer)

End Sub

อาร์กิวเมนต์ keycode หมายถึง รหัสคีย์ต่างๆ ที่อยู่บนคีย์บอร์ด เช่น ปุ่ม F1, ปุ่ม Home เป็นต้น สำหรับรายการรหัสคีย์อื่นๆ คุณสามารถดูได้จาก บทที่ 28 ค่าคงที่ระบบ (System Constants) ที่น่าสนใจ

อาร์กิวเมนต์ shift หมายถึง สถานะของการกดปุ่ม Alt, Ctrl หรือ Shift ที่อยู่บนคีย์บอร์ด ซึ่งแต่ละคีย์จะอยู่ในรูปแบบบิต ซึ่งมีความหมายดังนี้

ค่าคงที่

ค่าตัวเลขประจำบิต

รายละเอียด

vbShiftMask

1

หมายถึง คีย์ Shift

vbCtrlMask

2

หมายถึง คีย์ Ctrl

vbAltMask

4

หมายถึง คีย์ Alt

เนื่องจากคีย์ดังกล่าว ผู้ใช้สามารถกดพร้อมๆ กันได้ในคราวเดียว ดังนั้นการตรวจสอบสภาวะการกดคีย์ คุณจะต้องใช้ผลรวมของตัวเลขประจำบิต เพื่อตรวจสอบสภาวะการกดคีย์นั้นๆ เช่น ถ้าผู้ใช้มีการกดปุ่ม Shift+Ctrl ค่าที่ได้ก็คือ 3 หรือ vbShiftMask+vbCtrlMask นั่นเอง

อาร์กิวเมนต์ keyascii หมายถึง รหัสแอสกีที่เป็นค่าประจำตัวของแต่ละตัวอักษร เช่น อักษร A จะมีรหัสแอสกีเท่ากับ 65 ส่วนอักษร a มีรหัสแอสกีเท่ากับ 97 เป็นต้น สำหรับรหัสแอสกีอื่นๆ คุณสามารถดูได้จาก บทที่ 28 ค่าคงที่ระบบ (System Constants) ที่น่าสนใจ


Form1_QueryUnload ( )

เป็นเหตุการณ์ที่เกิดขึ้นก่อนเหตุการณ์ Form1_Unload ( ) มีรูปแบบการใช้งาน ดังนี้

Private Sub Form_QueryUnload(cancel As Integer, unloadmode As Integer)

End Sub

อาร์กิวเมนต์ Cancel หมายถึง เลขจำนวนเต็ม Integer มีความหมายดังนี้

กำหนดค่า

ความหมาย

0

หมายถึง ฟอร์มถูกโหลดออกจากหน่วยความจำ

ไม่เท่ากับ 0

หมายถึง ฟอร์มยังคงอยู่ในหน่วยความจำ

อาร์กิวเมนต์ unloadmode มีความหมายดังนี้

ค่าคงที่

ค่าตัวเลข

รายละเอียด

vbFormControlMenu

0

หมายถึง ผู้ใช้เลือกคำสั่ง Close จากคอนโทรลเมนูของฟอร์ม

vbFormCode

1

หมายถึง ฟอร์มถูกยกเลิกด้วยการเขียนโค้ดด้วยคำสั่ง Unload

vbAppWindows

2

หมายถึง ฟอร์มถูกยกเลิกโดยการทำงานของ Windows

vbAppTaskManager

3

หมายถึง ฟอร์มถูกยกเลิกโดยไดอะล๊อกบ๊อกซ์ Task Manager (Ctrl+Alt+Del)

vbFormMDIForm

4

หมายถึง ฟอร์มลูก ( MDI form) เนื่องจากฟอร์มแม่ (MDI form) ถูกปิด

vbFormOwner

5

หมายถึง ฟอร์มถูกปิดโดยตัวมันเอง

เพื่อให้คุณเห็นประโยชน์ของเหตุการณ์นี้ได้ชัดเจนยิ่งขึ้น สมมติว่าคุณกำลังพิมพ์เอกสารใน Word ให้คุณลองปิดหน้าต่างเอกสาร โดยการคลิ๊กปุ่ม clip_image025 เพื่อปิดเอกสาร โดยที่ยังไม่มีการเซฟงาน จะพบว่า Word จะแสดงไดอะล๊อกบ๊อกซ์เตือนให้คุณเซฟงาน เพื่อป้องกันในกรณีที่คุณลืมเซฟงานโดยไม่ตั้งใจ จากกรณีนี้ สามารถอธิบายในเชิงโปรแกรมมิ่งดังนี้ เมื่อคุณคลิ๊กที่ปุ่ม clip_image025[1] มีความหมายว่า คุณต้องการยกเลิกหน้าต่างลูก (MDI ฟอร์ม) ออกจากหน่วยความจำ นั่นคือ กำลังจะเกิดเหตุการณ์ Form_Unload ( ) ขึ้น แต่ยังไม่เกิด เพราะว่า Word มีการตรวจสอบการเปลี่ยนแปลงของเอกสารเสมอ เนื่องจากเอกสาร ยังไม่ได้ถูกเซฟ เหตุการณ์ Form_QueryUnload ( ) เกิดก่อนเหตุการณ์ Form_Unload ( ) จึงถูกแทรกขึ้นมา (ก่อนที่ฟอร์มจะถูกโหลดออกจากหน่วยความจำ) เพื่อเตือนให้คุณเซฟงาน ซึ่งคุณควรที่จะนำเทคนิคนี้ไปใช้งาน เพราะมีประโยชน์เป็นอย่างยิ่ง

ตัวอย่างประจำบทที่ 5

การเคลื่อนย้ายฟอร์มชนิดที่ไม่มีแถบ Title Bar

โดยปกติแล้ว เราสามารถเคลื่อนย้ายฟอร์มได้โดยการ drag เมาส์ที่บริเวณแถบ Title Bar ของฟอร์ม ตัวอย่างต่อไปนี้ เป็นการเคลื่อนย้ายฟอร์ม ชนิดที่ไม่มีแถบ Title Bar ให้คุณกำหนดคุณสมบัติ BorderStyle=0-None (ฟอร์มชนิดไม่มีแถบ Title Bar) จากนั้น วาดอินเตอร์เฟสดังรูป

clip_image026

ตัวอย่างที่ 5-1 แสดงอินเตอร์เฟสประกอบที่ทดสอบ

Option Explicit
'ให้คุณกำหนดคุณสมบัติ BorderStyle=0-None
Dim bFlag As Boolean 'ตัวแปรบอกสถานะ
'ตัวแปรสำหรับเก็บตำแหน่งของเมาส์
Dim posX As Integer
Dim posY As Integer
'ตัวแปรสำหรับเก็บตำแหน่งของฟอร์ม
Dim frmX As Integer
Dim frmY As Integer
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'เมื่อผู้ใช้กดเมาส์ที่ตำแหน่งใดๆ ในบริเวณฟอร์ม
    bFlag = True 'กำหนดให้อยู่ในโหมด On
'อ่านตำแหน่งของเมาส์ จากอาร์กิวเมนต์ x และอาร์กิวเมนต์ y แล้วเก็บไว้ที่ตัวแปร posX  และ posY
    posX = X
    posY = Y
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'ถ้าผู้ใช้มีการเคลื่อนย้ายเมาส์ แล้ว
If bFlag Then
'คำนวณตำแหน่งมุมซ้ายบนของฟอร์ม ตามพิกัดคู่ลำดับ x,y
'โดยเอาตำแหน่งมุมซ้ายบนเดิมของฟอร์ม-ตำแหน่งที่ผู้ใช้คลิ๊กเมาส์+ตำแหน่งของเมาส์ที่ถูกผู้ใช้เคลื่อนย้าย แล้วเก็บไว้ที่ตัวแปร frmX และ frmY
    frmX = Form1.Left - posX + X
    frmY = Form1.Top - posY + Y
'ย้ายฟอร์มไปยังตำแหน่งใหม่
    Form1.Move frmX, frmY
End If
'แสดงตำแหน่งของฟอร์ม
    Label3.Caption = frmX
    Label4.Caption = frmY
'แสดงตำแหน่งของเมาส์
     Label7.Caption = posX
    Label8.Caption = posY
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    bFlag = False 'กำหนดให้อยู่ในโหมด Off
End Sub
สำหรับการอ่านตำแหน่งของเมาส์ ถ้าคุณคลิ๊กที่บริเวณตัวคอนโทรล Label (เกิดเหตุการณ์ Label_MouseDown ( )) จะไม่สามารถเก็บตำแหน่งของเมาส์ได้ เพราะว่า จะใช้เหตุการณ์ Form_MouseDown( ) เพื่อเก็บตำแหน่งของเมาส์