Chapter 7 ListBox,ComboBox และ ScrollBar

Chapter 7  Working with ListBox,ComboBox and ScrollBar

การใช้งานคอนโทรล ListBox,ComboBox และ ScrollBar

  • การใช้งานคอนโทรล ListBo
    • คุณสมบัติของคอนโทรล ListBox
    • เมธอดของคอนโทรล ListBox
    • เหตุการณ์ของคอนโทรล ListBox
  • การใช้งานคอนโทรล ComboBox
    • คุณสมบัติของคอนโทรล ComboBox
    • เมธอดของคอนโทรล ComboBox
    • เหตุการณ์ของคอนโทรล ComboBox
  • การใช้งานคอนโทรล ScrollBar
    • คุณสมบัติของคอนโทรล ScrollBar
    • เมธอดของคอนโทรล ScrollBar
    • เหตุการณ์ของคอนโทรล ScrollBar

การใช้งานคอนโทรล ListBox

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

clip_image002

รูปที่ 7-1 แสดงคอนโทรล ListBox เมื่อปรากฎบนฟอร์ม

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

clip_image003

รูปที่ 7-2 แสดงแถบ ScrollBar ที่คอนโทรล ListBox แสดงขึ้นมาโดยอัตโนมัติ

ในการตั้งชื่อ (คุณสมบัติ Name) เพื่อใช้สำหรับอ้างอิงในการเขียนโค้ด คุณควรใช้คำนำหน้าว่า lst เช่น lstStart, lstDisplay เป็นต้น สำหรับคุณสมบัติแรกๆ ที่คุณควรทำความเข้าใจ ก็คือ รายการต่างๆ ที่อยู่ในคอนโทรล ListBox ถูกเพิ่มเข้าไปได้อย่างไร และลักษณะต่างๆ ของคอนโทรล ListBox มีข้อแตกต่างในการใช้งานอย่างไร

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

List1.List(index) [=string]

ตัวแปร index หมายถึง เลขจำนวนเต็ม Integer ที่ใช้กำหนดลำดับของรายการต่างๆ ที่อยู่ในคอนโทรล ListBox
ตัวแปร string หมายถึง ข้อความที่เป็นรายการ ซึ่งคุณต้องการเพิ่มเข้าไปในคอนโทรล ListBox

โดยปกติแล้ว รายการแรกที่ปรากฎอยู่ในคอนโทรล ListBox จะมีค่า index=0 และรายการต่อๆ ไปจะมีค่า 1,2,3... ไปเรื่อยๆ จนกระทั่งถึงรายการสุดท้าย จะมีค่าเท่ากับ ListCount-1 ขอให้คุณจำเงื่อนไขนี้ไว้ให้ดี เพราะถือได้ว่า เป็นหัวใจหลักในการใช้งานคอนโทรลนี้เลยก็ว่าได้   เนื่องจากคุณจะต้องนำรายการ ที่ผู้ใช้เลือก  (ค่า index ประจำแต่ละรายการ) ไปสร้างเป็นเงื่อนไขในการประมวลผลต่อไป ซึ่งจะมีความสัมพันธ์กับคุณสมบัติ ListIndex ด้วย

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

Private Sub Form_Load()
   With List1
    .AddItem "One"
    .AddItem "Two"
    .AddItem "Three"
    .AddItem "Four"
   End With
End Sub

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

สำหรับการกำหนดลักษณะการเลือกรายการของคอนโทรล ListBox คุณต้องไปกำหนดที่คุณสมบัติ MultiSelect ซึ่งโดยปกติแล้ว ผู้ใช้จะเลือกรายการต่างๆ ได้ครั้งละ 1 รายการเท่านั้น มีลักษณะคล้ายกับคอนโทรล OptionButton แต่ด้วยคุณสมบัตินี้ ทำให้ผู้ใช้สามารถเลือกรายการต่างๆ ได้มากกว่า 1 รายการ ในขณะเดียวกัน ซึ่ง มีลักษณะคล้ายกับ คอนโทรล CheckBox ที่ผู้ใช้สามารถเลือกได้มากกว่า 1 รายการ คุณสามารถแก้ไขคุณสมบัตินี้ได้ ในขณะออกแบบเท่านั้น ถ้าคุณแก้ไขในขณะรัน จะเกิด error ทันที ซึ่งหมายถึง ในขณะรันคุณสามารถอ่านค่าได้จากคุณสมบัตินี้เท่านั้น มีรูปแบบการใช้งานดังนี้

List1.MultiSelect[=value]

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

กำหนดค่า

รายละเอียด

0

(Default) หมายถึง คอนโทรล ListBox ยอมให้ผู้ใช้สามารถเลือกได้เพียงครั้งละ 1 รายการเท่านั้น

1

เป็นแบบที่เรียกว่า Simple multiple หมายถึง ผู้ใช้สามารถเลือกรายการต่างๆ ได้มากกว่า 1 รายการ โดยการคลิ๊กเมาส์ หรือกดปุ่ม Spacebar เพื่อเลือกหรือไม่เลือกรายการ และใช้ปุ่มลูกศร เพื่อเปลี่ยนรายการ

2

เป็นแบบที่เรียกว่า Extended multiple selection หมายถึง ผู้ใช้สามารถกดปุ่ม  SHIFT +การคลิ๊กเมาส์ เพื่อเลือกรายการเป็นกลุ่มได้ และยังสามารถใช้ความสามารถของแบบ Simple multiple ได้อีกด้วย

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

List1.Style[=value ]

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

ค่าคงที่

ค่าตัวเลข

รายละเอียด

vbListBoxStandard

0

(Default) หมายถึง ลักษณะของคอนโทรล ListBox เป็นแบบมาตรฐานตามปกติ

vbListBoxCheckbox

1

จะมีการเพิ่ม CheckBox ไว้ด้านหน้าของแต่ละรายการ ผู้ใช้สามารถเลือกได้หลายรายการพร้อมๆ กัน โดยการคลิ๊กเลือกที่ CheckBox

clip_image004

รูปที่ 7-3 แสดงรูปแบบคอนโทรล ListBox แบบปกติ และแบบที่มี CheckBox กำกับแต่ละรายการ


คุณสมบัติของคอนโทรล ListBox

สำหรับคุณสมบัติอื่นๆ ที่น่าสนใจ มีดังนี้

Appearance

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

List1.Appearance=[value]

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

กำหนดค่า

รายละเอียด

0

Flat หมายถึง ลักษณะของคอนโทรลเป็นแบบ 2 มิติ ( 2D)

1

(Default) แสดงคอนโทรลในลักษณะ 3 มิติ (3D)

clip_image005

รูปที่ 7-4 แสดงคอนโทรล ListBox แบบ 2D และแบบ 3D


BackColor และ ForeColor

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

List1.BackColor [= color]
List1.ForeColor [= color]

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

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

clip_image006

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

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

clip_image007

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

clip_image008

รูปที่ 7-7 แสดงผลของการกำหนดคุณสมบัติ BackColor และ ForeColor ของคอนโทรล ListBox


Columns

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

List1.Columns [=number]

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

กำหนดค่า

รายละเอียด

0

(Default) หมายถึง แต่ละรายการ จะแสดงในรูปแบบคอลัมน์เดียว ถ้าคอนโทรล ListBox ไม่สามารถแสดงรายการได้หมด ในคราวเดียว จะเพิ่มแถบเลื่อนแนวตั้ง (Vertical Scroll Bar) ให้โดยอัตโนมัติ

>= 1

หมายถึง แต่ละรายการจะถูกแสดงในแต่ละคอลัมน์ให้มากที่สุด เท่าที่จะเป็นไปได้ ซึ่งจะขึ้นอยู่กับขนาดของคอนโทรล ListBox ถ้าไม่สามารถแสดงได้หมดในคราวเดียว จะเพิ่มแถบเลื่อนแนวนอน (Horizontal Scroll Bar) ให้โดยอัตโนมัติ

clip_image009

รูปที่ 7-8 แสดงคอนโทรล ListBox แบบคอลัมน์เดียว และแบบหลายคอลัมน์


Container

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

Set List1.Container [=container]

ตัวแปร container หมายถึง ชื่อของคอนโทรล ซึ่งบรรจุคอนโทรล ListBox ไว้ สำหรับคอนโทรลที่สามารถเป็นตัวบรรจุได้ คือ

  • คอนโทรล Frame
  • คอนโทรล PictureBox
  • คอนโทรล SSTab

DragIcon

คุณสมบัตินี้มีหน้าที่สำหรับคืนค่า หรือกำหนดไอคอน เพื่อใช้กับเมาส์พอยต์เตอร์ เมื่อเกิดเหตุการณ์ ลากแล้ววาง (drag-drop) มีรูปแบบการใช้งานดังนี้

List1.DragIcon [= icon]

ตัวแปร icon หมายถึง ชื่อไฟล์ไอคอน (*.ico) หรือไฟล์เคอร์เซอร์ (*.cur) ที่คุณต้องการนำมาใช้เป็นไอคอน

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

clip_image010

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


DragMode

คุณสมบัตินี้มีหน้าที่สำหรับคืนค่า หรือกำหนดโหมด (Mode) ที่จะทำให้เกิดเหตุการณ์ลากแล้ววาง (drag-drop) มีรูปแบบการใช้งานดังนี้

List1.DragMode [= number]

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

ค่าคงที่

ค่าตัวเลข

รายละเอียด

VbManual

0

(Default) Manual หมายถึง ผู้ใช้จะต้องเป็นผู้กระทำเองทั้งหมด ตั้งแต่การลาก จนถึงวาง

VbAutomatic

1

Automatic หมายถึง ผู้ใช้เพียงแต่คลิ๊กที่คอนโทรลต้นทางเท่านั้น แล้ว VB จะสร้างเหตุการณ์ลากแล้ววาง ให้สมบูรณ์โดยอัตโนมัติ


Enabled

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

List1.Enabled [=boolean]

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

กำหนดค่า

รายละเอียด

True

(Default) หมายถึง ยอมให้คอนโทรล ListBox สามารถตอบสนองเหตุการณ์ต่างๆ ได้ตามปกติ

False

หมายถึง ไม่อนุญาตให้คอนโทรล ListBox ตอบสนองเหตุการณ์ใดๆ ที่เกิดขึ้นทั้งสิ้น

clip_image011

รูปที่ 7-10 แสดงคอนโทรล ListBox ที่กำหนดคุณสมบัติ Enabled=True และ Enabled=False


Font

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

List1.Font.Name [=fontname]
List1.Font.Size [=points]
List1.Font.Bold [=boolean]
List1.Font.Italic [=boolean]
List1.Font.Strikethru [=boolean]
List1.Font.Underline [=boolean]

  • ตัวแปร fontname หมายถึง ชื่อของฟอนต์ที่คุณต้องการใช้ ถ้าคุณต้องการแสดงภาษาไทย คุณต้องเลือกฟอนต์ที่ลงท้ายด้วย UPC เช่น "AngsanaUPC" เป็นต้น
  • ตัวแปร points หมายถึงขนาดของฟอนต์ มีหน่วยเป็นจุด คุณควรใช้เลขจำนวนเต็มเพื่อกำหนดขนาดฟอนต์ การใช้งานระดับปกติ มีขนาด 4 pts
  • ตัวแปร boolean หมายถึง กำหนดสถานะของฟอนต์นั้นๆ เช่น Bold (ตัวหนา), Italic (ตัวเอน), Strikethru (ตัวขีดฆ่า) และ Underline (ตัวขีดเส้นใต้)

Height, Width, Left และ Top

