คำอธิบายโดยละเอียดของคลาส Tapplication ใน Delphi TApplication คือประเภทของแอปพลิเคชัน Delphi คลาสนี้สืบทอดมาจาก TComponent และมีการประกาศในแบบฟอร์มหน่วย และมีวัตถุสาธารณะ ใบสมัคร อยู่ในแบบฟอร์ม วิธีการและคุณสมบัติประกอบด้วยการดำเนินการและคุณสมบัติพื้นฐานที่กำหนดไว้ เช่น การสร้าง การเรียกใช้ และการทำลายแอปพลิเคชันในระบบปฏิบัติการ Windows ซึ่งทำให้อินเทอร์เฟซระหว่างผู้ใช้กับสภาพแวดล้อม Windows ง่ายขึ้นเมื่อเขียนแอปพลิเคชัน Windows ใน Delphi TApplication สรุปฟังก์ชันสี่อย่างต่อไปนี้: 1. การประมวลผลข้อความของ Windows 2. การเร่งความเร็วเมนูและการประมวลผลแป้นพิมพ์ 3. การจัดการข้อยกเว้น 4. ความช่วยเหลือออนไลน์ตามบริบท ข้อมูลต่อไปนี้จะแนะนำคุณสมบัติ วิธีการ และเหตุการณ์ที่ใช้กันทั่วไปใน TApplication 1. คุณสมบัติ 1. 1 แอ็ตทริบิวต์ แอ็ตทริบิวต์ แอ็กทีฟ แอ็กทีฟ บ่งชี้ว่าแอปพลิเคชันแอ็คทีฟและมีโฟกัสหรือไม่ คำจำกัดความมีดังนี้: PRperty Active: Boolean Active เป็นคุณสมบัติแบบอ่านอย่างเดียว ใช้งานอยู่จะเป็น True เมื่อแอปพลิเคชันทำงานอยู่ หากเป็นอย่างอื่นจะเป็นเท็จ ตัวสร้างของ TApplica-tion ตั้งค่า Active เป็น True หากหน้าต่างหรือแอพพลิเคชั่นมีโฟกัส แสดงว่าแอพพลิเคชั่นนั้นทำงานอยู่ แอปพลิเคชันปัจจุบันจะไม่ทำงานเมื่อหน้าต่างของแอปพลิเคชันอื่นเปิดใช้งาน เมื่อปิดแอปพลิเคชัน destructor ของ TApplication จะตั้งค่า Active เป็น False ในแอปพลิเคชัน คุณสามารถใช้ตัวจับเวลา (TTimer) เพื่อตรวจสอบค่าของแอ็ตทริบิวต์ Active เพื่อตรวจสอบว่าแอปพลิเคชันปัจจุบันแอ็คทีฟอยู่เพื่อให้สามารถประมวลผลได้อย่างเหมาะสมหรือไม่ การดำเนินการที่ระบุยังสามารถกำหนดได้ในเหตุการณ์ OnActive และเหตุการณ์ OnDeactive 1.2 Property DialogHandle คุณสมบัติ DialogHandle จัดเตรียมกลไกสำหรับแอพพลิเคชัน Delphi เพื่อใช้กล่องโต้ตอบที่ไม่ใช่ Delphi คำจำกัดความมีดังนี้: คุณสมบัติ DialogHandle: HWnd; เมื่อใช้ฟังก์ชัน API CreateDialog เพื่อสร้างกล่องโต้ตอบที่ไม่ใช่โมดอล คุณต้องใช้ DialogHandle และคุณต้องดูข้อความในลูปข้อความของแอปพลิเคชันเพื่อดำเนินการที่เกี่ยวข้อง ตัวอย่างเช่น เมื่อกล่องโต้ตอบแบบไม่มีโหมดได้รับข้อความเปิดใช้งาน (WM_NCACTIVATE) คุณสามารถกำหนดหมายเลขอ้างอิงให้กับ DialogHandle ได้ และเมื่อกล่องโต้ตอบได้รับข้อความการปิดใช้งาน DialogHandle จะถูกตั้งค่าเป็น 0 1.3 Attribute ExeName Attribute ExeName ประกอบด้วยชื่อไฟล์แอปพลิเคชันที่ปฏิบัติการได้และข้อมูลพาธ มีการกำหนดไว้ดังนี้: คุณสมบัติ ExeName: string; ใช้ ExeName เพื่อรับชื่อไฟล์ของไฟล์ปฏิบัติการของแอปพลิเคชัน นี่เป็นคุณลักษณะที่มีประโยชน์มาก ตัวอย่างเช่น เมื่อรันแอปพลิเคชัน f:/media/myapp.exe บนแผ่นซีดี คุณอาจต้องเข้าถึงไฟล์ในไดเร็กทอรี f:/media/data/ หรือกำหนดอักษรชื่อไดรฟ์ที่เป็นที่ตั้งของแอปพลิเคชัน ในขณะนี้ คุณสามารถใช้ฟังก์ชัน ExtractFilePath และ ExtractFileName ที่ได้รับจาก Delphi เพื่อแยกวิเคราะห์แอตทริบิวต์ ExeName เพื่อรับข้อมูลที่จำเป็น 1.4 ตัวจัดการคุณลักษณะ ตัวจัดการคุณลักษณะให้การเข้าถึงตัวจัดการของหน้าต่างหลักของแอปพลิเคชัน คำจำกัดความมีดังนี้: คุณสมบัติ Handle: HWND คุณสมบัติ Handle ต้องใช้เมื่อเรียกใช้ฟังก์ชัน Windows API ที่ต้องใช้ตัวจัดการหน้าต่างหลัก ตัวอย่างเช่น ไดนามิกลิงก์ไลบรารี (DLL) ในแอปพลิเคชันอาจจำเป็นต้องมีตัวจัดการหน้าต่างหลักเพื่อให้สามารถป็อปอัพและถูกนำไปที่แถวหน้าได้ ใช้ Application.Handle เพื่อสร้างหลายหน้าต่างของแอปพลิเคชัน เพื่อให้สามารถย่อ คืนค่า เปิดหรือปิดใช้งานหน้าต่างเหล่านี้ในแอปพลิเคชันได้ หมายเหตุ: เมื่อเขียนไลบรารีลิงก์แบบไดนามิกที่ใช้ฟอร์ม VCL ควรกำหนดหมายเลขอ้างอิงของหน้าต่างหลักในโปรแกรมหลักที่รันอยู่ให้กับคุณสมบัติ Application.Handle ของไลบรารีลิงก์แบบไดนามิก สิ่งนี้ทำให้รูปแบบของไลบรารีลิงก์แบบไดนามิกกลายเป็นส่วนหนึ่งของแอปพลิเคชันหลัก สิ่งสำคัญคือต้องชี้ให้เห็นว่าคุณไม่ควรกำหนดค่าให้กับ Application.Handle ในแอปพลิเคชัน EXE 1.5 Attribute HelpFile คุณลักษณะ HelpFile ระบุชื่อไฟล์ที่ใช้โดยแอปพลิเคชันเพื่อแสดงเนื้อหาวิธีใช้ คำจำกัดความมีดังนี้ คุณสมบัติ HelpFile: string; การใช้ HelpFile มีไว้สำหรับแอปพลิเคชันที่จะมีไฟล์วิธีใช้โดยใช้ระบบวิธีใช้ Windows มาตรฐาน Windows จะแสดงไฟล์วิธีใช้ที่ระบุโดยคุณสมบัติ HelpFile เพื่อให้แอปพลิเคชันของคุณบรรลุเป้าหมายนี้ คุณต้องให้คุณสมบัติ HelpFile เป็นค่าของชื่อไฟล์ในขณะรันไทม์ หรือระบุไฟล์วิธีใช้ในหน้าแอปพลิเคชันของกล่องโต้ตอบโครงการ|ตัวเลือกในขณะออกแบบ ตามค่าเริ่มต้น HelpFile จะเป็นสตริงว่าง ('') และวิธีการช่วยเหลือของแอปพลิเคชันจะละเว้นความพยายามทั้งหมดที่จะแสดงความช่วยเหลือ หาก HelpFile มีเนื้อหาใดๆ วิธีใช้หัวข้อวิธีใช้จะแสดงระบบวิธีใช้ของ Windows เพื่อให้ความช่วยเหลือแบบออนไลน์ตามชื่อไฟล์ หมายเหตุ: หากมีการระบุไฟล์วิธีใช้ของหน้าต่างที่ใช้งานอยู่ ไฟล์นั้นจะถูกแสดงตามการตั้งค่าไฟล์วิธีใช้ของแอปพลิเคชัน 1.6 Attribute Hint Attribute Hint ระบุสตริงข้อความที่ปรากฏในกล่อง Help Hint คำจำกัดความมีดังนี้: คุณสมบัติ Hint: string; คุณสมบัติ TApplication.Hint คือค่า Hint ของตัวควบคุมหรือรายการเมนูที่เมาส์เคลื่อนที่ผ่าน แอ็ตทริบิวต์นี้ยังสามารถกำหนดค่าสตริงที่ให้การดำเนินการ ข้อผิดพลาด หรือข้อมูลอื่น ๆ แก่ผู้ใช้ได้ ดังนั้น การใช้คุณสมบัติ Hint ยังสามารถ: ถ่ายโอนข้อมูลพร้อมท์จากตัวควบคุมไปยังพื้นที่แสดงผลอื่น เช่น แสดงพร้อมท์ในแถบสถานะผ่านตัวจัดการเหตุการณ์ OnHint ในขณะนี้ คุณลักษณะ Hint จะถูกอ่าน อธิบายสถานะของแอปพลิเคชันโดยย่อเมื่อกำลังดำเนินการ ในขณะนี้ คุณลักษณะ Hint ได้ถูกตั้งค่าแล้ว พร้อมท์ความช่วยเหลือปรากฏขึ้นเมื่อมีเหตุการณ์ OnHint เกิดขึ้น ดังนั้น แม้ว่าคุณสมบัติ Hint ของ TApplication จะได้รับการกำหนดชื่อเรื่องของแถบสถานะ ตัวอย่างเช่น ชื่อเรื่องของตัวควบคุมแถบสถานะจะแสดงค่าสตริงปัจจุบันของคุณสมบัติ Hint ก็ควรจะนำมาประกอบกับเหตุการณ์ OnHint สตริงคำแนะนำประกอบด้วยสองส่วน: คำใบ้สั้นและคำใบ้ยาว พรอมต์แบบสั้นใช้สำหรับพรอมต์ป๊อปอัปที่กระชับ พรอมต์แบบยาวและพรอมต์แบบสั้นจะถูกคั่นด้วยแถบแนวตั้ง "|" และใช้เพื่อแสดงข้อมูลพรอมต์โดยละเอียดเพิ่มเติมในแถบสถานะ คุณสามารถใช้ฟังก์ชันสตริง GetShortHint และ GetLongHint ที่ให้ไว้ในการควบคุมหน่วยเพื่อรับคำแนะนำสั้น ๆ และคำแนะนำแบบยาวจากแอตทริบิวต์ Hint หมายเหตุ: เมื่อแอปพลิเคชันให้ข้อมูลแก่ผู้ใช้เกี่ยวกับการเกิดขึ้นของเหตุการณ์โดยการตั้งค่าคุณสมบัติ Hint ควรจำไว้ว่าตามค่าเริ่มต้น เมื่อเลื่อนเมาส์ไปเหนือตัวควบคุม สตริง Hint จะถูกรีเซ็ตเป็นค่าของคุณสมบัติ Hint ของการควบคุม 1.7 คุณสมบัติ HintHidePause คุณสมบัติ HintHidePause ระบุช่วงเวลาก่อนที่พร้อมท์ความช่วยเหลือจะถูกซ่อนก่อนที่เมาส์จะถูกย้ายออกจากการควบคุมหรือรายการเมนู มีการกำหนดดังนี้: คุณสมบัติ HintHidePause: Integer; ใช้ HintHidePause เพื่อระบุเวลารอเป็นมิลลิวินาที คุณสมบัตินี้ถูกตั้งค่าเป็น 2500 มิลลิวินาที (2.5 วินาที) ในตัวสร้างของ TApplication เคล็ดลับวิธีใช้สำหรับตัวควบคุมหรือรายการเมนูระบุไว้ในคุณสมบัติ Hint หมายเหตุ: ตามค่าเริ่มต้น ค่าของ HintHidePause ควรถูกกำหนดไว้ล่วงหน้าเป็น 3 ถึง 5 เท่าของค่าของแอตทริบิวต์ HintPause 1.8 คุณสมบัติ MainForm คุณสมบัติ MainForm ระบุรูปแบบหลักของแอปพลิเคชันโดยไม่ซ้ำกัน มันถูกกำหนดไว้ดังนี้: คุณสมบัติ MainForm: TForm; แบบฟอร์มที่ระบุโดยคุณสมบัติ MainForm ไม่จำเป็นต้องเหมือนกับหน้าต่างหลักของแอปพลิเคชัน ค่าของคุณสมบัติ MainForm จะต้องเป็นรูปแบบแรกในทุกรูปแบบที่สร้างขึ้นโดยเมธอด CreateForm แต่แบบฟอร์มอาจไม่ใช่หน้าต่างหลักของแอปพลิเคชัน เมื่อสร้างโครงการใหม่ ค่าแอตทริบิวต์ MainForm จะถูกตั้งค่าเป็น Form1 โดยอัตโนมัติ ในขณะออกแบบ คุณสามารถระบุหนึ่งในหลายฟอร์มเป็น MainForm ผ่านหน้าแบบฟอร์มในกล่องโต้ตอบโครงการ|ตัวเลือก ไม่สามารถแก้ไขคุณสมบัติ MainForm ขณะรันไทม์ได้เนื่องจากคุณสมบัติเป็นแบบอ่านอย่างเดียว แบบฟอร์มหลักคือแบบฟอร์มแรกที่สร้างขึ้นโดยธีมแอปพลิเคชัน แอปพลิเคชันจะสิ้นสุดลงเมื่อปิดแบบฟอร์มหลัก ในแอปพลิเคชันคุณสามารถเรียกใช้เมธอด Application.MainForm.Close เพื่อยุติแอปพลิเคชัน คุณสามารถรับค่าคุณสมบัติต่างๆ เช่น Application.MainForm.Top และ Application.MainForm.Left เพื่อกำหนดตำแหน่งและขนาดของแอปพลิเคชันปัจจุบัน หน้าต่างที่ใช้งานอยู่ 1.9 คุณสมบัติ ShowMainForm คุณสมบัติ ShowMainForm กำหนดว่าจะแสดงแบบฟอร์มหลักเมื่อแอปพลิเคชันเริ่มทำงานหรือไม่ มีการกำหนดไว้ดังนี้: คุณสมบัติ ShowMainForm: Boolean แอปพลิเคชันใช้คุณสมบัติ ShowMainForm เพื่อควบคุมว่าจะแสดงแบบฟอร์มหลักหรือไม่และเมื่อใด ตัวสร้างของ TApplication ตั้งค่า ShowMainForm เป็น True ตามค่าเริ่มต้น แบบฟอร์มหลักจะแสดงตามที่ระบุไว้ในคุณสมบัติ MainForm หากคุณต้องการซ่อนฟอร์มหลักเมื่อแอปพลิเคชันเริ่มทำงาน คุณควรตั้งค่า ShowMainForm เป็น False ก่อนที่จะเรียก Application.Run ในไฟล์โครงการหลัก และตรวจสอบให้แน่ใจว่าค่าคุณสมบัติ Visible ของฟอร์มหลักเป็น False สิ่งนี้มีประโยชน์ในการใช้งานเซิร์ฟเวอร์อัตโนมัติ OLE หลายอย่าง เช่น การซ่อนรูปแบบหลักของโปรแกรมเซิร์ฟเวอร์เมื่อเริ่มบริการอัตโนมัติ นอกจากนี้ หากคุณต้องการแสดงภาพแฟลช (Flash) เมื่อแอปพลิเคชันเริ่มทำงาน และเตรียมการบางอย่างสำหรับสภาพแวดล้อมของแอปพลิเคชัน และยังจำเป็นต้องปิดใช้งานการแสดงแบบฟอร์มหลัก ก็สามารถทำได้โดยใช้แอตทริบิวต์ ShowMainForm ตัวอย่างเช่น เมื่อ Delphi เริ่มต้น การแสดงแบบฟอร์มหลักจะถูกปิดใช้งาน 1.10 Attribute Terminated แอ็ตทริบิวต์ Terminated จะรายงานว่าโปรแกรมได้รับข้อความ Windows WM_QUIT ที่ยุติโปรแกรมหรือไม่ คำจำกัดความมีดังนี้: คุณสมบัติสิ้นสุด: บูลีนสิ้นสุดเป็นคุณสมบัติแบบอ่านอย่างเดียว คุณสมบัตินี้ใช้เป็นหลักเมื่อเรียกใช้เมธอด ProcessMessages เพื่อให้แอปพลิเคชันไม่ต้องหยุดการพยายามประมวลผลข้อความ Windows เมื่อวิธีการ ProcessMessages ได้รับข้อความ WM_QUIT การสิ้นสุดจะถูกตั้งค่าเป็น True แอปพลิเคชัน Delphi มักจะได้รับข้อความ WM_QUIT เนื่องจากฟอร์มหลักหรือแอปพลิเคชันถูกปิด หรือเนื่องจากมีการเรียกเมธอด Terminate เมื่อแอปพลิเคชันดำเนินการที่มีความเข้มข้นสูงซึ่งใช้ทรัพยากรระบบจำนวนมาก ควรเรียกใช้เมธอด Application-on.ProcessMessages เป็นระยะๆ และควรตรวจสอบคุณสมบัติ Application.Terminated เพื่อพิจารณาว่าจำเป็นต้องยุติการดำเนินการเพื่อยุติแอปพลิเคชันหรือไม่ . 1.11 คุณสมบัติ UpdateFormatSettings คุณสมบัติ UpdateFormatSettings ระบุว่าแอปพลิเคชันจะอัปเดตการตั้งค่ารูปแบบโดยอัตโนมัติเมื่อผู้ใช้เปลี่ยนการกำหนดค่าระบบหรือไม่ กำหนดดังนี้: คุณสมบัติ UpdateFormatSettings: Boolean การใช้แอปพลิเคชันคุณสมบัติ UpdateFormatSettings สามารถควบคุมการอัปเดตการตั้งค่ารูปแบบอัตโนมัติได้ ตัวสร้างของ TApplication ตั้งค่าคุณสมบัตินี้เป็น True คุณสมบัติ UpdateFormatSett-ings จะถูกตรวจสอบเมื่อแอปพลิเคชันได้รับข้อความ WM_WININICHANGE ขอแนะนำให้ใช้การตั้งค่ารูปแบบเริ่มต้นซึ่งเป็นการตั้งค่า Windows ในเครื่อง คุณสามารถตั้งค่า UpdateFormatSe-ttings เป็น False เพื่อหลีกเลี่ยงการเปลี่ยนการตั้งค่ารูปแบบระหว่างการทำงานของแอปพลิเคชัน Delphi 1.12 คุณลักษณะ UpdateMetricSettings คุณลักษณะ UpdateMetricSettings ระบุว่าจะอัปเดตการตั้งค่าที่เกี่ยวข้อง เช่น แบบอักษรของหน้าต่างแจ้งและชื่อไอคอนหรือไม่ คำจำกัดความมีดังนี้: คุณสมบัติ UpdateMetricSettings: Boolean คุณสมบัติ UpdateFormatSettings บ่งชี้ว่าการเปลี่ยนแปลงในการตั้งค่า เช่น แบบอักษรของหน้าต่างพร้อมท์และชื่อไอคอนในระบบจะสะท้อนให้เห็นในการเปลี่ยนแปลงการตั้งค่าที่เกี่ยวข้องในแอปพลิเคชันหรือไม่ ตัวสร้างของ TApplication จะตั้งค่าเริ่มต้นของ UpdateMetricSettings เป็น True 2. วิธีที่ 2.1 วิธีการ BringToFront วิธี BringToFront ตั้งค่าหน้าต่างที่ใช้งานล่าสุดในแอปพลิเคชันไว้ที่ด้านหน้าของหน้าต่างทั้งหมดบนเดสก์ท็อป คำจำกัดความมีดังนี้: ขั้นตอน BringToFront ใช้วิธี BringToFront เพื่อค้นหาหน้าต่างที่ใช้งานล่าสุดที่เป็นของแบบฟอร์มหลักและนำไปไว้ด้านหน้า เมธอด BringToFront ยังสามารถทดสอบและดูว่าหน้าต่างมองเห็นได้ (มองเห็นได้) และถูกต้อง (เปิดใช้งาน) ก่อนที่จะกลายเป็นหน้าต่างด้านหน้าสุดหรือไม่ ตัวอย่างเช่น เมื่อแอปพลิเคชันได้รับเมล อาจจำเป็นต้องเปิดใช้งานตัวจัดการพิเศษและนำไปไว้ที่แถวหน้าของเดสก์ท็อป Windows ในขณะนี้ คุณสามารถเรียกใช้เมธอด Application.BringToFront เพื่อให้บรรลุเป้าหมายนี้ได้ 2.2 วิธี CreateForm วิธี CreateForm ใช้ในการสร้างแบบฟอร์มใหม่ (แบบฟอร์ม) มีการกำหนดดังนี้: ขั้นตอน CreateForm(FormClass: TFormClass; var Reference); แอปพลิเคชัน Delphi จะเรียกใช้เมธอด CreateForm เสมอ ดังนั้นจึงแทบไม่จำเป็นที่โปรแกรมเมอร์จะเรียกใช้เมธอด CreateForm โดยตรง โครงการ Delphi ทั่วไปจะมีการเรียกเมธอด CreateForm อย่างน้อยหนึ่งครั้งในส่วนโค้ดหลักของโครงการ และควบคุมการสร้างแบบฟอร์มโดยอัตโนมัติเมื่อใช้ตัวออกแบบฟอร์ม คุณยังสามารถเรียกใช้เมธอด CreateForm ตอนรันไทม์เพื่อสร้างแบบฟอร์มแบบไดนามิกได้ เมธอด CreateForm สร้างแบบฟอร์มที่ระบุใหม่โดยยึดตามพารามิเตอร์ FormClass และกำหนดแบบฟอร์มให้กับพารามิเตอร์ตัวแปร Reference เจ้าของแบบฟอร์มที่สร้างขึ้นใหม่คือแอปพลิเคชันออบเจ็กต์ แอปพลิเคชันจะใช้ค่าเริ่มต้นเป็นแบบฟอร์มแรกที่สร้างขึ้นโดยการเรียก CreateForm เป็นแบบฟอร์มหลักของโครงการ 2.3 วิธีการ HandleException วิธีการ HandleException ให้การจัดการเริ่มต้นสำหรับข้อยกเว้นของแอพลิเคชัน มีการกำหนดไว้ดังนี้: ขั้นตอน HandleException (ผู้ส่ง: TObject); วิธีการ HandleException มีประโยชน์สำหรับผู้เขียนส่วนประกอบเฉพาะเนื่องจากสามารถสร้างเหตุการณ์ที่ไม่ต้องตอบสนองต่อข้อความ Windows คุณสามารถใช้ตัวจัดการเหตุการณ์ OnException ในแอปพลิเคชันของคุณเพื่อควบคุมการดำเนินการข้อยกเว้นอื่นๆ ในโค้ดที่กำหนดเองได้ ในรหัสแอปพลิเคชัน ถ้าข้อยกเว้นข้ามบล็อกลองทั้งหมด แอปพลิเคชันจะเรียกเมธอด HandleE-xception โดยอัตโนมัติ และจะแสดงกล่องโต้ตอบที่ระบุว่ามีข้อผิดพลาดเกิดขึ้น เว้นแต่ว่าวัตถุข้อยกเว้นคือ EAbort แล้ว Han-dleException จะเรียกตัวจัดการ OnException (ถ้ามี) มิฉะนั้น ShowException จะถูกเรียกให้แสดงกล่องโต้ตอบพร้อมท์ข้อผิดพลาด 2.4 วิธีการ UnhookMainWindow วิธี UnhookMainWindow ใช้เพื่อปล่อยโปรแกรมที่ค้างอยู่บนฟอร์มหลักโดยวิธี HookMainWindow คำจำกัดความมีดังนี้: พิมพ์ TWindowHook = function(var Message: TMessage): บูลีนของวัตถุ; ขั้นตอน UnhookMainWindow (Hook: TWindowHook); ใช้ UnhookMainWindow เพื่อปล่อยหน้าต่าง hook ระบุขั้นตอนของกล่องโต้ตอบในพารามิเตอร์ Hook ประเภท TwindowHook เป็นพารามิเตอร์สำหรับการเรียกเมธอด HookMainWindow พารามิเตอร์นี้เป็นตัวชี้วิธีการสำหรับการเรียกโปรแกรมโต้ตอบในกล่องโต้ตอบที่ไม่ใช่ Delphi โปรแกรมโต้ตอบจะคล้ายกับโปรแกรมหน้าต่างตรงที่ประมวลผลข้อความสำหรับกล่องโต้ตอบ แต่ไวยากรณ์แตกต่างออกไป 3. เหตุการณ์ 3.1 เหตุการณ์ OnActivate เหตุการณ์ OnActivate เกิดขึ้นเมื่อแอปพลิเคชันเริ่มทำงาน คำจำกัดความมีดังนี้: พิมพ์ TNotifyEvent = ขั้นตอน (ผู้ส่ง: TObject) ของวัตถุ คุณสมบัติ OnActivate: TNotifyEvent; ใช้เหตุการณ์ OnActive เพื่อเขียนตัวจัดการเหตุการณ์เพื่อระบุการประมวลผลพิเศษเมื่อแอปพลิเคชันเริ่มทำงาน แอปพลิเคชัน Windows จะเปิดใช้งานเมื่อเริ่มทำงานครั้งแรกหรือเมื่อโฟกัสถูกถ่ายโอนกลับไปยังแอปพลิเคชันปัจจุบันจากแอปพลิเคชัน Windows อื่น 3.2 เหตุการณ์ OnDeactivate เหตุการณ์ OnDeactivate เกิดขึ้นเมื่อแอปพลิเคชันไม่ทำงาน มีการกำหนดไว้ดังนี้: พิมพ์ TNotifyEvent = Procedure (ผู้ส่ง: TObject) ของวัตถุ คุณสมบัติ OnDeactivate: TNotifyEvent สามารถทริกเกอร์เหตุการณ์ OnDeactive ได้ทันทีก่อนที่แอปพลิเคชันจะไม่ทำงาน ดังนั้นจึงดำเนินการประมวลผลพิเศษที่ระบุในตัวจัดการเหตุการณ์ให้เสร็จสิ้น เหตุการณ์ OnDeactive ของแอปพลิเคชันปัจจุบันเกิดขึ้นเมื่อผู้ใช้เปลี่ยนจากแอปพลิเคชันปัจจุบันไปยังแอปพลิเคชันอื่น 3.3 เหตุการณ์ OnException เหตุการณ์ OnException เกิดขึ้นเมื่อมีข้อยกเว้นแบบไม่มีการจัดการเกิดขึ้นในแอปพลิเคชัน มีการกำหนดไว้ดังนี้: พิมพ์ TExceptionEvent = ขั้นตอน (ผู้ส่ง: TObject; E: ข้อยกเว้น) ของวัตถุ คุณสมบัติ OnException: TExceptionEvent; คุณสามารถใช้เหตุการณ์ OnException เพื่อเปลี่ยนการกระทำเริ่มต้นเมื่อมีข้อยกเว้นโดยไม่มีตัวจัดการเกิดขึ้นในแอปพลิเคชัน ในวิธีการTApplication.HandleExceptionตัวจัดการเหตุการณ์OnExceptionจะถูกเรียกโดยอัตโนมัติ เหตุการณ์ OnException ใช้เพื่อจัดการกับข้อยกเว้นที่เกิดขึ้นระหว่างการประมวลผลข้อความเท่านั้น ข้อยกเว้นที่เกิดขึ้นก่อนหรือหลังการดำเนินการ Application.Run จะไม่ทำให้เกิดเหตุการณ์ OnException เกิดขึ้น ถ้าข้อยกเว้นถูกละเว้นในบล็อก try ของรหัสแอปพลิเคชัน แอปพลิเคชันจะเรียกเมธอด HandleException โดยอัตโนมัติ ยกเว้นกรณีที่วัตถุข้อยกเว้นเป็น EAbort, HandleException จะเรียกหมายเลขอ้างอิง OnException (ถ้ามี) มิฉะนั้น ShowException จะถูกเรียกเพื่อแสดงกล่องโต้ตอบพร้อมท์ข้อผิดพลาด ชนิด TExceptionEvent คือชนิดของเหตุการณ์ OnException ซึ่งชี้ไปที่วิธีการจัดการข้อยกเว้นในแอปพลิเคชัน พารามิเตอร์ Sender คืออ็อบเจ็กต์ที่ส่งข้อยกเว้น และพารามิเตอร์ E คืออ็อบเจ็กต์ข้อยกเว้น 3.4 เหตุการณ์ OnHelp เหตุการณ์ OnHelp เกิดขึ้นเมื่อแอปพลิเคชันได้รับการร้องขอความช่วยเหลือ คำจำกัดความมีดังนี้: พิมพ์ THelpEvent = function (คำสั่ง: Word; ข้อมูล: Longint; var CallHelp: Boolean): บูลีนของวัตถุ คุณสมบัติ OnHelp: THelpEvent; ใช้ OnHelp เพื่อเขียนตัวจัดการเหตุการณ์เพื่อให้การประมวลผลพิเศษเสร็จสมบูรณ์เมื่อมีการร้องขอ เพื่อขอความช่วยเหลือ วิธีการ HelpContext และวิธี HelpJump เพิ่มเหตุการณ์ OnHelp โดยอัตโนมัติ ตั้งค่า CallHelp เป็น True เพื่อเปิดใช้งาน VCL เพื่อเรียก WinHelp หลังจากเหตุการณ์เกิดขึ้น ตั้งค่า CallHelp เป็น False เพื่อป้องกันไม่ให้ VCL เรียก WinHelp วิธีการที่เกี่ยวข้องกับความช่วยเหลือทั้งหมดในแอปพลิเคชัน Delphi จะต้องผ่านเหตุการณ์ OnHelp WinHelp ถูกเรียกเฉพาะเมื่อพารามิเตอร์CallHelpในเหตุการณ์ OnHelp ส่งกลับค่า True หรือเมื่อเหตุการณ์ OnHelp ไม่ได้ถูกกำหนดให้กับหมายเลขอ้างอิงที่ถูกต้อง 3.5 เหตุการณ์ OnHint เมื่อตัวชี้เมาส์เลื่อนผ่านส่วนควบคุมหรือรายการเมนู และส่วนควบคุมหรือรายการเมนูสามารถแสดงข้อความช่วยเหลือได้ เหตุการณ์ OnHint จะเกิดขึ้น คำจำกัดความมีดังนี้: พิมพ์ TNotifyEvent = ขั้นตอน (ผู้ส่ง: TObject) ของวัตถุ คุณสมบัติ OnHint: TNotifyEvent; ตัวจัดการเหตุการณ์ที่เขียนด้วย OnHint สามารถดำเนินการที่ระบุเมื่อเหตุการณ์ OnHint เกิดขึ้น เมื่อผู้ใช้วางตัวชี้เมาส์บนตัวควบคุมและค่าของคุณสมบัติ Hint ของตัวควบคุมไม่ใช่สตริงว่าง ('') เหตุการณ์ OnHint จะเกิดขึ้น โดยปกติเหตุการณ์ OnHint จะใช้เพื่อแสดงค่าของคุณสมบัติ Hint ของตัวควบคุมหรือรายการเมนูเป็นชื่อของตัวควบคุมพาเนล (เช่น TStatusBar) ดังนั้นพาเนลจึงถูกใช้เป็นแถบสถานะ เมื่อเหตุการณ์ OnHint เกิดขึ้น โดยปกติแอตทริบิวต์ Hint จะถูกระบุเป็น Help Hint และคำใบ้ที่ยาวกว่าซึ่งจะแสดงที่อื่น 3.6 เหตุการณ์ OnIdle เหตุการณ์ OnIdle เกิดขึ้นเมื่อแอปพลิเคชันไม่ได้ใช้งาน คำจำกัดความมีดังนี้: พิมพ์ TIdleEvent = Procedure (ผู้ส่ง: TObject; var Done: Boolean) ของวัตถุ คุณสมบัติ OnIdle: TIdleEvent ใช้ OnIdel เพื่อเขียนตัวจัดการเหตุการณ์เพื่อให้การดำเนินการที่ระบุเสร็จสมบูรณ์เมื่อแอปพลิเคชันไม่ได้ใช้งาน แอปพลิเคชันไม่ได้ใช้งานเมื่อไม่ได้รันโค้ดใดๆ ตัวอย่างเช่น แอปพลิเคชันไม่ได้ใช้งานในขณะที่รอการป้อนข้อมูลจากผู้ใช้ ประเภท TIdelEvent คือประเภทของเหตุการณ์ OnIdel ซึ่งชี้ไปยังวิธีการที่ทำงานเมื่อแอปพลิเคชันไม่ได้ใช้งาน วัตถุ TIdelEvent มีตัวแปรเสร็จสิ้นซึ่งมีค่าเริ่มต้นเป็น True เมื่อเสร็จสิ้นเป็น True ฟังก์ชัน Windows API WaitMessage จะถูกเรียกเมื่อ OnIdel กลับมา WaitMessage ทำให้แอปพลิเคชันอื่นได้รับการควบคุมโฟกัสจนกว่าข้อความใหม่จะปรากฏขึ้นในคิวข้อความของแอปพลิเคชัน เมื่อพารามิเตอร์ Done เป็น False และแอปพลิเคชันไม่ยุ่ง แอปพลิเคชันจะไม่อนุญาตให้แอปพลิเคชันอื่นได้รับการควบคุม เมื่อแอปพลิเคชันไม่ได้ใช้งาน เหตุการณ์ OnIdel จะเกิดขึ้นเพียงครั้งเดียว และเหตุการณ์ OnIdel ถัดไปอาจไม่เกิดขึ้นจนกว่าพารามิเตอร์ Done จะถูกตั้งค่าเป็น True การตั้งค่าเสร็จสิ้นเป็นเท็จโดยแอปพลิเคชันจะช่วยลดจำนวนเวลา CPU ที่ไม่แน่นอนซึ่งอาจส่งผลต่อประสิทธิภาพโดยรวมของระบบ 3.7 เหตุการณ์ OnMessage ถูกสร้างขึ้นเมื่อแอปพลิเคชันได้รับข้อความ WINDOWS โดยมีการกำหนดดังนี้: พิมพ์ TMessageEvent = Procedure (var Msg: TMsg; var Handled: Boolean) ของคุณสมบัติ OnMessage: TmessageEvent ถูกใช้เพื่อรับข้อความ WINDOWS สามารถรับข้อความทั้งหมดที่โปรแกรมส่งไปที่ WINDOWS เหตุการณ์นี้เกิดขึ้นเมื่อแอปพลิเคชันได้รับข้อความ ตัวแปร Msg เป็นประเภทข้อความ WINDOWS