Delphi Deep Exploration-ฐานข้อมูล-เคลียร์ ActiveX Control
ไม่ต้องสงสัยเลยว่าฟังก์ชันการพัฒนาฐานข้อมูลอันทรงพลังถือเป็นอัญมณีล้ำค่าของ Delphi ผู้คนอย่างน้อย 80% ใช้ Delphi เพื่อพัฒนาโปรแกรมฐานข้อมูลทุกวัน ขึ้นอยู่กับการควบคุมฐานข้อมูล VCL ของ Building Block รวมถึงการควบคุมที่ชัดเจนของฐานข้อมูลบุคคลที่สามที่มีประสิทธิภาพซึ่งจัดทำโดยบริษัทต่างๆ เช่น Dev ExPRess และ Woll2Woll ไม่ใช่เรื่องเกินจริงที่จะบอกว่าเราเพียงแค่ต้องตั้งค่าคุณสมบัติแล้วลากเมาส์ a ไม่กี่ครั้งเพื่อให้ฐานข้อมูลสมบูรณ์อย่างรวดเร็ว เนื่องจากฟังก์ชันฐานข้อมูลของ Delphi มีประสิทธิภาพมากเกินไป ผู้คนจำนวนมากจึงมองข้ามความจริงที่ว่า ActiveX สามารถจัดเตรียมการผูกฐานข้อมูลที่ยืดหยุ่นได้ น่าเสียดาย ไม่มีตัวควบคุม ActiveX ของบริษัทอื่นใดที่ Delphi จัดหาให้เองนั้นมีความชำนาญในฐานข้อมูล ซึ่งนำไปสู่ความเข้าใจผิดทางอ้อม ทำให้หลายคนเข้าใจผิดว่า Delphi ไม่รองรับการควบคุม ActiveX ด้วยข้อมูลที่ชัดเจน (รวมถึงฉันด้วยเมื่อนานมาแล้วด้วย) แน่นอนว่านี่เป็นมุมมองที่ผิด การใช้ตัวควบคุม ActiveX แบบล้างข้อมูลใน Delphi ในตัวอย่างต่อไปนี้ เราจะใช้ตัวควบคุม Microsoft Calendar 9.0 ที่ติดตั้งในระบบด้วย Office 2000 เพื่อการสาธิต ซึ่งเป็นตัวควบคุมแบบล้างข้อมูล เลือก Component | นำเข้า ActiveX Control เลือก Microsoft Calendar 9.0 (ดูรูปที่ 1.12 ด้านล่าง) เปลี่ยนชื่อคลาสจาก TCalendar เป็น TAXCalendar เพื่อหลีกเลี่ยงความขัดแย้งกับการควบคุมเดิมที่มีชื่อเดียวกันในระบบ จากนั้นคลิกปุ่มติดตั้งเพื่อติดตั้งสิ่งนี้ ควบคุม.
สร้างโปรแกรมใหม่และวางตัวควบคุม TAXCalendar บนแบบฟอร์ม ใส่ตัวควบคุมแหล่งข้อมูลและตารางอื่น ตั้งค่าชุดข้อมูลของ DataSource เป็น Table1 จากนั้นตั้งค่าคุณสมบัติ DataBaseName ของ Table1 เป็น DBDEMOS คุณสมบัติ TableName เป็น EMPLOYEE.DB และสุดท้ายตั้งค่าคุณสมบัติ Table1.Active เป็น True ต่อไปก็ถึงเวลาที่จะผูกฐานข้อมูล โปรดทราบว่า TAXCalendar ที่แนะนำมีคุณสมบัติสองประการคือ DataSource และ DataBindings ซึ่งแตกต่างจากตัวควบคุม ActiveX ทั่วไป เนื่องจากตัวช่วยสร้างการนำเข้า ActiveX จะกำหนดก่อนว่าเป็นตัวควบคุมที่เป็นมิตรกับฐานข้อมูลก่อนที่จะแนะนำหรือไม่ ตัวควบคุม ActiveX ถ้าเป็นเช่นนั้น ให้ใช้ TDBOleControl เป็นคลาสพื้นฐานเพื่อสืบทอด ถ้าไม่ใช่ ให้สืบทอดจาก TOleControl TDBOleControl ใช้คุณสมบัติ DataBindings และ DataSource ตั้งค่าคุณสมบัติ AXCalendar1.DataSource เป็น Datasource1 ในขณะนี้ ถ้าเราคลิกขวาที่ตัวควบคุม TAXCalendar บนแบบฟอร์ม เราจะพบรายการเมนู DataBindings... เพิ่มเติมในเมนูคลิกขวา (ดูรูปที่ 1.13 ด้านล่าง)
หลังจากคลิกรายการเมนู กล่องแก้ไขแอตทริบิวต์การผูกข้อมูลจะปรากฏขึ้น (ดูรูปที่ 1.14 ด้านล่าง) เลือก HireDate ในกล่องรายการ FieldName เลือก Value(12) ในกล่องรายการชื่อคุณสมบัติ (12 คือหมายเลข Dispid ของ Value) แล้วคลิกปุ่ม Bind เพื่อสร้างการเชื่อมโยงข้อมูลระหว่างเขตข้อมูลฐานข้อมูลและคุณสมบัติ Value
สุดท้าย วางตัวควบคุม DBGrid และ DBNavigator บนแบบฟอร์ม และตั้งค่า DataSource เป็น DataSource1 เมื่อคุณรันโปรแกรมและย้ายตำแหน่งข้อมูลปัจจุบัน คุณจะสังเกตได้ว่าวันที่ที่แสดงใน ActiveX จะเปลี่ยนตามไปด้วย ซึ่งสอดคล้องกับ Hiredate ในฐานข้อมูล ดังแสดงในรูปที่ 1.15:
การสร้างตัวควบคุม ActiveX แบบล้างข้อมูล แม้ว่าเราจะรู้อยู่แล้วว่า Delphi สามารถใช้ตัวควบคุม ActiveX แบบล้างข้อมูลได้ แต่คำถามใหม่ก็เกิดขึ้น Delphi สามารถสร้างตัวควบคุม ActiveX แบบล้างข้อมูลได้หรือไม่ เนื่องจาก Delphi ให้การแปลงและการสร้างตัวควบคุม ActiveX ในขั้นตอนเดียว ผู้คนจำนวนมากจึงหวังที่จะแปลงตัวควบคุมฐานข้อมูลที่มีประสิทธิภาพใน Delphi ให้เป็นตัวควบคุม ActiveX เพื่อให้พวกเขายังคงเพลิดเพลินกับประสบการณ์เช่นเดียวกับใน Delphi เมื่อพัฒนาโปรแกรมฐานข้อมูลในสภาพแวดล้อมการพัฒนาอื่น ๆ ที่รองรับ ActiveX . ความรู้สึกผ่อนคลายและมีความสุขเช่นเดียวกัน แต่อย่างที่ฉันได้กล่าวไว้ในส่วนแรก เนื่องจากกลไกภายในของการควบคุมล้างข้อมูลของ Delphi นั้นแตกต่างไปจากการควบคุมฐานข้อมูล ActiveX มากเกินไป Delphi จึงไม่สามารถเปลี่ยนการควบคุมฐานข้อมูลที่ทรงพลังได้โดยตรง หมายความว่าเราทำอะไรไม่ได้เลยเหรอ? ไม่แน่นอน ที่จริงแล้ว เมื่อใช้ตัวแก้ไขไลบรารีประเภท เราสามารถใช้ตัวควบคุม ActiveX พร้อมข้อมูลที่ชัดเจนได้อย่างง่ายดาย ให้เราลองใช้ตัวควบคุม TEdit และดูวิธีการทำ เลือกคำสั่งเมนู ใหม่ |. ActiveX Control เพื่อเริ่มตัวช่วยสร้างการแปลง ActiveX Control เลือกตัวควบคุม TEdit เป็นวัตถุการแปลง และสร้างเฟรมเวิร์ก EditX ActiveX ต่อไป เราจะแปลงคุณสมบัติข้อความของ TEdit เพื่อรองรับการเชื่อมโยงข้อมูล เลือก ดู | พิมพ์ไลบรารีเพื่อดูไลบรารีประเภทที่สร้างโดย Delphi เลือกคุณสมบัติข้อความ จากนั้นสลับไปที่หน้าคุณสมบัติแฟล็ก (ดูรูปที่ 1.16 ด้านล่าง)
โปรดทราบว่ามีหลายกล่องกาเครื่องหมายบนหน้าคุณสมบัติแฟล็ก สำหรับเรา เราสนใจเฉพาะตัวเลือกที่เกี่ยวข้องกับการเชื่อมโยงข้อมูลเท่านั้น ตัวเลือกเหล่านี้คือ Bindable, Display Bindable, Default Bindable, Immediate Bindable และ Request Edit หลังจากทำเครื่องหมายคุณสมบัติว่าสามารถผูกได้และผูกเข้ากับเขตข้อมูลฐานข้อมูล เมื่อผู้ใช้แก้ไขคุณสมบัติ ตัวควบคุมจะแจ้งให้ฐานข้อมูลทราบว่าค่ามีการเปลี่ยนแปลง และขอให้ฐานข้อมูลบันทึกสถานะการอัพเดต ฐานข้อมูลจะแจ้งให้ทราบตามลำดับ การอัปเดตบันทึกสำเร็จ ตัวเลือก Bindable บ่งชี้ว่าคุณสมบัติรองรับการผูกข้อมูล หากคุณสมบัติถูกทำเครื่องหมายว่าสามารถผูกได้ คุณสมบัติจะแจ้งเตือนคอนเทนเนอร์เมื่อค่ามีการเปลี่ยนแปลง คำขอแก้ไขบ่งชี้ว่าคุณสมบัติรองรับข้อความแจ้งเตือน OnRequestEdit ซึ่งอนุญาตให้ตัวควบคุมถามคอนเทนเนอร์ว่าผู้ใช้อนุญาตให้แก้ไขค่าคุณสมบัติหรือไม่ Display Bindable หมายความว่าคอนเทนเนอร์สามารถแสดงให้ผู้ใช้เห็นว่าคุณสมบัตินี้สามารถผูกได้ Default Bindable หมายความว่าเป็นแอตทริบิวต์ที่สามารถผูกได้เริ่มต้นเท่านั้น หากต้องการใช้งาน จะต้องทำเครื่องหมายแอตทริบิวต์ Bindable พร้อมกัน เมื่อทำเครื่องหมาย Immediate Bindable ไว้ การเปลี่ยนแปลงทั้งหมดจะได้รับแจ้ง และจำเป็นต้องตั้งค่าแฟล็กที่สามารถผูกได้และขอแก้ไข ต่อไป เราจะทำเครื่องหมายคุณสมบัติ Text ของตัวควบคุม EditX เป็น Bindable, Display Bindable, Default Bindable และ Request Edit จากนั้นคลิกปุ่มรีเฟรชเพื่อรีเฟรชไลบรารีประเภท และสุดท้ายเลือกเรียกใช้ | ลงทะเบียนเซิร์ฟเวอร์ ActiveX เพื่อลงทะเบียนตัวควบคุม ActiveX เมื่อคุณแนะนำตัวควบคุม EditX ActiveX ใหม่ คุณจะพบว่ามีการใช้ฟังก์ชันการเชื่อมโยงข้อมูลจริง ๆ ต่อไปนี้คือแผนภาพ 1.17 ของการทำงานของโปรแกรม EditX ที่ใช้การล้างข้อมูล (การใช้งานฟังก์ชันการล้างข้อมูล ActiveX ของ Delphi นั้นแท้จริงแล้ว) เรียบง่ายและเจ๋งใช่ไหม?