คุณสมบัติ Height และ Width มีหน้าที่สำหรับคืนค่า หรือกำหนดขนาดความกว้าง และความสูงของคอนโทรล ListBox ส่วนคุณสมบัติ Left และ Top มีหน้าที่สำหรับคืนค่า หรือกำหนดตำแหน่งของคอนโทรล ListBox  คุณสมบัติทั้ง 4 ตัวจะมีความสัมพันธ์กัน เมื่อคุณมีการเปลี่ยนขนาด หรือเปลี่ยนตำแหน่งของคอนโทรล ListBox  คุณสมบัติทั้ง 4 ตัวจะเปลี่ยนไปโดยอัตโนมัติ มีรูปแบบการใช้งานดังนี้

List1.Height [=number]
List1.Width [=number]
List1.Left [=x]
List1.Top [=y]

ตัวแปร number หมายถึง เลขจำนวนเต็มที่เป็นความสูง หรือความกว้างของคอนโทรล

ตัวแปร x,y หมายถึง ตำแหน่งของคอนโทรล ListBox โดยวัดเทียบจากมุมซ้ายบนของคอนโทรล กับมุมซ้ายบนใต้แถบ title bar ของ Form เป็นพิกัดแบบคู่ลำดับ (Co-ordinate) แต่ถ้าคอนโทรล ListBox   วางอยู่ในคอนโทรล Frame จะวัดเทียบกับมุมซ้ายบน ของคอนโทรล Frame แทน

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


Index

คุณสมบัตินี้มีหน้าที่สำหรับคืนค่า หรือกำหนดให้คอนโทรล ListBox สามารถใช้งานในรูปแบบอาร์เรย์ได้ โดยที่คอนโทรลแต่ละตัวสามารถมีชื่อ (คุณสมบัติ Name) เหมือนกันได้ แต่ต่างกันที่ค่าดัชนี หรือค่า Index นั่นเอง สำหรับในการใช้งานคอนโทรลอาร์เรย์  จะเหมือนกับตัวแปรอาร์เรย์ทุกประการ มีรูปแบบการใช้งานดังนี้

List1[(number)].Index

ตัวแปร number หมายถึง เลขจำนวนเต็ม Integer ซึ่งเป็นค่า Index ที่ทำให้คอนโทรลแต่ละตัว มีชื่อต่างกัน


IntegralHeight

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

List1.IntegralHeight [=boolean ]

ตัวแปร boolean หมายถึง คุณต้องการใช้เงื่อนไขในการแสดงรายการแต่ละรายการหรือไม่ ซึ่งมีความหมายดังนี้

กำหนดค่า

รายละเอียด

True

(Default) หมายถึง ตัวคอนโทรล ListBox จะแสดงเฉพาะรายการที่สามารถแสดงได้เต็มตัวอักษรเท่านั้น และจะปรับขนาดความสูงของตัวคอนโทรลให้โดยอัตโนมัติ

False

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

เพื่อให้คุณเข้าใจคุณสมบัตินี้มากยิ่งขึ้น ให้คุณลองวางคอนโทรล ListBox 2   ตัวบนฟอร์ม กำหนดความสูงของคอนโทรล ListBox ไว้ที่ 590 twips จากนั้นเขียนโค้ดเพื่อเพิ่มรายการต่างๆ เข้าไปดังนี้

clip_image012

รูปที่ 7-11 แสดงการเพิ่มรายการต่างๆ เข้าไปในคอนโทรล ListBox เพื่อทดสอบคุณสมบัติ IntegralHeight

ให้คุณลองรันโปรเจ็กต์ ปรากฎว่า ตัวคอนโทรล ListBox สามารถแสดงได้ 2 รายการ ให้คุณสังเกตว่า เป็นรายการที่สามารถแสดงผลได้เต็มตัวอักษรเท่านั้น เพราะว่าคุณสมบัติ IntegralHeight=True ให้คุณลองเปลี่ยนคุณสมบัติ IntegralHeight ของคอนโทรล ListBox ตัวที่ 2 จากค่า  True เป็นค่า False จากนั้นลองรันโปรเจ็กต์อีกครั้ง ปรากฎว่า จะมีตัวอักษรบางส่วน ของรายการที่ 3 ปรากฎขึ้นมาให้คุณเห็นในคอนโทรล ListBox ตัวที่ 2 ซึ่งเป็นความแตกต่าง ที่เห็นได้อย่างชัดเจน ให้ดูรูปด้านล่างประกอบ

clip_image013

รูปที่ 7-12 แสดงการเปรียบเทียบเมื่อคุณแก้ไขคุณสมบัติ IntegralHeight


ItemData

คุณสมบัตินี้มีหน้าที่สำหรับคืนค่า หรือกำหนดหมายเลขลำดับ ซึ่งกำกับอยู่ในแต่ละรายการที่ปรากฎอยู่ในคอนโทรล ListBox คุณสมบัตินี้มีลักษณะพิเศษคือ คุณจะต้องกำหนดลำดับในขณะรันเท่านั้น มีรูปแบบการใช้งานดังนี้

List1.ItemData(index) [= number]

ตัวแปร index หมายถึง เลขจำนวนเต็ม Integer ซึ่งใช้สำหรับระบุลำดับในแต่ละรายการ
ตัวแปร number หมายถึง เลขจำนวนเต็ม Integer ที่เป็นหมายเลข ที่คุณต้องการกำหนดให้แต่ละรายการ เพื่อใช้ตัวเลขดังกล่าวนี้ ในการอ้างอิงแต่ละรายการ ในภายหลัง


ListCount

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

List1.ListCount

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


ListIndex

คุณสมบัตินี้มีหน้าที่สำหรับรายงานสถานะของรายการ ที่ผู้ใช้เลือก หมายถึง เมื่อผู้ใช้เลือกรายการใดๆ ก็ตามในคอนโทรล ListBox  รายการดังกล่าว จะถูกเก็บไว้ที่คุณสมบัตินี้นั่นเอง ซึ่งเป็นค่า Index ที่กำกับแต่ละรายการ แต่จะใช้กับคอนโทรล  ListBox ที่กำหนดคุณสมบัติ MultiSelect=0 เท่านั้น ซึ่งในขณะรัน คุณสามารถอ่านค่าได้เพียงอย่างเดียวเท่านั้น   (ถ้าคุณกำหนดให้คุณสมบัติ MultiSelect=1 หรือ 2  ให้ใช้คุณสมบัติ Selected แทน) มีรูปแบบการใช้งานดังนี้

List1.ListIndex [=index]

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


MouseIcon

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

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

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


MousePointer

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

List1.MousePointer [= value]

ตัวแปร Value เป็นรูปแบบของเมาส์ ซึ่งมีอยู่ด้วยกัน 16 แบบดังตารางต่อไปนี้

ค่าคงที่

ค่าตัวเลข

รายละเอียด

vbDefault

0

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

vbArrow

1

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

vbCrosshair

2

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

vbIbeam

3

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

vbIconPointer

4

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

vbSizePointer

5

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

vbSizeNESW

6

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

vbSizeNS

7

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

vbSizeNWSE

8

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

vbSizeWE

9

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

vbUpArrow

10

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

vbHourglass

11

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

vbNoDrop

12

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

vbArrowHourglass

13

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

vbArrowQuestion

14

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

vbSizeAll

15

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

vbCustom

99

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


NewIndex

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

List1.NewIndex

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


Parent

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

List1.Parent


SelCount

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

List1.SelCount [=value]

ตัวแปร value หมายถึง เลขจำนวนเต็ม Integer ซึ่งเป็นจำนวนรายการที่ถูกผู้ใช้เลือก โดยมีขอบเขตไม่เกินจำนวนรายการที่มีอยู่ในคอนโทรล ListBox


Selected

คุณสมบัตินี้มีหน้าที่สำหรับรายงานสถานะของรายการ ที่ถูกผู้ใช้เลือกเช่นเดียวกับคุณสมบัติ ListIndex แต่จะใช้คุณสมบัติ Selected นี้ก็ต่อเมื่อ คุณกำหนดคุณสมบัติ MultiSelect=1 หรือ 2 เท่านั้น (ถ้าคุณกำหนดคุณสมบัติ MultiSelect=0 ให้ใช้คุณสมบัติ ListIndex แทน ) ซึ่งในขณะรัน คุณสามารถอ่านค่าได้เพียงอย่างเดียงเท่านั้น มีรูปแบบการใช้งานดังนี้

List1.Selected(index) [=boolean]

ตัวแปร index หมายถึง เลขจำนวนเต็ม Integer ซึ่งกำกับอยู่ในแต่ละรายการ
ตัวแปร boolean มีความหมายดังนี้

กำหนดค่า

รายละเอียด

True

หมายถึง รายการที่มีลำดับ Index ดังกล่าว ถูกเลือก

False

(Default) หมายถึง รายการที่มีลำดับ Index ดังกล่าว ไม่ได้ถูกเลือก


Sorted

คุณสมบัตินี้มีหน้าที่สำหรับคืนค่า หรือกำหนดให้คอนโทรล ListBox เรียงลำดับรายการต่างๆ จากน้อยไปหามาก ซึ่งสามารถแยกได้ 3 กรณี คือ

  • กรณีที่ 1 รายการแต่ละรายการ   เป็นตัวเลขทั้งหมด   ก็จะเรียงจากค่าน้อยไปหามาก 
  • กรณีที่ 2 รายการแต่ละรายการ   เป็นตัวอักษรทั้งหมด   จะใช้การเรียงตามลำดับตัวอักษร โดยจะจัดตัวพิมพ์ใหญ่ ให้อยู่เหนือกว่าอักษรตัวพิมพ์เล็ก
  • กรณีที่ 3 รายการต่างๆ มีทั้งตัวอักษร และตัวเลข จะจัดลำดับโดยการเรียงค่าตัวเลขจากน้อยไปหามาก ให้หมดรายการก่อน จากนั้นจึงเรียงลำดับรายการตัวอักษร   เช่น ถ้ามีรายการ 333, 222, 111, aaa, AAA, BBB ก็จะถูกจัดลำดับดังนี้ 111, 222, 333, AAA, aaa, BBB เป็นต้น

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

List1.Sorted [=boolean]

ค่าที่ได้จากคุณสมบัตินี้ มีความหมายดังนี้

ค่า

รายละเอียด

True

หมายถึง รายการต่างๆ จะถูกเรียงลำดับ โดยใช้เเงื่อนไขที่กล่าวมาข้างต้น

False

(Default) หมายถึง รายการต่างๆ ไม่มีการเรียงลำดับแต่อย่างใด


Style

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

List1.Style [=value]

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

ค่าคงที่

ค่าตัวเลข

รายละเอียด

vbListBoxStandard

0

(Default) หมายถึง กำหนดให้แสดงคอนโทรล ListBox ในรูปแบบปกติ

vbListBoxCheckbox

1

หมายถึง กำหนดให้แสดงคอนโทรล ListBox โดยที่แต่ละรายการ จะมี checkbox กำกับอยู่ในแต่ละหัวข้อ ผู้ใช้สามารถเลือกรายการต่างๆ ได้โดยการคลิ๊กที่ checkbox

clip_image027

รูปที่ 7-13 แสดงคอนโทรล ListBox แบบปกติ และแบบที่มี checkbox กำกับแต่ละรายการ


TabIndex

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

List1.TabIndex [=index]

ตัวแปร index หมายถึง เลขจำนวนเต็มบวก Integer เท่านั้น ซึ่งเป็นลำดับโฟกัสของคอนโทรล ListBox  ที่มีค่าตั้งแต่ 0 ถึง n-1 โดยที่ n หมายถึง จำนวนคอนโทรลที่อยู่บนฟอร์ม เรียงลำดับจากน้อยไปมาก และถ้าคุณกำหนดคุณสมบัติ TabIndex เป็นค่าลบ จะเกิด error ทันที


TabStop

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

List1.TabStop [=boolean]

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

กำหนดค่า

รายละเอียด

True

