หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
Note
กลุ่มที่น่าสนใจของชุมชนได้ย้ายจาก Yammer ไปยัง Microsoft Viva Engage แล้ว หากต้องการเข้าร่วมชุมชน Viva Engage และเข้าร่วมในการสนทนาล่าสุด ให้กรอก แบบฟอร์ม คําขอการเข้าถึงการเงินและการดําเนินงาน Viva Engage Community และเลือกชุมชนที่คุณต้องการเข้าร่วม
บทความนี้อธิบายถึงไลบรารีของคลาสใน X++
คลาสมีสองชนิด: คลาสแอปพลิเคชันและคลาสของระบบ
- คลาสแอปพลิเคชัน – คลาสเหล่านี้จะถูกนําไปใช้ใน X++ ซึ่งมีอยู่ในโหนดคลาสโค้ด>ใน Application Explorer
- คลาสของระบบ – คลาสเหล่านี้บางครั้งเรียกว่าคลาสเคอร์เนล ซึ่งจะแสดงอยู่ภายใต้โหนด คลาสเอกสาร > ของระบบ ใน Application Explorer รหัสแหล่งที่มาสําหรับคลาสเหล่านี้ไม่พร้อมใช้งาน สําหรับรายการของคลาสระบบ ให้ดู API, คลาส และการอ้างอิงตาราง
โครงสร้างทั่วไปของคลาสแอปพลิเคชัน
ชนิดบล็อกโค้ดต่อไปนี้เป็นมาตรฐานสําหรับคลาสแอปพลิเคชัน:
- การประกาศคลาสและตัวแปร: การประกาศคลาสประกอบด้วยตัวปรับเปลี่ยน เช่น สาธารณะส่วนตัว และขยาย
- การประกาศตัวแปร: สิ่งเหล่านี้คือสมาชิกฟิลด์สําหรับออบเจ็กต์ที่สร้างขึ้นจากคลาส เมื่อคุณพิมพ์คําสําคัญ นี้ บนตัวแปรอินสแตนซ์ของคลาส IntelliSense สามารถแสดงรายการของสมาชิก
- เมธอดใหม่: วิธีนี้จะสร้างอินสแตนซ์ของคลาส สามารถเรียกคอนสตรักเตอร์ได้โดยใช้คําสําคัญ ใหม่ เท่านั้น คลาสที่ได้รับมาสามารถเรียกใช้เมธอดใหม่ของคอนสตรักเตอร์โดยการเรียกการอ้างอิงเมธอดซุปเปอร์ สําหรับข้อมูลเพิ่มเติม ให้ดู การสืบทอด X++
- เมธอด finalize: วิธีนี้จบอินสแตนซ์ของคลาส วิธีนี้เป็นวิธีการทําลาย อย่างไรก็ตามเป็นตัวทําลายตามการชุมนุมเท่านั้น ระบบไม่เรียกใช้เมธอด สุดท้าย โดยอัตโนมัติในระหว่างการเก็บขยะ
วิธีการเพิ่มเติมสําหรับคลาสมีชนิดต่อไปนี้:
- วิธีการอินสแตนซ์
- วิธีการแบบคงที่
- วิธีการหลัก
สามารถสร้างวิธีการขึ้นในสินค้าหลายชนิด นี่คือตัวอย่าง:
- ชั้นเรียน
- แผนที่
- Views
- ชุดข้อมูล
- ฟอร์ม
- คิวรี
การแทนที่คลาสแอพลิเคชันสําหรับคลาสของระบบ
คุณควรใช้ คลาสแอปพลิเคชันตัวแทน แทนคลาสระบบที่ขยาย
ใน Application Explorer ภายใต้ คลาสเอกสาร > ของระบบ เคอร์เนลหรือคลาสระบบหลายคลาสมีชื่อที่ขึ้นต้นด้วย x ตัวพิมพ์เล็ก คลาสเหล่านี้จะเรียกว่าคลาส x-system ตัวอย่างของคลาสระบบเหล่านี้คือ xApplication และ xVersionControl คลาสเหล่านี้บางส่วนได้รับการขยายโดยคลาสแอปพลิเคชัน ตัวอย่างเช่น คลาสแอปพลิเคชันจะขยายคลาสระบบ xApplication
คลาสที่สืบทอดมาจากคลาส x-system เรียกว่า คลาสแอพลิเคชันที่แทนที่ ใน Application Explorer ภายใต้โหนด คลาส ไอคอนถัดจากคลาสแอปพลิเคชันที่แทนที่แตกต่างจากไอคอนมาตรฐาน
คลาส x-system
คลาสแอปพลิเคชันที่แทนที่บางอย่างจะเชื่อมโยงกับตัวแปรส่วนกลางพิเศษที่แสดงอินสแตนซ์ของคลาส ตัวอย่างเช่น ตัวแปร appl อ้างอิงออบเจ็กต์ที่มีการสร้างอินสแตนซ์ล่วงหน้าจากคลาส แอปพลิเคชัน ประโยชน์ของตัวแปร appl คือว่า ระบบรักษาวัตถุตลอดขอบเขตของเซสชันของคุณ โค้ดของคุณจะมีประสิทธิภาพน้อยกว่าหากใช้ไวยากรณ์ Application() ใหม่ซ้ํา ๆ เพื่อรับอินสแตนซ์ของคลาส แอปพลิเคชัน คุณไม่ควรใช้คลาสระบบ xApplication ใช้คลาส แอพลิเคชัน ที่แทนที่ แอพลิเคชัน แทน
คุณสามารถอ้างอิงสมาชิกแบบคงที่ของคลาส แอปพลิเคชัน โดยใช้ไวยากรณ์มาตรฐานต่อไปนี้: Application:checkForNewBatchJobs() อย่างไรก็ตาม หากต้องการอ้างอิงสมาชิกอินสแตนซ์ของคลาส แอปพลิเคชัน คุณควรใช้ตัวแปร appl ของคลาสนั้นถ้ามีอยู่ รูปแบบนี้ใช้กับคลาส x ส่วนใหญ่ของระบบ เซสชันแทนที่คลาสแอปพลิเคชันเป็นข้อยกเว้นหนึ่งเนื่องจากไม่มีตัวแปรส่วนกลางพิเศษสําหรับเซสชัน
ตารางต่อไปนี้แสดงรายการคลาสระบบ x ที่มีคลาสแอปพลิเคชันตัวแทนที่สอดคล้องกัน ตัวแปรโกลบอลพิเศษจะแสดงสําหรับคลาสเหล่านั้นที่มี
| คลาสแอปพลิเคชัน | x-system class | ตัวแปรส่วนกลาง |
|---|---|---|
| Args | xArgs | ไม่สามารถใช้งานได้ |
| ใบคำขอเปิด | xApplication | appl |
| ClassFactory | xClassFactory | classFactory |
| บริษัท | xCompany | appl.company |
| ส่วนกลาง | xGlobal | ไม่สามารถใช้งานได้ |
| ข้อมูล | xInfo | Infolog |
| เมนูฟังก์ชัน | xMenuFunction | ไม่สามารถใช้งานได้ |
| เซสชัน | xSession | ไม่สามารถใช้งานได้ |
| VersionControl | xVersionControl | versionControl |
ตัวอย่างของคลาส x-system
ตัวอย่างต่อไปนี้แสดงไวยากรณ์สําหรับการใช้ตัวแปรพิเศษหลายตัวที่อ้างอิงอินสแตนซ์ของคลาสแอปพลิเคชันการแทนที่
TreeNode treeNode;
Args args;
FormRun formRun;
// appl variable
info(appl.buildNo());
// company variable
appl.company().reloadRights();
// infolog variable
treeNode = infolog.findNode("\\forms\\custTable");
info(treeNode.AOTgetProperty("Name"));
// Output is "CustTable".
// classFactory variable
args = new Args(formstr(Batch));
formRun = classFactory.formRunClass(args);
formRun.init();
formRun.run();
formRun.detach();
info("Method is ending. This is a message in the Infolog.");
// Output is "Method is ending. This is a message in the Infolog."
คลาสการประมวลผลชุดงาน
คุณใช้คลาสโดยใช้ระบบประมวลผลชุดงานและโดยการขยายคลาส RunBase และ RunBaseBatch เมื่อต้องการลบปุ่ม กิจวัตร ออกจากกล่องโต้ตอบ การประมวลผลชุดงาน ให้ใช้วิธี Args::p armEnum ขอแนะนําว่าคุณควรกําหนดคลาสที่จะรันเป็นชุดงานที่ผูกกับเซิร์ฟเวอร์ วิธีการของชุดงานที่ผูกกับเซิร์ฟเวอร์มีความปลอดภัยมากกว่าวิธีการชุดงานที่ไม่ได้ผูกกับเซิร์ฟเวอร์ด้วยเหตุผลต่อไปนี้:
- มีการเรียกใช้วิธีการ โดยใช้สิทธิ์ของผู้ใช้ที่ส่งวิธีการ
- เมธอด สามารถใช้เฉพาะ ข้อมูล เฉพาะและเมธอดระดับ สากล เพื่อโต้ตอบกับไคลเอ็นต์ที่กําลังประมวลผลอยู่ ข้อจํากัดนี้จํากัดการโต้ตอบกับไคลเอ็นต์
เปิดใช้งานคลาสเพื่อรันเป็นวิธีการชุดงานที่ผูกกับเซิร์ฟเวอร์
สร้างคลาสที่ขยายคลาส RunBaseBatch
แทนที่เมธอด RunBaseBatch.runsImpersonated เพื่อส่งกลับค่า true ดังที่แสดงในตัวอย่างต่อไปนี้
public boolean runsImpersonated() { return true; }ยืนยันว่าคลาสเรียกใช้เฉพาะ ข้อมูล และวิธีการคลาส ส่วนกลาง ต่อไปนี้เท่านั้น:
- เพิ่ม
- Info.copy
- Info.cut
- Info.import
- Info.export
- Info.line
- Info.num
- ส่วนกลาง::ข้อผิดพลาด
- ส่วนกลาง::ข้อมูล
- ส่วนกลาง::คําเตือน
เมธอด Info.line และ Info.num จะสืบทอดมาจากคลาส xInfo
การลบปุ่ม การเกิดซ้ํา ออกจากกล่องโต้ตอบการประมวลผลชุดงาน
เมื่อคุณใช้คลาสโดยใช้ระบบประมวลผลชุดงาน คุณสามารถลบปุ่ม การเกิดซ้ํา โดยการเรียกเมธอด Args.parmEnum และส่งผ่าน NoYes:ใช่ ค่าการแจงนับระบบ การแจงนับระบบ NoYes จะกําหนดว่าปุ่ม การเกิดซ้ํา ถูกลบออกจากกล่องโต้ตอบหรือไม่ ค่าเริ่มต้นคือ NoYes:No
ในตัวอย่างต่อไปนี้ มีการใช้งานคลาส InventTransferMultiShip BatchDialog::เมธอดหลักจะสร้างกล่องโต้ตอบการประมวลผลชุดงาน
static void noRecurrenceButton(Args _args)
{
Args a;
InventTransferMultiShip inventTransferMultiShip;
a = new Args();
inventTransferMultiShip = InventTransferMultiShip::construct();
a.caller(inventTransferMultiShip);
a.parmEnum(NoYes::Yes);
BatchDialog::main(a);
}
คลาสการจัดการรูปภาพ
ระดับชั้นระบบสองระดับช่วยให้คุณสามารถจัดการกราฟิกและไอคอนได้: รูปภาพและ Imagelist
- รูปภาพ – ระดับชั้นนี้ช่วยให้คุณโหลด บันทึก และจัดการรูปภาพแต่ละรายการได้ ตัวอย่างเช่น คุณสามารถจับภาพหน้าจอ และบันทึกเป็นรูปภาพ ครอบตัด หรือหมุนรูปภาพ หรือจัดการความลึกของสี
- Imagelist – คลาสนี้ช่วยให้คุณทํางานกับชุดของรูปภาพที่มีคุณสมบัติทั่วไป เช่น ขนาดและความโปร่งใส คุณสามารถดูรายการรูปภาพที่ใช้ในระดับแอปพลิเคชัน ImageListAppl ได้
แบบจําลองวัตถุคิวรี
แบบจําลองออบเจ็กต์คิวรีมีคลาสที่ใช้เพื่อกําหนดและเรียกใช้คิวรี วัตถุคิวรีถูกใช้เพื่อกําหนดแหล่งข้อมูลคิวรี เขตข้อมูลที่ส่งกลับ ช่วงของระเบียน และความสัมพันธ์กับแหล่งข้อมูลย่อย คลาสคิวรีจะมองเห็นได้มากขึ้นเมื่อคุณสร้างคิวรีแบบไดนามิกในโค้ด แต่ยังใช้อยู่เบื้องหลังเมื่อคุณสร้างคิวรีแบบคงที่ใน Application Explorer
ตารางต่อไปนี้อธิบายเกี่ยวกับคลาสในรูปแบบออบเจ็กต์คิวรี
| คลาสของระบบ | คำอธิบาย |
|---|---|
| QueryRun | คลาสนี้จะเรียกใช้คิวรีและรับข้อมูล |
| Query | คลาสนี้จะเก็บคุณสมบัติบางอย่างและมีแหล่งข้อมูลที่เกี่ยวข้องอย่างน้อยหนึ่งรายการ ซึ่งเป็นระดับบนสุดของข้อกําหนดคิวรี |
| QueryBuildDataSource | ระดับชั้นนี้จะกําหนดการเข้าถึงแหล่งข้อมูลเดียวในคิวรี ถ้ามีแหล่งข้อมูลมากกว่าหนึ่งรายการในระดับเดียวกันในคิวรี คําสั่ง SQL ที่แยกต่างหากจะถูกสร้างขึ้นและจะเรียกใช้ตามลําดับ ถ้าแหล่งข้อมูลหนึ่งเป็นแหล่งข้อมูลรองของแหล่งข้อมูลอื่น การรวมจะถูกสร้างขึ้นระหว่างแหล่งข้อมูลสองแหล่ง |
| QueryBuildFieldList | ระดับชั้นนี้จะกําหนดเขตข้อมูลที่ส่งกลับจากฐานข้อมูล ตามค่าเริ่มต้น รายการเขตข้อมูลเป็นแบบไดนามิก และเขตข้อมูลทั้งหมดจะถูกส่งกลับจากตารางแหล่งข้อมูล แผนที่ หรือมุมมอง แต่ละแหล่งข้อมูลมีออบเจ็กต์ QueryBuildFieldList เดียวเท่านั้น วัตถุนี้มีข้อมูลเกี่ยวกับเขตข้อมูลที่เลือกทั้งหมด คุณสามารถระบุฟังก์ชันการรวม เช่น SUM, COUNT และ AVG บนวัตถุรายการเขตข้อมูล |
| QueryBuildRange | คลาสนี้จะกําหนดชุดย่อยของเรกคอร์ดที่ส่งกลับโดยยึดตามเขตข้อมูลเดียว ช่วงจะถูกแปลเป็นส่วนคําสั่ง WHERE ในคําสั่ง SQL คิวรี ถ้ามีการใช้เขตข้อมูลมากกว่าหนึ่งรายการเพื่อจํากัดคิวรี (ส่วนคําสั่ง WHERE ) แหล่งข้อมูลจะประกอบด้วยช่วงมากกว่าหนึ่งช่วง |
| QueryBuildDynalink | ระดับชั้นนี้ประกอบด้วยข้อมูลเกี่ยวกับความสัมพันธ์ (ข้อจํากัด) ไปยังเรกคอร์ดภายนอก เมื่อเรียกใช้คิวรี ข้อมูลนี้จะถูกแปลงเป็นรายการเพิ่มเติมในคําสั่ง WHERE ของคําสั่ง SQL คิวรี คลาสนี้สามารถมีอยู่บนแหล่งข้อมูลหลักของคิวรีเท่านั้น ฟอร์มใช้ฟังก์ชันเมื่อมีการซิงโครไนซ์แหล่งข้อมูลสองแหล่ง แหล่งข้อมูลลูกจะประกอบด้วย DLL อย่างน้อยหนึ่งตัวไปยังแหล่งข้อมูลหลัก ใช้ฟังก์ชันแม้ว่าแหล่งข้อมูลทั้งสองจะอยู่ในฟอร์มที่แตกต่างกันสองฟอร์ม แต่ยังคงซิงโครไนซ์อยู่ |
| QueryBuildLink | คลาสนี้ระบุความสัมพันธ์ระหว่างแหล่งข้อมูลสองแหล่งในการรวม คลาสนี้สามารถมีอยู่บนแหล่งข้อมูลลูกได้เท่านั้น |
คุณยังสามารถใช้ SysDa API เพื่อคิวรีข้อมูลได้
ภาพรวมของคลาสของระบบ
แหล่งข้อมูลสําหรับคลาสของระบบไม่พร้อมใช้งาน คลาสระบบสามารถมีลักษณะดังต่อไปนี้:
- วิธีการแบบคงที่ (หรือวิธีการของคลาส)
- วิธีการแบบไดนามิก
- คุณสมบัติ – คุณสมบัติเหล่านี้คือฟังก์ชันสมาชิกที่ใช้เพื่อตั้งค่าคุณสมบัติ ตัวอย่างคือ LeftMargin
คุณไม่สามารถแทนที่วิธีการคลาสระบบได้ ไม่ใช่ความตั้งใจของเราที่คุณจะใช้คลาสระบบเพื่อออกแบบออบเจ็กต์แอปพลิเคชันของคุณตั้งแต่เริ่มต้น ใช้เพื่อขยายหรือปรับเปลี่ยนฟังก์ชันการทํางานเริ่มต้นใน Application Explorer แทน ตัวอย่างเช่น คุณสามารถเพิ่มข้อมูลเพิ่มเติมแบบไดนามิกไปยังรายงานที่มีอยู่ได้ อีกวิธีหนึ่งคือ คุณสามารถเปลี่ยนตัวเลือกที่พร้อมใช้งานบนหน้า ตามการเลือกของผู้ใช้ในหน้าก่อนหน้า
คลาสคอลเลกชัน
คลาสคอลเลกชันช่วยให้คุณสร้างรายการ, ชุด, โครงสร้าง, แผนที่ และอาร์เรย์
คลาสออบเจ็กต์ของแอพลิเคชัน
คลาสระบบเหล่านี้จะเก็บฟังก์ชันที่เปิดใช้งานเมื่อใดก็ตามที่คุณใช้ Application Explorer เพื่อสร้างแอปพลิเคชันของคุณ ตัวอย่างเช่น ระบบใช้คลาส FormDesign เมื่อคุณกําหนดเค้าโครงของฟอร์มของคุณในโหนด การออกแบบ ใน Application Explorer คลาสเหล่านี้ยังช่วยให้คุณสามารถสร้างและแก้ไขแอพลิเคชันออปเจ็กต์ได้ด้วย
คลาสการรวม
โดยทั่วไปการรวมกับสภาพแวดล้อมจะดําเนินการตามคลาส นี่คือตัวอย่างบางส่วนของคลาสในหมวดหมู่นี้:
- COM – การเรียกใช้วิธีการบนวัตถุ COM
- DLL – การเรียกใช้ฟังก์ชัน Microsoft Windows DLL
- IO – อ่านและเขียนไฟล์ภายนอก
- ODBCConnection – อินเทอร์เฟซการเชื่อมต่อฐานข้อมูลแบบเปิด (ODBC) กับฐานข้อมูลต่างประเทศ