สมัครสมาชิก
 

object กับ control ใช้ต่างกันยังงัยครับ



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

30 พ.ค. 62 , 18:17:31
อ่าน 371 ครั้ง

Krathok-man

  • สมาชิกไท.Access
  • กระทู้: 3

  • ขอบคุณ ไท.Access

    • ดูรายละเอียด

Dim obj  As Object
Set obj = Me.Text0

Dim clt   As Control
Set clt = Me.Text0

โดยหลักการแล้วผมยังสับสนครับ  ว่ามันต่างกันยังงัย  ที่ผ่านมามั่วๆ  เอาทั้งนั้น ขอที่เป็นหลักการนะครับ
ว่าจะนำไปใช้ไปอ้างยังงัย

 

30 พ.ค. 62 , 19:20:33
ตอบกลับ #1

OddyWriter

: object กับ control ใช้ต่างกันยังงัยครับ
« ตอบกลับ #1 เมื่อ: 30 พ.ค. 62 , 19:20:33 »
ขอตอบแบบนี้นะครับ (ท่านอื่นสามารถเสริมได้นะครับ เผื่อผมผิดพลาด ตกหล่นตรงไหน)

ก่อนอื่นต้องแยกกันอย่างนี้ก่อนนะครับ
สำหรับ Object นั้นเป็นเรื่องของเทคโนโลยีเชิงวัตถุ คือมองทุกสิ่งอย่างให้เป็นวัตถุไปหมด โดยเจ้าวัตถุที่เราเห็นบนหน้าจอ (หรือที่ไม่เห็นบนหน้าจอ) ก็ต้องมีคุณสมบัติตามกฏของ Object Oriented Programming เช่น Inheritance และบลาๆๆ 3-4 ข้อจำไม่ได้ แต่ที่จำได้คือ Access มีแต่ไม่ครบทุกข้อ แต่ก็หยวนๆ วพอกล่อมแกล้มว่าเป็น OO ได้ (อันนี้บ่น)

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

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

สรุป Control ก็คือ Object แบบนึง ที่เราใส่ไว้ในฟอร์มหรือรีพอร์ต

นะคะ (ไม่ใช่นะค่ะ) สวัสดีค่ะ (ไม่ใช่สวัสดีคะ)

คะ/ค่ะ ถึงเวลาวาระแห่งชาติหรือยัง
 
โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข, Krathok-man

31 พ.ค. 62 , 17:30:19
ตอบกลับ #2

สันติสุข

  • แฟนพันธุ์แท้ไท.Access
  • *
  • กระทู้: 355
  • พลังขอบคุณ: 312

  • แยกทิ้งขยะถูกประเภท เทศบาลนำไปกำจัดได้ง่าย

    • ดูรายละเอียด

: object กับ control ใช้ต่างกันยังงัยครับ
« ตอบกลับ #2 เมื่อ: 31 พ.ค. 62 , 17:30:19 »
Object, Control, Textbox ต่างก็เป็น Data Type ใน Access   แต่ตัวแปรของ Object จะกว้างๆ เมื่อสร้างตัวแปรขึ้นมาด้วย Dim ตัวมันเองไม่มีคุณสมบัติอะไรอยู่เลย จนกว่ามันจะถูกกำหนดว่ามันคืออะไร เช่น จากรูป เมื่อกำหนดโดยคำสั่ง Set O = GetObject("C:\Data\DrugList.xls") กลไกของ Access ก็จะกำหนดให้ obj เป็น workbook ของ DrugList.xls ซึ่งหลังจากนี้เราก็สามารถเขียนโค้ดเพื่อเรียกใช้ property และ method ต่างๆที่ตัวโปรแกรม Excel มีให้กับ workbook ได้



แต่อย่างไรก็ตาม ถ้าเรากำลังพิมพ์คำสั่งในบรรทัดต่อๆไปว่า O. เราก็จะยังไม่เห็นว่ามันมี property หรือ method อะไรโผล่ขึ้นมาทั้งๆที่ได้กำหนดไปแล้ว ไม่เหมือนตัวแปร C ซึ่งเป็นตัวแปรประเภท Control ที่จะมี listbox แสดง property และ method ออกมาให้เห็น นั่นเพราะว่า Access จะรู้ว่า O คืออะไรก็ต่อเมื่อโค้ดได้ทำงานแล้ว แต่ขณะที่เรากำลังเขียนโค้ดอยู่ใน Editor นั้น โค้ดยังไม่ได้ทำงาน (ยกเว้นว่าเรากำลังอยู่ในโหมด Debug) ดังนั้น Access จะไม่มีทางรู้เลยว่ามันคืออะไร ก็เลยไม่สามารถแสดง listbox นั้นออกมาให้เราเห็น

Object ต่างกับ Control และ Textbox ตรงที่สองตัวหลังนั้นเป็น object ที่อยู่ในตัว Access เองอยู่แล้ว มันย่อมรู้ดีอยู่แล้วว่ามี property และ method อะไรอยู่บ้างโดยไม่ต้องไปผูกว่า Control หรือ Textbox นี้คือตัว "อะไร" บนฟอร์ม/รายงานตัวนั้น (แต่การที่รู้อยู่แล้ว ไม่ได้หมายความว่าเราจะเรียกใช้ property และ method ก่อนการผูกกับ "อะไร", ด้วยคำสั่ง Set, โดยไม่เกิด error message เพราะมันขึ้นกับว่า property และ method นั้นๆเกี่ยวข้องกับ "อะไร" ที่ Access ต้องรู้ว่ามีอยู่จริงๆก่อนหรือไม่ เช่น ชื่อของ Control หรือ Textbox เป็นต้น)

สรุปว่าเราจะใช้ Object ก็ต่อเมื่อเราต้องการผูก Object นั้นกับ "อะไร" นอกตัว Access เพื่อใช้งาน "อะไร" ตัวนั้น

ส่วน Control ก็คือองค์ประกอบต่างๆบนฟอร์ม/รายงาน เช่น Textbox, Line, Section เป็นต้น มันมี property และ method รวมๆที่องค์ประกอบต่างๆมีเหมือนๆกัน ซึ่งก็มีไม่เท่าไหร่

สุดท้าย Textbox ก็เป็น Object ที่เฉพาะเจาะจงสำหรับเท็กซ์บ็อกซ์ไปเลย มี property และ method เฉพาะ Textbox เท่านั้นครับ เราไม่ค่อยกำหนดตัวแปรของ Textbox เท่าไหร่ เพราะมักอ้างถึง Textbox นั้นได้โดยตรงอยู่แล้ว
« แก้ไขครั้งสุดท้าย: 31 พ.ค. 62 , 17:36:17 โดย สันติสุข »
ช่วยพกถุงผ้า/ถุงพลาสติกไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 
โพสต์นี้ได้รับคำขอบคุณจาก: mbbrid, Krathok-man


บอร์ดเรียนรู้ Access สำหรับคนไทย