(Default) หมายถึง กำหนดให้คอนโทรล สามารถรับโฟกัส เมื่อผู้ใช้กดคีย์ Tab ได้ตามปกติ

False

หมายถึง กำหนดให้คอนโทรล ไม่ตอบรับลำดับการโฟกัส ด้วยการกดคีย์ Tab และส่งโฟกัสต่อไปยังคอนโทรลที่อยู่ในลำดับ TabIndex ต่อไปทันที

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


Text

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

List1.Text [=string]

ตัวแปร string หมายถึง ข้อความซึ่งเป็นรายการอยู่ภายในคอนโทรล ListBox ถูกผู้ใช้เลือกอยู่

ตัวอย่างโค้ดต่อไปนี้ มีความหมายเหมือนกัน กล่าวคือ เมื่อผู้ใช้เลือกรายการใดๆ ที่ปรากฎอยู่ในคอนโทรล ListBox

List1.Text และ  List1.List(List1.ListIndex)

อธิบายความหมาย ค่าที่ได้จากคุณสมบัติ List1.ListIndex ที่อยู่ในวงเล็บ คือ รายการที่ผู้ใช้เลือก จะถูกส่งต่อมายังคุณสมบัติ List ของคอนโทรล ListBox ที่มีชื่อว่า List1


TopIndex

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

List1.TopIndex [= value]

ตัวแปร value หมายถึง เลขจำนวนเต็ม Integer ที่เป็นค่า Index ของแต่ละรายการ คุณสามารถกำหนดค่าตัวแปร value นี้ได้ไม่เกิน จำนวนรายการที่มีอยู่ในคอนโทรลนั้นๆ เช่น ถ้าจำนวนรายการมีทั้งหมด 10 รายการ (แต่ละรายการมีค่า Index ตั้งแต่ 0-9) ตัวแปร value ก็จะมีค่าอยู่ระหว่าง 0-9 นั่นเอง เพื่อให้คุณเห็นภาพได้ชัดเจนยิ่งขึ้น ให้คุณพิจารณาโค้ดต่อไปนี้

clip_image028

รูปที่ 7-14 แสดงตัวอย่างโค้ดที่ต้องการทดสอบคุณสมบัติ TopIndex

จากรูปจะเห็นได้ว่า เมื่อคุณรันโปรเจ็กต์แล้ว รายการลำดับต้นๆ เท่านั้น ที่จะเป็นรายการที่ปรากฎขึ้นมาให้ผู้ใช้เห็นก่อน นั่นคือ รายการ 000, 111, 222,   หรือขึ้นอยู่กับความสูง (คุณสมบัติ Height) ของคอนโทรล ListBox ว่าจะสามารถแสดงได้กี่รายการ แต่ถ้าคุณต้องการให้รายการที่ 222, 333  ปรากฎขึ้นมา ให้ผู้ใช้เห็นก่อน คุณต้องกำหนดคุณสมบัติ TopIndex ให้มีค่าเท่ากับ 2  เพราะว่า รายการ 222  มีค่า index เท่ากับ 2  ให้คุณเพิ่มโค้ด ไปที่คอนโทรล ListBox ตัวที่ 2 ดังรูป

clip_image029

รูปที่ 7-15 แสดงตัวอย่างโค้ดที่แก้ไขคุณสมบัติ TopIndex แล้ว

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

clip_image030

รูปที่ 7-16 แสดงคอนโทรล ListBox ตัวที่ 2 ซึ่งแก้ไขคุณสมบัติ TopIndex


ToolTipText

คุณสมบัตินี้มีหน้าที่สำหรับกำหนดข้อความ ToolTip เมื่อผู้ใช้ เลื่อนเมาส์มาบริเวณคอนโทรล ListBox มีรูปแบบการใช้งานดังนี้

List1.ToolTipText [=string]

ตัวแปร string หมายถึง ข้อความที่คุณต้องการทำ ToolTip


Visible

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

List1.Visible [=boolean]

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

กำหนดค่า

รายละเอียด

True

(Default) หมายถึง คอนโทรลมองเห็นได้ตามปกติ

False

หมายถึง คอนโทรลถูกซ่อนอยู่ภายในหน่วยความจำ


เมธอดของคอนโทรล ListBox

สำหรับเมธอดที่น่าสนใจของคอนโทรล ListBox มีดังนี้

AddItem

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

List1.AddItem item [,index]

ตัวแปร item หมายถึง รายการที่คุณต้องการเพิ่มเข้าไป คุณอาจจะใช้ร่วมกับคำสั่ง With...End With ก็ได้
ตัวแปร index หมายถึง เลขจำนวนเต็มบวก Integer ที่เป็นค่าลำดับของรายการที่คุณเพิ่มเข้าไป   ซึ่งใช้ในกรณีที่คุณต้องการเพิ่มรายการ แบบระบุลำดับ


Clear

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

List1.Clear


Move

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

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

รายละเอียดของตัวแปรแต่ละตัวมีดังนี้

ตัวแปร

รายละเอียด

left

คุณต้องกำหนด หมายถึง เลขจำนวนเต็มที่เป็นตำแหน่งของคอนโทรลในแนวแกน x โดยวัดจากมุมซ้ายบน ของคอนโทรลกับ มุมซ้ายบนใต้แถบ title bar ของฟอร์ม ถ้าคอนโทรล ListBox  อยู่ในคอนโทรล Frame จะวัดเทียบกับมุมซ้ายบน ของคอนโทรล Frame แทน

top

(Optional) หมายถึง เลขจำนวนเต็มที่เป็นตำแหน่งของคอนโทรลในแนวแกน y โดยวัดจากมุมซ้ายบน ของคอนโทรลกับ มุมซ้ายบนใต้แถบ title bar ของฟอร์มเช่นกัน ถ้าคอนโทรล ListBox อยู่ในคอนโทรล Frame จะวัดเทียบกับ มุมซ้ายบนของคอนโทรล Frame แทน

width

(Optional) หมายถึงเลขจำนวนเต็มที่เป็นความกว้างของคอนโทรล ListBox

height

(Optional) หมายถึงเลขจำนวนเต็มที่เป็นความสูงของคอนโทรล ListBox


Refresh

เมธอดนี้มีหน้าที่สำหรับปรับปรุงรายการที่อยู่ในตัวคอนโทรล ListBox ให้ทันสมัย หรือ update ทันที มีรูปแบบการใช้งานดังนี้

List1.Refresh


RemoveItem

เมธอดนี้มีหน้าที่สำหรับลบรายการที่มีค่า index เท่ากับคุณสมบัตินี้ออกจากคอนโทรล ListBox มีรูปแบบการใช้งานดังนี้

List1.RemoveItem index

ตัวแปร index หมายถึง เลขจำนวนเต็ม Integer ซึ่งเป็นค่าลำดับของรายการ ที่คุณต้องการลบออกจากคอนโทรล ListBox เช่น ถ้าคุณต้องการลบรายการแรก ค่า index นี้จะเท่ากับ 0 เป็นต้น


SetFocus

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

List1.SetFocus


เหตุการณ์ของคอนโทรล ListBox

สำหรับเหตุการณ์ที่คอนโทรล ListBox  สนับสนุนมีดังนี้

List1_Click ( )

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

Private Sub List1_Click([index As Integer])

End Sub

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


List1_DblClick ( )

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

Private Sub List1_DblClick([index As Integer])

End Sub

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


List1_DragDrop ( )

เป็นเหตุการณ์ที่เกิดขึ้น เมื่อผู้ใช้มีการลาก (drag) แล้ววาง (drop) โดยที่เหตุการณ์ดังกล่าวจะต้องเสร็จสิ้น และสมบูรณ์ มีรูปแบบการใช้งานดังนี้

Private Sub List1_DragDrop([index As Integer,]source As Control, x As Single, y As Single)

End Sub

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

อาร์ กิวเมนต์ source หมายถึง คอนโทรลที่เป็นจุดเริ่มต้นเหตุการณ์ลากแล้ววาง (drag-drop)

อาร์กิวเมนต์ x,y หมายถึง พิกัดคู่ลำดับ co-ordinate ซึ่งเป็นตำแหน่งของเมาส์พอยน์เตอร์ บนตัวคอนโทรลปลายทาง ที่ผู้ใช้ต้องการวาง ซึ่งถือว่า กระบวนการลากแล้ววาง (drag-drop) เสร็จสิ้น และสมบูรณ์แล้ว


List1_DragOver ( )

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

Private Sub List1_DragOver([index As Integer,]source As Control, x As Single, y As Single, state As Integer)

End Sub

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

อาร์ กิวเมนต์ source หมายถึง คอนโทรลที่เป็นจุดเริ่มต้นเหตุการณ์ลากแล้ววาง (drag-drop)

อาร์กิวเมนต์ x,y หมายถึง พิกัดคู่ลำดับ co-ordinate ซึ่งเป็นตำแหน่งของเมาส์พอยน์เตอร์ บนตัวคอนโทรลปลายทาง ที่ผู้ใช้ต้องการวาง ซึ่งถือว่า กระบวนการลากแล้ววาง (drag-drop) เสร็จสิ้น และสมบูรณ์แล้ว

อาร์กิวเมนต์ state หมายถึง เลขจำนวนเต็ม Integer ที่บอกสถานะของกระบวนการ ลากแล้ววาง ซึ่งมีความหมายดังนี้

  • 0-Enter หมายถึง คอนโทรลต้นทาง (source control) กำลังถูกลากเข้ามาอยู่เหนือบริเวณเป้าหมาย
  • 1-Leave หมายถึง คอนโทรลต้นทาง (source control) กำลังถูกลากออกจากเป้าหมาย
  • 2-Over หมายถึง คอนโทรลต้นทาง (source control) กำลังถูกลากไปมา เหนือบริเวณเป้าหมาย

List1_GotFocus ( )

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

Private Sub List1_GotFocus([index As Integer])

End Sub

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


List1_KeyDown ( ) และ List1_KeyUp ( )

เหตุการณ์ KeyDown ( ) จะเกิดขึ้นเมื่อ ผู้ใช้กดปุ่มใดๆ ที่คีย์บอร์ด และเหตุการณ์  KeyUp ( ) จะเกิดขึ้นต่อจากเหตุการณ์ KeyDown ( ) นั่นคือ เมื่อผู้ใช้ปล่อยปุ่มที่คีย์บอร์ด คุณจะต้องกำหนดให้คอนโทรล ListBox ให้ได้รับโฟกัสเสียก่อน มีรูปแบบการใช้งานดังนี้

Private Sub List1_KeyDown([index As Integer,]keycode As Integer, shift As Integer)

End Sub

Private Sub List1_KeyUp([index As Integer,]keycode As Integer, shift As Integer)

End Sub

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

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

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

ค่าคงที่ (Shift)

ค่าตัวเลข

รายละเอียด

vbShiftMask

1

ปุ่ม SHIFT ถูกกด

vbCtrlMask

2

ปุ่ม CTRL ถูกกด

vbAltMask

4

ปุ่ม ALT ถูกกด

ถ้าผู้ใช้มีการกดปุ่มดังกล่าว พร้อมๆ กัน ไม่ว่าจะเป็นปุ่มใดก็ตาม จะใช้ผลบวกของแต่ละบิตรวมกัน เช่น สมมติว่าผู้ใช้กดปุ่ม Shift+Alt จะมีค่าเท่ากับ 5 เป็นต้น


List1_KeyPress ( )

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

Private Sub List1_KeyPress([index As Integer,]keyascii As Integer)

End Sub

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

อาร์กิวเมนต์ keyascii หมายถึง รหัสแอสกีซึ่งแทนของอักษรที่อยู่บนคีย์บอร์ด คุณสามารถดูรายละเอียดเพิ่มเติมได้ที่ บทที่ 28 ค่าคงที่ระบบ (System Constants) ที่น่าสนใจ


List1_LostFocus ( )

เป็นเหตุการณ์ที่เกิดขึ้น เมื่อคอนโทรล ListBox   สูญเสียสภาวะโฟกัส ให้กับคอนโทรล หรืออ๊อบเจ็กต์ตัวอื่นๆ อาจกล่าวได้ว่า เหตุการณ์ LostFocus ( ) จะเกิดต่อจากเหตุการณ์ GotFocus ( ) นั่นเอง มีรูปแบบการใช้งานดังนี้

Private Sub List1_LostFocus([index As Integer])

End Sub

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


List1_MouseDown ( ) และ List1_MouseUp ( )

เป็นเหตุการณ์ที่เกิดขึ้น เมื่อผู้ใช้กดเมาส์ (press) บริเวณตัวคอนโทรล ก็จะทำให้เกิดเหตุการณ์ MouseDown และเมื่อผู้ใช้ปล่อยเมาส์ (release) บริเวณตัวคอนโทรล ก็จะทำให้เกิดเหตุการณ์ MouseUp มีรูปแบบการใช้งานดังนี้

Private Sub List1_MouseDown([index As Integer,]button As Integer, shift As Integer, x As Single, y As Single)

End Sub

Private Sub List1 _MouseUp([index As Integer,]button As Integer, shift As Integer, x As Single, y As Single)

End Sub

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

อาร์กิวเมนต์ button หมายถึง ปุ่มของเมาส์ ซึ่งเป็นตัวทำให้เกิดเหตุการณ์ MouseDown และ MouseUp แต่ละปุ่มของเมาส์จะถูกจัดเก็บในลักษณะบิต (bit) โดยที่แต่ละบิตมีความหมายดังนี้

ค่าคงที่ (Button)

ค่าตัวเลข

รายละเอียด

vbLeftButton

1

เมื่อปุ่มซ้ายของเมาส์ถูกกด

vbRightButton

2

เมื่อปุ่มขวาของเมาส์ถูกกด

vbMiddleButton

4

เมื่อปุ่มกลางของเมาส์ถูกกด

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

ค่าคงที่ (Shift)

ค่าตัวเลข

รายละเอียด

vbShiftMask

1

ปุ่ม SHIFT ถูกกด

vbCtrlMask

2

ปุ่ม CTRL ถูกกด

vbAltMask

4

ปุ่ม ALT ถูกกด

ถ้าผู้ใช้มีการกดปุ่มดังกล่าว พร้อมๆ กัน ไม่ว่าจะเป็นปุ่มใดก็ตาม จะใช้ผลบวกของแต่ละบิตรวมกัน เช่น สมมติว่าผู้ใช้กดปุ่ม Shift+Alt จะมีค่าเท่ากับ 5 เป็นต้น

อาร์กิวเมนต์ x,y หมายถึง พิกัดคู่ลำดับ (co-ordinate) ของเมาส์พอยน์เตอร์ ซึ่งเป็นตำแหน่งที่เกิดเหตุการณ์ MouseDown หรือ MouseUp


List1_MouseMove ( )

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

Private Sub List1_MouseMove([index As Integer,] button As Integer, shift As Integer, x As Single, y As Single)

End Sub

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

อาร์กิวเมนต์ button หมายถึง ปุ่มของเมาส์ ซึ่งเป็นตัวทำให้เกิดเหตุการณ์ MouseDown และ MouseUp แต่ละปุ่มของเมาส์จะถูกจัดเก็บในลักษณะบิต (bit) โดยที่แต่ละบิตมีความหมายดังนี้

ค่าคงที่ (Button)

ค่าตัวเลข

รายละเอียด

vbLeftButton

1

เมื่อปุ่มซ้ายของเมาส์ถูกกด

vbRightButton

2

เมื่อปุ่มขวาของเมาส์ถูกกด

vbMiddleButton

4

เมื่อปุ่มกลางของเมาส์ถูกกด

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

ค่าคงที่ (Shift)

ค่าตัวเลข

รายละเอียด

vbShiftMask

1

ปุ่ม SHIFT ถูกกด

vbCtrlMask

2

ปุ่ม CTRL ถูกกด

vbAltMask

4

ปุ่ม ALT ถูกกด

ถ้าผู้ใช้มีการกดปุ่มดังกล่าว พร้อมๆ กัน ไม่ว่าจะเป็นปุ่มใดก็ตาม จะใช้ผลบวกของแต่ละบิตรวมกัน เช่น สมมติว่าผู้ใช้กดปุ่ม Shift+Alt จะมีค่าเท่ากับ 5 เป็นต้น

อาร์กิวเมนต์ x,y หมายถึง พิกัดคู่ลำดับ (co-ordinate) ของเมาส์พอยน์เตอร์ ซึ่งเป็นตำแหน่งที่เกิดเหตุการณ์ MouseDown หรือ MouseUp


การใช้งานคอนโทรล ComboBox

คอนโทรล ComboBox จะใช้สำหรับแสดงรายการต่างๆ เช่นเดียวกับคอนโทรล ListBox และยังสามารถรับข้อมูลจากผู้ใช้ได้อีกด้วย โดยมีข้อแตกต่างก็คือ ที่ตัวคอนโทรล ComboBox จะมีปุ่มที่เรียกว่า drop-down List Box ที่ใช้สำหรับคลิ๊ก เพื่อแสดงรายการ จะเห็นได้ว่า มีลักษณะผสมกันระหว่างคอนโทรล TextBox และคอนโทรล ListBox คุณสามารถเลือกใช้งานคอนโทรล ComboBox โดยการคลี๊กเลือกที่ปุ่ม clip_image031 จากรูป เป็นลักษณะของคอนโทรล ComboBox เมื่อปรากกฎบนฟอร์ม

clip_image032

รูปที่ 7-17 แสดงคอนโทรล ComboBox เมื่อปรากฎอยู่บนฟอร์ม

เมื่อมีการตั้งชื่อคอนโทรล (คุณสมบัติ Name) เพื่อใช้ในการอ้างอิงในการเขียนโค้ด คุณควรใช้คำนำหน้าว่า cbo เสมอ เช่น cboTopusr, cboFname เป็นต้น

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

คุณสมบัติ List จะมีลักษณะการใช้งานเช่นเดียวกับคอนโทรล ListBox นั่นคือ คุณควรเพิ่มรายการต่างๆ เข้าไปในตัวคอนโทรล ในขณะรันเท่านั้น ไม่ควรเพิ่มรายการในขณะออกแบบ  และคุณควรใช้เมธอด AddItem แทนการใช้คุณสมบัติ List เช่นกัน และคุณต้องใช้คุณสมบัตินี้ ในเหตุการณ์  Form_Load ( ) เท่านั้น มีรูปแบบการใช้งานดังนี้

Combo1.List(index) [=string]

ตัวแปร index หมายถึง เลขจำนวนเต็ม Integer ที่ใช้กำหนดลำดับของรายการต่างๆ ที่อยู่ในคอนโทรล ComboBox
ตัวแปร string หมายถึง ข้อความที่เป็นรายการ ซึ่งคุณต้องการเพิ่มเข้าไปในคอนโทรล ComboBox

โดยปกติแล้ว รายการแรกที่ปรากฎอยู่ในคอนโทรล ComboBox  จะมีค่า index=0 และรายการต่อๆ ไปจะมีค่า 1,2,3... ไปเรื่อยๆ จนกระทั่งถึงรายการสุดท้าย จะมีค่าเท่ากับ ListCount-1 ซึ่งเหมือนกับคอนโทรล ListBox ทุกประการ ดังนั้น การเพิ่มรายการต่างๆ เข้าไปที่คอนโทรล ComboBox จึงควรใช้เมธอด AddItem และใส่ในเหตุการณ์ Form_Load ( ) เสมอ

clip_image033

รูปที่ 7-18 แสดงการเขียนโค้ดเพื่อเพิ่มรายการเข้าไปในคอนโทรล Combo1

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

Combo1.Style[=value]

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

ค่าคงที่

ค่าตัวเลข

รายละเอียด

vbComboDropDown

0

(Default) เป็นลักษณะของคอนโทรล ComboBox แบบปกติ คือ ผู้ใช้สามารถป้อนข้อความ ในช่อง Textbox ได้ และถ้าผู้ใช้ต้องการแสดงรายการต่างๆ จะต้องคลิ๊กที่ปุ่ม   drop-down ที่อยู่บริเวณข้างๆ

vbComboSimple

1

เป็นลักษณะที่เรียกว่า   Simple ComboBox มีความสามารถเหมือนกับแบบแรกทุกประการ ที่ต่างกันคือ ถ้าคุณมีการเพิ่มรายการเข้าไปมากกว่า 1 รายการ รายการจะปรากฎขึ้นมาทันที โดยขึ้นอยู่กับคุณสมบัติ Height และถ้ารายการดังกล่าว ไม่สามารถแสดงได้ทั้งหมด ในเวลาเดียวกัน VB จะเพิ่มแถบ scrollbar ให้โดยอัตโนมัติ ถ้าคุณต้องการใช้งานคอนโทรล ComboBox รูปแบบนี้ คุณควรที่จะแก้ไขคุณสมบัติ Height ให้ สามารถแสดงรายการได้ ในระดับหนึ่งด้วย

vbComboDrop-DownList

2

เป็นลักษณะที่เรียกว่า Dropdown List หมายถึง ผู้ใช้ไม่สามารถกรอกข้อมูลใดๆ ไปที่ ที่ตัวคอนโทรล ComboBox ได้ และกำหนดให้ผู้ใช้เลือกรายการต่างๆ ได้เพียงอย่างเดียว

จากรูปเป็นการแสดงรูปแบบต่างๆ ของคอนโทรล ComboBox ให้คุณทดสอบรัน เพื่อดูความแตกต่างระหว่างรูปแบบแต่ละชนิด

clip_image034

รูปที่ 7-19 แสดงลักษณะของคอนโทรล ComboBox ที่กำหนดคุณสมบัติ Style เท่ากับ 0, 1 และ 2 ตามลำดับ


คุณสมบัติของคอนโทรล ComboBox

สำหรับคุณสมบัติอื่นๆ ที่น่าสนใจ มีดังนี้

Appearance

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

Combo1.Appearance=[value]

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

กำหนดค่า

รายละเอียด

0

Flat หมายถึง ลักษณะของคอนโทรลเป็นแบบ 2 มิติ ( 2D)

1

(Default) แสดงคอนโทรลในลักษณะ 3 มิติ (3D)

clip_image035

รูปที่ 7-20 แสดงคอนโทรล ComboBox แบบ 2D และแบบ 3D ซึ่งไม่มีความแตกต่างกันแต่อย่างใด


BackColor และ ForeColor

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

List1.BackColor [= color]
List1.ForeColor [= color]

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

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

clip_image006[1]

รูปที่ 7-21 แสดงแท็บ Palette

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

clip_image007[1]

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

clip_image036

รูปที่ 7-23 แสดงผลของการกำหนดคุณสมบัติ BackColor และ ForeColor ของคอนโทรล ComboBox


Container

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

Set Combo1.Container [=container]

ตัวแปร container หมายถึง ชื่อของคอนโทรล ซึ่งบรรจุคอนโทรล ComboBox  ไว้ สำหรับคอนโทรลที่สามารถเป็นตัวบรรจุได้ คือ

  • คอนโทรล Frame
  • คอนโทรล PictureBox
  • คอนโทรล SSTab

DragIcon

คุณสมบัตินี้มีหน้าที่สำหรับคืนค่า หรือกำหนดไอคอน เพื่อใช้กับเมาส์พอยต์เตอร์ เมื่อเกิดเหตุการณ์ ลากแล้ววาง (drag-drop) มีรูปแบบการใช้งานดังนี้

Combo1.DragIcon [= icon]

ตัวแปร icon หมายถึง ชื่อไฟล์ไอคอน (*.ico) หรือไฟล์เคอร์เซอร์ (*.cur) ที่คุณต้องการนำมาใช้เป็นไอคอน

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

clip_image010[1]

รูปที่ 7-24 แสดงไดอะล๊อกบ๊อกซ์ Load Icon


DragMode

คุณสมบัตินี้มีหน้าที่สำหรับคืนค่า หรือกำหนดโหมด (Mode) ที่จะทำให้เกิดเหตุการณ์ลากแล้ววาง (drag-drop) มีรูปแบบการใช้งานดังนี้

Combo1.DragMode [= number]

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

ค่าคงที่

ค่าตัวเลข

รายละเอียด

VbManual

0

(Default) Manual หมายถึง ผู้ใช้จะต้องเป็นผู้กระทำเองทั้งหมด ตั้งแต่การลาก จนถึงวาง

VbAutomatic

1

Automatic หมายถึง ผู้ใช้เพียงแต่คลิ๊กที่คอนโทรลต้นทางเท่านั้น แล้ว VB จะสร้างเหตุการณ์ลากแล้ววาง ให้สมบูรณ์โดยอัตโนมัติ


Enabled

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

Combo1.Enabled [=boolean]

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

กำหนดค่า

รายละเอียด

True

(Default) หมายถึง ยอมให้คอนโทรล ComboBox สามารถตอบสนองเหตุการณ์ต่างๆ ได้ตามปกติ

False

หมายถึง ไม่อนุญาตให้คอนโทรล ComboBox ตอบสนองเหตุการณ์ใดๆ ที่เกิดขึ้นทั้งสิ้น

clip_image037

รูปที่ 7-25 แสดงคอนโทรล ComboBox ที่กำหนดคุณสมบัติ Enabled=True และ Enabled=False


Font

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

Combo1.Font.Name [=fontname]
Combo1.Font.Size [=points]
Combo1.Font.Bold [=boolean]
Combo1.Font.Italic [=boolean]
Combo1.Font.Strikethru [=boolean]
Combo1.Font.Underline [=boolean]

  • ตัวแปร fontname หมายถึง ชื่อของฟอนต์ที่คุณต้องการใช้ ถ้าคุณต้องการแสดงภาษาไทย คุณต้องเลือกฟอนต์ที่ลงท้ายด้วย UPC เช่น "AngsanaUPC" เป็นต้น
  • ตัวแปร points หมายถึงขนาดของฟอนต์ มีหน่วยเป็นจุด คุณควรใช้เลขจำนวนเต็มเพื่อกำหนดขนาดฟอนต์ การใช้งานระดับปกติ มีขนาด 4 pts
  • ตัวแปร boolean หมายถึง กำหนดสถานะของฟอนต์นั้นๆ เช่น Bold (ตัวหนา), Italic (ตัวเอน), Strikethru (ตัวขีดฆ่า) และ Underline (ตัวขีดเส้นใต้)

Height, Width, Left และ Top

คุณสมบัติ Height และ Width มีหน้าที่สำหรับคืนค่า หรือกำหนดขนาดความกว้าง และความสูงของคอนโทรล ComboBox ส่วนคุณสมบัติ Left และ Top มีหน้าที่สำหรับคืนค่า หรือกำหนดตำแหน่งของคอนโทรล ComboBox  คุณสมบัติทั้ง 4 ตัวจะมีความสัมพันธ์กัน เมื่อคุณมีการเปลี่ยนขนาด หรือเปลี่ยนตำแหน่งของคอนโทรล ComboBox  คุณสมบัติทั้ง 4 ตัวจะเปลี่ยนไปโดยอัตโนมัติ มีรูปแบบการใช้งานดังนี้

Combo1.Height [=number]
Combo1.Width [=number]
Combo1.Left [=x]
Combo1.Top [=y]

ตัวแปร number หมายถึง เลขจำนวนเต็มที่เป็นความสูง หรือความกว้างของคอนโทรล ComboBox

ตัวแปร x,y หมายถึง ตำแหน่งของคอนโทรล ComboBox โดยวัดเทียบจากมุมซ้ายบนของคอนโทรล กับมุมซ้ายบนใต้แถบ title bar ของ Form เป็นพิกัดแบบคู่ลำดับ (Co-ordinate) แต่ถ้าคอนโทรล ComboBox วางอยู่ในคอนโทรล Frame จะวัดเทียบกับมุมซ้ายบน ของคอนโทรล Frame แทน

สำหรับคุณสมบัติ Height คุณไม่สามารถกำหนดความสูงของตัวคอนโทรล ComboBox ได้ กรณีที่คุณกำหนดให้คุณสมบัติ Style=0 หรือ 2 ซึ่งความสูงของตัวคอนโทรล ComboBox ดังกล่าว VB จะกำหนดให้โดยอัตโนมัติ


Index

คุณสมบัตินี้มีหน้าที่สำหรับคืนค่า หรือกำหนดให้คอนโทรล ComboBox สามารถใช้งานในรูปแบบอาร์เรย์ได้ โดยที่คอนโทรลแต่ละตัวสามารถมีชื่อ (คุณสมบัติ Name) เหมือนกันได้ แต่ต่างกันที่ค่าดัชนี หรือค่า Index นั่นเอง สำหรับในการใช้งานคอนโทรลอาร์เรย์  จะเหมือนกับตัวแปรอาร์เรย์ทุกประการ มีรูปแบบการใช้งานดังนี้

Combo1[(number)].Index

ตัวแปร number หมายถึง เลขจำนวนเต็ม Integer ซึ่งเป็นค่า Index ที่ทำให้คอนโทรลแต่ละตัว มีชื่อต่างกัน


IntegralHeight

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

Combo1.IntegralHeight [=boolean ]

ตัวแปร boolean หมายถึง คุณต้องการใช้เงื่อนไขในการแสดงรายการแต่ละรายการหรือไม่ ซึ่งมีความหมายดังนี้

กำหนดค่า

รายละเอียด

True

(Default) หมายถึง ตัวคอนโทรล ComboBox จะแสดงเฉพาะรายการที่สามารถแสดงได้เต็มตัวอักษรเท่านั้น และจะปรับขนาดความสูงของตัวคอนโทรลให้โดยอัตโนมัติ

False

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

สำหรับคุณสมบัตินี้มีผลเหมือนคอนโทรล ListBox ทุกประการ ข้อแตกต่างก็คือ คุณต้องกำหนดให้คุณสมบัติ Style=1 เท่านั้น จากรูป จะเห็นว่าคอนโทรล ComboBox ที่แก้ไขคุณสมบัติ IntegralHeight=False มีการแสดงรายการที่ 4 ออกมาเล็กน้อย

clip_image038

รูปที่ 7-26 แสดงการเปรียบเทียบเมื่อคุณแก้ไขคุณสมบัติ IntegralHeight ของคอนโทรล ComboBox 2 ตัว


ItemData

คุณสมบัตินี้มีหน้าที่สำหรับคืนค่า หรือกำหนดหมายเลขลำดับ ซึ่งกำกับอยู่ในแต่ละรายการที่ปรากฎอยู่ในคอนโทรล ComboBox คุณสมบัตินี้มีลักษณะพิเศษคือ คุณจะต้องกำหนดลำดับในขณะรันเท่านั้น มีรูปแบบการใช้งานดังนี้

Combo1.ItemData(index) [= number]

ตัวแปร index หมายถึง เลขจำนวนเต็ม Integer ซึ่งใช้สำหรับระบุลำดับในแต่ละรายการ
ตัวแปร number หมายถึง เลขจำนวนเต็ม Integer ที่เป็นหมายเลข ที่คุณต้องการกำหนดให้แต่ละรายการ เพื่อใช้ตัวเลขดังกล่าวนี้ ในการอ้างอิงแต่ละรายการ ในภายหลัง


ListCount

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

Combo1.ListCount

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


ListIndex

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

Combo1.ListIndex [=index]

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


MouseIcon

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

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

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


MousePointer

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

Combo1.MousePointer [= value]

ตัวแปร Value เป็นรูปแบบของเมาส์ ซึ่งมีอยู่ด้วยกัน 16 แบบดังตารางต่อไปนี้

ค่าคงที่

ค่าตัวเลข

รายละเอียด

vbDefault

0

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

vbArrow

1

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

vbCrosshair

2

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

vbIbeam

3

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

vbIconPointer

4

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

vbSizePointer

5

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

vbSizeNESW

6

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

vbSizeNS

7

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

vbSizeNWSE

8

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

vbSizeWE

9

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

vbUpArrow

10

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

vbHourglass

11

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

vbNoDrop

12

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

vbArrowHourglass

13

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

vbArrowQuestion

14

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

vbSizeAll

15

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

vbCustom

99

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


NewIndex

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

Combo1.NewIndex

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


Parent

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

Combo1.Parent


SelLength, SelStart และ SelText

คุณสมบัติ SelLength มีหน้าที่สำหรับคืนค่า หรือกำหนดจำนวนตัวอักษรที่คุณต้องการเลือก คุณสมบัติ SelStart มีหน้าที่สำหรับคืนค่า หรือกำหนดตัวอักษรที่เป็นตัวแรก ที่คุณต้องการเลือก ส่วนคุณสมบัติ SelText มีหน้าที่สำหรับรายงานข้อความที่ได้ถูกเลือกเอาไว้   โดยที่คุณจะต้องกำหนดให้คุณสมบัติ Style=0 หรือ 1 เท่านั้น คุณสมบัติทั้ง 3 ตัวมีรูปแบบการใช้งานดังนี้

Combo1.SelLength [= number]
Combo1.SelStart [= index]
Combo1.SelText [= value]

ตัวแปร number หมายถึง เลขจำนวนเต็มบวก Integer ที่เป็นจำนวนตัวอักษรซึ่งถูกเก็บอยู่ในคุณสมบัติ รวมถึง ช่องว่าง 1 ช่องเท่ากับ 1 ตัวอักษรด้วย
ตัวแปร index หมายถึง เลขจำนวนเต็มบวก Integer ที่เป็นตำแหน่งของตัวอักษรตัวแรก ที่คุณต้องการเริ่มต้นเลือก
ตัวแปร value หมายถึง ข้อความที่ถูกเลือกไว้

คุณสมบัติทั้ง 3 ตัวมีผลเหมือนกับคอนโทรล TextBox ทุกประการ


Sorted

คุณสมบัตินี้มีหน้าที่สำหรับคืนค่า หรือกำหนดให้คอนโทรล ComboBox เรียงลำดับรายการต่างๆ จากน้อยไปหามาก ซึ่งสามารถแยกได้ 3 กรณี คือ

  • กรณีที่ 1 รายการแต่ละรายการ เป็นตัวเลขทั้งหมด ก็จะเรียงจากค่าน้อยไปหามาก 
  • กรณีที่ 2 รายการแต่ละรายการ เป็นตัวอักษรทั้งหมด จะใช้การเรียงตามลำดับตัวอักษร โดยจะจัดตัวพิมพ์ใหญ่ ให้อยู่เหนือกว่าอักษรตัวพิมพ์เล็ก
  • กรณีที่ 3 รายการต่างๆ มีทั้งตัวอักษร และตัวเลข จะจัดลำดับโดยการเรียงค่าตัวเลขจากน้อยไปหามาก ให้หมดรายการก่อน จากนั้นจึงเรียงลำดับรายการตัวอักษร   เช่น ถ้ามีรายการ 333, 222, 111, aaa, AAA, BBB ก็จะถูกจัดลำดับดังนี้ 111, 222, 333, AAA, aaa, BBB เป็นต้น

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

Combo1.Sorted [=boolean]

ค่าที่ได้จากคุณสมบัตินี้ มีความหมายดังนี้

ค่า

รายละเอียด

True

หมายถึง รายการต่างๆ จะถูกเรียงลำดับ โดยใช้เเงื่อนไขที่กล่าวมาข้างต้น

False

(Default) หมายถึง รายการต่างๆ ไม่มีการเรียงลำดับแต่อย่างใด


TabIndex

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

Combo1.TabIndex [=index]

ตัวแปร index หมายถึง เลขจำนวนเต็มบวก Integer เท่านั้น ซึ่งเป็นลำดับโฟกัสของคอนโทรล ComboBox  ที่มีค่าตั้งแต่ 0 ถึง n-1 โดยที่ n หมายถึง จำนวนคอนโทรลที่อยู่บนฟอร์ม เรียงลำดับจากน้อยไปมาก และถ้าคุณกำหนดคุณสมบัติ TabIndex เป็นค่าลบ จะเกิด error ทันที


TabStop

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

Combo1.TabStop [=boolean]

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

กำหนดค่า

รายละเอียด

True

(Default) หมายถึง กำหนดให้คอนโทรล สามารถรับโฟกัส เมื่อผู้ใช้กดคีย์ Tab ได้ตามปกติ

False

หมายถึง กำหนดให้คอนโทรล ไม่ตอบรับลำดับการโฟกัส ด้วยการกดคีย์ Tab และส่งโฟกัสต่อไปยังคอนโทรลที่อยู่ในลำดับ TabIndex ต่อไปทันที

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


Text

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

Combo1.Text [=string]

ตัวแปร string หมายถึง ข้อความซึ่งเป็นรายการอยู่ภายในคอนโทรล ComboBox ถูกผู้ใช้เลือกอยู่


TopIndex

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

Combo1.TopIndex [= value]

ตัวแปร value หมายถึง เลขจำนวนเต็ม Integer ที่เป็นค่า Index ของแต่ละรายการ คุณสามารถกำหนดค่าตัวแปร value นี้ได้ไม่เกิน จำนวนรายการที่มีอยู่ในคอนโทรลนั้นๆ เช่น ถ้าจำนวนรายการมีทั้งหมด 10 รายการ (แต่ละรายการมีค่า Index ตั้งแต่ 0-9) ตัวแปร value ก็จะมีค่าอยู่ระหว่าง 0-9 นั่นเอง ซึ่งจะมีลักษณะเหมือนกับคอนโทรล ListBox ทุกประการ


ToolTipText

คุณสมบัตินี้มีหน้าที่สำหรับกำหนดข้อความ ToolTip เมื่อผู้ใช้ เลื่อนเมาส์มาบริเวณคอนโทรล ComboBox มีรูปแบบการใช้งานดังนี้

Combo1.ToolTipText [=string]

ตัวแปร string หมายถึง ข้อความที่คุณต้องการทำ ToolTip


Visible

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

Combo1.Visible [=boolean]

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

กำหนดค่า

รายละเอียด

True

(Default) หมายถึง คอนโทรลมองเห็นได้ตามปกติ

False

หมายถึง คอนโทรลถูกซ่อนอยู่ภายในหน่วยความจำ


เมธอดของคอนโทรล ComboBox

สำหรับเมธอดที่น่าสนใจของคอนโทรล ComboBox มีดังนี้

AddItem

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

Combo1.AddItem item [,index]

ตัวแปร item หมายถึง รายการที่คุณต้องการเพิ่มเข้าไป คุณอาจจะใช้ร่วมกับคำสั่ง With...End With ก็ได้
ตัวแปร index หมายถึง เลขจำนวนเต็มบวก Integer ที่เป็นค่าลำดับของรายการที่คุณเพิ่มเข้าไป ซึ่งใช้ในกรณีที่คุณต้องการเพิ่มรายการ แบบระบุลำดับ


Clear

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

Combo1.Clear


Move

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

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

รายละเอียดของตัวแปรแต่ละตัวมีดังนี้

ตัวแปร

รายละเอียด

left

คุณต้องกำหนด หมายถึง เลขจำนวนเต็มที่เป็นตำแหน่งของคอนโทรลในแนวแกน x โดยวัดจากมุมซ้ายบน ของคอนโทรลกับ มุมซ้ายบนใต้แถบ title bar ของฟอร์ม ถ้าคอนโทรล ComboBox  อยู่ในคอนโทรล Frame จะวัดเทียบกับมุมซ้ายบน ของคอนโทรล Frame แทน

top

(Optional) หมายถึง เลขจำนวนเต็มที่เป็นตำแหน่งของคอนโทรลในแนวแกน y โดยวัดจากมุมซ้ายบน ของคอนโทรลกับ มุมซ้ายบนใต้แถบ title bar ของฟอร์มเช่นกัน ถ้าคอนโทรล ComboBox อยู่ในคอนโทรล Frame จะวัดเทียบกับ มุมซ้ายบนของคอนโทรล Frame แทน

width

(Optional) หมายถึงเลขจำนวนเต็มที่เป็นความกว้างของคอนโทรล ComboBox

height

(Optional) หมายถึงเลขจำนวนเต็มที่เป็นความสูงของคอนโทรล ComboBox


Refresh

เมธอดนี้มีหน้าที่สำหรับปรับปรุงรายการที่อยู่ในตัวคอนโทรล ListBox ให้ทันสมัย หรือ update ทันที มีรูปแบบการใช้งานดังนี้

Combo1.Refresh


RemoveItem

เมธอดนี้มีหน้าที่สำหรับลบรายการที่มีค่า index เท่ากับคุณสมบัตินี้ออกจากคอนโทรล ComboBox มีรูปแบบการใช้งานดังนี้

Combo1.RemoveItem index

ตัวแปร index หมายถึง เลขจำนวนเต็ม Integer ซึ่งเป็นค่าลำดับของรายการ ที่คุณต้องการลบออกจากคอนโทรล ComboBox เช่น ถ้าคุณต้องการลบรายการแรก ค่า index นี้จะเท่ากับ 0 เป็นต้น


SetFocus

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

Combo1.SetFocus


เหตุการณ์ของคอนโทรล ComboBox

สำหรับเหตุการณ์ที่คอนโทรล ComboBox  สนับสนุนมีดังนี้

Combo1_Change ( )

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

Private Sub Combo1_Change([index As Integer])

End Sub

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


Combo1_Click ( )

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

Private Sub Combo1_Click([index As Integer])

End Sub

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


Combo1_DblClick ( )

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

Private Sub Combo1_DblClick([index As Integer])

End Sub

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


Combo1_DragDrop ( )

เป็นเหตุการณ์ที่เกิดขึ้น เมื่อผู้ใช้มีการลาก (drag) แล้ววาง (drop) โดยที่เหตุการณ์ดังกล่าวจะต้องเสร็จสิ้น และสมบูรณ์ มีรูปแบบการใช้งานดังนี้

Private Sub Combo1_DragDrop([index As Integer,]source As Control, x As Single, y As Single)

End Sub

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

อาร์ กิวเมนต์ source หมายถึง คอนโทรลที่เป็นจุดเริ่มต้นเหตุการณ์ลากแล้ววาง (drag-drop)

อาร์กิวเมนต์ x,y หมายถึง พิกัดคู่ลำดับ co-ordinate ซึ่งเป็นตำแหน่งของเมาส์พอยน์เตอร์ บนตัวคอนโทรลปลายทาง ที่ผู้ใช้ต้องการวาง ซึ่งถือว่า กระบวนการลากแล้ววาง (drag-drop) เสร็จสิ้น และสมบูรณ์แล้ว


Combo1_DragOver ( )

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

Private Sub Combo1_DragOver([index As Integer,]source As Control, x As Single, y As Single, state As Integer)

End Sub

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

อาร์ กิวเมนต์ source หมายถึง คอนโทรลที่เป็นจุดเริ่มต้นเหตุการณ์ลากแล้ววาง (drag-drop)

อาร์กิวเมนต์ x,y หมายถึง พิกัดคู่ลำดับ co-ordinate ซึ่งเป็นตำแหน่งของเมาส์พอยน์เตอร์ บนตัวคอนโทรลปลายทาง ที่ผู้ใช้ต้องการวาง ซึ่งถือว่า กระบวนการลากแล้ววาง (drag-drop) เสร็จสิ้น และสมบูรณ์แล้ว

อาร์กิวเมนต์ state หมายถึง เลขจำนวนเต็ม Integer ที่บอกสถานะของกระบวนการ ลากแล้ววาง ซึ่งมีความหมายดังนี้

  • 0-Enter หมายถึง คอนโทรลต้นทาง (source control) กำลังถูกลากเข้ามาอยู่เหนือบริเวณเป้าหมาย
  • 1-Leave หมายถึง คอนโทรลต้นทาง (source control) กำลังถูกลากออกจากเป้าหมาย
  • 2-Over หมายถึง คอนโทรลต้นทาง (source control) กำลังถูกลากไปมา เหนือบริเวณเป้าหมาย

Combo_DropDown ( )

เป็นเหตุการณ์ที่เกิดขึ้นเมื่อ ผู้ใช้คลิ๊กที่ปุ่ม แต่ถ้าคุณกำหนดให้คุณสมบัติ Style=1 Simple Combo เหตุการณ์นี้ ก็จะไม่เกิดขึ้น มีรูปแบบการใช้งานดังนี้

Private Sub Combo1_DropDown([index As Integer])

End Sub

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


Combo1_GotFocus ( )

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

Private Sub Combo1_GotFocus([index As Integer])

End Sub

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


Combo1_KeyDown ( ) และ Combo1_KeyUp ( )

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

Private Sub Combo1_KeyDown([index As Integer,]keycode As Integer, shift As Integer)

End Sub

Private Sub Combo1_KeyUp([index As Integer,]keycode As Integer, shift As Integer)

End Sub

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

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

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

ค่าคงที่ (Shift)

ค่าตัวเลข

รายละเอียด

vbShiftMask

1

ปุ่ม SHIFT ถูกกด

vbCtrlMask

2

ปุ่ม CTRL ถูกกด

vbAltMask

4

ปุ่ม ALT ถูกกด

ถ้าผู้ใช้มีการกดปุ่มดังกล่าว พร้อมๆ กัน ไม่ว่าจะเป็นปุ่มใดก็ตาม จะใช้ผลบวกของแต่ละบิตรวมกัน เช่น สมมติว่าผู้ใช้กดปุ่ม Shift+Alt จะมีค่าเท่ากับ 5 เป็นต้น


Combo1_KeyPress ( )

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

Private Sub Combo1_KeyPress([index As Integer,]keyascii As Integer)

End Sub

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

อาร์กิวเมนต์ keyascii หมายถึง รหัสแอสกีซึ่งแทนของอักษรที่อยู่บนคีย์บอร์ด คุณสามารถดูรายละเอียดเพิ่มเติมได้ที่ บทที่ 28 ค่าคงที่ระบบ (System Constants) ที่น่าสนใจ


Combo1_LostFocus ( )

เป็นเหตุการณ์ที่เกิดขึ้น เมื่อคอนโทรล ComboBox  สูญเสียสภาวะโฟกัส ให้กับคอนโทรล หรืออ๊อบเจ็กต์ตัวอื่นๆ อาจกล่าวได้ว่า เหตุการณ์ LostFocus ( ) จะเกิดต่อจากเหตุการณ์ GotFocus ( ) นั่นเอง มีรูปแบบการใช้งานดังนี้

Private Sub Combo1_LostFocus([index As Integer])

End Sub

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


การใช้งานคอนโทรล ScrollBar

คอนโทรล ScrollBar ใช้สำหรับสร้างแถบเลื่อน เพื่อแสดงข้อมูล รายการต่างๆ หรือรูปกราฟฟิก ในคอนโทรลใดๆ ที่ไม่สามารถแสดงข้อมูล ให้ผู้ใช้เห็น พร้อมๆ กันได้ในคราวเดียว เป็นคอนโทรลที่ต้องใช้งานร่วมกับคอนโทรลอื่นๆ เสมอ แต่ก็มีคอนโทรลบางตัว เช่น ListBox, ComboBox ฯลฯ สามารถแสดงแถบ scrollbar ได้โดยไม่ต้องใช้งานคอนโทรล ScrollBar แต่อย่างใด คอนโทรล ScrollBar สามารถแบ่งออกได้ 2 ประเภทคือ

1. คอนโทรล VScrollBar ใช้แสดงแถบเลื่อนในแนวตั้ง (Vertical Scroll Bar) คุณสามารถเลือกใช้งานได้โดยคลิ๊กที่ clip_image039

2. คอนโทรล HScrollBar ใช้แสดงแถบเลื่อนในแนวนอน (Horizontal Scroll Bar) คุณสามารถเลือกใช้งานได้โดยคลิ๊กที่ clip_image040

clip_image041

รูปที่ 7-27 แสดงคอนโทรล VScrollBar และคอนโทรล HScrollBar เมื่อปรากฎบนฟอร์ม

clip_image042

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

ก่อนที่จะใช้งานคอนโทรล ScrollBar คุณควรทราบส่วนประกอบต่างๆ ของตัวคอนโทรลเสียก่อน ซึ่งมีความหมายดังนี้

ปุ่มลูกศร clip_image043 clip_image044 clip_image045 clip_image046

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

ปุ่ม Scroll clip_image047

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

แถบว่าง clip_image048

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

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

คุณสมบัติ LargeChange เป็นคุณสมบัติตัวแรกที่คุณควรทราบ ซึ่งมีหน้าที่สำหรับกำหนดอัตราเปลี่ยนแปลงค่าของคอนโทรล ในแต่ละครั้ง มีผลเมื่อผู้ใช้คลิ๊กบริเวณที่ว่างๆ ของตัวคอนโทรล แล้วปุ่ม Scroll จะเคลื่อนย้ายมายังตำแหน่งที่เมาส์คลิ๊กค้างอยู่ ส่วนคุณสมบัติ SmallChange ใช้สำหรับกำหนดอัตราเปลี่ยนแปลงค่าแต่ละครั้งเช่นกัน แต่จะใช้กับกรณีที่ผู้ใช้คลิ๊กที่หัวลูกศร ทั้ง 2 คุณสมบัติ มีรูปแบบการใช้งานดังนี้

vsb1.LargeChange [= number]
vsb1.SmallChange [= number]

ตัวแปร number หมายถึง เลขจำนวนเต็ม Integer ที่เป็นอัตราการเปลี่ยนแปลงในแต่ละครั้ง ซึ่งคุณสามารถกำหนดค่าได้ตั้งแต่ 1 ถึง 32767 เท่านั้น

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

vsb1.Max [= value]
vsb1.Min [= value]

ตัวแปร value หมายถึง เลขจำนวนเต็ม Integer ซึ่งใช้สำหรับกำหนดค่าสูงสุด และค่าต่ำสุด ซึ่งคุณสามารถกำหนดค่าได้ตั้งแต่ -32768 ถึง 32767 ซึ่งโดยปกติแล้ว ค่าต่ำสุด จะมีค่าเท่ากับ 0 ส่วนค่าสูงสุดจะเท่ากับ 32767

คุณสมบัติ Value มีหน้าที่สำหรับรายงานค่า ที่เกิดจากการเปลี่ยนแปลงตำแหน่งของปุ่ม Scroll  หมายถึง เมื่อผู้ใช้มีการเปลี่ยนแปลงค่า ไม่ว่าด้วยวิธีใดก็ตาม แล้วทำให้ปุ่ม Scroll เปลี่ยนตำแหน่งไปจากเดิม (เพิ่มขึ้น หรือลดลง) ค่าที่ได้จากคอนโทรล VScrollBar หรือคอนโทรล  HScrollBar จะถูกนำมาเก็บไว้ที่คุณสมบัติ Value นั่นเอง ซึ่งคุณจะต้องนำค่านี้ ไปเป็นเงื่อนไขในการประมวลผลต่อไป โดยที่ค่าดังกล่าวนี้ จะมีขอบเขตอยู่ระหว่าง คุณสมบัติ Max และคุณสมบัติ Min เท่านั้น หรืออาจกล่าวได้ว่า ถ้าคุณต้องการตรวจสอบค่าของคอนโทรล ที่มีการเปลี่ยนแปลง โดยเกิดจากผู้ใช้ คุณสามารถตรวจสอบค่าได้ที่ คุณสมบัติ Value นี้นั่นเอง มีรูปแบบการใช้งานดังนี้

vsb1.Value [= value]

ตัวแปร value หมายถึง เลขจำนวนเต็ม Integer ซึ่งเป็นค่าที่คอนโทรล ScrollBar เก็บอยู่ในเวลานั้นๆ ค่านี้จะเปลี่ยนแปลง เมื่อผู้ใช้มีการย้ายตำแหน่งปุ่ม Scroll ไม่ว่าจะด้วยวิธีใดก็ตาม และจะมีขอบเขตอยู่ระหว่างคุณสมบัติ Max และคุณสมบัติ Min เท่านั้น


คุณสมบัติของคอนโทรล ScrollBar

สำหรับคุณสมบัติอื่นๆ ที่น่าสนใจของคอนโทรล ScrollBar มีดังนี้

DragIcon

คุณสมบัตินี้มีหน้าที่สำหรับคืนค่า หรือกำหนดลักษณะไอคอน เพื่อใช้กับเมาส์พอยต์เตอร์ เมื่อเกิดเหตุการณ์ ลากแล้ววาง (drag-drop) มีรูปแบบการใช้งานดังนี้

vsb1.DragIcon [= icon]

ตัวแปร icon หมายถึง ชื่อไฟล์ไอคอน (*.ico) หรือไฟล์เคอร์เซอร์ (*.cur) ที่คุณต้องการนำมาใช้เป็นไอคอน

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

clip_image010[2]

รูปที่ 7-28 แสดงไดอะล๊อกบ๊อกซ์ Load Icon


DragMode

คุณสมบัตินี้มีหน้าที่สำหรับคืนค่า หรือกำหนดโหมด (Mode) ที่จะทำให้เกิดเหตุการณ์ลากแล้ววาง (drag-drop) มีรูปแบบการใช้งานดังนี้

vsb1.DragMode [= number]

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

ค่าคงที่

ค่าตัวเลข

รายละเอียด

VbManual

0

(Default) Manual หมายถึง ผู้ใช้จะต้องเป็นผู้กระทำเองทั้งหมด ตั้งแต่การลาก จนถึงวาง

VbAutomatic

1

Automatic หมายถึง ผู้ใช้เพียงแต่คลิ๊กที่คอนโทรลต้นทางเท่านั้น แล้ว VB จะสร้างเหตุการณ์ลากแล้ววาง ให้สมบูรณ์โดยอัตโนมัติ


Enabled

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

vsb1.Enabled [=boolean]

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

กำหนดค่า

รายละเอียด

True

(Default) หมายถึง ยอมให้คอนโทรล ScrollBar สามารถตอบสนองเหตุการณ์ต่างๆ ได้ตามปกติ

False

หมายถึง ไม่อนุญาตให้คอนโทรล ScrollBar ตอบสนองเหตุการณ์ใดๆ ที่เกิดขึ้นทั้งสิ้น

clip_image049

รูปที่ 7-29 แสดงคอนโทรล ScrollBar ที่คุณสมบัติ Enabled=True และ Enabled=False


Height, Width, Left และ Top

คุณสมบัติ Height และ Width มีหน้าที่สำหรับคืนค่า หรือกำหนดขนาดความกว้าง และความสูงของคอนโทรล ScrollBar ส่วนคุณสมบัติ Left และ Top มีหน้าที่สำหรับคืนค่า หรือกำหนดตำแหน่งของคอนโทรล ScrollBar   คุณสมบัติทั้ง 4 ตัวจะมีความสัมพันธ์กัน เมื่อคุณมีการเปลี่ยนขนาด หรือเปลี่ยนตำแหน่งของคอนโทรล ScrollBar  คุณสมบัติทั้ง 4 ตัวจะเปลี่ยนไปโดยอัตโนมัติ มีรูปแบบการใช้งานดังนี้

vsb1.Height [=number]
vsb1.Width [=number]
vsb1.Left [=x]
vsb1.Top [=y]

ตัวแปร number หมายถึง เลขจำนวนเต็ม Integer ที่เป็นความสูง หรือความกว้างของคอนโทรล

ตัวแปร x,y หมายถึง ตำแหน่งของคอนโทรล โดยวัดเทียบจากมุมซ้ายบนของคอนโทรล กับมุมซ้ายบนใต้แถบ title bar ของ Form เป็นพิกัดแบบคู่ลำดับ (Co-ordinate) แต่ถ้าคอนโทรล ScrollBar วางอยู่ในคอนโทรล Frame จะวัดเทียบกับมุมซ้ายบน ของคอนโทรล Frame แทน

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


Index

คุณสมบัตินี้มีหน้าที่สำหรับคืนค่า หรือกำหนดให้คอนโทรล ScrollBar สามารถใช้งานในรูปแบบอาร์เรย์ได้ โดยที่คอนโทรลแต่ละตัวสามารถมีชื่อ (คุณสมบัติ Name) เหมือนกันได้ แต่ต่างกันที่ค่าดัชนี หรือค่า Index นั่นเอง สำหรับในการใช้งานคอนโทรลอาร์เรย์  จะเหมือนกับตัวแปรอาร์เรย์ทุกประการ มีรูปแบบการใช้งานดังนี้

vsb1[(number)].Index

ตัวแปร number หมายถึง เลขจำนวนเต็ม Integer ซึ่งเป็นค่า Index ที่ทำให้คอนโทรลแต่ละตัว มีชื่อต่างกัน


MouseIcon

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

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

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


MousePointer

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

vsb1.MousePointer [= value]

ตัวแปร Value เป็นรูปแบบของเมาส์ ซึ่งมีอยู่ด้วยกัน 16 แบบดังตารางต่อไปนี้

ค่าคงที่

ค่าตัวเลข

รายละเอียด

vbDefault

0

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

vbArrow

1

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

vbCrosshair

2

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

vbIbeam

3

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

vbIconPointer

4

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

vbSizePointer

5

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

vbSizeNESW

6

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

vbSizeNS

7

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

vbSizeNWSE

8

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

vbSizeWE

9

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

vbUpArrow

10

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

vbHourglass

11

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

vbNoDrop

12

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

vbArrowHourglass

13

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

vbArrowQuestion

14

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

vbSizeAll

15

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

vbCustom

99

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


Parent

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

vsb1.Parent


TabIndex

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

vsb1.TabIndex [=index]

ตัวแปร index หมายถึง เลขจำนวนเต็มบวก Integer เท่านั้น ซึ่งเป็นลำดับโฟกัสของคอนโทรล Label ที่มีค่าตั้งแต่ 0 ถึง n-1 โดยที่ n หมายถึงจำนวนคอนโทรลที่อยู่บนฟอร์ม เรียงลำดับจากน้อยไปมาก และถ้าคุณกำหนดคุณสมบัติ TabIndex เป็นค่าลบ จะเกิด error ทันที


TabStop

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

vsb1.TabStop [=boolean]

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

กำหนดค่า

รายละเอียด

True

(Default) หมายถึง กำหนดให้คอนโทรล สามารถรับโฟกัส เมื่อผู้ใช้กดคีย์ Tab ได้ตามปกติ

False

หมายถึง กำหนดให้คอนโทรล ไม่ตอบรับลำดับการโฟกัส ด้วยการกดคีย์ Tab และส่งโฟกัสต่อไปยังคอนโทรลที่อยู่ในลำดับ TabIndex ต่อไปทันที

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


ToolTipText

คุณสมบัตินี้มีหน้าที่สำหรับกำหนดข้อความ ToolTip เมื่อผู้ใช้ เลื่อนเมาส์มาบริเวณคอนโทรล ScrollBar มีรูปแบบการใช้งานดังนี้

vsb1.ToolTipText [=string]

ตัวแปร string หมายถึง ข้อความที่คุณต้องการทำ ToolTip


Visible

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

vsb1.Visible [=boolean]

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

กำหนดค่า

รายละเอียด

True

(Default) หมายถึง คอนโทรลสามารถมองเห็นได้ตามปกติ

False

หมายถึง คอนโทรลจะถูกซ่อนอยู่ในหน่วยความจำ ผู้ใช้ไม่สามารถเห็นได้


เมธอดของคอนโทรล ScrollBar

สำหรับเมธอดที่น่าสนใจของคอนโทรล ScrollBar  มีดังนี้

Drag

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

vsb1.Drag action

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

ค่าคงที่

ค่าตัวเลข

รายละเอียด

vbCancel

0

หมายถึง ยกเลิกกระบวนการลาก

vbBeginDrag

1

หมายถึง เริ่มต้นกระบวนการลาก

vbEndDrag

2

หมายถึง สิ้นสุดกระบวนการลาก


Move

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

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

รายละเอียดของตัวแปรแต่ละตัวมีดังนี้

ตัวแปร

รายละเอียด

left

คุณต้องกำหนด หมายถึง เลขจำนวนเต็มที่เป็นตำแหน่งของคอนโทรลในแนวแกน x โดยวัดจากมุมซ้ายบน ของคอนโทรลกับ มุมซ้ายบนใต้แถบ title bar ของฟอร์ม ถ้าคอนโทรล ScrollBar   อยู่ในคอนโทรล Frame จะวัดเทียบกับมุมซ้ายบน ของคอนโทรล Frame แทน

top

(Optional) หมายถึง เลขจำนวนเต็มที่เป็นตำแหน่งของคอนโทรลในแนวแกน y โดยวัดจากมุมซ้ายบน ของคอนโทรลกับ มุมซ้ายบนใต้แถบ title bar ของฟอร์มเช่นกัน ถ้าคอนโทรล ScrollBar อยู่ในคอนโทรล Frame จะวัดเทียบกับ มุมซ้ายบนของคอนโทรล Frame แทน

width

(Optional) หมายถึง เลขจำนวนเต็มที่เป็นความกว้างของคอนโทรล ScrollBar

height

(Optional) หมายถึงเลขจำนวนเต็มที่เป็นความสูงของคอนโทรล ScrollBar


Refresh

เมธอดนี้มีหน้าที่สำหรับปรับปรุงรายการที่อยู่ในตัวคอนโทรล ScrollBar ให้ทันสมัย หรือ update ทันที มีรูปแบบการใช้งานดังนี้

vsb1.Refresh


SetFocus

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

vsb1.SetFocus


เหตุการณ์ของคอนโทรล ScrollBar

สำหรับเหตุการณ์ที่คอนโทรล ScrollBar สนับสนุนมีดังนี้

Vsb1_Change ( ) และ Vsb1_Scroll ( )

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

ในการใช้งานคอนโทรล ScrollBar คุณสามารถเปลี่ยนแปลงค่า (คุณสมบัติ Value) ได้ 2 ลักษณะ คือ

  • แบบที่มีการเปลี่ยนแปลงค่าจริงๆ
  • แบบที่มีการเปลี่ยนแปลงค่าชั่วคราว (หรือเรียกอีกอย่างหนึ่งว่า การทดสอบค่าก็ได้)

กรณีการเปลี่ยนแปลงค่าแบบจริงๆ ผู้ใช้สามารถกระทำได้ 3 วิธี คือ

1. คลิ๊กที่หัวลูกศร แล้วทำให้ปุ่ม Scroll มีการเปลี่ยนตำแหน่งไม่ว่าจะเพิ่มขึ้น หรือลดลง

2. เมื่อผู้ใช้ drag ปุ่ม Scroll แล้วปล่อยปุ่ม Scroll ภายในบริเวณตัวคอนโทรล ScrollBar แล้วทำให้ปุ่ม Scroll มีการเปลี่ยนแปลงตำแหน่ง ไม่ว่าจะเพิ่มขึ้น หรือลดลง

3. คลิ๊กที่บริเวณที่ว่างๆ ภายในตัวคอนโทรล แล้วทำให้ปุ่ม Scroll มีการเปลี่ยนแปลงตำแหน่ง ไม่ว่าจะเพิ่มขึ้น หรือลดลง

จากทั้ง 3 กรณี จะทำให้เกิดเหตุการณ์ Vsb1_Change ( ) ซึ่งมีรูปแบบการใช้งานดังนี้

Private Sub vsb1_Change([index As Integer])

End Sub

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

กรณีการเปลี่ยนแปลงค่าแบบชั่วคราว ผู้ใช้สามารถกระทำได้ 1 วิธี คือ

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

Private Sub Vsb1_Scroll ( )

End Sub

เพื่อให้คุณเห็นภาพได้ชัดเจนยิ่งขึ้น ให้คุณทดสอบโดยการเปิดเอกสาร Word ที่มีจำนวนหน้ามากๆ ให้คุณลอง drag ปุ่ม Scroll ที่อยู่ด้านข้าง ขึ้นลง แล้วทำให้มีการเปลี่ยนหน้าของเอกสาร นั่นคือ เกิดเหตุการณ์ Vsb1_Change ( )

จากนั้น ให้คุณทดลองใหม่ โดยการ drag ปุ่ม Scroll เลื่อนขึ้นลงไปมาเช่นกัน จะเห็นได้ว่า ขณะที่คุณเลื่อนปุ่ม Scroll ไปมา เอกสารยังคงเปลี่ยนหน้า ไปยังที่ที่คุณต้องการได้ แต่เมื่อคุณปล่อยปุ่ม Scroll นอกบริเวณตัว ScrollBar มากๆ แล้วทำให้ปุ่มดังกล่าว ย้อนกลับมาที่เดิม พร้อมๆ กับเอกสาร กลับมายังตำแหน่งเริ่มต้นเดิมที่คุณ drag มา นั่นคือ มีการเปลี่ยนแปลงหน้าเอกสารเช่นกัน แต่เป็นการเปลี่ยนแปลงชั่วคราว ซึ่งทำให้เกิดเหตุการณ์ Vsb1_Scroll ( )


Vsb1_DragDrop ( )

เป็นเหตุการณ์ที่เกิดขึ้น เมื่อผู้ใช้มีการลาก (drag) แล้ววาง (drop) โดยที่เหตุการณ์ดังกล่าวจะต้องเสร็จสิ้น และสมบูรณ์ มีรูปแบบการใช้งานดังนี้

Private Sub Vsb1_DragDrop([index As Integer,]source As Control, x As Single, y As Single)

End Sub

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

อาร์ กิวเมนต์ source หมายถึง คอนโทรลที่เป็นจุดเริ่มต้นเหตุการณ์ลากแล้ววาง (drag-drop)

อาร์กิวเมนต์ x,y หมายถึง พิกัดคู่ลำดับ co-ordinate ซึ่งเป็นตำแหน่งของเมาส์พอยน์เตอร์ บนตัวคอนโทรลปลายทาง ที่ผู้ใช้ต้องการวาง ซึ่งถือว่า กระบวนการลากแล้ววาง (drag-drop) เสร็จสิ้น และสมบูรณ์แล้ว


Vsb1_DragOver ( )

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

Private Sub Vsb1_DragOver([index As Integer,]source As Control, x As Single, y As Single, state As Integer)

End Sub

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

อาร์ กิวเมนต์ source หมายถึง คอนโทรลที่เป็นจุดเริ่มต้นเหตุการณ์ลากแล้ววาง (drag-drop)

อาร์กิวเมนต์ x,y หมายถึง พิกัดคู่ลำดับ co-ordinate ซึ่งเป็นตำแหน่งของเมาส์พอยน์เตอร์ บนตัวคอนโทรลปลายทาง ที่ผู้ใช้ต้องการวาง ซึ่งถือว่า กระบวนการลากแล้ววาง (drag-drop) เสร็จสิ้น และสมบูรณ์แล้ว

อาร์กิวเมนต์ state หมายถึง เลขจำนวนเต็ม Integer ที่บอกสถานะของกระบวนการ ลากแล้ววาง ซึ่งมีความหมายดังนี้

  • 0-Enter หมายถึง คอนโทรลต้นทาง (source control) กำลังถูกลากเข้ามาอยู่เหนือบริเวณเป้าหมาย
  • 1-Leave หมายถึง คอนโทรลต้นทาง (source control) กำลังถูกลากออกจากเป้าหมาย
  • 2-Over หมายถึง คอนโทรลต้นทาง (source control) กำลังถูกลากไปมา เหนือบริเวณเป้าหมาย

Vsb1_GotFocus

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

Private Sub Vsb1_GotFocus([index As Integer])

End Sub

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


Vsb1_KeyDown ( ) และ Vsb1_KeyUp ( )

เหตุการณ์ KeyDown ( ) จะเกิดขึ้นเมื่อ ผู้ใช้กดปุ่มใดๆ ที่คีย์บอร์ด และเหตุการณ์  KeyUp ( ) จะเกิดขึ้นต่อจากเหตุการณ์ KeyDown ( ) นั่นคือ เมื่อผู้ใช้ปล่อยปุ่มที่คีย์บอร์ด คุณจะต้องกำหนดให้คอนโทรล ScrollBar ให้ได้รับโฟกัสเสียก่อน มีรูปแบบการใช้งานดังนี้

Private Sub Vsb1_KeyDown([index As Integer,]keycode As Integer, shift As Integer)

End Sub

Private Sub Vsb1_KeyUp([index As Integer,]keycode As Integer, shift As Integer)

End Sub

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

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

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

ค่าคงที่ (Shift)

ค่าตัวเลข

รายละเอียด

vbShiftMask

1

ปุ่ม SHIFT ถูกกด

vbCtrlMask

2

ปุ่ม CTRL ถูกกด

vbAltMask

4

ปุ่ม ALT ถูกกด

ถ้าผู้ใช้มีการกดปุ่มดังกล่าว พร้อมๆ กัน ไม่ว่าจะเป็นปุ่มใดก็ตาม จะใช้ผลบวกของแต่ละบิตรวมกัน เช่น สมมติว่าผู้ใช้กดปุ่ม Shift+Alt จะมีค่าเท่ากับ 5 เป็นต้น


Vsb1_KeyPress ( )

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

Private Sub Vsb1_KeyPress([index As Integer,]keyascii As Integer)

End Sub

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

อาร์กิวเมนต์ keyascii หมายถึง รหัสแอสกีซึ่งแทนของอักษรที่อยู่บนคีย์บอร์ด คุณสามารถดูรายละเอียดเพิ่มเติมได้ที่ บทที่ 28 ค่าคงที่ระบบ (System Constants) ที่น่าสนใจ


Vsb1_LostFocus ( )

เป็นเหตุการณ์ที่เกิดขึ้น เมื่อคอนโทรล ScrollBar สูญเสียสภาวะโฟกัส ให้กับคอนโทรล หรืออ๊อบเจ็กต์ตัวอื่นๆ อาจกล่าวได้ว่า เหตุการณ์ LostFocus ( ) จะเกิดต่อจากเหตุการณ์ GotFocus ( ) นั่นเอง มีรูปแบบการใช้งานดังนี้

Private Sub Vsb1_LostFocus([index As Integer])

End Sub

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